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

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

Ответ
 
saylar_06

offline
Опыт: 729
Активность:
1 функция на n-триггеров
В общем есть у меня 1 функция которая повторяется в 10 триггерах(и даже не одна)
Можно ли сделать так создать триггер к примеру(Core) поместить в него функию Name
А затем уже использовать эту функцию в других триггерах?
P.S Попытался сделать так как описано выше, но выходит ошибка(при компиляции) Undeclared function Name
PP.S Изучая Триггеры(Jass) в доте заметил что там они используют такой же метод, как сделать так же?
Извиняюсь если этот вопрос глупый или уже обсуждался, просто я только делаю первые шаги...
Спасибо за понимание!
Старый 29.05.2010, 13:57
Clamp
Lost in space
offline
Опыт: 71,258
Активность:
Цитата:
Сообщение от saylar_06
Можно ли сделать так создать триггер к примеру(Core) поместить в него функию Name
А затем уже использовать эту функцию в других триггерах?


помещай в нестандартный код.

Clamp добавил:
и там уже пиши
call name()
Старый 29.05.2010, 13:59
saylar_06

offline
Опыт: 729
Активность:
Clamp:
помещай в нестандартный код.
Clamp добавил:
и там уже пиши
call name()
Чтот не пойму :(
Создал я Триг Core поместил в него функцию H2Tx
Создал я Триг Kraken и в нём имеется функция (одна из немногих)
function Kraken_Timer takes nothing returns nothing
call UnitRemoveBuffsBJ(1,GetUnit(H2Tx(GetExpiredTimer()),"UnitVar"))
endfunction
При компиляции выходит ошибка Undeclared function H2Tx
p.S Может я чего то не понял :(
Старый 29.05.2010, 14:18
agentex

offline
Опыт: 34,534
Активность:
При компиляции выходит ошибка Undeclared function H2Tx
значит функция ниже вызова
Старый 29.05.2010, 14:28
Clamp
Lost in space
offline
Опыт: 71,258
Активность:
saylar_06:
Создал я Триг Core поместил в него функцию H2Tx
Не надо никаких тригов, помещай функцию в "нестандартный код карты"
Старый 29.05.2010, 14:35
saylar_06

offline
Опыт: 729
Активность:
Clamp:
saylar_06:
Создал я Триг Core поместил в него функцию H2Tx
Не надо никаких тригов, помещай функцию в "нестандартный код карты"
извиняюсь, а как это сделать? "нестандартный код карты"
Старый 29.05.2010, 15:30
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
надо потрудится ткнуть в самый левый верхнй кусок редактора триггеров, там надпись с названием твой карты
Старый 29.05.2010, 15:36
StoneHeartis
Kicked by ScorpioT1002
offline
Опыт: 1,009
Активность:
H2Tx
Return Bug detected. Если вы создаете карту на 1.24+, то можете смело выкинуть эту идею.
Старый 29.05.2010, 17:19
Clamp
Lost in space
offline
Опыт: 71,258
Активность:
StoneHeartis, по идее то должно норм компилить, без онибок. Просто не запускалось бы
Старый 29.05.2010, 17:23
StoneHeartis
Kicked by ScorpioT1002
offline
Опыт: 1,009
Активность:
Clamp, ну да. давайте ему подсунем нерабочий вариант и пусть он думает
У него не компилилио потому, что он не туда совал кастом код.
Хм. Вру. Значит с кодом что-то не так.
Код в студию.
Старый 29.05.2010, 17:35
ScorpioT1000
Работаем
offline
Опыт: отключен
значит функция ниже вызова
Старый 29.05.2010, 18:17
saylar_06

offline
Опыт: 729
Активность:
StoneHeartis:
H2Tx
Return Bug detected. Если вы создаете карту на 1.24+, то можете смело выкинуть эту идею.
а каким надо? (если можно ссылку)
StoneHeartis:
Код в студию.
Триггер Core
» текст
function H2Ix takes handle pTarg returns integer
return pTarg
return 0
endfunction
function H2Tx takes handle pTarg returns string
return I2S(H2Ix(pTarg))
endfunction
function FastFlush takes string pTable returns nothing
call FlushStoredMission(udg_gc_DTAX_Core,pTable)
endfunction
function SetHandle takes string pTable,string pKey,handle pData returns nothing
call StoreInteger(udg_gc_DTAX_Core,pTable,pKey,H2Ix(pData))
endfunction
function SetInteger takes string pTable,string pKey,integer pData returns nothing
call StoreInteger(udg_gc_DTAX_Core,pTable,pKey,pData)
endfunction
function SetReal takes string pTable,string pKey,real pData returns nothing
call StoreReal(udg_gc_DTAX_Core,pTable,pKey,pData)
endfunction
function SetBoolean takes string pTable,string pKey,boolean pData returns nothing
call StoreBoolean(udg_gc_DTAX_Core,pTable,pKey,pData)
endfunction
function GetUnit takes string pTable,string pKey returns unit
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
function GetPlayer takes string pTable,string pKey returns player
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
function GetTimer takes string pTable,string pKey returns timer
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
function GetTrigger takes string pTable,string pKey returns trigger
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
function GetGroup takes string pTable,string pKey returns group
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
function GetFX takes string pTable,string pKey returns effect
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
function GetLocation takes string pTable,string pKey returns location
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
return null
endfunction
function GetInteger takes string pTable,string pKey returns integer
return GetStoredInteger(udg_gc_DTAX_Core,pTable,pKey)
endfunction
function GetReal takes string pTable,string pKey returns real
return GetStoredReal(udg_gc_DTAX_Core,pTable,pKey)
endfunction
function GetBoolean takes string pTable,string pKey returns boolean
return GetStoredBoolean(udg_gc_DTAX_Core,pTable,pKey)
endfunction
Триггер Kraken_Shell
» текст
Objects used:
'A04E' = Kraken Shell (Tidehunter : Leviathan)
function Trig_Kraken_Shell_Conditions takes nothing returns boolean
return GetLearnedSkill()=='A04E' and IsUnitIllusion(GetTriggerUnit())==false
endfunction
function Kraken_Timer takes nothing returns nothing
call UnitRemoveBuffsBJ(1,GetUnit(H2Tx(GetExpiredTimer()),"UnitVar"))
endfunction
function Trig_Kraken_Shell_Actions takes nothing returns nothing
local unit lfo=GetTriggerUnit()
local integer lmZ=GetUnitAbilityLevel(lfo,'A04E')
local timer ltt
if lmZ==1 then
set ltt=CreateTimer()
call TimerStart(ltt,11,true,function Kraken_Timer)
call SetHandle(H2Tx(ltt),"UnitVar",lfo)
call SetHandle(H2Tx(lfo),"KrakenTimer",ltt)
else
set ltt=GetTimer(H2Tx(lfo),"KrakenTimer")
call TimerStart(ltt,12-lmZ,true,function Kraken_Timer)
endif
endfunction
function InitTrig_Kraken_Shell takes nothing returns nothing
set gg_trg_Kraken_Shell=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_Kraken_Shell,EVENT_PLAYER_HERO_SKILL)
call TriggerAddCondition(gg_trg_Kraken_Shell,Condition(function Trig_Kraken_Shell_Conditions))
call TriggerAddAction(gg_trg_Kraken_Shell,function Trig_Kraken_Shell_Actions)
endfunction
Ошибки :
Undeclared function H2Tx
Undeclared function GetUnit
Undeclared function SetHandle
Undeclared function GetTimer
Старый 29.05.2010, 19:04
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
если не используется JNGP, то вы не можете вызывать функции из других триггеров.
например у вас есть два триггера A и B. вы суете функцию lol в триггер A и вызываете ее из триггера B. это не правильно и будет ошибка компиляции. курите мануал Jass'a от Сергея. решение: помещать функцию lol в Custom Script карты (находится выше всех остальных триггеров, с названием вашей карты).
Старый 29.05.2010, 20:02
bobok1

offline
Опыт: 1,213
Активность:
РБ не работает, начиная от версии 1.24 - вот вся соль.
РБ заменили на хеш-таблицы.
bobok1 добавил:
function SetHandle takes string pTable,string pKey,handle pData returns nothing
call StoreInteger(udg_gc_DTAX_Core,pTable,pKey,H2Ix(pData))
endfunction
pTable,pKey, H2IX(pData) - это что? О_О
P.S. Не учил SCV
Старый 31.05.2010, 03:11
Anufis

offline
Опыт: 6,290
Активность:
Цитата:
Сообщение от bobok1
pTable,pKey, H2IX(pData) - это что? О_О
P.S. Не учил SCV

pTable,pKey - это строки, по которым идет запись в кеш, а H2IX(pData) - конверт хэндла в инт
Старый 02.06.2010, 22:43
Doc

offline
Опыт: 63,163
Активность:
bee, ложь всего лишь функция должна быть выше тригер соответственно тоже. Но он должен быть ранее выше скомпилирован а не просто перемещен.
Старый 02.06.2010, 23:12
Ответ

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

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

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

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



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