XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
felix_ff

offline
Опыт: 757
Активность:
выдает ошибку потому что пик евери юнит перносит все действия в другую функцию...
щяс попробую объяснить смотри что у тебя получается
function 2 takes nothing returns nothing
if(Условие)then
call ReviveHeroLoc(udg_u, GetRandomLocInRect(gg_rct_Baze_to_CT), тут строчка не дописанна.. я не помню что сюда писать..
endif
endfunction
function 1 takes nothing returns nothing
local unit u
set u = GetDyingUnit()
call ForForce(Conte, function 2) тут я особо не помню как пишется..
endfunction
видишь что получается? ты объявляешь переменную в одной функции а потом хочешь использовать ее в другой. поэтому и ошибка
делай так
function 1 takes nothing returns nothing
local unit u = GetDyingUnit()
local integer i = 0
local player p = null
loop
exitwhen i == 12
set p = Player(i)
if(IsPlayerInForce(Conte))then
call ReviveHeroLoc(u, GetRandomLocInRect(gg_rct_Baze_to_CT),
endif
set i = i + 1
set p = null
endloop
endfunction
или что то типа того... не оптимально... если хочешь потом опишу подробней. а сейчас убегаю
Старый 10.06.2006, 11:58
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
MapMan щас я тебе пример сделаю
Или уже не надо?

Отредактировано ComotozNick, 10.06.2006 в 12:16.
Старый 10.06.2006, 12:11
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Неполучаеццо!
Кстате а в ф-ии "пик евери юнит" можно создать лок. переменную??

MapMan добавил:
ComotozNick надо, давай!
Старый 10.06.2006, 12:37
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
И вот мне надо вместо глобалки udg_u поставить локалку u!
ради такой фичи переименуй локалку u в локалку с именем udg_u (так все делают ;)) Суть в том что парсер не выдает ошибку на такое совпадение имен, и просматриваются сначала локалки, а только потом глобалки. А тебе не нужно извращаться с триггерными конструкциями - в них используй глобалку, а на самом деле будет использоваться локалка, которая была обьявлена в этой секции. Вообще это должно быть в статьях Сергея...
Кстати говоря, если ты напишешь две локалки с одинаковыми именами, то парсер тебе тоже не выдаст ошибку, но скрипт будет глючить, выдаст ошибку только если разны типы данных и ты попытаешься использовать эту переменную
Старый 10.06.2006, 13:26
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
NETRAT неполучаеццо. Он вообще нехочет умершего воскрешать!
Посмотри плз скрин и скажи, мож я чё неправильно сделал!
ЗЫ извеняюсь за то что пользовался вложениями, обещяю позже удалить аттач! Он весит 27кб!
Аттач удалил, как и обесчал;)

Отредактировано MapMan, 11.06.2006 в 18:44.
Старый 10.06.2006, 13:49
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Ниужели никто незнает ответ на такой простой вопрос??
Старый 10.06.2006, 18:44
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Щас я вышел из батлы, похаваю сделаю пример.
Старый 10.06.2006, 19:26
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
))) ну ждём-с!
Старый 10.06.2006, 19:27
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
MapMan жди... выложу
Старый 10.06.2006, 19:28
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Ладно, я тогда завтра заценю!
Старый 10.06.2006, 19:54
Celebrate

offline
Опыт: 849
Активность:
MapMan вот общая схема нормального цикла по группе:
Код:
loop
   set tunit = FirstOfGroup(tgroup)
   exitwhen tunit == null
   <делаем всё, что хотим с tunit>
   call GroupRemoveUnit(tgroup, tunit)
endloop
call DestroyGroup(tgroup)
Старый 10.06.2006, 20:32
felix_ff

offline
Опыт: 757
Активность:
MapMan опиши мне точно что должен делать тригер и я тоды наклепаю его седня вечерком.
Старый 10.06.2006, 21:07
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
felix_ff все я уже сам сделаю ему пример и завтра как придёт ему выложу.
Старый 10.06.2006, 21:51
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Всё я пришёл:) а примера нет:(
Короче раз комотоз неможет, то я объясню что надо сделать, а хотя посмотрите на скриншот, там всё понятно!!
Старый 11.06.2006, 05:59
DioD

offline
Опыт: 45,134
Активность:
Код:
function Revive takes nothing returns nothing
    local timer T=GetExpiredTimer()
    call ReviveHeroLoc( GetUnit(T, "HeroIsDead") ,GetUnitLoc(GetUnit(T, "HeroIsDead")), false )
    call DestroyTimer(T)
    set T=null
endfunction

function BoundDead takes nothing returns nothing
    local trigger Create = CreateTrigger()
    local unit Unit =GetDyingUnit()
    local real Delay =I2R(GetHeroLevel(Unit)+5)
    local timer Timer = CreateTimer()
    call TimerStart(Timer, Delay , FALSE , null)
    call TriggerRegisterTimerExpireEvent(Create, Timer)
    call TriggerAddAction(Create, function Revive)
    call SetHandle(Timer, "HeroIsDead",Unit)
    set Timer=null
endfunction

function InitTrig_Revive takes nothing returns nothing
    local trigger T = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ(T, EVENT_PLAYER_UNIT_DEATH )
    call TriggerAddCondition(T, Condition( function HeroFilter_Header) )
    call TriggerAddAction(T, function BoundDead)
endfunction


DioD добавил:
Воскрешает любого умершего героя, без модуля воскрешения юнитов, если надо и его прикручу, писал всё сам, даже хэндлер собственный.
Код:
function HeroFilter_Header takes nothing returns boolean
    return IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) != false
endfunction

Фильтр забыл вставить, сувать в кастом скрипт карты
Старый 11.06.2006, 14:02
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Ай блин, я не жассер нефига непонятно... Блин... Мне надо через кустом скриптс это всё.
Старый 11.06.2006, 14:09
DioD

offline
Опыт: 45,134
Активность:
Я сделаю скрин, как это через кастом код, но все строчки будут кастом, это тебе не поможет абсолютно.
Старый 11.06.2006, 14:26
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Жду=)
Старый 11.06.2006, 15:43
Aspid

offline
Опыт: 8,361
Активность:
MapMan возьми создай пустой триг .
правка -> конвертировать в текст.

вот что у тебя получается когда ты это сделаешь:
Код:
function Trig_sound_Actions takes nothing returns nothing
endfunction

//===========================================================================
function InitTrig_(название трига) takes nothing returns nothing
    set gg_trg_sound = CreateTrigger(  )
    call TriggerAddAction( gg_trg_sound, function Trig_sound_Actions )
endfunction


удаляешь все что идет до разделителя. "//============="
на это место вставляешь код который тебе дал диод.
так как он использовал только локалки то переменные тебе создавать не потребуется.
Старый 11.06.2006, 15:51
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Не, жассом я нихачу, мне кастом скриптом надо, т.к. у меня после действия воскрешения идёт ещё ряд действий. И чтоб потом было легче редактировать!
Старый 11.06.2006, 16:00
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:17.