Как распределить деньги?
|
|
falget | Дата: Понедельник, 31 Января 2011, 16:38:07 | Сообщение # 1 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Как сделать распределение денег? Допустим есть команда из 5 человек и дано команде 4000 золота то как сделать чтоб при старте карты это количество золота распределялось между игроками поровну, например играет два игрока каждому по 2000, играет три каждому по 1,333 тысяч и тд... Как это сделать тригерно??
|
|
|
|
Kartoha | Дата: Понедельник, 31 Января 2011, 16:45:50 | Сообщение # 2 |
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
| falget, самый простой, но довольно громоздкий способ: События: Общие параметры Map Initialization Условия: Нет Действия: Общие параметры - If/Then/Else If Integer comparision - Count Player In Player Group = 1 Then Общие параметры - Set variable - Set <переменная типа целочиселнная> = 4000 Else Call DoNothing Общие параметры - If/Then/Else If Integer comparision - Count Player In Player Group = 2 Then Общие параметры - Set variable - Set <переменная типа целочиселнная> = 2000 Else Call DoNothing Общие параметры - If/Then/Else If Integer comparision - Count Player In Player Group = 3 Then Общие параметры - Set variable - Set <переменная типа целочиселнная> = 1333 Else Call DoNothing Общие параметры - If/Then/Else If Integer comparision - Count Player In Player Group = 4 Then Общие параметры - Set variable - Set <переменная типа целочиселнная> = 1000 Else Call DoNothing Integer comparision - Count Player In Player Group = 5 Then Общие параметры - Set variable - Set <переменная типа целочиселнная> = 800 Else Call DoNothing Дальше добавляеш всем игрокам по<переменная целочисленная> золота.
|
|
|
|
falget | Дата: Понедельник, 31 Января 2011, 16:48:52 | Сообщение # 3 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Спс все понял кроме этого как это? Quote (Kartoha) Дальше добавляеш всем игрокам по<переменная целочисленная> золота.
|
|
|
|
Kartoha | Дата: Понедельник, 31 Января 2011, 16:51:05 | Сообщение # 4 |
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
| Есть действие Игрок - Добавить золото, применяеш его на всех игроках и в качестве золота указываеш переменную.
|
|
|
|
falget | Дата: Понедельник, 31 Января 2011, 16:57:19 | Сообщение # 5 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| ааа все понял большое спасибо, поставил бля плюс в репу но не знаю как.
|
|
|
|
Dreii | Дата: Понедельник, 31 Января 2011, 16:59:07 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Kartoha, Kartoha, а не проще забить игроков в переменную и разделить? например так Code local integer i=0 loop exitwhen i==5 if IsPlayerAlly(Player(i), Player(5)) then set i= i+1 call SetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD, GetPlayerState(Player(i),PLAYER_STATE_RESOURCE_GOLD) + 4000\i) endif endloop
|
|
|
|
SirNikolas | Дата: Понедельник, 31 Января 2011, 17:06:52 | Сообщение # 7 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Kartoha, согласен с тобой лишь наполовину. Да, это действительно громоздкий способ, но не самый простой. События: Map initialization Действия: Set PlayerGroup = (All players matching ((Matching player)'s slot status равно Играет)) For each (Integer Integer), from 1 to 12, do (Actions) _Игрок - Set Player(Integer)'s золото (текущ.) as ((Player(Integer)'s золото (текущ.)) + (Count players in PlayerGroup)) Custom script: call DestroyForce(udg_PlayerGroup) Добавлено (31-01-2011, 17:05) --------------------------------------------- Dreii, это будет работать не совсем так, как нужно. Если быть точным, то первый игрок получит 4000, второй - 2000 и т. д. А если быть еще точнее, то игра зависнет из-за бесконечного цикла, если хоть один из них окажется врагом оранжевому. Добавлено (31-01-2011, 17:06) ---------------------------------------------
И вообще он выдаст ошибку компиляции.
|
|
|
|
Dreii | Дата: Понедельник, 31 Января 2011, 17:07:15 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| SirNikolas, хм не знал)Просто предположил)
|
|
|
|
falget | Дата: Понедельник, 31 Января 2011, 18:31:20 | Сообщение # 9 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| SirNikolas, Не понял как сделать твоим методом? В действиях нет такого как PlayerGroup или All players matching и тд. Объясни по подробнее пожалуйста.
|
|
|
|
Dreii | Дата: Понедельник, 31 Января 2011, 18:39:22 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (falget) PlayerGroup Это переменная
|
|
|
|
falget | Дата: Понедельник, 31 Января 2011, 18:43:53 | Сообщение # 11 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Это я понял а дальше Quote (SirNikolas) = (All players matching ((Matching player)'s slot status равно Играет)) For each (Integer Integer), from 1 to 12, do (Actions)
|
|
|
|
Dreii | Дата: Понедельник, 31 Января 2011, 18:45:36 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| falget, Всех игроков Сопосостовляювиащавыщаыщваывщ слот игрока играет Цикл от 1 до 12
|
|
|
|
falget | Дата: Понедельник, 31 Января 2011, 18:55:43 | Сообщение # 13 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| Quote (SirNikolas) (All players matching ((Matching player)'s slot status равно Играет)) где найти это???
|
|
|
|
SirNikolas | Дата: Понедельник, 31 Января 2011, 19:23:39 | Сообщение # 14 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
|
|
|
|
|
lawson | Дата: Понедельник, 31 Января 2011, 20:03:23 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| SirNikolas Все правильно dreii написал только забыл перед лупом надо было сделать деление gold / число игроков а потом loop и раздать деньги игрокам.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
falget | Дата: Понедельник, 31 Января 2011, 20:59:13 | Сообщение # 16 |
1 уровень
Группа: Пользователи
Сообщений: 16
Награды: 0
Репутация: 0
Блокировки:
| А если две команды игроков то это будет действовать отдельно на каждую из команд?
|
|
|
|
SirNikolas | Дата: Вторник, 01 Февраля 2011, 13:35:27 | Сообщение # 17 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Тогда нужно проверить, что игрок является союзником кого-нибудь из команды №1 и при этом играет. То же самое с командой №2.
|
|
|
|
[stebashka] | Дата: Вторник, 01 Февраля 2011, 13:47:56 | Сообщение # 18 |
пути и нити разными бывают
Группа: Библиотекари
Сообщений: 4719
Награды: 5
Блокировки:
| Исли игрок играет уст переменную (целочисленную) = (твоя переменная) +1 выглядит так Действия: Общие параметры - If/Then/Else Условия - (сравнение статуса игрока) если статус игрока красный = играет То действия - Установить (твоя переменная +1) и там со всеми игроками Установить голд как (твое число например 4000 разделить на (твоя переменная))
|
|
|
|
SirNikolas | Дата: Вторник, 01 Февраля 2011, 13:59:09 | Сообщение # 19 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Точно, можно и так, но надо в цикл поставить.
|
|
|
|
Dreii | Дата: Вторник, 01 Февраля 2011, 14:01:55 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (SirNikolas) Точно, можно и так, но надо в цикл поставить. Quote (Dreii) local integer i=0 loop exitwhen i==5 if IsPlayerAlly(Player(i), Player(5)) then set i= i+1 call SetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD, GetPlayerState(Player(i),PLAYER_STATE_RESOURCE_GOLD) + 4000\i) endif endloop Тоже самое но с ошибками синтаксиса
|
|
|
|
SirNikolas | Дата: Вторник, 01 Февраля 2011, 14:17:59 | Сообщение # 21 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Dreii, золото надо устанавливать после цикла.
|
|
|
|