Сейчас 18:29:04 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Рандомный выбор предмета и его создание
FatalBladeДата: Суббота, 24 Ноября 2012, 19:23:14 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
У меня есть целая конструкция по дропу случайных предметов. Триггер срабатывает на смерть юнита, и дропается рандоманый предмет только с определённого юнита.

Когда такой юнит умирает, выбирается рандомное реальное число от 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


 

SmartarosДата: Суббота, 24 Ноября 2012, 19:44:42 | Сообщение # 2
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
if random < 4.7 then
...
elseif random >= 4.7 and random < 5.1 then
...
elseif random >= 5.1 and random < 5.5 then
...
elseif random >= 5.5 and random < 6.3 then
...
elseif random >= 6.3 and random < 6.6 then
...
elseif random >= 6.6 and random < 8.9 then
...
elseif random >= 8.9 and random <= 9. then
...
endif
 

SirNikolasДата: Суббота, 24 Ноября 2012, 20:03:19 | Сообщение # 3
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Во-первых, убери бессмысленные проверки:
Code
if RandomNum < 4.7 then
    set ChosenItem = ChooseRandomItemEx(ITEM_TYPE_PERMANENT, 0)
elseif RandomNum < 5.1 then
    set ChosenItem = ChooseRandomItemEx(ITEM_TYPE_PURCHASABLE, 0)
elseif RandomNum < 5.5 then
    set ChosenItem = ChooseRandomItemEx(ITEM_TYPE_CAMPAIGN, 0)
elseif RandomNum < 6.3 then
    set ChosenItem = ChooseRandomItemEx(ITEM_TYPE_PERMANENT, 1)
elseif RandomNum < 6.6 then
    set ChosenItem = ChooseRandomItemEx(ITEM_TYPE_CAMPAIGN, 1)
elseif RandomNum < 8.9 then
    set ChosenItem = ChooseRandomItemEx(ITEM_TYPE_ARTIFACT, 3)
else
    set ChosenItem = 'sfog'
endif
Может быть, предметы выбираются только из стандартных?


 

FatalBladeДата: Суббота, 24 Ноября 2012, 20:16:30 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Может быть, предметы выбираются только из стандартных?

У меня все предметы стандартные. То есть изменённые стандартные. Кастом вообще нету.

SirNikolas, зачем ты убрал главную проверку ?
Code

if RandomNum >= 0.01 and RandomNum <= 9.0 then   


Ведь без неё триггер пройдётся по всем проверкам, а с ней, он НЕ НАЧНЁТ даже выполнять эти проверки, если RandomNum больше 9-ти.




Сообщение отредактировал FatalBlade - Суббота, 24 Ноября 2012, 20:16:43
 

SirNikolasДата: Суббота, 24 Ноября 2012, 20:28:00 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (FatalBlade)
зачем ты убрал главную проверку?
Я ее не заметил. :)


 

FatalBladeДата: Суббота, 24 Ноября 2012, 21:08:36 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Теперь работают только первые 4 диапазона и последний (от 8.9 до 9.0). (6.3 - 6.6) и (6.6 - 8.9) не работают. И поверьте, это не рандом. Я сделал так что бы мобы респились каждую секунду, и с помощью чита Whosyourdaddy всех сливал. За 20 минут я убил АоЕ скилами более 2000 крипов. Всё поле было покрыто предметами, но среди них не было не одного предмета ITEM_TYPE_CAMPAIGN - лвл 1, или ITEM_TYPE_ARTIFACT - лвл 3

 

NaturekidДата: Воскресенье, 25 Ноября 2012, 00:05:44 | Сообщение # 7
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
FatalBlade, попробуй влепить предмета в РО "Включить как случайный выбор"

 

FatalBladeДата: Воскресенье, 25 Ноября 2012, 00:15:31 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Naturekid, угу. Помогло. Спс! :)

 

NaturekidДата: Воскресенье, 25 Ноября 2012, 01:04:26 | Сообщение # 9
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
Не такой я всё-таки нуб, как мне казалось fynate




Сообщение отредактировал Naturekid - Воскресенье, 25 Ноября 2012, 11:06:16
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz