[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Jery, Rey  
Форум » Knights and Merchants: Remake » Идеи и предложения » Идеи для скриптов
Идеи для скриптов
JeryДата: Суббота, 01.12.2012, 13:00 | Сообщение # 1
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Собственно первая часть скриптов, она полностью посвящена юнитам.



«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
 
KromДата: Суббота, 01.12.2012, 14:31 | Сообщение # 2
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Спасибо!
Я в тексте прокомментировал. С первой половиной согласен, а со второй надо смотреть, так как местами это дублирование, а местами сильное вдавание в детали. Подновил список скриптов на страничке согласно твоим предложениям: http://code.google.com/p/castlesand/wiki/MissionScripts

Quote (Jery)


CreateUnit годится )
KillUnit(UnitId) - убивает юнита с анимацией смерти, годится, только про Id надо подумать, как поудобнее устроить это все
RemoveUnit(UnitId) - удаляет юнита, годится

GetUnitPosition, отдельно х и у не нужны, а вот так - годится
SetUnitPosition, и эта тоже годится

GetUnitOwner, годится
SetUnitOwner - неуверен что нужно, но сделаю
SetUnitColor, - не получится, цвет четко связан с владельцем, предедущей команды хватит.

SetUnitDirection
SetUnitDirection
SetUnitDirectionAtPoint, добавлю пока 1й вариант

PauseUnit, мне кажется лишнее, как это пригодится?
IsUnitPaused

SelectUnit, для каких целей?

GetUnitType годится

Большинство из того что ниже - либо дублирует то что выше (IsUnitOwnedByPlayer(66,Х) == GetUnitOwner(66) = Х), либо слишком микроменеджмент (IsUnitInRangeLoc), который мне кажется для скриптов не нужен.

IsUnitInGroup takes unit whichUnit, group whichGroup returns boolean - возвращает находится ли юнит в определенной группе
IsUnitOwnedByPlayer takes unit whichUnit, player whichPlayer returns boolean - возвращает принадлежит ли юнит определнному игроку
IsUnitAlly takes unit whichUnit, player whichPlayer returns boolean - возвращает союзный ли юнит выбранному игроку
IsUnitEnemy takes unit whichUnit, player whichPlayer returns boolean - возвращает враг ли юнит выбранному игроку
IsUnitFogged takes unit whichUnit, player whichPlayer returns boolean - возвращает скрыт ли туманом войны для выбранного игрока
IsUnitSelected takes unit whichUnit, player whichPlayer returns boolean - возвращает выбран ли юнит игроком
IsUnitType takes unit whichUnit, unittype whichUnitType returns boolean - возвращает того ли типа юнит
IsUnitInRange takes unit whichUnit, unit otherUnit, real distance returns boolean - возвращает находится ли юнит на определеннном расстоянии от другого юнита
IsUnitInRangeXY takes unit whichUnit, real x, real y, real distance returns boolean - возвращает находится ли юнит на определенном расстоянии от ху
IsUnitInRangeLoc takes unit whichUnit, location whichLocation, real distance returns boolean - аналогично только для точки

IssueImmediateOrder takes unit whichUnit, string order returns boolean - отдать безтаргетный приказ
IssueImmediateOrderById takes unit whichUnit, integer order returns boolean - аналогично
IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean - отдать точечный по ху приказ
IssuePointOrderLoc takes unit whichUnit, string order, location whichLocation returns boolean - отдать точечный приказ
IssuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean - аналогично
IssuePointOrderByIdLoc takes unit whichUnit, integer order, location whichLocation returns boolean - аналогично
IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean - таргетный приказ
IssueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean - аналогично

GetUnitCurrentOrder takes unit whichUnit returns integer


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
JeryДата: Суббота, 01.12.2012, 18:52 | Сообщение # 3
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Селект и пауза нужна, чтобы если вдруг мы возьмем и будем перемещать юнита скриптами (длинный цикл передвижения все правее и правее) нам нужно его заблокировать, чтобы он не делал никакой непредсказуемой ерунды во время движянеия (не сдвинулся на клетку в низ, не атаковал или не убил кого), а после паузы нужно дать контроль игроку обратно и выделить его.
Кстати стоит еще добавить что-то типа
IsUnitSelected(whichUnit) return boolean - проверяет в фокусе ли данный юнит

GetUnitHungryLevel(whichUnit) return int - возвращает уровень сытости
SetUnitHungryLevel(whichUnit, hungry) return nothing - устанавливает уровень сытости

Пока по юнитам вроде все, я знаю что там половина команд по смыслу дублирована, выбирай сам как будет удобнее.

Через некоторое время выложу скрипты для игроков, тумана войны, групп, таймеров и возможно кое чего еще. В принципе это все копипаст с редактора варкарфта переложенный на реалии КаМ(вырезано все что связано с героями, опытом, спосбностями и тд).

Насколько сложно сделать модификацию ландшафта по ходу игры, модификацию проходимости и карты высот.


«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)

Сообщение отредактировал Jery - Суббота, 01.12.2012, 19:19
 
KromДата: Суббота, 01.12.2012, 20:13 | Сообщение # 4
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Jery, хотелось бы обсудить идеологию использования команд (селект, пауза, фокус и т.п.) написал в аську.

Про голод - принял.

Изменения ландшафта - не думаю что получится, надо обсуждать в комплексе с реальным применением этих дел )


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
JeryДата: Воскресенье, 02.12.2012, 10:13 | Сообщение # 5
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Все команды связанные с приказами нужно отнести к отрядам, контроль и приказы получают отряды. Юниты в игре неконтролируемые.

События для юнитов:

constant unitevent EVENT_UNIT_DAMAGED - юнит получил повреждения
constant unitevent EVENT_UNIT_DEATH - юнит умер
constant unitevent EVENT_UNIT_SELECTED - юнит в фокусе
constant unitevent EVENT_UNIT_DESELECTED - юнит убран из фокуса

constant unitevent EVENT_UNIT_ATTACKED - юнит атакован

constant unitevent EVENT_UNIT_TRAIN_START - началась тренировка юнита
constant unitevent EVENT_UNIT_TRAIN_CANCEL - отменена тренировка
constant unitevent EVENT_UNIT_TRAIN_FINISH - закончена тренировка
constant unitevent EVENT_UNIT_CHANGE_OWNER - юнит сменил владельца
constant unitevent EVENT_UNIT_FIND_HOME - нашел дом
constant unitevent EVENT_UNIT_LOST_HOME - потерял дом
constant unitevent EVENT_UNIT_HUNGRY - стал голодным
constant unitevent EVENT_UNIT_GET_FOOD - получил еды(повысил сытость)


«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)

Сообщение отредактировал Jery - Воскресенье, 02.12.2012, 10:14
 
KromДата: Воскресенье, 02.12.2012, 13:07 | Сообщение # 6
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Jery, Вижу что большинство скриптов нацелено на индивидуальное управление, в то врмея как КаМ игра более стратегическая, надо это как-то учесть. То есть с такими скриптами можно сделать миссию с 3-4 "героями" и тесным наблюдением их жизни. В то же время КаМ это игра массовая - тут управляют городами и армиями.

Думаю стоит сделать одну-две пробных миссии с "героями" и посмотреть что из этого получится, может быть направление тупиковое. Для этого надо сюжет и базовый список команд. Просто не хочется делать 50 команд которые вдруг никому не нужны будут. Давай сделаем 12 и посмотрим на реакцию. Можно даже сделать, записать на ютуб и выложить, до оф.релиза.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
Форум » Knights and Merchants: Remake » Идеи и предложения » Идеи для скриптов
  • Страница 1 из 1
  • 1
Поиск: