Добавлен
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
32
Ельнур, а зачем тебе вовсе все это надо, если даже жасс сложно, мб гуи, простенькие дамми касты и все такое. конфетные войны, замок скиби - годные карты сделанные на гуи. Будет пахать на всех версиях в придачу.
7
quq_CCCP:
Ельнур, а зачем тебе вовсе все это надо, если даже жасс сложно, мб гуи, простенькие дамми касты и все такое. конфетные войны, замок скиби - годные карты сделанные на гуи. Будет пахать на всех версиях в придачу.
да джасс легок не пойму зачем они луа прикрепили

локалки так же работают например если ты поставишь do
function trigger
local
function timer
здесь local не рабоатет обьявленная в trigger хотя мне говорили обратное, но все равно радует то что обнулении нет и код быстрее будет
end

хеш прекрасно работает думаю только хеш буду чистить и код быстрее буде тписаться))

думаю сборщик мусоа не умеет чистить хеш таблицы хаха)
24
DataStorage = {} -- глобальная переменная с lua таблицей вместо хештаблицы

------

local t = CreateTimer()
local u1 = GetCaster() -- нет такой функции, тут должно быть получение кастера
local u2 = GetTarget() -- такой функции тоже нет, тут должно быть получение цели
local i = 42
local data = { caster = u1, target = u2, num = i}
DataStorage[GetHandleId(t)] = data

----

local t = GetExpiredTimer()  -- не помню есть ли такая функция, тут должно быть получение таймера созданого в предыдущем блоке
local data = DataStorage[GetHandleId(t)]
local u3 = data.caster -- здесь окажется юнит из u1
local u4 = data.target -- здесь окажется юнит из u2
local x = data.num -- здесь окажется число из i
Кому нужен хеш, когда можно сделать так?
7
prog:
DataStorage = {} -- глобальная переменная с lua таблицей вместо хештаблицы

------

local t = CreateTimer()
local u1 = GetCaster() -- нет такой функции, тут должно быть получение кастера
local u2 = GetTarget() -- такой функции тоже нет, тут должно быть получение цели
local data = { caster = u1, target = u2}
DataStorage[GetHandleId(t)] = data

----

local t = GetExpiredTimer()  -- не помню есть ли такая функция, тут должно быть получение таймера
local data = DataStorage[GetHandleId(t)]
local u1 = data.caster
local u2 = data.target
Кому нужен хеш, когда можно сделать так?
вместо caster и таргета писать GetSpellAbilityUnit(), GetSpellTargetUnit()?
24
Ельнур, ну, это три куска кода, первый показывает объявление луа таблицы, которая используется вместо хештаблицы. Второй блок показывает запись произвольных данных в эту таблицу по хендлу нового таймера, а третий блок показывает чтение этих данных и запись их в переменную. Какие именно данные, сколько их где они берутся не важно, поэтому я использовал несуществующие функции для упрощения.
27
Ельнур, да
local data = { caster = GetSpellAbilityUnit(), target = GetSpellTargetUnit()}

prog, а если надо 3 значения привязать это надо писать так (чем больше параметров, тем больше аргументов? а как типы данных здесь?):
local data = { caster = GetSpellAbilityUnit(), target = GetSpellTargetUnit(), A = 0} A - целое число
24

local data = { caster = u1, target = u2, num = i}
это то же самое что сделать вот так
local data = {}
data.caster = u1
data.target = u2
data.num = i
или вот так
local data = {}
data["caster"] = u1
data["target"] = u2
data["num"] = i
7
local u1 = GetCaster() -- нет такой функции, тут должно быть получение кастера
local u2 = GetTarget() -- такой функции тоже нет, тут должно быть получение цели
все работает только скажи имена caster target когда будешь в другом триггере указывать оно не будет между собой стакаться? или надо писать caster1 target1 ...?
или можно для каждого триггера отдельный DataStorage1...2...3... замутить? = {} -- глобальная переменная с lua таблицей вместо хештаблицы
24
Ну, я же не вижу твой код - это нужно использовать в соответствующем триггере, естественно - пример приведен без всего "лишнего" кода, вроде триггеров и обработки событий - только минимум необходимый чтобы показать работу с таблицами.
7
prog:
Ну, я же не вижу твой код - это нужно использовать в соответствующем триггере, естественно - пример приведен без всего "лишнего" кода, вроде триггеров и обработки событий - только минимум необходимый чтобы показать работу с таблицами.
do
  local d = InitGlobals -- записываем InitGlobals в переменную
  function InitGlobals() -- заменяем оригинальную InitGlobals своей
       d() -- вызываем оригинальную InitGlobals из переменной
       InitMyTrigger2()
  end
end
do
function InitMyTrigger2()
DataStorage = {} -- глобальная переменная с lua таблицей вместо хештаблицы
function spelleffectr()
local u = GetSpellAbilityUnit()
local u1 = GetSpellTargetUnit()
if GetSpellAbilityId() == FourCC('A002') and GetUnitTypeId(u) == FourCC('Hpal') then
PauseUnit(u,false)
local i = CreateItem(FourCC('I000'),GetUnitX(u),GetUnitY(u))
UnitAddItem(u,i)
local i1 = CreateItem(FourCC('I001'),GetUnitX(u),GetUnitY(u))
UnitAddItem(u,i1)
local t1 = CreateTimer()
local cot1 = timerdistance
TimerStart(t1,0.05,true,cot1)
local data = { caster = u, target = u1}
DataStorage[GetHandleId(t1)] = data
end
end
function timerdistance()
local t = GetExpiredTimer()
local data = DataStorage[GetHandleId(t)]
local u = data.caster
local u1 = data.target
DisplayTimedTextToPlayer(Player(0),0,0,10,GetUnitName(u1))
end
local t = CreateTrigger()
local cot = spelleffectr
local evenk = EVENT_PLAYER_UNIT_SPELL_EFFECT
local p0 = Player(0)
local p1 = Player(1)
local p2 = Player(2)
local p3 = Player(3)
local p4 = Player(4)
TriggerRegisterPlayerUnitEvent(t,p0,evenk,nil)
TriggerRegisterPlayerUnitEvent(t,p1,evenk,nil)
TriggerRegisterPlayerUnitEvent(t,p2,evenk,nil)
TriggerRegisterPlayerUnitEvent(t,p3,evenk,nil)
TriggerRegisterPlayerUnitEvent(t,p4,evenk,nil)
TriggerAddAction(t,cot)
end
end
смотри если я буду использовать DataStorage для всех триггеров и для всех триггеров напишу напишу caster target они не будут между собой переписываться?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.