17

» WarCraft 3 / ограничение видимости

nvc123:
а теперь пояснение для тех кому лень качать карту
Всё очень просто допустим размер карты 500 на 500 видимость 490 490 а рект у меня 150 150
я хочу чтобы камера не уходила из этого ректа
17

» WarCraft 3 / дальность атаки

правильный ответ по последней ссылки,
PS. если так и дальше бот будет умнеть,то судный день уже скоро
17

» WarCraft 3 / Макрос из строки.

вам нужно типо обратиться к функции по переменной типо string = "A1"
void A1(){
ваш код
}

void init(){
ExecuteFunc("A1")
}
17

» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели

покопавышись в коде нашол косяк ты анимацию death заканчиваешь на 599 кадре и с этого начинаешь birth
Загруженные файлы
17

» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели

да вроде всё нормально должна показываться вот ваша кость отвечающая за это дело
Bone "ZZZZzzzap!" {
	ObjectId 0,
	Scaling 3 {
		Linear,
		400: { 1, 1, 1 },
		599: { 0, 0, 0 },
		798: { 1, 1, 1 },
	}
но так как анимация birth идёт 0.2 сек вы может и не замечаете
или может вы ставите эту модель под декарацию или предмет
17

» WarCraft 3 / Можно ли хостить если купить Warcraft 3 в батле нете?

лицензия у тебя или нет не имеет значения ты хоставать всеравно не сможешь пока у тебя динамический айпи, берёшь набираешь оператора, говоришь что те нужен статичный айпи он говорит без базара только к абоненской плате +150р(некоторые операторы предлагают эту услугу бесплатно )
17

» WarCraft 3 / Помогтте сделать скилл

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

» WarCraft 3 / Вопрос по World Editor-у

игровые константы\Монстры:время возвращения охраны ставишь на 100> сек
17

» WarCraft 3 / как найти утечки на jass?

может у тебя созданных юнитов >1000 а также спелов и тд и тп
насчёт утечек жасс может ты где то сделал цикл без выхода ,а если их там таких 10 то на 60 сек и может лагануть
17

» WarCraft 3 / Если не задан параметр функции

Перегрузка макросов

Определение в пределах одной области видимости нескольких макросов с одинаковыми именами не вызовет ошибки, если они отличаются количеством принимаемых аргументов. Такие макросы называются перегружеными. В зависимости от количества переданных при вызове аргументов, будет вызван тот или иной из перегруженных макросов.

  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
Внимание! Если в перегруженной группе есть макрос, не принимающий аргументов, его все равно необходимо записывать с указанием пустых скобок после него.
а так jass писался очень давно
17

» WarCraft 3 / Как проверить есть ли в области ратуша?

да писать на жасее ненужно ты просто логику посмотри и сделай тоже самое на гуи + прикрути тебе что надо(типо разных мобов ),хотя бы цыклы условия определить можешь
17

» WarCraft 3 / Импортированная картинка вместо обычной мини-карты.

меняешь эту картинку на такой же формат и такой же размер по пикселям
Загруженные файлы
17

» WarCraft 3 / Как проверить есть ли в области ратуша?

неужели так сложно сделать переменную unit чтобы была она массивом,потом проверить всех юнитов на карте и отфильтровать либо по id либо по способности, дальше заносишь все эти ратуши в массив выбираешь допустим чтобы цикл пробежал 3 раза и делаешь такое условие
-цикл от0 до 2
massUnit[ Random(0,сколько ратуш в масииве) ]-послать туда "общее количество зомбарей/3"
могу показать кодом (Gui вообще не знаю к сожалению)
-конец цикла
17

» WarCraft 3 / Как проверить есть ли в области ратуша?

а попробуй дать зданию какую нить способность(невидимую) и проверяй есть ли у неё такая
17

» WarCraft 3 / Глобальный таймер

Clamp:
Без структур, так как они здесь излишни.
странно чем-то напоминает структуры(точней во что компилируются на жасс) и вообще я их использую чтобы не писать такие вещи как
Masiv[Peremenayz]=peremenaya и для ооп
17

» WarCraft 3 / Глобальный таймер

ну ок смори пример делаю на скорую руку

//=============================================
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 таймера
17

» WarCraft 3 / Баф на уменьшение физ. размера.

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