Изменились условия создания Спавнов для Сил Артаса и Глаза Саргераса, теперь если в игре больше 3 игроков количество создаваемых юнитов будет 3, переделан ландшафт в центральной зоне, переделана область Анубарака, добавлены новые декорации которые сочетаются с ландшафтом, убраны некоторые тени от декораций, добавлены деревья в области боссов, добавлены отражения света когда Боевая единица атакует, изменились расположения Зданий а также немного увеличен размер центральной области, добавлена новая локация для получения Высшего разума, она расположена рядом с магазинами и чуть ниже Лекса, старая локация получения переделана под будущие Боссы, изменены некоторые локации чтобы они соответствовали ландшафту, изменилось название Мердака на Фердик а также переделаны все его способности, исправлена ошибка с командой -repick, переделаны условия для получения Титанов, теперь они занимают меньше места в блоке кода а также исправлена ошибка с получением одного предмета, добавлена новая функция для очищения плавающего текста, изменилась ссылка приглашения в Дискорде в описание карты, добавлены новые условия для Боссов которые получают урон но герои нет, теперь Лекс будет проверять расстояние от Героя до Босса, таким образом Босс восстановит свой показатель здоровья, добавлены новые условия для ИИ, теперь они могут подбирать предметы, исправлена ошибка с появлением секретного магазина, добавлены новые условия для ИИ, теперь когда герой попадает в область где нужно убить Троля чтобы получить предмет для сбора, герой не сможет телепортироваться защищать Глаз Саргераса, добавлены новые условия для Спавнов, теперь если Субволна отключена, Алтарь Ряда не сможет воспроизводить Анимацию, изменилась формула установки характеристик Артаса за счет характеристик всех героев в игре, теперь характеристики Артаса будут в 2 раза больше в мултиплеере, добавлено 8 новых боссов, они будут использовать новую локацию для Боссов и переделаны все способности Нилога.
function Trig_d_Actions takes nothing returns nothing
set udg_H = InitHashtable()
set udg_Dest[1] = gg_dest_LTcr_0000
call TriggerRegisterDeathEvent( gg_trg_t, udg_Dest[1] )
endfunction
//===========================================================================
function InitTrig_d takes nothing returns nothing
set gg_trg_d = CreateTrigger( )
call TriggerAddAction( gg_trg_d, function Trig_d_Actions )
//Map Initialization
endfunction
function T takes nothing returns nothing
local widget w = GetTriggerDestructable()
local real x = GetWidgetX(w)
local real y = GetWidgetY(w)
local itempool ItemPool = CreateItemPool()
local item i
local unit u = LoadUnitHandle(udg_H, StringHash("System"), StringHash("UNIT"))
call ItemPoolAddItemType(ItemPool, 'phea', 60)
call ItemPoolAddItemType(ItemPool, 'pman', 40)
set i = PlaceRandomItem(ItemPool, x, y)
call DestroyItemPool(ItemPool)
call UnitAddItem(u, i)
set ItemPool = null
set i = null
set u = null
endfunction
//===========================================================================
function InitTrig_t takes nothing returns nothing
set gg_trg_t = CreateTrigger( )
call TriggerAddAction( gg_trg_t, function T )
endfunction
function Trig_vsd_Actions takes nothing returns nothing
call SaveUnitHandle(udg_H, StringHash("System"), StringHash("UNIT"), GetOrderedUnit())
endfunction
//===========================================================================
function InitTrig_vsd takes nothing returns nothing
set gg_trg_vsd = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_vsd, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
call TriggerAddAction( gg_trg_vsd, function Trig_vsd_Actions )
endfunction
function Doodad006712_DropItems takes nothing returns nothing
local widget trigWidget=null
local unit trigUnit=null
local integer itemID=0
local boolean canDrop=true
set trigWidget=bj_lastDyingWidget
if(trigWidget==null)then
set trigUnit=GetTriggerUnit()
endif
if(trigUnit!=null)then
set canDrop=not IsUnitHidden(trigUnit)
if(canDrop and GetChangingUnit()!=null)then
set canDrop=(GetChangingUnitPrevOwner()==Player(PLAYER_NEUTRAL_AGGRESSIVE))
endif
endif
if(canDrop)then
call RandomDistReset()
call RandomDistAddItem('I020',60)
call RandomDistAddItem('I01Y',40)
set itemID=RandomDistChoose()
if(trigUnit!=null)then
call UnitDropItem(trigUnit,itemID)
else
call WidgetDropItem(trigWidget,itemID)
endif
endif
set bj_lastDyingWidget=null
call DestroyTrigger(GetTriggeringTrigger())
endfunction
если бы было чтото на подобие
bj_lastKillingWidget
которая отслеживает Кто или Что убил, другое дело но ее нету
RequiredItems //можно и массив, переменная у меня под массив но Интересно
где-то я это уже видел и чем-то напоминает наработку
set giRequireScroll[6]='I007'
set Item_Slot1[6]='penr'
set Item_Slot2[6]='prvt'
set Item_Slot3[6]='rde3'
set giRequireScrollp[6]=3
set Created_Item[6]='blba'
прописать необходимые предметы в Одну переменную под индексом и одним Изящным циклом вычислять все необходимое
Изящно
SoulRazor, конечно хороший пример но это я как раз пытаюсь избежать
у меня тоже самое реализовано но я использую Функции, причем несколько, этого и пытаюсь избежать
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMaxCounter]) == CommandsList[CommandsListMaxCounter] then //-cam, -Cam
// высчитывать Значение Цикла CommandsListMaxCounter внутри переменной CommandsListSubstringEnd
endif
он подберет Индекс CommandsListMaxCounter и будет проверять CommandsListSubstringEnd на наличие Меньшего Значения начиная с 1 до
CommandsListMax
его сразу надо высчитывать чтобы значения цикла не высчитывались
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMax]) == CommandsList[CommandsListMaxCounter] then
так должно выглядеть
отработает 1 раз для CommandsList с привязкой к СommandsListSubstringEnd
if CommandsListMax != 0 then
set CommandsListMaxCounter = 1
loop
exitwhen CommandsListMaxCounter > CommandsListMax // от 1 до 20 команд
//проверить в массиве список Групп Комманд
//set CommandsListGroupCounter = CommandsListGroupStart[1]
//loop
//exitwhen CommandsListGroupCounter > CommandsListGroupEnd[CommandsListMax] //от 1 до 20 Групп
//проверить в Группе команд Список Команд
set CommandsListCounter = 1
loop
exitwhen CommandsListCounter > CommandsListGroupCounter
//проверить список внутри группы комманд
//if CommandsList[CommandsListCounter] == CommandsList[CommandsListMax] then
//set CommandsListSubstringEnd[CommandsListGroupCounter] = CommandsListGroupCounter
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListCounter]) == CommandsList[CommandsListCounter] then //-cam, -Cam
endif
//endif
set CommandsListCounter = CommandsListCounter + 1
endloop
//set CommandsListGroupCounter = CommandsListGroupCounter + 1
//endloop
set CommandsListMaxCounter = CommandsListMaxCounter + 1
endloop
endif
CommandsListSubstringEnd[3] = 5
CommandsListSubstringEnd[1] = 4 // длина строки Первой команды
local real CamA = S2R(SubString(ChatString, 5, StringLength(ChatString)))
if SubString(ChatString, 0, CommandsListSubstringEnd[3]) == CommandsList[1] then
думает что это одно и тоже
четко занес в переменную Длину строки...Подстрока когда дойдет до CommandsListSubstringEnd остановится
дальше
local real CamA = S2R(SubString(ChatString, 5, StringLength(ChatString)))
CommandsList[1] = "-cam"
так и
CommandsList[3] = "-camm"
//===========================================================================
// The parameters for the API Substring function are unintuitive, so this
// merely performs a translation for the starting index.
//
function SubStringBJ takes string source, integer start, integer end returns string
return SubString(source, start-1, end)
endfunction
Отредактирован Centyrion
» WarCraft 3 / Arthas Revenge Siege
» WarCraft 3 / Arthas Revenge Siege
» WarCraft 3 / ItemPool
Отредактирован Centyrion
» WarCraft 3 / ItemPool
» WarCraft 3 / ItemPool
Отредактирован Centyrion
» WarCraft 3 / ItemPool
» WarCraft 3 / ItemPool
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
Отредактирован Centyrion
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
Изящно
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
» WarCraft 3 / Оптимизация Выполнения Последовательности Кода
у меня тоже самое реализовано но я использую Функции, причем несколько, этого и пытаюсь избежать
» WarCraft 3 / Ограничение для предметов
Отредактирован Centyrion
» WarCraft 3 / Arthas Revenge Siege
Отредактирован Centyrion
» WarCraft 3 / Arthas Revenge Siege
(Необходимый предмет чтобы собрать Силу Бесконечности)
Отредактирован Centyrion
» WarCraft 3 / Проверка команды Камеры из Массива
» WarCraft 3 / Проверка команды Камеры из Массива
дальше
» WarCraft 3 / Проверка команды Камеры из Массива
нет заметил это...думал экземпляр структуры в другом месте
SubString неправильно высчитывает значения Индексов Массива
» WarCraft 3 / Проверка команды Камеры из Массива
Отредактирован Centyrion
» WarCraft 3 / Проверка команды Камеры из Массива
а у меня Список
Стандартным методом проверки Подстроки?
Отредактирован Centyrion
» WarCraft 3 / Проверка команды Камеры из Массива
Призван задать ограничение чисто для Команды
дальше
будет работать
где