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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Триггер
Триггер
Brut@lusДата: Суббота, 15 Января 2011, 20:42:17 | Сообщение # 1
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
раньше я помню у меня был триггер типа:
Выбрать случайное A, B, C если выпало C то деййствия и т. д..
Тоесть чтобы рандмно выпиралась ветка последующих действия (ветки A,B,C=
Скажите кто-нибудь где оно, или если оно пропало в новом патче, то хотьна джассе скажите чтоли


 

KartohaДата: Суббота, 15 Января 2011, 20:48:11 | Сообщение # 2
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Можешь сделать искусственно:
Set <переменная целочисленная> = Математика - Random Number Betwheen 1 and 3
If <переменная целочисленная> = 1 then <первые действия>
If <переменная целочисленная> = 2 then <вторые действия>
If <переменная целочисленная> = 3 then <третьи действия>
 

AnyOne697Дата: Воскресенье, 16 Января 2011, 02:17:15 | Сообщение # 3
2 уровень
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 9
Блокировки:
Это можно сделать на cJass с помощью define.
Но она будет парсирована в то, что написанно by Kartoha.

Что-то вроде этого должно быть:

Code

define switch(num) = loacal integer sw = GetRandomInt(1, num)
define case(num) = {
                    if (num == 1 ) then
                    <ACTIONS>
                    else
                    //<EMPTY>
                    endif
                    }

Добавлено (16-01-2011, 02:02)
---------------------------------------------
Можно ещё более под Си (кто привык) модифицировать...

Code
define switch(num) = loacal integer sw = GetRandomInt(1, num)  
define case(num) = {  
                     if (num == 1 ) then  
                           <ACTIONS>  
                     }  
define break = endif

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

Добавлено (16-01-2011, 02:17)
---------------------------------------------
Тьфу...
Везде в строчке if(num == 1) then[/] надо изменить на [i]if(num== sw) then
А break всё же нужен... И даже смысл в принципе сохраняется :D

Юзается очень просто

Code

switch(3)

case(1)
<DO FIRST LIST ACTIONs>
break

case(2)
<DO SECOND LIST ACTIONs>
break

case(3)
<DO THIERD LIST ACTIONs>
break

Где 3 - в switch - количество веток, <DO ... LIST ACTIONs> - какие-то, абсолютно любые действия, а цифра в case - та ветка, которую нужно пройти... То есть пройти эту ветку, если выпало число num...

И... Это не тот switch, который есть в C/C++ и подобных, но очень на него похож, в принципе - можно сделать даже Си'шный переключатель, только строчку

Code
define switch(num) = loacal integer sw = GetRandomInt(1, num)  

на эту
Code
define switch(num) = local integer sw = num  

Ой... Опечаточка - loacal = local
Ну... Как-то так... Может работать и не будет, так как local'ные объявления должны находиться в начале функции... Ну... Есть ещё минус - не более одного использования на функцию... Иначе объявление будет конкурировать...

Кто хочет - может доработать... Это так... С дуба рухнул и соорудил... Здесь ещё можно кое-чего доделать, например унифицировать, но... Это уже не в этом топике... Да и лень съедает...


Я у узнал, что у меня
Есть огромная семья:
Монитор, системный блок,
В сеть воткнул я проводок,
Windows - небо голубое...
Это всё моё - родное!
Без инета жить нельзя -
Наркоман наверно я!
 

SirNikolasДата: Воскресенье, 16 Января 2011, 07:53:07 | Сообщение # 4
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (AnyOne697)
Может, работать и не будет, так как local'ные объявления должны находиться в начале функции...
cJASS автоматически ставит их туда.
Quote (AnyOne697)
Есть ещё минус - не более одного использования на функцию...
Code
define <local integer sw = num;local integer sw = num> = local integer sw = num




Сообщение отредактировал SirNikolas - Воскресенье, 16 Января 2011, 08:36:55
 

Brut@lusДата: Воскресенье, 16 Января 2011, 13:28:36 | Сообщение # 5
Группа: Заблокированные
Сообщений: 2496
Награды: 1
Репутация: 924
Блокировки:
Спасибо всем, я думаю я буду использовать способ картохи. SirNikolas, подскажи что лучше юзать к тому способу локалки, или глобальные?

 

DreiiДата: Воскресенье, 16 Января 2011, 13:38:12 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Brut@lus, локалки офк

 

PUVerДата: Воскресенье, 16 Января 2011, 14:26:24 | Сообщение # 7
Сухопутные крысы!
Группа: Модераторы
Сообщений: 4462
Награды: 8
Репутация: 1845
Блокировки:
Название темы должно содержать суть вопроса. Неужели трудно назвать тему допустим во так:
"Случайное действие". Название "Триггер" не содержит сути вопроса. Т.к. 50+% вопросов задаваемых в этом опросе о триггерах. А название должно содержать суть вопроса, чтобы было удобно пользоваться поиском.
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Триггер
  • Страница 1 из 1
  • 1
Поиск:

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