лицензия у тебя или нет не имеет значения ты хоставать всеравно не сможешь пока у тебя динамический айпи, берёшь набираешь оператора, говоришь что те нужен статичный айпи он говорит без базара только к абоненской плате +150р(некоторые операторы предлагают эту услугу бесплатно )
не знаю что тут сложного берешь запускаешь абилку на 1го удаляеться способность и гдето в переменной +1,потом же опять эту способность добавляешь герою и на 2го кликаешь опять же переменная +1,и тут работает магия таймера который их тянет к друг другу
может у тебя созданных юнитов >1000 а также спелов и тд и тп
насчёт утечек жасс может ты где то сделал цикл без выхода ,а если их там таких 10 то на 60 сек и может лагануть
Перегрузка макросов
Определение в пределах одной области видимости нескольких макросов с одинаковыми именами не вызовет ошибки, если они отличаются количеством принимаемых аргументов. Такие макросы называются перегружеными. В зависимости от количества переданных при вызове аргументов, будет вызван тот или иной из перегруженных макросов.
define {
msg(text) = DisplayTextToPlayer(GetLocalPlayer(), text, 0, 0)
msg(text,playerid) = DisplayTextToPlayer(Player(playerid), text, 0, 0)
msg(text,playerid,x,y) = DisplayTextToPlayer(Player(playerid), text, x, y)
}
nothing test() {
msg("test 1")
msg("test 2", 1)
msg("test 3", 2, 0.1, 0.1)
}
будет транслировано в следующее:
function test takes nothing returns nothing
call DisplayTextToPlayer(GetLocalPlayer(), "test 1", 0, 0)
call DisplayTextToPlayer(Player(1), "test 2", 0, 0)
call DisplayTextToPlayer(Player(2), "test 3", 0.1, 0.1)
endfunction
Внимание! Если в перегруженной группе есть макрос, не принимающий аргументов, его все равно необходимо записывать с указанием пустых скобок после него.
да писать на жасее ненужно ты просто логику посмотри и сделай тоже самое на гуи + прикрути тебе что надо(типо разных мобов ),хотя бы цыклы условия определить можешь
неужели так сложно сделать переменную unit чтобы была она массивом,потом проверить всех юнитов на карте и отфильтровать либо по id либо по способности, дальше заносишь все эти ратуши в массив выбираешь допустим чтобы цикл пробежал 3 раза и делаешь такое условие
-цикл от0 до 2
massUnit[ Random(0,сколько ратуш в масииве) ]-послать туда "общее количество зомбарей/3"
могу показать кодом (Gui вообще не знаю к сожалению)
-конец цикла
странно чем-то напоминает структуры(точней во что компилируются на жасс) и вообще я их использую чтобы не писать такие вещи как
Masiv[Peremenayz]=peremenaya и для ооп
//=============================================
scope Myscope initializer init{
timer GLOBALTIMER==null//наш глобальный таймер
private MyMethod(){
Mylibrary_Update()//эта функция будет обновляться по таймеру сюда засовывай и норм будет
}
private void init(){
GLOBALTIMER=CreateTimer()
TimerStart(GLOBALTIMER, 0.025, true, function MyMethod)
}
}
//====================================================
library Mylibrary{
public void Update(){//эту функцию обновляет наш таймер сюда всё что угодно можно прикрепить на эту библиотеку
UnitMovePolar.Update()
}
//=====================
private void Mymethod(unit u){
UnitMovePolar.AddToUnitMove(u,30,30*0.0174,5,true)
}
//============
//передвижение по градусу UnitMovePolar.AddToUnitMove(u,speed,rad,Time,Trenie)
struct UnitMovePolar{
static UnitMovePolar Name[]
static int count = 0
//===================
unit u
int tt = 0
float speed,rad,timmer,tr
bool b
void Move(){
SetUnitX(.u,GetUnitX(.u)+.speed*Cos(.rad))
SetUnitY(.u,GetUnitY(.u)+.speed*Sin(.rad))
if(.b){
.speed-=.tr
if(.speed<=0){
Remove()
}
}
}
void Remove(){
.tt = 0
.b=false
RemoveUnitStruct(.u)
}
void Action(){
Move()
.tt++
if(.tt>=.timmer){
Remove()
}
}
//=================================
static void AddToUnitMove(unit u,float speed,float rad,float timmer,bool trenie){
int i = Proverka(u)
if(i!=-1){return}
Name[count++] = UnitMovePolar.create()
Name[count-1].u=u
Name[count-1].speed=speed
Name[count-1].rad=rad
Name[count-1].b=trenie
Name[count-1].timmer=timmer*sek
Name[count-1].tr=(speed/timmer)/sek
//================================
}
static int Proverka(unit u){
int i = 0
while(i<count){if(Name[i].u==u){return i};i++}
return -1
}
//Удаление
static void RemoveUnitStruct(unit u){
int i = Proverka(u);if(i==-1){return};count--;Name[i].u=null
Name[i].destroy()
while(i<count){
Name[i]=Name[i+1]
i++}
}
static void Update(){int i =0;while(i<count){Name[i].Action();i++}}
}//==========end struct
}
ещё самое важное о чём тебя предупредить хочу если у тя много функций требующих секундного таймера вешай отдельно на него все там системки а вот на такие в 0.025 вешай системы спелов
а если у тя очень много функций в них ещё много циклов и тд то лутше несколько таймеров по идеи на карту с 800 тригерными спелами уйдут 4 таймера
ну самый простой вариант я думаю будет на "структурах",закидываешь юнита в структуру даёшь ему этот баф а по окончанию времени действия просто выводишь его из неё предварительно удалив этот баф (все дебафы накинешь уже в структуре на основе абилок ну или попытать счастья сделать свои дебафы)
» WarCraft 3 / ограничение видимости
я хочу чтобы камера не уходила из этого ректа
Ред. ledoed
» WarCraft 3 / дальность атаки
PS. если так и дальше бот будет умнеть,то судный день уже скоро
» WarCraft 3 / Макрос из строки.
» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели
Ред. ledoed
» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели
» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели
Ред. ledoed
» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели
или может вы ставите эту модель под декарацию или предмет
» WarCraft 3 / Можно ли хостить если купить Warcraft 3 в батле нете?
Ред. ledoed
» WarCraft 3 / Как сделать спелл луч?
» WarCraft 3 / Помогтте сделать скилл
Ред. ledoed
» WarCraft 3 / Вопрос по World Editor-у
» WarCraft 3 / как найти утечки на jass?
насчёт утечек жасс может ты где то сделал цикл без выхода ,а если их там таких 10 то на 60 сек и может лагануть
» WarCraft 3 / Если не задан параметр функции
» WarCraft 3 / Способности и алгоритмы на заказ
Вот тебе все 2 заказа
» WarCraft 3 / Конкурс карт WC3 на 50 000 рублей!
» WarCraft 3 / Как проверить есть ли в области ратуша?
» WarCraft 3 / Как проверить есть ли в области ратуша?
» WarCraft 3 / Импортированная картинка вместо обычной мини-карты.
» WarCraft 3 / Как проверить есть ли в области ратуша?
-цикл от0 до 2
massUnit[ Random(0,сколько ратуш в масииве) ]-послать туда "общее количество зомбарей/3"
могу показать кодом (Gui вообще не знаю к сожалению)
-конец цикла
» WarCraft 3 / Как проверить есть ли в области ратуша?
Ред. ledoed
» WarCraft 3 / Глобальный таймер
Masiv[Peremenayz]=peremenaya и для ооп
Ред. ledoed
» WarCraft 3 / Глобальный таймер
а если у тя очень много функций в них ещё много циклов и тд то лутше несколько таймеров по идеи на карту с 800 тригерными спелами уйдут 4 таймера
» WarCraft 3 / Как правильно дать юниту из WOW оружие в руки?
Ред. ledoed
» WarCraft 3 / Глобальный таймер
» WarCraft 3 / Баф на уменьшение физ. размера.