XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
sleepw

offline
Опыт: 8,449
Активность:
For loop integer A/B
чем они отличаются?
Старый 22.02.2008, 22:23
Profi

offline
Опыт: 3,640
Активность:
Ничем....
Старый 22.02.2008, 22:29
sleepw

offline
Опыт: 8,449
Активность:
а смысл тогда?
Старый 22.02.2008, 22:33
Elisar

offline
Опыт: 2,031
Активность:
Profi,ответ не верный)

если тебе в 1 триге нужно создать цикл в цикле надо использовать для 1 цикла А, а для другого В
если нужно цикл в цикле а в нем еще N циклов то после второго нужно будет использовать Variable
ну это так в гуи^_^
а вычислить легко на скрине код,в итоге цикла вар выдаст значение переменной - 6..а должен 30
Миниатюры
Кликните на картинку для увеличения
Название:  Точечный рисунок (9)_1.jpg
Просмотров: 39
Размер:  33.4 Кбайт  
Старый 22.02.2008, 22:41
sleepw

offline
Опыт: 8,449
Активность:
мм помоги плиз:)
пытаюсь сделать рандом мод)
тоесть надо каждому игроку от 1-4 создать по 1 герою из массива.. но чтобы одно и то же число не попалось 2м героям.
я чёто тут сижу кручу с этим лупом :)
и точно такое же проделать с 5-8
:D:
Старый 22.02.2008, 22:46
Profi

offline
Опыт: 3,640
Активность:
я имел ввиду что можно использовать и A и B и разницы не будет...
Старый 22.02.2008, 22:56
DFlyer
<3 MJ
offline
Опыт: 43,079
Активность:
Забей всех героев в массив начиная с еденицы. Создай второй массив из целочисленных, забитых начиная с еденицы по порядку (1, 2, ...). Для создания рандом-героя юзай следующий код:
» RandomMode

Код:
Events:
  Your Evemts
Conditions:
  Your Conditions
Actions:
  set index = Get Random Integer Between 1 and 10
  if RandomHeroCheck[index] не равно 0
    then
      Create 1 RandomHero[index] for ...
      set RandomHeroCheck[index] = 0
    else
      Run (This Trigger)

Смысл такой, что проверяется ячейка второго массива для проверки. Если нерой ещё не выбирался (соответствующая ему ячейка во втором массиве не равна нулю), всё норм. Если же в ячейке ноль, значит такой герой уже есть, значит запускаем заново триггер для нового рандома.
Старый 22.02.2008, 22:58
sleepw

offline
Опыт: 8,449
Активность:
ммм а как тогда сделать чтобы всем юнитам создало?.. тоесть главный трабл именно в этом.. в голове присутствует идея сделать много триггеров но сердце подсказывает что DFlyer знает иной способ

sleepw добавил:
мм и как забить числа?
RandomHeroCheck[1]=1
RandomHeroCheck[2]=1...
так?

sleepw добавил:
блин можно карту-пример? я чето совсем запутался:(
Старый 22.02.2008, 23:18
DFlyer
<3 MJ
offline
Опыт: 43,079
Активность:
sleepw
Массивом. Сделай так:
Код:
CS: local integer i = 1
CS: loop
CS: set udg_RandomHeroCheck[i] = i
CS: set i = i+1
CS: exitwhen i=10 //если всего 10 героев
CS: endloop

А вот в переменную массив RandomHero придётся вбивать в ручную:
Код:
set RandomHero[1] = Герой01
set RandomHero[2] = Герой02
...
set RandomHero[n] = Геройnn
Старый 22.02.2008, 23:25
sleepw

offline
Опыт: 8,449
Активность:
DFlyer
умоляю сделай пример :(
с рандомом для игроков от 1-8 плиз..
Старый 22.02.2008, 23:30
DFlyer
<3 MJ
offline
Опыт: 43,079
Активность:
RandomMod, карта пример. Для выбора случайного юнита нажми Esc. Все юниты умирают рандомно причём по очереди, не повторяется.

DFlyer добавил:
Игроков 8, а команд? Две? Просто создай две пары аналогичных массивов. Одна пара для одной команды, вторая - для другой.
Прикрепленные файлы
Тип файла: w3x RandomHeroChoose.w3x (8.2 Кбайт, 47 просмотров )
Старый 22.02.2008, 23:45
sleepw

offline
Опыт: 8,449
Активность:
да команды 2.. щас потестаю..:)

sleepw добавил:
массивы есть только как их запихнуть в создание?

Create 1 RandomHero[index] for Player from udg_Team1[index]?

sleepw добавил:
вроде всё ок сделал только вот такой нюанс. как сделать чтобы оно всем сразу дало?
ибо надо каждый раз событие выполнять чтобы триг подействовал..
Старый 23.02.2008, 01:17
Korneliy
DMF
offline
Опыт: 23,443
Активность:
все это есть в статьях. рекоммендую почитать на досуге.
Старый 23.02.2008, 01:57
sleepw

offline
Опыт: 8,449
Активность:
если бы я даже понимал на что целиться то нашёл бы..
а тут столкнулся с таким в первый раз,непонятно что,куда..
Старый 23.02.2008, 02:05
DFlyer
<3 MJ
offline
Опыт: 43,079
Активность:
sleepw
Т.е., если говоря относительно этого примера, тебе нужно чтоб при нажатии Еск, все сразу по порядку убивались (апстену, гы)?
Ты ещё одним внешним циклом просто перебирай всех героев.

DFlyer добавил:
Вот что-то нашёл
http://xgm.guru/forum/showthread.php?t=3167

Отредактировано DFlyer, 23.02.2008 в 10:50.
Старый 23.02.2008, 10:56
sleepw

offline
Опыт: 8,449
Активность:
DFlyer
ну да тобишь просто дотовский рандом.. написал всем раздало...

sleepw добавил:
обидно но в статье прикреплённые файлы отсутствуют:(

sleepw добавил:
ну я ненаю я в начале игры всех играющих юнитов заношу по двум командам тоесть Team1 и Team2
и просто в переменную массив игрок.

как их тут можно использовать?..
еслибы игроки все абсолютно были играющие я бы туда уже повставлял.. а так непонятно куда и какой номер вставлять(
Старый 23.02.2008, 14:35
J
expert
offline
Опыт: 48,447
Активность:
вот:
Код:
globals
   unit array udg_Heroes 
   integer udg_MaxIndex 
endglobals

function Init takes nothing returns nothing
    //При загрузке карты заполни массив героев начиная со слота номер [0] и по порядку
    set udg_Heroes[0] = ...                        
    set udg_Heroes[1] = ... 
    set udg_Heroes[2] = ...
    //Укажи Самый послдений занятый слот в массиве
    set udg_MaxIndex = 2
endfunction

function RandomHero takes nothing returns unit
    local integer rand = GetRandomInt(0, udg_MaxIndex)
    local unit Select = udg_Heroes[rand]
    set udg_Heroes[rand] = udg_Heroes[udg_MaxIndex]
    set udg_MaxIndex = udg_MaxIndex - 1
    return Select
endfunction

функция RandomHero будет возвращать тебе не повторяющихся героев
Старый 23.02.2008, 15:15
sleepw

offline
Опыт: 8,449
Активность:
а можно пример именно с действием раздачи героев всем Играющим игрокам?
Старый 23.02.2008, 15:36
J
expert
offline
Опыт: 48,447
Активность:
Код:
function Action takes nothing returns nothing
    local integer i = 0
    local unit hero
    loop
        exitwhen i > 11
        if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
            set hero = RandomHero()
            //...
            //Создать hero Для игрока i+1
            //...
        endif
        set i = i + 1
    endloop
endfunction

пример карту делать лень, и так все должно быть понятно
p.s.
смотри чтобы героев было больше или равно чем играющих играков, а то возможна ошибка
Старый 23.02.2008, 15:40
sleepw

offline
Опыт: 8,449
Активность:
Эх.. пасипки но разбираться я тут до вечера буду:)
так как джасса вообще практически не знаю:)
Старый 23.02.2008, 15:46
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 22:54.