Сейчас 06:34:08 Среда, 24 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Локальные переменные (Несколько вопросов)
Локальные переменные
FatalBladeДата: Пятница, 24 Июня 2011, 01:14:07 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Несколько вопросов:

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

2) - Что если у меня есть локальные переменные, но я хочу что бы они работали ещё в пару триггерах, не только в том где они созданны. Но что бы в других триггерах они не работали. Например у меня есть триггер One, триггер Two и триггер Three. В триггере One у меня назначается переменная, например точка. Я хочу что бы эта переменная работала в триггере Two, но не работала в триггере Three. Как это сделать?

3) - Допустим у меня есть 2 совешенно разных триггерных скилла. В одном из них есть переменная Х, значение которой в триггере даётся X = Casting Unit. Во втором триггере, никак не связанным с первым, есть переменная Y. Y = Casting Unit. Проблема в том, что почему то когда эти спеллы используются в одно и то же время, то X и Y путаются значениями. X получает значение Casting Unit, но их другого триггера, другой триггерной абилки. И поэтому если в первом триггере есть функция Order X to Stop, то юнит из второго триггера останавливается. Именно поэтому меня интересуют пункты 1 и 2. У меня довольно часто получается что переменные пересекаются когда используются 2 триггерных скилла. Как этого избежать?


 

Novice998Дата: Пятница, 24 Июня 2011, 01:39:03 | Сообщение # 2
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
FatalBlade, лол я нуб...На джассе не пишу,но ответ на первое очевиден...local integer blabla.2)Сори за нуб ответ,но я думаю,что можно значение из трига 1 переносить на глобал переменную,а с нее в триг 2...

Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (


Сообщение отредактировал Novice998 - Пятница, 24 Июня 2011, 01:51:10
 

FatalBladeДата: Пятница, 24 Июня 2011, 02:07:04 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Novice998)
На джассе не пишу,но ответ на первое очевиден...local integer blabla.

Синтакс то может быть совсем другой. А может даже локальные переменные вообще не так создаются как глобальные.

Quote (Novice998)
из трига 1 переносить на глобал переменную,а с нее в триг 2...

Само собой так можно, но например в языках програмирования как С++ или С#, при вызове функции/процедуры (в данном случае триггера), можно указать какие переменные эта функция получает. Любая переменная созданная внутри функции является локальной, а переменные полученные "снаружи", глобальные.

Например если у меня есть глобальная переменая Х=0, и я не указываю эту переменную при вызове функции, то если внутри функции я например напишу Х=1, то глобальная переменная Х останется без изменений. Однако внутри функции создастся локальная переменная Х, которая будет работать только в пределах функции. Прикол в том, что глобальная переменная Х, и локальная переменная Х, - это две разные переменные, не имеющие друг к другу никакого отношения.


 

Mep3aB4uKДата: Пятница, 24 Июня 2011, 09:35:55 | Сообщение # 4
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Я знаю 2 способа перенести локальную, самой надежный это хэш ну и 2 это глобалка(не для всех вариантов подходит). По 1 читай статью, а 2: если к примеру 1 триг запишет юнита в глобалку то во 2 создается локалка и сразу присваиваеш значение, вот пример: глобальная точки називается х, local location l=udg_x, но локалки нужно обнулять, в конце трига пишешь set l=null
 

DiabfallДата: Пятница, 24 Июня 2011, 10:25:54 | Сообщение # 5
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Quote (Mep3aB4uK)
Я знаю 2 способа перенести локальную, самой надежный это хэш ну и 2 это глобалка(не для всех вариантов подходит). По 1 читай статью, а 2: если к примеру 1 триг запишет юнита в глобалку то во 2 создается локалка и сразу присваиваеш значение, вот пример: глобальная точки називается х, local location l=udg_x, но локалки нужно обнулять, в конце трига пишешь set l=null

Ещё можно через кэш, но это старый век. :)
 

FatalBladeДата: Пятница, 24 Июня 2011, 10:26:50 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
ССылку плз на статью если есть.
И ещё вопрос:
Casting Unit/Entering Unit/Attacking Unit/итд... разве не должно быть само по себе локальным назначением?
Если например используются 2 триггерных спелла, и пусть даже я не буду заносить Casting Unit в переменные, а использовать именно это значение, ведь Casting Unit первого триггера не должен никак пересекаться с Casting Unit второго триггера. Не так?


 

Mep3aB4uKДата: Пятница, 24 Июня 2011, 10:49:06 | Сообщение # 7
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Так, они не пересекутся.

Добавлено (24-06-2011, 10:49)
---------------------------------------------
Верно, они не пересекутся.

 

adigaДата: Пятница, 24 Июня 2011, 10:49:14 | Сообщение # 8
7 уровень
Группа: Проверенные
Сообщений: 489
Награды: 0
Репутация: 14
Блокировки:
Mep3aB4uK, такой вопрос: если я двигаю точку х=предыдущее значение х + 20, когда обнулять х??

триггеринг 439/450
спеллкрафт 447/450
картокрафт 427/450
ландшафтинг 189/450
фастмэйкинг 225/225
иконкрафтинг 310/450
импортинг 110/450
самооценкинг 450/450
 

Mep3aB4uKДата: Пятница, 24 Июня 2011, 10:58:33 | Сообщение # 9
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
В самом низу(хотя и можно после деиствий с точкой)
 

FatalBladeДата: Пятница, 24 Июня 2011, 11:06:51 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Mep3aB4uK)
Так, они не пересекутся.

Вот и я о том... Так почему же они пересекаются?
У меня есть 2 триггера которые конфликтуют друг с другом.





Когда оба триггера используются одновременно, только первая часть первого триггера срабатывает. Второй триггер по разному. Бывает норм срабатывает, а бывает не срабатывает вообще.


 

adigaДата: Пятница, 24 Июня 2011, 11:49:42 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 489
Награды: 0
Репутация: 14
Блокировки:
Mep3aB4uK, в таком случае если я обнулил перменную новая как задастся если предыдущий результат я удалил???????????

триггеринг 439/450
спеллкрафт 447/450
картокрафт 427/450
ландшафтинг 189/450
фастмэйкинг 225/225
иконкрафтинг 310/450
импортинг 110/450
самооценкинг 450/450
 

Mep3aB4uKДата: Пятница, 24 Июня 2011, 12:49:16 | Сообщение # 12
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
FatalBlade, я с телефона сижу,спойлер не откривается,буду дома подскажу(если другой никто не поможет).
Adiga, если это локалка то она все равно не передастся по новой.
 

lawsonДата: Пятница, 24 Июня 2011, 13:55:21 | Сообщение # 13
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
FatalBlade,
Вот это да, я такие триггеры ни когда в жизни не напишу.

Добавлено (24-06-2011, 13:55)
---------------------------------------------

Quote (Diabfall)
Ещё можно через кэш, но это старый век.

хеш


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

BUUNIДата: Пятница, 24 Июня 2011, 15:14:30 | Сообщение # 14
7 уровень
Группа: Проверенные
Сообщений: 347
Награды: 1
Репутация: 53
Блокировки:
FatalBlade, может быть тебе в одном из триггеров в самом начале поставить действие Wait 0.01 seconds?
Тем самым у тебя они не перепутаются.
Quote (FatalBlade)
Когда оба триггера используются одновременно, только первая часть первого триггера срабатывает. Второй триггер по разному. Бывает норм срабатывает, а бывает не срабатывает вообще.

Половина триггера срабатывает скорее всего из-за действия Wait 0.35 seconds в середине триггера, может как раз таки из-за твоих переменных.


 

FatalBladeДата: Пятница, 24 Июня 2011, 17:27:54 | Сообщение # 15
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (BUUNI)
Wait 0.01 seconds?

Минимальный Wait это 0.1 секунд. Всё что меньше будет округлено до 0.1. То есть 0.01 ==>> 0.1

Да и вообще я пробовал этот вариант. Интервалы не приостанавливают триггер, а просто дают задержку перед следующим действием. Так что это ничего не меняет. Да и кроме того Wait вообще сама по себе проблематичная функция.

Quote (BUUNI)
Половина триггера срабатывает скорее всего из-за действия Wait 0.35 seconds в середине триггера, может как раз таки из-за твоих переменных.

Во время этого Wait'a проигрывается анимация. Я не могу его убрать. А то получится сначала эффект а потом анимация юнита.

Или ты имеешь ввиду поменять Wait и назначение переменных местами?


 

Mep3aB4uKДата: Пятница, 24 Июня 2011, 22:58:15 | Сообщение # 16
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
FatalBlade, после вейтов саsting unit не сработает... вначале трига занеси в переменную и после используй эту переменную
 

DragoNДата: Пятница, 24 Июня 2011, 23:17:05 | Сообщение # 17
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (lawson)
Quote (Diabfall)
Ещё можно через кэш, но это старый век.
хеш

кэш и хэш - это разные вещи avtorklif


El Psy Congroo
 

FatalBladeДата: Пятница, 24 Июня 2011, 23:30:44 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Mep3aB4uK)
FatalBlade, после вейтов саsting unit не сработает... вначале трига занеси в переменную и после используй эту переменную

Так я так и делаю


 

Mep3aB4uKДата: Суббота, 25 Июня 2011, 00:11:33 | Сообщение # 19
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
Quote (FatalBlade)
Unit - Order (Casting unit) to Stop
Wait 0.10 seconds
Unit - Order (Casting unit) to Stop

Стоит casting unit, а не переменная. Скинь карту пример с описанием что должно получится
 

FatalBladeДата: Суббота, 25 Июня 2011, 15:15:49 | Сообщение # 20
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Mep3aB4uK)
Стоит casting unit, а не переменная. Скинь карту пример с описанием что должно получится

Это совсем другое.
Else
Unit - Order (Casting unit) to Stop
Wait 0.10 seconds
Unit - Order (Casting unit) to Stop

Для начала у меня в каждом триггерном спелле, в каждом триггере с событием каста данного скилла, если скилл требует конкретную цель; проверяется отсутствие пересекаемости Target[29], переменная которой даётся значение Target unit of abolity being cast, с другими переменными. Если присутствует пересекаемость, то срабатывает Else.

Почему Casting Unit а не переменная? Потому что у меня проверка пересекаемости происходит до назначения остальных переменных связанных с данным скиллом(триггером). Вернее если проверка пошла, только тогда назначаются переменные, и триггер приходит в действие, а юнит кастует скилл. В противном случае ==>> Unit - Order (Casting unit) to Stop




Сообщение отредактировал FatalBlade - Суббота, 25 Июня 2011, 15:22:21
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Локальные переменные (Несколько вопросов)
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz