[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: Jery  
Форум » Knights and Merchants: Remake » Идеи и предложения » Скрипты
Скрипты
andreusДата: Пятница, 08.02.2013, 22:10 | Сообщение # 31
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
Хех, написали ответы одновременно)

Ок, подождем стабильного релиза. Самое главное что уже найдено и исправлено несколько багов wink

Кстати насчет PlayerDefeated: мб стоит добавить еще 1 параметр для более гибкой настройки?
PlayerDefeated(ID, true/false)

Это может пригодиться, например когда сообщение отправляется в опр. время при условии что игрок не побежден. А если игрока победили до того как выслано сообщение, задуманное действие теряет смысл)

Пример:

if States.GameTime = 10000 and States.PlayerDefeated(1, false) then Actions.ShowMsg(0, 1);

Либо:

if States.GameTime = 10000 and States.PlayerDefeated(1) = false then Actions.ShowMsg(0, 1);

И еще вопрос: как определяется ID отряда для команд типа

Actions.UnitOrderWalk(ID, X, Y) ?


 
KromДата: Пятница, 08.02.2013, 22:27 | Сообщение # 32
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Используй магию программирования:
if (States.GameTime = 10000) and States.PlayerDefeated(1) then Actions.ShowMsg(0, 1); //покажет если повержен
if (States.GameTime = 10000) and not States.PlayerDefeated(1) then Actions.ShowMsg(0, 1); //покажет если НЕ повержен

UnitID определяется командами типа HitTest или, что правильнее, при добавлении юнита. Во время игры ID не меняется и уникален для каждого юнита/дома/отряда.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
andreusДата: Пятница, 08.02.2013, 22:31 | Сообщение # 33
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
Ок, будем пробовать, спасибо)

 
JeryДата: Пятница, 08.02.2013, 22:39 | Сообщение # 34
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Смысл в том что я расставил объекты в редакторе ремейка и сразу полез писать скрипт. И как только я запускал карту я сразу побеждал, хотя постройки второго игрока стояли=) Вот это меня высаживает, пришлось разбираться что там за goals и как их поставить.

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

Сообщение отредактировал Jery - Пятница, 08.02.2013, 22:40
 
andreusДата: Пятница, 08.02.2013, 23:01 | Сообщение # 35
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
Продолжаем тестить...

Заметил в городе вражеских конячке-одиночек, арабов-одиночек, мечей-одиночек. Включил меню F11, выбрал игрока №2. Увиденное убило:



wacko eek crazy eek crazy

ИИ плодит воинов-одиночек, хотя заданы формации ИИ и позиции защиты. А затем эти одиночки идут ко мне, тоже по одному, хотя заданы атаки по 40 чел:


p.s. Пишу все что нашел сюда. Если не в тему, могу перенести))) Хотя эти проблемы тоже мб связаны со скриптом...


 
GamerusДата: Суббота, 09.02.2013, 15:19 | Сообщение # 36
Ополченец
Группа: Проверенные
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
Вопрос не совсем по теме. Можно ли копировать - переносить карты? Создалась такая необходимость - увеличит площадь уже готовой карты, понятно, что проще создать новую с нужными размерами и туда вклеить необходимое. Если можно, то как?
 
KromДата: Суббота, 09.02.2013, 16:59 | Сообщение # 37
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
andreus, это проблемка с ИИ - постараемся исправить. В 4179 такого не было.

Gamerus, пока нельзя, но к рлизу такую штуку сделаем в редакторе.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
GamerusДата: Воскресенье, 10.02.2013, 03:45 | Сообщение # 38
Ополченец
Группа: Проверенные
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
Ещё вопрос не в тему, почти. Можно ли вставить свои звуки в игровой процесс? Пример: по сюжету в определённое время войска ИИ игрока выходят на позицию, строятся, играет волынка, пошли в атаку. Как это сделать? И ещё - голос за кадром - было бы неплохо...

Добавлено (10.02.2013, 03:45)
---------------------------------------------
Блин, как плохо без полноценного редактора миссий под ремейк! Эти танцы с бубном уже укачали....

 
KromДата: Воскресенье, 10.02.2013, 12:13 | Сообщение # 39
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Gamerus, звуков пока не будет, а с речью сам понимаешь - нужен механизм переводов на те же 16 языков - пока не в приоритете.

Принимаются обоснованные предложения по улучшениям редактора в "полноценный". )


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
GamerusДата: Воскресенье, 10.02.2013, 16:59 | Сообщение # 40
Ополченец
Группа: Проверенные
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
Ну, кому надо - нехай сами переводят. А так пусть наслаждаются силой и красотой русского языка! biggrin
 
KromДата: Вторник, 12.02.2013, 21:57 | Сообщение # 41
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Gamerus, запомню и процитирую тебе, когда будешь спрашивать документацию по коду или разъяснения по скриптам ))))) "Ну, кому надо - нехай сами переводят. А так пусть наслаждаются силой и красотой английского языка!" *шучу

Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
GamerusДата: Среда, 13.02.2013, 17:41 | Сообщение # 42
Ополченец
Группа: Проверенные
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
А нехорошо быть злопамятным!... Хотя - не напугаете, 99,9 % всего софта переведено на русский язык далеко не авторами. Взять тот же Windows в 90-е годы...  weep
Ладно, есть вопрос: допустим по сюжету определённая группа войск ИИ игрока должна в определённое время от какого-то события, скажем - от старта, перейти в нужную точку и остановиться там. Как это сделать? Мною за короткое время был изучен скриптовый язык, на котором написан КаМ, честно говоря очень удивлён мягко сказать незамысловатостью, играя подозревал большее. К примеру - так и не нашёл на картах каких-либо рестрикторов, хотя в существовании  последних был просто уверен. Ещё подозревал что ИИ следит за игроком и от его состояния (накопление ресурсов, численность юнитов и пр.) меняет тактику. Увы, этого нет, а жаль...

Есть предложение - создать тему на форуме ремейка где можно будет обнародовать необходимые и интересные скриптовые решения с кратким описанием. Народу будет куда проще творить, можно сказать - как из кубиков начинать делать индивидуальные проекты. Толк, думается, из этого будет. Беру себя в пример,  рисование карт - детская забава, написание миссии в стиле ВиМ или ВК не увлекает, слишком просто, очень хочется более изощрённого. Может таким образом упростить творчество?


Сообщение отредактировал Gamerus - Среда, 13.02.2013, 17:49
 
JeryДата: Среда, 13.02.2013, 20:05 | Сообщение # 43
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Скриптовый язык в данный момент позволяет делать то, что ты хочешь. UnitOrderWalk позволяет отправить конкретную группу в конкретную точку. У тебя есть событие OnTick, в которую можно дописать логику чего угодно от круглых или прямоугольных зон, до тотального контроля за каждым юнитом, знай только перехватывай события. Попробую привести пример скрипта, только сформулируй точно задачу.

PS: Винду всегда переводили люди нанятые microsoft'ом, что сейчас что в 90ые годы.

Добавлено (13.02.2013, 20:05)
---------------------------------------------
Плохой парсер паскаля! В нем нельзя объявить функцию, потому что когда я пытаюсь вернуть значение он думает что вызываю эту функцию!


Код
var
           Hero: Integer;
           GroupArr: array[0..100] of integer;
           GroupCounter: integer;
//int Actions.GiveGroup
//(int Player, int UType, int X, int Y, int FDir, int Count, int PerRow);
//Da ya lublu pisat na C++ =)       

procedure MyGiveGroup(Player:integer; UType:integer; X:integer; Y:integer; FDir:integer; Count:integer; PerRow:integer; var return:integer);
var temp:integer;
begin
temp:=Actions.GiveGroup(Player, UType, X, Y, FDir, Count, PerRow);
if temp<>-1 then        
           begin
           GroupArr[GroupCounter]:=temp;
           GroupCounter:=GroupCounter+1;
           end;
return:=temp;
end;

procedure OnMissionStart();
var
           i: integer;          
begin
GroupCounter:= 0;
MyGiveGroup(0,26,10,54,1,1,1, Hero);
if Hero=-1 then
           Actions.GiveUnit(0,1,1,1,1);
MyGiveGroup(1,14,54, 20, 5, 30, 6, i);
end;

procedure OnTick();
var i:integer;
begin
if ((States.GameTime > 20) and (States.GroupDead(Hero))) then
           Actions.Defeat(0);
if (States.GameTime = 100) then
           for i:=0 to GroupCounter do
               Actions.GroupOrderWalk(GroupArr[i], 32, 32, 1);
end;

Осуществлен, контроль за первыми 100 группами добавленными с помощью GiveGroup. Им можно отдавать общие приказы. Собственно можешь вставить этот код в карту 64Х64 и посмотреть что будет или я выложу саму карту. Если отслеживать события OnWarriorEquipped и добавлять начальные отряды скриптами, то можно контролировать абсолютно все группы на карте. Если отслеживать смерть, обернуть экшены сплит и линк, то можно еще и исключать из массива уничтоженные группы. А если хорошенько подумать и реализовать хорошую структуру вместо массива для хранения ID групп, то можно хранить неогранниченное кол-во групп, и быстро обращаться к любой. Я сильно над этой темой не парился и просто сделал массив на 100 интов.

Не объявляй своих функций, они не будут работать (интерпретатор убогий). Если тебе нужно вернуть значение, передавай параметр по ссылке в процедуру, как сделано у меня в MyGiveGroup.

И еще хотелось бы добавить, если этот интерпретатор поддерживает перечисления, то можно попробовать сделать типы юнитов не по ID а нормальными осмысленными названиями.


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

Сообщение отредактировал Jery - Среда, 13.02.2013, 20:43
 
KromДата: Среда, 13.02.2013, 21:17 | Сообщение # 44
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Jery, что-то мне подсказывает, что ты неверно функцию объявлял и использовал. Классически паскаль использовал для возврата или имя ф-ии или Result. Второй вариант предпочтительнее (т.к. меньше путает). Вероятно PascalScript использует 2й вариант. Ты пробовал с Result :=  ?

Свои процедуры точно работают и функции тоже должны по идее )
Перечисления поддерживаются, но я пока не хочу их добавлять, отчасти из-за преемственности с DAT скриптами, отчасти из-за сложностей с сохранением/загрузкой нестандартных типов.


Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
 
KromДата: Среда, 13.02.2013, 21:20 | Сообщение # 45
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
Gamerus, то что ты описал отлично выражается в DAT скрипте, создать нового ИИ, дать ему 1 группу войск и указать ADD_ATTACK с задержкой и целью. Примитивно, но эффективно. Так весь ИИ КаМ устроен. А если не видно разницы (как ты говоришь, что сам думал что ИИ куда изощренее), значит свою задачу КаМ ИИ выполнял на все 100% )

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