7

» WarCraft 3 / [Lua] Преобразование предметов

DarkLigthing:
NazarPunk:
Теже грабли, только на lua. Почему никто не делает работу с зарядами?

for i = 0, 6 do
	if GetItemTypeId(UnitItemInSlot(unit, i)) == id then
		RemoveItem(UnitItemInSlot(unit, i))
	end
end
у героя шесть слотов инвентаря, так сложно посмотреть в константах bj_MAX_PLAYER_SLOTS?
Хм. буду фиксить )
а можно собирать на 6 слот?
7

» WarCraft 3 / boolexpr не работает в луа

prog:
ставлю на то, что триггер сжирает сборщик мусора
может сборщик уничтожил нечайно bj_Playablemaparea? и нужно вручную писать регион вручную написал регион все равно выключается
7

» WarCraft 3 / boolexpr не работает в луа

ScorpioT1000:
сделал вместо local group g = CreateGroup() > local g = CreateGroup() теперь проверяю все равно выключился
Во всём коде? Это именно везде так надо делать
да во всем все равно не помогает он работает 10-15 сек потом оффается CreateGroup() ненадо писать?
7

» WarCraft 3 / boolexpr не работает в луа

ScorpioT1000:
И правда компилится, но ты допускаешь грубейшие ошибки.
Я проверил
function f()
  local wtf x = 'test'
  print(x)
end

f()
print(x) -- выводится 'test'
Ты объявляешь локалку и глобалку, следующие строки эквивалентны:
local group g = CreateGroup()
и
local group 
g = CreateGroup()

Все твои имена будут светиться и меняться с каждым вызовом извне
у меня он поработал 10-15 сек потом офнулся
что мне сделать чтобы он не выключался

ScorpioT1000:
луа - нетипизированный язык, объявления будут типа
local g = CreateGroup()
все эти @param - только для подсказок в IDE типа VS Code
-- Copy vector from Unit X/Y/Z
-- @param u Unit
function copyFromUnit (self, u)
...
сделал вместо local group g = CreateGroup() > local g = CreateGroup() теперь проверяю все равно выключился

и как мне писать теперь если локальная сразу равно глобальной
7

» WarCraft 3 / boolexpr не работает в луа

решил вот так
function Condition(unittypeadrenalin)
return GetUnitTypeId(GetFilterUnit()) == 'Hpal' and GetUnitAbilityLevel(GetFilterUnit(),'A000') > 0
end
function adrenalinremovemana()
local unit u = GetEnumUnit()
local unitstate mana = UNIT_STATE_MANA
local unitstate maxmana = UNIT_STATE_MAX_MANA
DisplayTimedTextToPlayer(Player(0),0,0,10.00,"group")
SetUnitState(u,mana,GetUnitState(u,mana)-GetUnitState(u,maxmana)*RMaxBJ(0,2)*0.01)
end
function AdrenalinSeconds()
local group g = CreateGroup()
local rect r = Rect(-608.0, -928.0, -256.0, -608.0)
DisplayTimedTextToPlayer(Player(0),0,0,10.00,"seconds")
local boolexpr filterr = unittypeadrenalin
local code cot1 = adrenalinremovemana
GroupEnumUnitsInRect(g, r, filterr)
ForGroup(g,cot1)
end
local trigger t = CreateTrigger()
local code cot = AdrenalinSeconds
TriggerRegisterTimerEvent(t,1.00,true)
TriggerAddAction(t, cot)
7

» WarCraft 3 / boolexpr не работает в луа

ScorpioT1000:
Странно, что вообще что-то работает, ведь ты пишешь не на lua :)
это луа но с API варкрафта) без обнулении
7

» WarCraft 3 / глобальная в луа если я задам ей область воздействия с do end

GetLocalPlayer:
Всякое объявление без ключевого слова local есть глобальное, видимое вне текущей области видимости.
то есть если я поставлю do end она перезапишется когда я ее юзну вне do end?)

GetLocalPlayer:
Всякое объявление без ключевого слова local есть глобальное, видимое вне текущей области видимости.
ясно спасибо
7

» WarCraft 3 / луа выдает ошибку в ифе

наверху был endif из за этого

а почему это ошибку выдает?

а там нужно убрать function
Загруженные файлы
7

» WarCraft 3 / написал свою функцию, будет работать или нет?

quq_CCCP:
Ельнур, ты пожалуйста честно скажи мне, ты наркоман? Что такое утечки то хоть представляешь?
Тип code даже формально не хендл, и даже не отдельный тип, т.к в jass у тебя по идеи нет возможности чето сделать с указателем на код, т.к типы указаны строго. Code нужен лишь чтобы интерпретатор понял что ты передал в качестве аргумента указатель на функцию.
Удалять code как и плодить ты тоже не можешь стандартными средствами языка, даже boolexpr'ы не плохят указатели, условно все прибито гвоздями и функций в коде ровно столько, сколько ты описал, они не создаются динамически (если не рассматривать мемхак).
Насчет ваших 1.31+ и луа, там да может быть всякая чушь, но такое. В луа я там слышал что есть нечто отдаленно похожое и вовсе луа, такая же надстройка над виртуальной JASM машиной, но пока пруфов на русском (или инглише) нет, и я ничего не пишу по этому поводу, и вам слушать что попало тоже не советую.
если бы она не утекала то не было бы переменной code

chitaite eshe raz Обнуление
У переменных типа integer, real, boolean есть некая “область видимости”, по выходу из этой области – переменная удаляется. У всех остальных переменных этой “области” нет, а значит, их нужно обнулять вручную
set <переменная> = null
Если ее не обнулить, то она останется в памяти компьютера навсегда по протяжению игрового процесса, и тем самым в большом количестве будет вызывать тормоза!
7

» WarCraft 3 / Оптимизация размера карты

в открытой версии я могу сделать 180 мб но когда я карту сохраню ее размер будет 120 мб
7

» WarCraft 3 / war3map.j blizzard.j но с вариантом луа есть такое??)

TheMilka:
Ельнур:
TheMilka:
Да, в тех же файлах лежит
ух, это облегчает все, а как их название
commons.lua
blizzard.lua
по аналогии с jass файлами.
я думаю.
Bergi_Bear:
Вы чё
Куку чтоле
а зачем blizzard.lua если там нет бж функции?))

Bergi_Bear:
Вы чё
Куку чтоле
ЛОООООЛ я думал тут посложнее будет но просто вместо local пишешь param, не зря я изучал джасс)

ребята я покопался в рефордже и не нашел таких файлов как common.lua и blizzard.lua
Загруженные файлы
7

» WarCraft 3 / написал свою функцию, будет работать или нет?

quq_CCCP:
Чето ваще не понятно причем тут удаление пассивок и таймеры?
Да и вовсе существует событие смети.
Ну и писанина вроде local unitstate life ...
Ну не ужели ты не понимаешь что нахрен ненужно, пишется сразу GetWidgetLife( unit, ) < 0.405 и корочее и нет никаких нахрен ненужных переменных, тоже самое с code, нет никакой надобности заносить в переменные, ибо указатель на функцию ты и так передаешь через function name.
она утекает
7

» WarCraft 3 / Где находятся внутриигровые модели?

скачай программу в гугле поищи casc view он открывает игры близзард при том законно и бесплатно
7

» WarCraft 3 / вопрос про клонов

ScorpioT1000:
Код мы должны телекинезом как-то призвать?)
дело было в коде, я проверил оригиналом), но сюда писать код не буду ибо там много из разных ивентов


Ельнур:
ScorpioT1000:
Код мы должны телекинезом как-то призвать?)
дело было в коде, я проверил оригиналом), но сюда писать код не буду ибо там много из разных ивентов

проблема была просто когда я копировал спелл забыл поставить вместо t t1 и так далее)
7

» WarCraft 3 / вопрос про клонов

если что код скопирован с другой способности но у клонов не работает а у оригинала работает
7

» WarCraft 3 / Я хочу чтоб при использовании способности на него вешался дебаф

quq_CCCP:
У пугны одинаковый бонус урона от заклинаний 1.66х по юнитам в астрале, что минус стандартные 25% резиста героев, выходит как раз те самые 40%, про которые написано у пугны. При касте на союзника или себя, пугне выдают другой левел абилки, у абилки к примеру 5 левелов а выучиваешь ты канал, при касте в себя всегда замедло слабое, на врагов сильное. Стандартные изгания в астрал переделать нельзя никак, нужно делать кастомный аналог с помощью кода чтобы союзникам урон от магии уменьашался а врагам увеличивался.
есть одно поле в игровых константах бонус от лечения в астрале 1.66 это не влияет на урон от магии?
7

» WarCraft 3 / Я хочу чтоб при использовании способности на него вешался дебаф

Qulore:
А как вообщем-то как создать способность -60% защиты от магии, мой вариант был такой - если приминяют способность "Астрал", приминяющий юнит равен - маг, то добавить способность -60% защиты от магии на того кого использовали Астрал.
в таком случае когда пугна кастует заклинания на себя или на союзника дай ему не минус а плюс 60% защиты от магии
7

» WarCraft 3 / создается 2 эффекта на хеш один не удаляется другой удаляется

может прикрепить эффекты не к таймеру а к dummyn?
прикрепить то прикрепил хендлы разные но не могу теперь почистить хеш если почистить то удаляет все и один эффект все равно остается

возможно ли сделать без лупа, set n= firstofgroup() действия потом if n!=n1 set n1 = firstofgroup и действия?

не катит, записал под два цикла и из за того что неправильно юзаю циклы все зависает к чертям

не могу сделать проверку condition потому что туда нужно сохранить на хеш игрока но нельзя в condition обнулять ниччего а то карта не запустится

остался последний способ иницилиазировать таймер как нулл потом после проверки создавать таймер
local timer t = null
if IsUnitIllusion(n) == true and GetUnitTypeId(n) == 'Hpal' and  pn == p12 then
set t = CreateTimer()

способ выше рабочий)
7

» WarCraft 3 / создается 2 эффекта на хеш один не удаляется другой удаляется

если прикрепить эффект к баффу, бафф действует 10 сек, то эффект удалится как только проиграется

может прикрепить эффекты не к таймеру а к dummyn?
7

» WarCraft 3 / Я хочу чтоб при использовании способности на него вешался дебаф

создай 2х дамми, дай первому астрал с -60% защитой магии, а второму без ничего только астрал, и проверяй триггером если цель способности сам войн или союзник кастующего то создавать второго даммика без ничего с астралом прикажи ему астрал на таргет юнит, а если он враждебен то создай первого даммика и прикажи ему астрал с -60% на таргет юнита, только еще нужна способность пустышка пустышкой и отлавливай
7

» WarCraft 3 / здраствуйте ставлю скиллу духовное пламя или фейзы

quq_CCCP:
Ельнур, ну рефордж, че тут поделаешь.
лучше доты 2 и патча 1..26

quq_CCCP:
Ельнур, ну рефордж, че тут поделаешь.
вот теперь и стандартный не удаляется)

вот теперь и стандартный не удаляется)
не удаляется когда я юнита двигаю call SetUnitPosition и он застревает в деревьях, по теории должно была удалиться по времени

вообщем создал таймер который после 2 сек ремовает этот бафф

приключился интересный баг я двигаю таргета, когда у таргета бафф фейзы уровень равно 0, то триггер уничтожается хеш стирается, и когда после 2 сек я удаляю у него этот самый бафф то он идет опять на свое место