Сейчас 23:52:49 Пятница, 19 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как подождать в if\than\else?
Как подождать в if\than\else?
AjaccioДата: Воскресенье, 20 Февраля 2011, 22:14:21 | Сообщение # 51
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
Хм, я конечно GUI плохо помню, однако не могу понять логику построения.
Функция "Отряд - Выбрать каждого юнита в..." по порядку обрабатывает всех юнитов группы.
Вы же хотите при обработке группы поставить паузу -> пока не пройдет эта пауза функция не преступит к следующему юниту отряда.
Также Warcraft наверняка палит эту паузу в неподходящем месте и просто обрывает работу... В общем нельзя ставить там паузу.
Надо бы запоминать отряд, а потом работать с ним снова:

1) Отряд - Выбрать каждого юнита в... <Ваши условия> - > делать действия до паузы.
2) Запомнить этот отряд в переменную.
3) Подождать сколько нужно.
4) Отряд - Выбрать каждого юнита в... <Запомненной группе> - > делать действия после паузы.


XOR EAX, EAX
MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
 

ZanaraZДата: Понедельник, 21 Февраля 2011, 08:06:59 | Сообщение # 52
5 уровень
Группа: Проверенные
Сообщений: 120
Награды: 0
Репутация: 28
Блокировки:
Можно сделать немного другим способом выбрать юнит и тд и тп перед вейтом заноси их в переменную в даном случае у тебя это Unit123 = выбраный юнит потом не в нося в цикл делаеш вайт на 5 секунд а далее уже действие с переменной Unit123

Набрался мозгов, теперь буду себя сдерживать
 

Master12Дата: Понедельник, 21 Февраля 2011, 16:46:24 | Сообщение # 53
8 уровень
Группа: Проверенные
Сообщений: 775
Награды: 0
Репутация: 184
Блокировки:
ZanaraZ, если вносить выбранных юнитов в переменную отряд, то внесется только один((

Говори, что бы я тебя увидел.



Сообщение отредактировал Master12 - Понедельник, 21 Февраля 2011, 16:46:31
 

ZanaraZДата: Понедельник, 21 Февраля 2011, 19:02:16 | Сообщение # 54
5 уровень
Группа: Проверенные
Сообщений: 120
Награды: 0
Репутация: 28
Блокировки:
Quote (Master12)
внесется только один((

неправда сам лично делал вносится весь отряд (я столкнулся с 1 случаем где мне надо сравнивать 2 отряда переменные помогли) так что если ты устанавливаеш переменную как выбранный юнит то внесутся все


Набрался мозгов, теперь буду себя сдерживать
 

Master12Дата: Понедельник, 21 Февраля 2011, 20:45:59 | Сообщение # 55
8 уровень
Группа: Проверенные
Сообщений: 775
Награды: 0
Репутация: 184
Блокировки:
Quote (Master12)
Пониаешь, событие переодическое, и период не равен wait. Мне нужно работать именно с теми юнитами, которые сейчас были выбраны, а если я занесу их в отряд, то в течении 5 секунд нагромаздяться кучу юнитов и встанут все одновременно...

Добавлено (21-02-2011, 20:45)
---------------------------------------------
Kartoha, можешь подсказать, или ты иссяк?


Говори, что бы я тебя увидел.



Сообщение отредактировал Master12 - Понедельник, 21 Февраля 2011, 20:43:02
 

KartohaДата: Понедельник, 21 Февраля 2011, 21:02:24 | Сообщение # 56
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Master12, попробуй так, немного используется JASS, но зато должно сработать:
Group - переменная типа группа
Триггер:
Событие - Время Periodic Event
Условия:
---
Действия:
CS: local group g
Set Group = (твои юниты)
Отряд - Pick Every Units In Group And Do Actions
делаеш все действия до вэйта
Перед вэйтом:
СS: set g = udg_Group
Wait (сколько надо)
CS: set udg_Group = g
Отряд - Pick Every Units In Group And Do Actions
твои действия
CS: call DestroyGroup (g)


Сообщение отредактировал Kartoha - Понедельник, 21 Февраля 2011, 21:04:32
 

Master12Дата: Понедельник, 21 Февраля 2011, 21:20:53 | Сообщение # 57
8 уровень
Группа: Проверенные
Сообщений: 775
Награды: 0
Репутация: 184
Блокировки:
Kartoha, спасибо! Локалки это что-то))

Говори, что бы я тебя увидел.

 

rixt7956Дата: Понедельник, 21 Февраля 2011, 21:27:04 | Сообщение # 58
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
В самом конце еще вставь
set g=null
иначе могут лаги начаться :)
 

KartohaДата: Понедельник, 21 Февраля 2011, 21:33:46 | Сообщение # 59
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
rixt7956, а разве call DestroyGroup не очищает переменную?
 

rixt7956Дата: Понедельник, 21 Февраля 2011, 21:36:04 | Сообщение # 60
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
Так же можно циклом удалять юнитов из группы, занося их в массив, и потом во втором цикле заносить их обратно в группу. :)

Добавлено (21-02-2011, 21:35)
---------------------------------------------
Блин, не в той теме написал.

Добавлено (21-02-2011, 21:36)
---------------------------------------------
Нет, не очищает.

 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как подождать в if\than\else?
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

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