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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Локальные переменные
Локальные переменные
TitansДата: Четверг, 07 Апреля 2011, 19:41:38 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
Можно ли использовать локальные переменные в других триггерах не создовая их снова, как глобальные?
 

lawsonДата: Четверг, 07 Апреля 2011, 20:45:28 | Сообщение # 2
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Только через запись в хеш.

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

TitansДата: Четверг, 07 Апреля 2011, 20:47:40 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
А как в хеш их записать? Или можно объеденить несколько триггеров в один? (В jass)
 

lawsonДата: Четверг, 07 Апреля 2011, 21:05:33 | Сообщение # 4
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Titans)
Или можно объеденить несколько триггеров в один?

можно сделать все в одно триггере.
Quote (Titans)
А как в хеш их записать?

Сначала прочитай что вообще такое хеш и как им пользоваться.


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


Сообщение отредактировал lawson - Четверг, 07 Апреля 2011, 21:06:01
 

TitansДата: Четверг, 07 Апреля 2011, 21:25:22 | Сообщение # 5
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
Quote (lawson)
можно сделать все в одно триггере
lawson можешь показать пример на этом?


Сообщение отредактировал Titans - Четверг, 07 Апреля 2011, 21:28:06
 

lawsonДата: Четверг, 07 Апреля 2011, 21:32:02 | Сообщение # 6
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Titans)
можешь показать пример на этом?

там и так делаеться все в одном триггере, за счет таймера отписывался там уже.


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

TitansДата: Четверг, 07 Апреля 2011, 21:43:12 | Сообщение # 7
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
Но я в той наработке зделал на трёх триггерах, вот я хотел заменить глобальные переменные на локальные, но так как локальные переменные используются только в одном триггере, то хотел объеденить в один и поставить локальные переменные, но незнаю jass поэтому не могу объединитьь триггеры.
 

lawsonДата: Четверг, 07 Апреля 2011, 23:03:55 | Сообщение # 8
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Titans)
незнаю jass

Все элементарно учи JASS. Иначе нет смысла что то пытаться намудрить.


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

TitansДата: Четверг, 07 Апреля 2011, 23:13:57 | Сообщение # 9
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
Можешь статьи подкинуть, а то ток эту нашёл?
 

lawsonДата: Четверг, 07 Апреля 2011, 23:16:54 | Сообщение # 10
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Полезные статьи.

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

FkoFFДата: Пятница, 08 Апреля 2011, 02:26:37 | Сообщение # 11
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Titans)
локальные переменные используются только в одном триггере

локальные переменные используются в пределах одной функции а не триггера, триггер может состоять хоть из 100 функций, а то и больше. Зависит от кривизны рук


 

TitansДата: Пятница, 08 Апреля 2011, 09:10:42 | Сообщение # 12
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
FkoFF ну триггер это и есть функция (как я понимаю), значит в другом триггере локальные переменные не будут работать т. к. это будет другая функция, так?
 

lawsonДата: Пятница, 08 Апреля 2011, 10:38:08 | Сообщение # 13
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Titans)
так

ЗАПОМНИ: ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ РАБОТАЮТ ТОЛЬКО В РАМКАХ ОДНОЙ ФУНКЦИИ В КОТОРОЙ ОНИ ПРОПИСАНЫ. Чтоб использовать те же локальные переменные из одной функции в другой то тогда используй хеш.


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


Сообщение отредактировал lawson - Пятница, 08 Апреля 2011, 10:38:37
 

TitansДата: Пятница, 08 Апреля 2011, 20:10:15 | Сообщение # 14
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
Ещё один вопрос:
Как в локальную переменную записать всех юнитов на карте?
Я зделал так:
Code

function Selec takes nothing returns unit
     local unit H
     call ForGroupBJ( GetUnitsInRectAll(GetEntireMapRect()), set H = GetEnumUnit())
     return H
endfunction

Я знаю что "set H = GetEnumUnit()" нельзя так присваевать, напишите как правильно надо сделать.
 

lawsonДата: Пятница, 08 Апреля 2011, 20:26:04 | Сообщение # 15
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ээ человек вообще для этого есть раздел вопросы по картостроению или иди в школу.
Но первый раз помогу, эта функция бесмысленная ты хочешь сделать функцию которая пикает всех юнитов на карте и возвращает юнита.
Тогда надо так, вот эта функция будет тебе возвращать одного юнита из группы.
Code
function IsUnitMoves takes nothing returns unit
local group g  = CreateGroup()
local unit h
call GroupEnumUnitsInRect(g, GetPlayableMapRect(), null)
set h = FirstOfGroup(g)
if (h != null) then
return h
endif
call DestroyGroup(g)
set h = null
set g = null
return null
endfunction

Quote (Titans)
нельзя так присваевать

GetFilterUnit() - это используеться когда ты фильмтруешь юнитов в отдельной функции при добавлении их в группу.
GetEnumUnit() - это используеться когда ты хочешь взять юнита который был выделен для каких либо действия. Редко используеться.


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


Сообщение отредактировал lawson - Пятница, 08 Апреля 2011, 20:54:46
 

TitansДата: Пятница, 08 Апреля 2011, 20:53:54 | Сообщение # 16
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
Quote (lawson)
Ээ человек вообще для этого есть раздел вопросы по картостроению

Ну вопрос в принцепи относится к теме, и чтоб не создовать новой темы я задал его здесь.

Добавлено (08-04-2011, 20:53)
---------------------------------------------
Спасибо ещё раз. Ток репутация твоя не повышается, поэтому не могу + поставить.

 

lawsonДата: Пятница, 08 Апреля 2011, 20:53:56 | Сообщение # 17
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Titans)
Ну вопрос в принцепи относится к теме, и чтоб не создовать новой темы я задал его здесь.

ЧТоб ответ был более подробным говорю создаай в разделе вопросы по картам.


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

FkoFFДата: Пятница, 08 Апреля 2011, 20:55:48 | Сообщение # 18
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Titans)
FkoFF ну триггер это и есть функция (как я понимаю), значит в другом триггере локальные переменные не будут работать т. к. это будет другая функция, так?

нет, триггер это набор функций служащих для исполнения заданного сценария. Тоесть в одном триггере минимум 2 функции, максимум - хоть задницей жуй, можно и сто и двести, зависит от количества условий.

Попробуй воспользуйся сохраненной локальной переменной внутри pick every unit in xxx and do actions.




Сообщение отредактировал FkoFF - Пятница, 08 Апреля 2011, 20:56:20
 

TitansДата: Пятница, 08 Апреля 2011, 21:07:36 | Сообщение # 19
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
Quote (lawson)
GetEnumUnit() - это используеться когда ты хочешь взять юнита который был выделен для каких либо действия.

Вот я и хотел выбрать юнита и записать его в переменную. И потом в других триггерах вызывать эту функцию для того чтоб она вернула мне значения переменной "H"
Quote (FkoFF)
Попробуй воспользуйся сохраненной локальной переменной внутри pick every unit in xxx and do actions.

Не понял. Какой сохранёной переменной, ведь я ещё не установил ей значения?
 

lawsonДата: Пятница, 08 Апреля 2011, 21:48:18 | Сообщение # 20
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FkoFF)
Тоесть в одном триггере минимум 2 функции

Ошибочка.


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

FkoFFДата: Пятница, 08 Апреля 2011, 21:52:47 | Сообщение # 21
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (lawson)
Ошибочка.

Нет же.

функция на регистрацию триггера и функция на которую ссылается инициализация.

Quote (Titans)
Не понял. Какой сохранёной переменной, ведь я ещё не установил ей значения?

Ты стебешься? Перечитай еще раз пример. Попробуй объявить локальную переменную, а затем использовать её в действиях с группой юнитов (for group).

Смысл в том что триггер делиться на большое количество функций, в зависимости от количества действий требующих отдельные функции, к примеру каждое условие - отдельная функция, каждое логическое сравнение (OR\AND) так же отдельная функция, действия с группой юнитов, с группой игроков - все отдельные функции. Это все к твоей ошибке на счет того что локальные переменные работают в пределах одного триггера.




Сообщение отредактировал FkoFF - Пятница, 08 Апреля 2011, 21:53:27
 

lawsonДата: Пятница, 08 Апреля 2011, 21:54:13 | Сообщение # 22
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FkoFF)
Нет же.

Не а ошибочка. Минимум одна функция.
создаешь триггер любой конвертируешь его, все удаляешь из него и пишешь любую себе функцию а потом вызываешь ее методм ExecuteFunc("")


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

FkoFFДата: Пятница, 08 Апреля 2011, 21:56:00 | Сообщение # 23
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (lawson)
Не а ошибочка. Минимум одна функция. создаешь триггер любой конвертируешь его, все удаляешь из него и пишешь любую себе функцию а потом вызываешь ее методм ExecuteFunc("")

Это уже не совсем триггер в общепринятом понимании. И кстати, если ты удалишь все из триггера и после этого попытаешься в нем что то написать - без жнпг тебя кикнет к черту.


 

lawsonДата: Пятница, 08 Апреля 2011, 21:57:01 | Сообщение # 24
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FkoFF)
И кстати, если ты удалишь все из триггера и после этого попытаешься в нем что то написать - без жнпг тебя кикнет к черту.

Но все же значит ты ошибся можно минимум одну функцию.


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


Сообщение отредактировал lawson - Пятница, 08 Апреля 2011, 22:04:08
 

TitansДата: Суббота, 09 Апреля 2011, 13:55:59 | Сообщение # 25
6 уровень
Группа: Проверенные
Сообщений: 167
Награды: 0
Репутация: 77
Блокировки:
Ещё вопрос пока не закрыли тему.
Почему при вставке действия "call PolledWait( x.xx )", триггер перестаёт работать как только дойдёт до этого деёствия (в игре)?
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Локальные переменные
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

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