|
Помощь с кодом
|
|
| [SomeOne] | Дата: Воскресенье, 30 Января 2011, 17:25:44 | Сообщение # 1 |
5 уровень
Группа: Пользователи
Сообщений: 106
Награды: 0
Репутация: 17
Блокировки: 
| Мне нужно для каждого игрока сложить здоровье всех юнитов типа "золото" в области 512 от всех юнитов взятого игрока типа "сокровищница" и затем установить золото текущее взятого игрока равному полученной сумме Сделать ето на триггерах никак не выходит. В попытках это сделать я сотворил триггер и перевел его в код, попытался довести до ума уже код но не вышло. Code function Trig_Gold_Deposit_Func001Func001001002 takes nothing returns boolean return ( GetUnitTypeId(GetFilterUnit()) == 'h000' ) endfunction
function Trig_Gold_Deposit_Func001Func001Func001001003 takes nothing returns boolean return ( GetUnitTypeId(GetFilterUnit()) == 'o001' ) endfunction
function Trig_Gold_Deposit_Func001Func001Func001A takes nothing returns nothing call SetPlayerStateBJ( GetEnumPlayer(), PLAYER_STATE_RESOURCE_GOLD, ( GetPlayerState(GetEnumPlayer(), PLAYER_STATE_RESOURCE_GOLD) + R2I(GetUnitStateSwap(UNIT_STATE_LIFE, GetEnumUnit())) ) ) endfunction
function Trig_Gold_Deposit_Func001Func001A takes nothing returns nothing call ForGroupBJ( GetUnitsInRangeOfLocMatching(512, GetUnitLoc( "ЮНИТ" ), Condition(function Trig_Gold_Deposit_Func001Func001Func001001003)), function Trig_Gold_Deposit_Func001Func001Func001A ) endfunction
function Trig_Gold_Deposit_Func001A takes nothing returns nothing call ForGroupBJ( GetUnitsOfPlayerMatching(GetEnumPlayer(), Condition(Trig_Gold_Deposit_Func001Func001Func001001003)), function Trig_Gold_Deposit_Func001Func001A ) endfunction
function Trig_Gold_Deposit_Actions takes nothing returns nothing call ForForce( GetPlayersAll(), function Trig_Gold_Deposit_Func001A ) endfunction
//=========================================================================== function InitTrig_Gold_Deposit takes nothing returns nothing set gg_trg_Gold_Deposit = CreateTrigger( ) call TriggerRegisterTimerEventPeriodic( gg_trg_Gold_Deposit, 1.00 ) call TriggerAddAction( gg_trg_Gold_Deposit, function Trig_Gold_Deposit_Actions ) endfunction
Фильм "Ёлки" 2010
|
| |
|
|
| Dreii | Дата: Воскресенье, 30 Января 2011, 17:43:51 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки: 
| [SomeOne], О БОЖЕ МОЙ!!!!!!!!!!НЕ пиши на JASS Добавлено (30-01-2011, 17:43) --------------------------------------------- [SomeOne], Code local group g=CreateGroup() local integer i=0 local unit e local unit u=[b]"Юнит"[/b] call GroupEnumUnitsInRange(g,GetWidgetX(u),GetWidgetY(u),512,null) loop set e=FirstOfGroup(g) exitwhen e==null and i==11 if GetWidgetLife(e)>.0 then call SetPlayerState(Player(i),PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(Player(i),PLAYER_STATE_RESOURCE_GOLD) + R2I(GetWidgetLife(e))) set i=i+1 endif call GroupRemoveUnit(g,e) endloop call DestroyGroup(g) set u=null
|
| |
|
|
| lawson | Дата: Воскресенье, 30 Января 2011, 20:07:07 | Сообщение # 3 |
|
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки: 
| Dreii Да ладно тебе я тоже так начинал JASS изучать. Добавлено (30-01-2011, 20:03) --------------------------------------------- exitwhen e==null and i==11 Чета я не понял а зачем i == 11 если можно так e==null Добавлено (30-01-2011, 20:07) --------------------------------------------- А потом сумму золота у всех юнитов занести в переменную сделать так i = сумма золота o = i / кол-во игроков
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 30 Января 2011, 20:05:42 |
| |
|
|
| Dreii | Дата: Воскресенье, 30 Января 2011, 20:39:41 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки: 
| lawson, Для все игроков)
|
| |
|
|
| lawson | Дата: Воскресенье, 30 Января 2011, 20:46:37 | Сообщение # 5 |
|
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки: 
| А ты не подумал если в группе взятых юнитов будет больше 11 тогда что i станет 12? и loop твой на числе 11 остановитсья и возьмет только 11 юниов вокруг. Или вообще не остановиться так как e еще не будет равен null а i уже будет равен 11. Добавлено (30-01-2011, 20:46) --------------------------------------------- Ладно тма как раз подходящая мне тоже нада помощь с кодом. Так вот мне надо как в доте воскрещение крипов мне что надо группу крипов занести в переменную и если юнит умирает и являеться одним из группы юнитов то ставить эту группу как i[номер группы юнитов] = i - 1 а когда врем придет проверит если все юниты из этой группы мертвы то воскресить их?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 30 Января 2011, 20:43:53 |
| |
|
|
| Dreii | Дата: Воскресенье, 30 Января 2011, 21:01:49 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки: 
| lawson, мм да насчет юнитав неподумал))
|
| |
|
|
| lawson | Дата: Воскресенье, 30 Января 2011, 21:03:41 | Сообщение # 7 |
|
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки: 
| Так что придеться создавать второй loop внутри этого или отдельно и там каждому игроку пихать деньги.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
| |
|
|
| Dreii | Дата: Воскресенье, 30 Января 2011, 21:14:42 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки: 
| lawson, я сначло и создавал)Но потому подумал что так проще,теряю хзватку
|
| |
|
|
| lawson | Дата: Воскресенье, 30 Января 2011, 21:18:30 | Сообщение # 9 |
|
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки: 
| Хех  Добавлено (30-01-2011, 21:18) --------------------------------------------- от автора ни звука значит его все утраивает.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
| |
|
|