Если ты про критическую ошибку ос во время работы с редактором, то тут много всякой хренотени могло случиться. Если зависает редактор только в твоей карте, а на пустой всё норм, то попробуй взять версию с резерва, если так везде, то переустанови вар
Лично у меня ошибки вылетали больше 2-х раз в месяц, в конце концов вообще после 5 секунд с момента включения компа, потом и вовсе отказывался в биос заходить. Отнес в ремонт, они там пошаманили-почистили, вернули, через несколько дней снова ошибка. Короче дело было в термопасте, после замены которой всё хорошо уже месяц+
А не все нормуль просто с инета какой то вирус скачал(вроде кроме моделей от сюда нече не качал) и теперь придется переустанавливать этот долбанный компудактер который надоел и который отнял у меня 11 лет моей жизни и мое зрение разбить бы его выкинув из 10 этажа НО! Я научился vJass и теперь пойду чинить комп для того что бы и дальше ковырять этот долбанный vJASS
Типа
set mg.id = 0
set mg.name = ""
set tst.power = 0
А потом
set mg.id = 101
set mg.name = "Хоттабыч"
set tst.power = 100500
call mg.toString()
Хз может кто то и подскажет в чем сок но попытка не пытка
На это нормально что установка значении не внутри функции?
Пусть попробует внутри функции и да зачем для такого простого юзать библиотеку и структуру и метод можно же прямо в действии эти дела делать и нефиг создавать новую структуру0-0
Тут какое то глупое решение, вейтом ждать, dying unit может быть уже null, что мешать взять таймер на каждого юнита, или проходится по спотам крипов раз в минуту как в доте и если крипов там нет, то создать новых. На сейте выложена система респауна крипов без проблем.
я как бы 148 минут юзал один спел для проверки на точку где стояли крипы и они всегда ресались так что какой бы она не была глупой она работает и не надо как в системе NCSS по 40 глобалок или хеш-таблицы все на ГУИ и работоспособно одни плюсы и да DyingUnit становится null после реса нового крипа
Ну насчет орба да, она пока наилучший кандидат но это ограничение, для 1 героя можно использовать только 1 орб эффект вот это меня не устраивает
Ты сначала разберись подробнее с орбом этим, раз уж взялся за него.
А дальше сумеешь сделать так, что бы они сразу несколько работали.
Это реально сделать, просто надо поочерёдные проверки вставлять. И будет всё ОК
ну вы же сами говорили что орб блокирует другой орб
тут баг очевидный, на юнита регистрируется таймер 0.33, если ему изменить скорость атаки оно сломается (выдать ему перчатки скорости 400% или замедлить атаку увечьем например)
сказали, делай через яд либо все скиллы пиши на джассе, либо используй мемхак
да и к тому же там вроде как есть окно в 0.1 сек, где даже если отменить автоатаку напишет, что урон был
к тому же такая система будет работать только до 8192 (макс размер массива вара) юнитов, потом оно накроется ибо там никак не подчищается таймер, тупо юнит вошёл на карту - увеличили счётчик колва юнитов - запустили таймер равный этому счётчику - добавили событие в другой триггер что таймер этого счётчика истёк
я сам когда увидел в первые эту систему думал что она офигенная, я даже не понимал как оно работает и вообще не умел регистрировать получение юнитом урона))
Ну насчет орба да, она пока наилучший кандидат но это ограничение, для 1 героя можно использовать только 1 орб эффект вот это меня не устраивает
Модель саму скинь нормально что за ерунда, регаться на левых сайтах еще
Не могу, пишет не удалось выполнить операцию( не достаточно памяти), если это про память телефона то у меня еще 9 гб свободно стоит, я хз что это такое
Я тебе несколько раз говорил, заноси локальные переменные в глобальные
globals
group TempGroup = CreateGroup()
endglobals
function mycond takes nothing returns boolean
set bj_lastReplacedUnit = GetFilterUnit()
return UnitAlive(bj_lastReplacedUnit) ... and IsUnitEnemy(bj_lastReplacedUnit,GetOwningPlayer(bj_lastCreatedUnit))
endfunction
function damage takes nothing returns nothing
call UnitDamageTarget(bj_lastCreatedUnit,GetEnumUnit()...)
endfunction
function myfunc takes nothing returns nothing
set bj_lastCreatedUnit = GetTriggerUnit()
call GroupEnumUnitsInRange(TempG,GetUnitX(bj_lastCreatedUnit),GetUnitY(bj_lastCreatedUnit),300,Condition(function mycond))
call ForGroup(TempG,function damage)
call GroupClear(TempG)
endfunction
Можно в принципе действия сразу в фильтре делать, возвращая фолс/ничего
function mycond takes nothing returns boolean
set bj_lastReplacedUnit = GetFilterUnit()
if UnitAlive(bj_lastReplacedUnit) ... and IsUnitEnemy(bj_lastReplacedUnit,GetOwningPlayer(bj_lastCreatedUnit)) then
call UnitDamageTarget(bj_lastCreatedUnit,bj_lastReplacedUnit...)
endif
return false
endfunction
function myfunc takes nothing returns nothing
set bj_lastCreatedUnit = GetTriggerUnit()
call GroupEnumUnitsInRange(TempG,GetUnitX(bj_lastCreatedUnit),GetUnitY(bj_lastCreatedUnit),300,Condition(function mycond))
endfunction
Конечно в юзе вариковских переменных возможна проблема, если например в событии юнит получает урон, создаётся юнит (на гуи, используя переменную bj_lastCreatedUnit), то возможна перезапись, в таком случае достаточно использовать нигде не используемую глобалку, ну либо каждый раз вызывать юнита триггера в функции проверки, как сказал quq_CCCP
о, даже смог найти вопрос где я читал об этом, можешь заглянуть в комменты
вот тебе мини-тест, фильтр в состоянии обработать всех юнитов и продолжить выполнять следующие действия, а цикл обрывает поток
globals
integer i = 0
integer count = 1330 // колво юнитов на карте
group TempG = CreateGroup()
endglobals
function mycond takes nothing returns boolean
set i = i+1
call BJDebugMsg(I2S(i))
return true
endfunction
function Trig_sd_Actions takes nothing returns nothing
call GroupEnumUnitsInRect(TempG,bj_mapInitialPlayableArea,Condition(function mycond))
call BJDebugMsg("проигнорировано юнитов: "+I2S(count-i))
call BJDebugMsg("через 3 сек посмотрим сколько юнитов обработает цикл")
call TriggerSleepAction(3)
set i = 0
loop
set bj_lastCreatedUnit = FirstOfGroup(TempG)
exitwhen bj_lastCreatedUnit == null
set i = i+1
call BJDebugMsg(I2S(i))
call GroupRemoveUnit(TempG,bj_lastCreatedUnit)
endloop
call BJDebugMsg("проигнорировано юнитов: "+I2S(i))
// поток обрывается и это сообщение мы даже не увидим, все последующие действия не будут выполнены
endfunction
function s takes nothing returns nothing
set i = i+1
endfunction
function show takes nothing returns nothing
set i = 0
call ForGroup(TempG,function s)
call BJDebugMsg("проигнорировано юнитов: "+I2S(i))
endfunction
//===========================================================================
function InitTrig_sd takes nothing returns nothing
set gg_trg_sd = CreateTrigger( )
call TriggerAddAction( gg_trg_sd, function Trig_sd_Actions )
call TimerStart(CreateTimer(),4,false,function show)
endfunction
Чел прикинь я создал библиотеку и она пашет)))))) хз как но пашет я и сам не ожидал понаставил как ты и говорил глобал пепеменные через private создал группу одну для нанесения урона как ты и говорил и все работает как часы это ваще нечто что то типа сверхестественное явление
» WarCraft 3 / Зависание редактора
» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.
set mg.id = 0
set mg.name = ""
set tst.power = 0
set mg.name = "Хоттабыч"
set tst.power = 100500
call mg.toString()
» WarCraft 3 / Структуры в джассе: смещение без очистки и вытекающие проблемы.
» WarCraft 3 / Иконки на заказ
» WarCraft 3 / Система очков аттрибута
» WarCraft 3 / Зависание редактора
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / отлов удара на ГУИ
Ред. Гуванч
» WarCraft 3 / Респавн крипов
» WarCraft 3 / отлов удара на ГУИ
» WarCraft 3 / Респавн крипов
» WarCraft 3 / отлов удара на ГУИ
Ред. Hanabishi
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / JNPG Не проверяется код
Ред. Гуванч
» WarCraft 3 / Иконки на заказ
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Иконки на заказ
» WarCraft 3 / Эффект слэша
» WarCraft 3 / Эффект слэша
» WarCraft 3 / Эффект слэша
» WarCraft 3 / Функция ForGroup
» WarCraft 3 / Иконки на заказ
» WarCraft 3 / Функция ForGroup