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 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
КО подсказывает, что проблема в функции ChooseRandomItemEx |
24.11.2012, 19:25 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
Doc:
Но какая? Ведь она работает, но только для диапазона от 0.01 до 4.7 |
24.11.2012, 19:30 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
FatalBlade, извини, телепаты в отпуске. |
24.11.2012, 19:36 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
она ведь работает для других диапозонов с другими параметрами... |
24.11.2012, 19:38 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
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 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
HolyMoon
Hly shit!
offline
Опыт:
6,986Активность: |
предметы, так случаем, не стандартные? :D |
24.11.2012, 22:01 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
HolyMoon:
стандартные, но изменённые. |
24.11.2012, 22:26 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
HolyMoon
Hly shit!
offline
Опыт:
6,986Активность: |
я просто к тому, что артефактов 3-го уровня и кампаний 1-го нету в стандарте |
24.11.2012, 22:32 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FatalBlade
offline
Опыт:
7,398Активность: |
HolyMoon, ну я поменял многим предметам классификацию.
А вообще я уже решил проблему. Есть такая графа - Stats - Include as Random Choise. У меня на всех предметах Артефактах и Кампаниях стояло false. Поставил true - работает. |
25.11.2012, 00:14 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|