ща, еще немного осталось, уже конец точки определил
Добавлено (07-04-2011, 16:44) --------------------------------------------- вобщем как сказал один знакомый создание области возможно только через джас, а там я сорри еще не совсем хорошо разбираюсь. Вот что я смог сделать, смотри: http://rghost.ru/5112662
как сделать чтобы юниты ходили за ману , когда мана кончается они стоят на месте а когда напишиш в чате НОВЫЙ ХОД у всех юнитов полная мана
Можно сделать ход спеллом (телепорт к примеру и сделать так , поставить 0 в строке скорость перемещения) или допустим когда юнит идет на расстояние , то set mana = (mana - 1 (of triggiring unit)) За тем: С. Юнит передвигается Юнит начинает направлять способность Юнит приводит способность в действие У. Мана (of triggiring unit) = 0; Д. Боевая единица (triggiring unit) to отставить.
Восстановленных орков гладиаторов можно скачать по ссылке: http://cs-2d.ucoz.com/load/0-0-0-18-20
Z-Тёма, Вот тебе пример наработки на JASS, создай таймер с функцией TimerStarts и каждую секунду проверяй что делает юнит, если движеться то отниматься ману, в примере я отнимаю ману по 20 ед. Внимание: наработка работать не будет так как там не указан юнит ты должен это сделать сам.
function TimerStarts takes nothing returns nothing local unit u = #### - твой юнит. local string s = OrderId2String(GetUnitCurrentOrder(u)) if (s == "move") then call SetUnitState(u, UNIT_STATE_MANA, GetUnitState(u, UNIT_STATE_MANA) - 20) endif set u = null set s = null endfunction
//=========================================================================== function InitTrig_g takes nothing returns nothing set gg_trg_g = CreateTrigger( ) call ExecuteFunc("TimerStarts") endfunction
Добавлено (08-04-2011, 12:42) --------------------------------------------- Кароче вот вторая наработка, так как первая может не сработать если юнита отдаст команду атаковать и юнит побежит атаковать. Она тоже срабатывает каждую секунду эта наработка точно сработает если правильно все сделаешь. Создаешь таймер многоразовый с периодом каждую секунду и с выполнение функции StartMove дальше записываешь юнита для таймера и все сработает.
function StartMove takes nothing returns nothing local unit u - твой юнит local trigger t = CreateTrigger() local rect r = Rect(GetUnitX(u) - 80, GetUnitY(u) - 80, GetUnitX(u) + 80, GetUnitY(u) + 80) local region reg = CreateRegion() call RegionAddRect(reg, r) call TriggerRegisterLeaveRegion(t, reg, null) call TriggerAddAction(t, function IsUnitMoves) call RemoveRect® call RemoveRegion(reg) set r = null set reg = null set u = null set t = null endfunction
//=========================================================================== function InitTrig_h takes nothing returns nothing set gg_trg_h = CreateTrigger( ) call ExecuteFunc("StartMove") endfunction
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 08 Апреля 2011, 12:43:36
идиотизм. Через периодический таймер на каждом юните сверять координаты текущие с последними записанными и результат, множенный, переделенный, обноженный и изнасилованный вычитать из маны юнита.. грубо говоря вот так:
every 0.3 seconds of game time
actions:
Custom Script: set udg_ManaGroup = CreateGroup()
Pick every unit in [entire map] and do actions: add picked unit to udg_ManaGroup
Pick every unit in udg_ManaGroup and do actions: if (Mana of picked unit <= 0 ) then SetUnitX(pickedunit, LoadReal(udg_Data,GetHandleId(pickedunit),1) SetUnitY(pickedunit, LoadReal(udg_Data,GetHandleId(pickedunit, 2) else Set mana of picked unit to [mana of picked unit]-(DistantionBetweenCords(LoadReal(udg_Data,GetHandleId(pickedunit), 1), LoadReal(udg_Data,GetHandleId(pickedunit),2), GetUnitX(pickedunit), GetUnitY(pickedunit))/10) SaveReal(udg_Data,GetHandleId(pickedunit),1, GetUnitX(pickedunit)) SaveReal(udg_Data,GetHandleId(pickedunit),2, GetUnitY(pickedunit)) endif
call DestroyGroup(udg_ManaGroup)
и все. таким образом каждый раз когда юнит будет делать движение - все расстояние будет делиться на 10 и вычитаться из его маны, при этом это будет действовать на всех юнитов сразу. Однако часть надо писать на джасс через кастом скрипт. Eсли мана равна нулю - юнит не сможет двигаться.
Z-Тёма, за 0.5 секунды? Тогда без джасс будет либо очень тормознуто, либо утечно, для большого количества юнитов будет крайне тяжело сделать на ГУИ что бы нормально работала система. Но вообще - вполне реально.
Можно сделать по типу перевоплощения. Типо превращается в такого-же юнита, но с отрицательной регенерацией маны и со способностью передвигаться.
А по-другому можно вроде только в жассе.
Добавлено (09-04-2011, 16:39) --------------------------------------------- А потом, когда надоело бегать просто щёлкаешь ещё раз на перевоплощение - мана перестаёт убывать и ты не можешь перемещаться.
Может быть подойдёт такой способ?
Добавлено (09-04-2011, 16:40) --------------------------------------------- А и ещё нюанс: в триггерах надо будет прописать, чтобы воин автоматически перевоплощался обратно, если мана равна 0
FkoFF, я предложил другой более простой способ. В чём дело? Если автору такой спелл не подходит или наоборот подходит - он мне ответит, а тебя я попрошу не лезть.
BloodY_Maker, хорошо, я тебе, кретину, объясню веселую хрень. для каждого юнита придется делать "ходячего" клона, учитывая что с базами данных ты не знаком - придетс я делать отдельный ифзен для каждого юнита; Так же каст будет нагружать систему, и этот способ, на самом деле, раз в десять более сложный и не надежный.