Система раздачи золота поровну
|
|
Shanaa | Дата: Вторник, 22 Ноября 2011, 12:05:54 | Сообщение # 1 |
1 уровень
Группа: Пользователи
Сообщений: 17
Награды: 0
Репутация: 3
Блокировки:
| Требуется сделать такую систему: Допустим с моба при убийстве падает 30 золота. Если его убивает один игрок и рядом никого нет, то он получает полную сумму, т.е. 30 золта, НО если рядом есть еще один персонаж (второй игрок), то они оба получают по 15 золта, если их 3 то по 10 и т.д. Как такую систему сделать? Я так понимаю тут нужны локальные переменные и да, нужно чтобы еще писало сумму которую получает игрок.
Если не затруднит, сделайте наработку. Если уже было - извиняюсь.
nyan:3
|
|
|
|
SirNikolas | Дата: Вторник, 22 Ноября 2011, 12:55:33 | Сообщение # 2 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| var __PlayerGroup: Группа игроков; __Point: Точка;
События: Боевая единица - A unit Умирает Условия: (Unit-type of (Triggering unit)) = Моб Действия: Set Point = (Position of (Triggering unit)) Отряд - Pick every unit in (Units within 500.00 range of Point matching ((Matching unit) is an enemy of (Owner of (Triggering unit)))) and do (Actions) __Группа игроков - Add to PlayerGroup (Owner of (Picked unit)) Custom script: call RemoveLocation(udg_Point) Игра - Display to PlayerGroup the message: ("+" + String(30 / (Count players in PlayerGroup))) Группа игроков - Pick every player in PlayerGroup and do (Actions) __Игрок - Add (30 / (Count players in PlayerGroup)) to (Picked player)'s Золото (текущ.) Группа игроков - Remove all players from PlayerGroup
|
|
|
|
Hexing | Дата: Вторник, 22 Ноября 2011, 14:19:35 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| скоко много утечек
|
|
|
|
SirNikolas | Дата: Вторник, 22 Ноября 2011, 14:58:18 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Одна.Quote (SirNikolas) (Units within 500.00 range of Point matching ...) И только потому, что GUI'шными методами ее не удалишь.
|
|
|
|
vov68 | Дата: Вторник, 22 Ноября 2011, 15:29:46 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1329
Награды: 3
Блокировки:
| Quote (SirNikolas) Units within 500.00 range of Point
можно это не много по другому - юниты в области с центром точка и размером таким-то, хотя область будет квадратной.
Зачем делать для других новые карты... ... лучше устроить коту божественный почесон. :)
|
|
|
|
Ty3uK | Дата: Вторник, 22 Ноября 2011, 15:37:14 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| А как же создать переменную типа группа, дать ей значение "юниты в радиусе попадающие под условие", а потом через кастом скрипт удалять?
|
|
|
|
SirNikolas | Дата: Вторник, 22 Ноября 2011, 17:57:54 | Сообщение # 7 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Ty3uK, в этом проку даже меньше, чем в bj_wantDestroyGroup. Проблема в самой BJ на отлов юнитов:Code function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group local group g = CreateGroup() call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter) call DestroyBoolExpr(filter) return g endfunction В этой функции (как и во всех других, направленных на отлов юнитов/игроков) допускается грубейшая ошибка: значение локальной переменной не обнуляется. А как известно, невозможно удалить из памяти объект, на который ссылается хотя бы одна переменная (кэш и хэш не в счет).
vov68, этот способ не годится по ряду причин. Во-первых, это не избавляет от утечки группы. Во-вторых, придется вдобавок удалять еще и эту область. В-третьих, появляется баг, о котором ты уже сказал - выбираются юниты в прямоугольной (квадратной) области. И, наконец, в-четвертых, если ты попытаешься избавиться от него, проверяя расстояние от выбранного юнита до центра, нужно будет удалять еще кучу точек - по одной на каждого юнита.
|
|
|
|
Ty3uK | Дата: Вторник, 22 Ноября 2011, 18:40:48 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Еах, я и забыл совсем. Давайте коллективно исправим blizzard.j и кинем близзам с просьбой обновить его в патче?
|
|
|
|
Extremator | Дата: Вторник, 22 Ноября 2011, 19:05:05 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| 1. можно щёлкнуть авто-дестрой у группы... 2. можно удалить точку если ещё ещё сначала запомнить...Добавлено (22 Ноябрь 2011, 19:05:05) ---------------------------------------------
Quote (Ty3uK) Еах, я и забыл совсем. Давайте коллективно исправим blizzard.j и кинем близзам с просьбой обновить его в патче? ну если в мире стока мапмейкером и просто людей шаращих в коде... и этого ещё никак не сделали... то не думаю что сделают ((( хотя было бы круто
|
|
|
|
Hexing | Дата: Вторник, 22 Ноября 2011, 19:17:34 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Extremator, не в тему сказал) автодестрой не спасет ибо там локалка, доступа к которой у нас нет, а точку удалять ненадо ибо это глобалка
|
|
|
|
Ty3uK | Дата: Вторник, 22 Ноября 2011, 19:26:23 | Сообщение # 11 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Можно переписать простые функи гуи с бж на нативки, вопрос, кто это сделает? Ведь все гуишники считают, что гуи непогрешим
|
|
|
|
Extremator | Дата: Среда, 23 Ноября 2011, 00:28:32 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (SirNikolas) И только потому, что GUI'шными методами ее не удалишь. Quote (Hexing) ибо там локалка, ну если там локалка, то естественно поюзать кс можно... или вообще перевести в жасс и вырезать кучу мусора...
Quote (Ty3uK) Ведь все гуишники считают, что гуи непогрешим Не все...
|
|
|
|
Ty3uK | Дата: Среда, 23 Ноября 2011, 07:15:06 | Сообщение # 13 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ты не отловишь локалку из бж на гуи. Даже через кс
|
|
|
|
Hexing | Дата: Среда, 23 Ноября 2011, 07:37:39 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Ватсон, он имеет ввиду написать свои бж-функции
|
|
|
|
Ty3uK | Дата: Среда, 23 Ноября 2011, 08:51:12 | Сообщение # 15 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Гуишник будет писать свои бж и вызывать их через кс? Да не в жисть
|
|
|
|
SirNikolas | Дата: Среда, 23 Ноября 2011, 11:58:21 | Сообщение # 16 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Ty3uK) Давайте коллективно исправим blizzard.j и кинем близзам с просьбой обновить его в патче? Уже. Extremator, можно разве что переписать функции из blizzard.j и импортировать его в свою карту.Добавлено (23 Ноябрь 2011, 11:58:21) ---------------------------------------------
Quote (Ty3uK) Гуишник будет писать свои бж и вызывать их через кс? Да не в жисть +1. Для чего же тогда действие "Триггер - Run (Ignoring conditions)", как не для этого?)
|
|
|
|
Ty3uK | Дата: Среда, 23 Ноября 2011, 12:43:54 | Сообщение # 17 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Вот-вот
|
|
|
|