0
8
1 час назад
Отредактирован Centyrion
0

» WarCraft 3 / Arthas Revenge Siege

Последние новости!
Кнопка Получить обновлена
0
8
1 час назад
0

» WarCraft 3 / Arthas Revenge Siege

Вышла новая версия! Прокрутить к ресурсу
Изменения в версии 7.4
Изменились условия создания Спавнов для Сил Артаса и Глаза Саргераса, теперь если в игре больше 3 игроков количество создаваемых юнитов будет 3, переделан ландшафт в центральной зоне, переделана область Анубарака, добавлены новые декорации которые сочетаются с ландшафтом, убраны некоторые тени от декораций, добавлены деревья в области боссов, добавлены отражения света когда Боевая единица атакует, изменились расположения Зданий а также немного увеличен размер центральной области, добавлена новая локация для получения Высшего разума, она расположена рядом с магазинами и чуть ниже Лекса, старая локация получения переделана под будущие Боссы, изменены некоторые локации чтобы они соответствовали ландшафту, изменилось название Мердака на Фердик а также переделаны все его способности, исправлена ошибка с командой -repick, переделаны условия для получения Титанов, теперь они занимают меньше места в блоке кода а также исправлена ошибка с получением одного предмета, добавлена новая функция для очищения плавающего текста, изменилась ссылка приглашения в Дискорде в описание карты, добавлены новые условия для Боссов которые получают урон но герои нет, теперь Лекс будет проверять расстояние от Героя до Босса, таким образом Босс восстановит свой показатель здоровья, добавлены новые условия для ИИ, теперь они могут подбирать предметы, исправлена ошибка с появлением секретного магазина, добавлены новые условия для ИИ, теперь когда герой попадает в область где нужно убить Троля чтобы получить предмет для сбора, герой не сможет телепортироваться защищать Глаз Саргераса, добавлены новые условия для Спавнов, теперь если Субволна отключена, Алтарь Ряда не сможет воспроизводить Анимацию, изменилась формула установки характеристик Артаса за счет характеристик всех героев в игре, теперь характеристики Артаса будут в 2 раза больше в мултиплеере, добавлено 8 новых боссов, они будут использовать новую локацию для Боссов и переделаны все способности Нилога.
0
8
2 недели назад
0

» WarCraft 3 / ItemPool

нашел решение
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
таким образом Работает
0
8
2 недели назад
Отредактирован Centyrion
0

» WarCraft 3 / ItemPool

если смотреть со стороны
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
которая отслеживает Кто или Что убил, другое дело но ее нету
0
8
2 недели назад
0

» WarCraft 3 / ItemPool

Borodach, в примере с хайва там Событие
//    set gg_trg_Neutral_Hostile_Drop_Tables = CreateTrigger(  )
//    call TriggerRegisterPlayerUnitEventSimple( gg_trg_Neutral_Hostile_Drop_Tables, Player(PLAYER_NEUTRAL_AGGRESSIVE), EVENT_PLAYER_UNIT_DEATH )
//    call TriggerAddAction( gg_trg_Neutral_Hostile_Drop_Tables, function Trig_Neutral_Hostile_Drop_Tables_Actions )
мне это событие не нужно так как я не собираюсь бить крипов чтобы с них падали шмотки а
GetTriggerDestructable()
0
8
2 недели назад
Отредактирован Centyrion
0

» WarCraft 3 / ItemPool

local unit u = GetTriggerUnit()
он так не заработает
0
8
2 недели назад
0

» WarCraft 3 / ItemPool

Загруженные файлы
0
8
3 недели назад
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

EugeAl, ну да в принципе... другого не дано, либо так либо никак, подумаю
0
8
3 недели назад
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

EugeAl, этот вариант тоже не лишен недостатков но и Задумка интересная а плодить 2 цикла внутри функции это еще больше строк кода
0
8
3 недели назад
Отредактирован Centyrion
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

Makeba, Хм, Задумка интересная,
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'
прописать необходимые предметы в Одну переменную под индексом и одним Изящным циклом вычислять все необходимое
Изящно
Беру на вооружение :)
0
8
3 недели назад
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

EugeAl, конечно пойдет, этот вариант тоже нормальный но многовато аргументов он принимает, а вычислять его в функции тоже не красиво
0
8
3 недели назад
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

EugeAl, в курсе, у меня Массив в виде
set Item[1] = 'I001'
globals
integer array Item
endglobals
0
8
3 недели назад
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

EugeAl, тоже хороший вариант, но слегка можно доработать, Слегка чтобы использовал Массивы а не Конкретные предметы
0
8
3 недели назад
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

ScorpioT1000, напишу готовый пример и выложу
0
8
3 недели назад
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

ScorpioT1000, отличный пример Беру на вооружение :)
0
8
3 недели назад
0

» WarCraft 3 / Оптимизация Выполнения Последовательности Кода

SoulRazor, конечно хороший пример но это я как раз пытаюсь избежать
у меня тоже самое реализовано но я использую Функции, причем несколько, этого и пытаюсь избежать
0
8
10 месяцев назад
0

» WarCraft 3 / Ограничение для предметов

Дополняю ответ что я хотел этим сказать
0
8
10 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Arthas Revenge Siege

Жаль, что во все остальные карты нельзя играть за Артаса
Временное "решение", пока есть "возможность" нужно все-же реализовать "Замысел"
0
8
10 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Arthas Revenge Siege

Последние новости!
Новая локация для получения Высшего Разума
(Необходимый предмет чтобы собрать Силу Бесконечности)
Загруженные файлы
0
8
10 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Проверка команды Камеры из Массива

чтож


оказывается допустил ошибку при высчитывании

Нельзя
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

Centyrion, если удалить комментарии, то у тебя пустое условие.
Спасибо! воспользуюсь ссылкой
0
8
10 месяцев назад
0

» WarCraft 3 / Проверка команды Камеры из Массива

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  
0
8
10 месяцев назад
0

» WarCraft 3 / Проверка команды Камеры из Массива

да понял что здесь происходит
нет заметил это...думал экземпляр структуры в другом месте

ну вот это и пытаюсь сделать

по какойто причине
SubString неправильно высчитывает значения Индексов Массива
0
8
10 месяцев назад
0

» WarCraft 3 / Проверка команды Камеры из Массива

у меня немножко по другому устроено, в одной функции хочу проверить Список всех команд и делать действия, не хочу заморачиваться с Либами
0
8
10 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Проверка команды Камеры из Массива

либа принимает только 1 команду
а у меня Список

а вот
    function onInit(){
        msg("Чтобы изменить имя напечатайте |cffffff00-zoom |cff909090" + I2S(R2I(Min)) + "<>" + I2S(R2I(Max)));
        
        CustomChatEvent
            .create("zoom") // ловим -zoom
            .addSynonym("зум") // ловим -зум
            .addSynonym("ящщь") // не забываем тех, кто перепутал раскладку
            .onSuccess(function setZoom) // указываем функцию, которая сработает при удачном отлове
        ;

а если без Либы
Стандартным методом проверки Подстроки?
0
8
10 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Проверка команды Камеры из Массива

CommandsListSubstringEnd[3]
Призван задать ограничение чисто для Команды
дальше
будет работать
local real CamA = S2R(SubString(ChatString, 5, StringLength(ChatString)))

Посмотри в этой системе там это в примерах есть.
Хм...это я реализовал
где
requires CustomChatEvent