function SetUnitBaseScaleById takes integer uid, real scale returns nothing
local integer pData= 0
if uid > 0 then
set pData=GetUnitBaseUIDataByIdCaching(uid)
if pData > 0 then
call WriteRealFloat(pData + 0xB0 , scale)
endif
endif
endfunction
function SetUnitBaseScale takes unit u,real scale returns nothing
call SetUnitBaseScaleById(GetUnitTypeId(u) , scale)
endfunction
Не знаю на счет гуи, но на жассе так. В EventClick_Actions действие которое должно происходить
function EventClick_Conditions takes nothing returns boolean
return // сюда кондишн пишешь
endfunction
function EventClick_Actions takes nothing returns nothing
local real x= GetOrderPointX()
local real y= GetOrderPointY()
endfunction
function InitTrig_EventClick takes nothing returns nothing
local trigger EventClick= CreateTrigger()
local integer index
set index=0
loop
call TriggerRegisterPlayerUnitEvent(EventClick, Player(index), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
call TriggerRegisterPlayerUnitEvent(EventClick, Player(index), EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, null)
set index=index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
call TriggerAddCondition(EventClick, Condition(function EventClick_Conditions))
call TriggerAddAction(EventClick, function EventClick_Actions)
set EventClick = null
endfunction
По идее можно при касте ставить boolean test на true. сделать вейт на окончание действия и установить boolean test на false .сделать TriggerRegisterTimerEventPeriodic на триггер с периодичностью 0.02 секунды и в нем проверку if test then и там уже делать всю движуху. Вроде так гуишники делают, не шарю особо за это. Лучше всего через ХТ и таймеры делать на чистом джассе
Есть разные версии мемхака, и название функции отвечающую за армор юнита отличаются. Если используешь мемхак анрайза, то вот пример на JASS .Событие - EVENT_PLAYER_UNIT_SPELL_EFFECT. 2 примера, с таймером и без , выбери что тебе нужно
globals
hashtable H = InitHashtable() // вместо этой хештаблицы можешь использовать любую другую.
endglobals
function MinusArmour_Init_Condition takes nothing returns boolean
return GetSpellAbilityId() == 'AB0B' //замени на свой равкод абилки
endfunction
function MinusArmour_Act takes nothing returns nothing
local integer h = GetHandleId(GetExpiredTimer())
// если используешь последнюю версию мемхака анрайза то :
call AddUnitArmour(LoadUnitHandle(H, h, 0), 8)
call FlushChildHashtable(H, h)
call PauseTimer(GetExpiredTimer())
call DestroyTimer(GetExpiredTimer())
endfunction
function MinusArmourTimer takes nothing returns nothing
local timer t = CreateTimer()
local real period = 5 // тут указываешь через сколько секунд ты хочешь вернуть армор
call AddUnitArmour(GetSpellTargetUnit(), -8)
call SaveAgentHandle(H, GetHandleId(t), 0, GetSpellTargetUnit())
call TimerStart(t, period , false , function MinusArmour_Act)
set t = null
endfunction
function MinusArmour takes nothing returns nothing
// если используешь последнюю версию мемхака анрайза то :
call AddUnitArmour(GetSpellTargetUnit(), -8) // чтобы снизить армор пишем значение с минусом
// если хочешь сделать возврат армора через определенное время, удаляем эту функцию и в TriggerAddAction функции MinusArmour_Init вставляем MinusArmourTimer
endfunction
function MinusArmour_Init takes nothing returns nothing
local trigger t = CreateTrigger()
local integer index = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
call TriggerAddCondition(t, Condition(function MinusArmour_Init_Condition))
call TriggerAddAction(t, function MinusArmour) // Если не нужен таймер с возвратом армора
//call TriggerAddAction(t, function MinusArmourTimer) // Если нужен таймер с возвратом армора
set t = null
endfunction
function main takes nothing returns nothing // НЕ ДОБАВЛЯТЬ ЭТУ ФУНКЦИЮ, ОНА И ТАК ЕСТЬ В КАРТЕ ПО УМОЛЧАНИЮ
call ExecuteFunc("MinusArmour_Init") // НЕОБХОДИМО ИНИЦИАЛИЗИРОВАТЬ ЭТУ ФУНКЦИЮ
endfunction
Та, в редакторе нельзя сохранять, иначе код сломается. Небольшой челлендж для тех кто хочет почекать. А выдавать спелл можно через WFE , learn A000 . А скопировать сам спелл можно только если конвертнуть карту через w3x2lni в Lni либо obj
Вот чисто камхак - forum.onligamez.ru/resources/war-3-camera-zoom.49
Так что было бы желание...
только это такой же как прикреплённый, те же 7,50 КБ, тока надпись другая
а такой же - по 150 , фог и фарз не фикшены, крит 9900+ , всё то же самое
ну спасибо прямо выручил (нет)
В вфе включи Camera Steps или Шаги Камеры и меняй камеру как душе угодно
» WarCraft 3 / Как превратить папку в карту?
» WarCraft 3 / Карте хана?
» WarCraft 3 / Обнуление урона в ивенте UNIT_DAMAGED
Ред. SAND
» WarCraft 3 / SetUnitBaseScale
Ред. SAND
» WarCraft 3 / Отследить нажатие мыши
» WarCraft 3 / Сохранение и перенос локальной структуры
Ред. SAND
» WarCraft 3 / Циклы и wait
» WarCraft 3 / Снижение армора на memory hack
» IrInA Host Bot / Неправильное обнаружение читов!
Ред. SAND
» WarCraft 3 / [JASS] AOE Благодать
» WarCraft 3 / ктото может дать сьлку на хороший камера хак??
» WarCraft 3 / как написать *.mix камерахак? zoom
» WarCraft 3 / Помощь по World Editor
» WarCraft 3 / Помощь по World Editor
» WarCraft 3 / Депротект (знаю заеженная тема)
» WarCraft 3 / Депротект (знаю заеженная тема)
» WarCraft 3 / Добавить триггерно юниту исследование
» WarCraft 3 / Вообще нет идей с десинхроном...
» WarCraft 3 / Как убрать кнопки команд
» WarCraft 3 / Вылетела игра
» WarCraft 3 / Как установить стоимость воскрешения героя из таверны?
goldcost
» WarCraft 3 / Зона выборки предмета
» WarCraft 3 / KillUnit
Ред. SAND
» WarCraft 3 / Юнит мешает пройти