Есть триггерное действие на лимит найма определенного типа юнитов, оно распространяется и на героев.
На гуях Раздел Игрок - Set Traning\Construction Avalible of unit.
ClotPh, фрог не кодер, ваще на гуи писал а его кодер переводил в jass, сравните разные способности героев и системы, вы удивитесь насколько они непохожи, реализация одних и тех же вещей бывает очень различной. У фрога был очень хороший кодер который в торопях делал переводил все в jass или исправлял баги фрога, как только фрог остался без кодера - он забил на доту для варкравта, ибо был совершенно не способен вносить изменения в карту. UrsaBoss, что то невижу функции о переполнении массива триггеров, о Retalitation тоже не слова, в дота системе нету "Dummy_Control", удаляет спустя 20 сек. всех даммиков которые появились на карте, вспомни функцию нанесения урона, что там в 6 пункте? тут радостные хомяки понакопируют, а потом будут плакать а че оно утечки, багует, и так далее....
Вы знаете как работает торнадо? Оно не поднимает и не крутит Юнита, это тупо анимация, там движка крепит спецэффект с моделью Юнита к кости модели торнадодля эмитации вращения сподьемом в воздух, нужен даммик с вращающейся костью.
saffd, потому что это переходной патч, которы почти никому не нужен, он есть только на офф бнете, где 2.5 пользователя. Потом авторы оригинальных руссификаторов, всяких расширенных редакторов и прочее, забили на поддержку еще при выходе 1.26, делать некому и не для кого.
Сидите на 1.26 или учите инглиш на 1.29.
Ну тут вся фитча в канале, тут чаннелинг когда завершится тогда бара переместится + защита от сбивания приказа, т.е снова начинает кастовать скилл. Сам ульт бары основан на канале, смотри его настройки. Мне больше нравился старый вариант, где бара мгновенно кастовал ульт и растворялся в воздухе, после атаковал цель...
library GroupUtils
//******************************************************************************
//* BY: Rising_Dusk
//*
//* This library is a simple implementation of a stack for groups that need to
//* be in the user's control for greater than an instant of time. Additionally,
//* this library provides a single, global group variable for use with user-end
//* enumerations. It is important to note that users should not be calling
//* DestroyGroup() on the global group, since then it may not exist for when it
//* it is next needed.
//*
//* The group stack removes the need for destroying groups and replaces it with
//* a recycling method.
//* function NewGroup takes nothing returns group
//* function ReleaseGroup takes group g returns boolean
//* function GroupRefresh takes group g returns nothing
//*
//* NewGroup grabs a currently unused group from the stack or creates one if the
//* stack is empty. You can use this group however you'd like, but always
//* remember to call ReleaseGroup on it when you are done with it. If you don't
//* release it, it will 'leak' and your stack may eventually overflow if you
//* keep doing that.
//*
//* GroupRefresh cleans a group of any shadow references which may be clogging
//* its hash table. If you remove a unit from the game who is a member of a unit
//* group, it will 'effectively' remove the unit from the group, but leave a
//* shadow in its place. Calling GroupRefresh on a group will clean up any
//* shadow references that may exist within it.
//*
globals
//* Group for use with all instant enumerations
group ENUM_GROUP = CreateGroup()
//* Temporary references for GroupRefresh
private boolean Flag = false
private group Refr = null
//* Assorted constants
private constant integer MAX_HANDLE_COUNT = 408000
private constant integer MIN_HANDLE_ID = 0x100000
//* Arrays and counter for the group stack
private group array Groups
private integer array Status[MAX_HANDLE_COUNT]
private integer Count = 0
endglobals
private function AddEx takes nothing returns nothing
if Flag then
call GroupClear(Refr)
set Flag = false
endif
call GroupAddUnit(Refr, GetEnumUnit())
endfunction
function GroupRefresh takes group g returns nothing
set Flag = true
set Refr = g
call ForGroup(Refr, function AddEx)
if Flag then
call GroupClear(g)
endif
endfunction
function NewGroup takes nothing returns group
if Count == 0 then
set Groups[0] = CreateGroup()
else
set Count = Count - 1
endif
set Status[GetHandleId(Groups[Count])-MIN_HANDLE_ID] = 1
return Groups[Count]
endfunction
function ReleaseGroup takes group g returns boolean
local integer stat = Status[GetHandleId(g)-MIN_HANDLE_ID]
local boolean b = true
if g == null then
debug call BJDebugMsg(SCOPE_PREFIX+" Error: Null groups cannot be released")
set b = false
elseif stat == 0 then
debug call BJDebugMsg(SCOPE_PREFIX+" Error: Group not part of stack")
set b = false
elseif stat == 2 then
debug call BJDebugMsg(SCOPE_PREFIX+" Error: Groups cannot be multiply released")
set b = false
elseif Count == 8191 then
debug call BJDebugMsg(SCOPE_PREFIX+" Error: Max groups achieved, destroying group")
call DestroyGroup(g)
set b = false
else
call GroupClear(g)
set Groups[Count] = g
set Count = Count + 1
set Status[GetHandleId(g)-MIN_HANDLE_ID] = 2
endif
return b
endfunction
endlibrary
Триггеры лучше просто так не удалять, а с задержой как у фрога, я эту систему выкладывал.
Потом ClearAction и ClearConditions не удаляют сами хендлы условий и дейсвий, если с условием пофиг, т.к оно зависает в болекспре и не утекает, то TriggerAddAction( trg, function name) будет возвращать каждый раз новый хендл, что есть утечка, нужно сохранять экшены триггеров в переменную а затем удалять действием TriggerRemoveAction, иначе будут плодится утечки или как фрог все действия делать в кондишенах, там из отличий только лимит операций поменьше и вейты не работают с синками.
Мда. Идиотизм прогрессирует...
Возвращает обьект типа location, разумеется если не удалить этот самый location будет утечка, но не функция утечна а кривой код который неудаляет локейшин ( а еще и бессмысленный, т.к есть нативки для координат).
Разумеется нет, приказы строго синхронизируются.
Да и как вы себе это представляете? У игрока А работник пошёл рубить лес, а у игрока Б этот же самый работник пошел добывать золото? Что за бред?
да я просто думал эмулировать отдачу приказов от игрока, ну типо игрок сам приказал юниту двигаться и т.д
Issue (Immiditate\point\target) order отдает приказ юниту, если вам открывать спеллбуки и прочее - ForceUIKey ( ) + абилка с хоткеем, без указания цели разумеется.
Прочие псевдоприказы вроде включения автокастов, без сбивания приказа реализуемо только мемхаком.
Разумеется нет, приказы строго синхронизируются.
Да и как вы себе это представляете? У игрока А работник пошёл рубить лес, а у игрока Б этот же самый работник пошел добывать золото? Что за бред?
» WarCraft 3 / Как сделать так,чтоб героя можно было купить только 1 раз?
На гуях Раздел Игрок - Set Traning\Construction Avalible of unit.
Ред. quq_CCCP
» WarCraft 3 / Spirit Breaker из DotA со всеми способностями
UrsaBoss, что то невижу функции о переполнении массива триггеров, о Retalitation тоже не слова, в дота системе нету "Dummy_Control", удаляет спустя 20 сек. всех даммиков которые появились на карте, вспомни функцию нанесения урона, что там в 6 пункте?
тут радостные хомяки понакопируют, а потом будут плакать а че оно утечки, багует, и так далее....
» WarCraft 3 / Высота торнадо
» WarCraft 3 / Есть ли русификатор триггеров для версии 1.29
Сидите на 1.26 или учите инглиш на 1.29.
» WarCraft 3 / Есть ли русификатор триггеров для версии 1.29
» WarCraft 3 / Spirit Breaker из DotA со всеми способностями
» WarCraft 3 / Что бы юнит мог проходить сквозь других юнитов?
» WarCraft 3 / Помогите с ботом!
» WarCraft 3 / SetAbilityUbertip под первой версией мемхака=Fatal
» WarCraft 3 / Глючный AddUnitToStock
» WarCraft 3 / Глючный AddUnitToStock
» WarCraft 3 / Почему не проигрывается spell morph, а сразу прыгает к цели
» WarCraft 3 / Перенос данных между обычными картами
» WarCraft 3 / Скиньте ссылки на рабочие анти мх на мемхаке
» WarCraft 3 / Время
Ред. quq_CCCP
» WarCraft 3 / Вопрос по коду из доты
» WarCraft 3 / Ursa Warrior из DotA со всеми способностями
Потом ClearAction и ClearConditions не удаляют сами хендлы условий и дейсвий, если с условием пофиг, т.к оно зависает в болекспре и не утекает, то TriggerAddAction( trg, function name) будет возвращать каждый раз новый хендл, что есть утечка, нужно сохранять экшены триггеров в переменную а затем удалять действием TriggerRemoveAction, иначе будут плодится утечки или как фрог все действия делать в кондишенах, там из отличий только лимит операций поменьше и вейты не работают с синками.
» WarCraft 3 / Является ли GetSpellTargetLoc() утечкой если не удалять её?
Возвращает обьект типа location, разумеется если не удалить этот самый location будет утечка, но не функция утечна а кривой код который неудаляет локейшин ( а еще и бессмысленный, т.к есть нативки для координат).
» WarCraft 3 / Как открыть карту TrollvsElves в Редакторе карт?
» WarCraft 3 / Способности у закопавшихся существ
» WarCraft 3 / Как обнулить записанный хендл в хэштаблице?
» WarCraft 3 / Хештаблица
» WarCraft 3 / Хештаблица
» WarCraft 3 / Можно ли локально отдать приказ юниту?
Прочие псевдоприказы вроде включения автокастов, без сбивания приказа реализуемо только мемхаком.
» WarCraft 3 / Можно ли локально отдать приказ юниту?
Да и как вы себе это представляете? У игрока А работник пошёл рубить лес, а у игрока Б этот же самый работник пошел добывать золото? Что за бред?