XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
FatalBlade

offline
Опыт: 7,398
Активность:
Рандомный выбор предмета и его создание работает по странному
У меня есть целая конструкция по дропу случайных предметов. Триггер срабатывает на смерть юнита, и дропается рандоманый предмет только с определённого юнита.
Когда такой юнит умирает, выбирается рандомное реальное число от 0.01 до 100. Если выбрано число от 0.01 до 9, то запускается несколько ифзенов, которые проверяют точный диапазон числа. Там несколько вариантов. первый из них, это от 0 до 4.7, дальше от 4.7 до 5.1. Всего 7 диапазонов.
Но вот проблема, которую я никак не могу понять. Почему то предмет создаётся только тогда, когда выбранное число равно от 0.01 до 4.7, то есть первый диапазон. Если число больше 4.7, но меньше 9-ти, ничего не создаётся. Я проверял с помощью BJDebugMsg, пытался выводить само выбранное число и рандомно выбранный предмет (равкод). Так вот, если число было меньше 4.7, например 2.5, то он выводил 2.5, а под ним длинное целое число (равкод в виде целого числа). Если же число было больше 4,7, но меньше 9-ти, например 7.5, то он выводил 7.5 а под ним 0. То есть рандомный предмет не выбирался, и ID предмета выводился 0.
Вот код самой конструкции. Без BJDebugMsg
((кат код
((код jass
local unit u = GetDyingUnit()
local integer ut = GetUnitTypeId(u)
local real x = GetWidgetX(u)
local real y = GetWidgetY(u)
local real RandomNum = .0
local integer ChosenItem = 0
if ut == 'nfgb' then
set RandomNum = GetRandomReal( 0.01, 100.0 )
if RandomNum >= 0.01 and RandomNum <= 9.0 then
if RandomNum >= 0.01 and RandomNum < 4.7 then
set ChosenItem = ChooseRandomItemEx( ITEM_TYPE_PERMANENT, 0 )
elseif RandomNum >= 4.7 and RandomNum < 5.1 then
set ChosenItem = ChooseRandomItemEx( ITEM_TYPE_PURCHASABLE, 0 )
elseif RandomNum >= 5.1 and RandomNum < 5.5 then
set ChosenItem = ChooseRandomItemEx( ITEM_TYPE_CAMPAIGN, 0 )
elseif RandomNum >= 5.5 and RandomNum < 6.3 then
set ChosenItem = ChooseRandomItemEx( ITEM_TYPE_PERMANENT, 1 )
elseif RandomNum >= 6.3 and RandomNum < 6.6 then
set ChosenItem = ChooseRandomItemEx( ITEM_TYPE_CAMPAIGN, 1 )
elseif RandomNum >= 6.6 and RandomNum < 8.9 then
set ChosenItem = ChooseRandomItemEx( ITEM_TYPE_ARTIFACT, 3 )
elseif RandomNum >= 8.9 and RandomNum <= 9.0 then
set ChosenItem = 'sfog'
endif
endif
call CreateItem( ChosenItem, x, y )
endif
))
))
Старый 24.11.2012, 19:20
Doc

offline
Опыт: 63,163
Активность:
КО подсказывает, что проблема в функции ChooseRandomItemEx
Старый 24.11.2012, 19:25
FatalBlade

offline
Опыт: 7,398
Активность:
Doc:
КО подсказывает, что проблема в функции ChooseRandomItemEx
Но какая? Ведь она работает, но только для диапазона от 0.01 до 4.7
Старый 24.11.2012, 19:30
Doc

offline
Опыт: 63,163
Активность:
FatalBlade, извини, телепаты в отпуске.
Старый 24.11.2012, 19:36
DioD

offline
Опыт: 45,134
Активность:
она ведь работает для других диапозонов с другими параметрами...
Старый 24.11.2012, 19:38
FatalBlade

offline
Опыт: 7,398
Активность:
DioD:
она ведь работает для других диапозонов с другими параметрами...
?
FatalBlade добавил:
Теперь работают только первые 4 диапазона и последний (от 8.9 до 9.0). (6.3 - 6.6) и (6.6 - 8.9) не работают. И поверьте, это не рандом. Я сделал так что бы мобы респились каждую секунду, и с помощью чита Whosyourdaddy всех сливал. За 20 минут я убил АоЕ скилами более 2000 крипов. Всё поле было покрыто предметами, но среди них не было не одного предмета ITEM_TYPE_CAMPAIGN - лвл 1, или ITEM_TYPE_ARTIFACT - лвл 3
Старый 24.11.2012, 21:08
HolyMoon
Hly shit!
offline
Опыт: 6,986
Активность:
предметы, так случаем, не стандартные? :D
Старый 24.11.2012, 22:01
FatalBlade

offline
Опыт: 7,398
Активность:
HolyMoon:
предметы, так случаем, не стандартные?
стандартные, но изменённые.
Старый 24.11.2012, 22:26
HolyMoon
Hly shit!
offline
Опыт: 6,986
Активность:
я просто к тому, что артефактов 3-го уровня и кампаний 1-го нету в стандарте
Старый 24.11.2012, 22:32
FatalBlade

offline
Опыт: 7,398
Активность:
HolyMoon, ну я поменял многим предметам классификацию.
А вообще я уже решил проблему.
Есть такая графа - Stats - Include as Random Choise. У меня на всех предметах Артефактах и Кампаниях стояло false. Поставил true - работает.
Старый 25.11.2012, 00:14
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 07:47.