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

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

Ответ
 
Gres
Кораэлестраз
offline
Опыт: 18,575
Активность:
Цитата:
Сообщение от alexkill
Так. Но у тебя проблема в том, что игроков - 12.

12 триггеров получается нужно делать! )
Старый 16.12.2008, 18:29
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
GNOMko
...of type Matching Conditions и там ставишь Matching Unit = Герой = Да
Старый 16.12.2008, 18:49
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Цитата:
Сообщение от Gres
12 триггеров получается нужно делать! )


зачем?) можно при первом выполнении какой ни будь булевской глобалке давать значение True, а в проверке трига сделать условие с этой глобалкой
Старый 17.12.2008, 04:46
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
Сообщение от ELDAR
зачем?) можно при первом выполнении какой ни будь булевской глобалке давать значение True, а в проверке трига сделать условие с этой глобалкой


Зачем захламлять память массивом булек?

GNOMko, вот я тебе сделал библиотеку. Внедряй ее в нестандартный код своей карты, расставляй пехотинцев для нескольких игроков и добавляй/удаляй золото. Меняешь только количество игроков.

Код:
library States initializer Init

 globals
   constant integer number = 12 // константа - твое количество игроков
   unit array u
   trigger array trig
 endglobals

 private function Add takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) 
 endfunction

 private function On takes nothing returns nothing
    local player p = GetTriggerPlayer()
    local integer i = GetPlayerId(p)
    local group gr = CreateGroup()
    call GroupEnumUnitsOfPlayer(gr, p, Filter(function Add))
    set u = GroupPickRandomUnit(gr)
    call UnitAddAbility(u[i],'AHad')
    call DisableTrigger(trig[i])
    call EnableTrigger(trig[i+number])
    call DestroyGroup(gr)
    set gr =  null
 endfunction

 private function Out takes nothing returns nothing
    local player p = GetTriggerPlayer()
    local integer i = GetPlayerId(p)
    call UnitRemoveAbility(u[i],'AHad')
    call DisableTrigger(trig[i+number])
    call EnableTrigger(trig[i])
    set u[i] = null
 endfunction

//===========================================================================
 private function Init takes nothing returns nothing
    local integer i = 0
    
     loop
      exitwhen i>=number
        set trig[i] = CreateTrigger( )
        call TriggerRegisterPlayerStateEvent( trig[i], Player(i), PLAYER_STATE_RESOURCE_GOLD, GREATER_THAN_OR_EQUAL, 100.00 )
        call TriggerAddAction( trig[i], function On )
       set i = i+1
     endloop
     
   set i = 0
     
     loop
      exitwhen i>=number
        set trig[i+number] = CreateTrigger( )
        call TriggerRegisterPlayerStateEvent(trig[i+number], Player(i), PLAYER_STATE_RESOURCE_GOLD, LESS_THAN, 100.00 )
        call DisableTrigger(trig[i+number])
        call TriggerAddAction(trig[i+number], function Out )
       set i = i+1
     endloop
     
 endfunction

endlibrary


[i]alexkill добавил:

Цитата:
Сообщение от Gres
12 триггеров получается нужно делать! )


24 )

Отредактировано alexkill, 17.12.2008 в 14:37.
Старый 17.12.2008, 11:33
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
Сообщение от GNOMko
нипонимаю я этого(


Улыбнуло... Кстати, я тут прочитал, что тебе уже не пехотинцев нужно пикать, а только героев, так?
Старый 17.12.2008, 13:50
GNOMko

offline
Опыт: 1,407
Активность:
alexkill какой именно кусок?всё кроме " константа - твое количество игроков"?

GNOMko добавил:
ну да героев игрока который набрал 100 з
Старый 17.12.2008, 13:51
alexkill

offline
Опыт: 18,872
Активность:
Нет, всю библиотеку. Просто ты сам можешь регулировать кол-во игроков, чтоб слишком много триггов не создавалось. Для этого меняешь 12 на твое кол-во.
Тебе даже триггер не нужно создавать!
Старый 17.12.2008, 13:54
GNOMko

offline
Опыт: 1,407
Активность:
событие: ресурс золото игрока становятся 0(незнаю, наверно расписывать(= )
действие: пик всех героев игрока(сделал)
дать способность(сделал)
Старый 17.12.2008, 13:56
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Значит так.
1. Создаешь триггер с названием Gold Accumulation.
2. Создаешь глобальный массив типа юнит и называешь его AccumUnit
3. Создаешь глобальный массив типа триггер и называешь его trig
4. Копируешь в триггер
» код.
Код:
function Add takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO)
endfunction

function On takes nothing returns nothing
    local player p = GetTriggerPlayer()
    local integer i = GetPlayerId(p)
    local group gr = CreateGroup()
    call GroupEnumUnitsOfPlayer(gr, p, Filter(function Add))
    set udg_AccumUnit[i] = GroupPickRandomUnit(gr)
    call UnitAddAbility(udg_AccumUnit[i],'AHad')
    call DisableTrigger(udg_trig[i])
    call EnableTrigger(udg_trig[i+12])
    call DestroyGroup(gr)
    set gr =  null
    set p = null
 endfunction

 private function Out takes nothing returns nothing
    local player p = GetTriggerPlayer()
    local integer i = GetPlayerId(p)
    call UnitRemoveAbility(udg_AccumUnit[i],'AHad')
    call DisableTrigger(udg_trig[i+12)
    call EnableTrigger(udg_trig[i])
    set udg_AccumUnit[i] = null
    set p=null
 endfunction

//===========================================================================
function Init takes nothing returns nothing
    local integer i = 0
     loop
      exitwhen i>=12
        set udg_trig[i] = CreateTrigger( )
        call TriggerRegisterPlayerStateEvent( udg_trig[i], Player(i), PLAYER_STATE_RESOURCE_GOLD, GREATER_THAN_OR_EQUAL, 100.00 )
        call TriggerAddAction( udg_trig[i], function On )
       set i = i+1
     endloop
     
    set i = 0
     
     loop
      exitwhen i>=12
        set udg_trig[i+12] = CreateTrigger( )
        call TriggerRegisterPlayerStateEvent(udg_trig[i+12], Player(i), PLAYER_STATE_RESOURCE_GOLD, LESS_THAN, 100.00 )
        call DisableTrigger(udg_trig[i+12])
        call TriggerAddAction(udg_trig[i+12], function Out )
       set i = i+1
     endloop
     
 endfunction


5. Что-то не заработает, пиши сюда.
П.С. Это код alexkill'a, я его просто переписал под обычный редактор.

Hellfim добавил:
Еще раз изменил код, ибо были ошипки :0

Отредактировано Hellfim, 17.12.2008 в 15:31.
Старый 17.12.2008, 14:04
GNOMko

offline
Опыт: 1,407
Активность:
alexkill выложи плиз
Старый 17.12.2008, 14:05
alexkill

offline
Опыт: 18,872
Активность:
Лови

alexkill добавил:
Весь основной код в нестандартном коде карты. Присутствующие триггеры только добавляют золото.
Прикрепленные файлы
Тип файла: w3x gold.w3x (18.0 Кбайт, 12 просмотров )
Старый 17.12.2008, 14:18
GNOMko

offline
Опыт: 1,407
Активность:
alexkill нипонял а где сам тригер с событием игрок накопил 100з дать герою абилу и тд?

GNOMko добавил:
а нашол)) туплю

GNOMko добавил:
ппц один раз запустилося теперь ошибку пишет(
Старый 17.12.2008, 14:24
alexkill

offline
Опыт: 18,872
Активность:
Через JNGP запускал?
Старый 17.12.2008, 14:35
GNOMko

offline
Опыт: 1,407
Активность:
я в свою карту скинул всё что там написано было и он ошибку пишит типо нет конца строки и ещё несколько шутк
Старый 17.12.2008, 14:37
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
alexkill, да нету у него жнпг...
GNOMko , сделай так как я расписал в посте #32
Старый 17.12.2008, 14:37
GNOMko

offline
Опыт: 1,407
Активность:
мда скоко парева) легче расписать=)
  1. что такое главный масив?
  2. как его создавать?
  3. сорь мне надо если золото равно 0 то дать абилу герою
а если у героя есть эта абила(которую дали) и у этого игрока золота больше 20 то забрать абилу
Старый 17.12.2008, 14:40
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
Сообщение от Hellfim
alexkill, да нету у него жнпг...


никогда не поздно исправить ситуацию... качай здесь

Без него моя прога не запустится, ибо написана на vJass. Делай как сказал Hellfim, если влом устанавливать. Но минус его метода в том, что надо заранее триггер создавать.
Старый 17.12.2008, 14:44
GNOMko

offline
Опыт: 1,407
Активность:
а,прога есть
а как чё делать( копирнуть в мою мапу твой код и всё?
Старый 17.12.2008, 14:58
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
GNOMko, если есть, то да, просто вставь в кастом код карты.
Старый 17.12.2008, 15:23
GNOMko

offline
Опыт: 1,407
Активность:
вставил( непашет карту вае теперь неоткрывает в варе и через проверку
Старый 17.12.2008, 17:13
Ответ

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

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

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

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



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