Скрипты
|
Jery | Дата: Понедельник, 25.02.2013, 15:00 | Сообщение # 61 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| Код procedure OnTick; begin .... if States.HouseResourceAmount(СКЛАД, РЕСУРС) = X then Actions.PlayerWin(HouseOwner(СКЛАД), false); .... end; Actions.PlayerWin(HouseOwner(СКЛАД), false); возможно это не будет работать из-за того, что неправильно передан игрок, который должен победить. Но логики действий это не меняет.
Остается только каким-либо образом присвоить переменной СКЛАД собственно склад =) И возможно засунуть условный оператор в цикл, чтобы пробегаться по всем складам.
Решение второй проблемы: Код procedure OnHouseBuilt(builded); begin for i:=0 to MAX_PLAYER_COUNT do begin if States.PlayerEnabled(i) and States.StatHouseTypeCount(i, "ТИП ПОСТРОЙКИ") > X then Actions.PlayerWin(i, false); end end; Ну и собственно надо где-то объявить i и константу MAX_PLAYER_COUNT и в принципе все. Возможно будут проблемы с AND в условии, если в ПаскальСкрипте нет сокращенного вычисления логических функций. Тогда придется сделать два условия одно вложено в другое.
Третья проблема решается точно так же =) Цитата PlayerWinSet specified player(s) victorious, and all team members of those player(s) if the 2nd parameter TeamVictory is set to true. All players who were not set to victorious are set to defeated. Т.е. эта процедура вызывает победу для всех перечисленных игроков, а для остальных поражение. Если нужно точечно задать поражение, а победиших еще нет то нужно использовать: Цитата PlayerDefeatProclaims player defeated1 - player index
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
Сообщение отредактировал Jery - Четверг, 07.03.2013, 02:10 |
|
| | |
Krom | Дата: Понедельник, 25.02.2013, 15:00 | Сообщение # 62 |
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
| Jery, все верно, только пара уточнений: PascalScript использует сокращенное вычисление логических выражений, и сравнение надо обернуть в скобки - if States.PlayerEnabled(i) and (States.StatHouseTypeCount(i, "ТИП ПОСТРОЙКИ") > X) then
Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
|
|
| | |
Alexandr_5 | Дата: Понедельник, 25.02.2013, 15:00 | Сообщение # 63 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Jery, все понятно но где писать и какой файл создать чтобы кам ремейк читал Добавлено (07.03.2013, 20:11) --------------------------------------------- Krom, Добавь эти скрипты в редактор миссий Левина пожалуйста
Если игрок насобирает определенное количество ресурсов то победа.
Если игрок построит определенное количество построек определенного типа например 10 золотых рудников то победа.
в условия победы их нужно добавить. Это позволит мне создать 6 миссию. в которой надо накопить 50 золотой и железной руды, построить 5 золотых и 5 железных шахт и отбить атаку врага. или скажите как можно это сделать и что для этого нужно.
|
|
| | |
Jery | Дата: Понедельник, 25.02.2013, 15:00 | Сообщение # 64 |
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
| открываешь блокнотик начинаешь писать на паскале, сохраняешь файл <MapName>.script и закидываешь в папку с картой.
«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
|
|
| | |
Alexandr_5 | Дата: Понедельник, 25.02.2013, 15:00 | Сообщение # 65 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Но для этого нужно знать скрипты. Я не профиссионал в программирование чтобы разобраться в коде ремейка и писать скрипт.
|
|
| | |
andreus | Дата: Понедельник, 25.02.2013, 15:00 | Сообщение # 66 |
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
| на самом деле ничего сложного. Скрипт - последовательность команд типа if States.УСЛОВИЕ then Actions.ДЕЙСТВИЕ Почитай вики http://code.google.com/p/castlesand/w/list - все будет ясно)
Нашли баг на моей карте? Есть идеи по улучшению карт? Дайте мне знать
|
|
| | |
Alexandr_5 | Дата: Понедельник, 25.02.2013, 15:01 | Сообщение # 67 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Непонятно что эти переменные означают и скрипты.
andreus, Слушай ты можешь написать как сделать такой скрипт
Если игрок насобирает определенное количество ресурсов то победа.
Если игрок построит определенное количество построек определенного типа например 10 золотых рудников то победа.
Если враг наберет определенное количество ресурсов или построит определенное количество построек определенного типа то поражения.
а также написать как в скрипте пишется тип здания, число зданий, число и тип ресурсов.
|
|
| | |
andreus | Дата: Понедельник, 25.02.2013, 15:01 | Сообщение # 68 |
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
| Цитата (AlexandrV) Если игрок построит определенное количество построек определенного типа например 10 золотых рудников то победа.
procedure OnTick; begin if States.StatHouseTypeCount(0,5) = 10 then Actions.PlayerWin(0,true); //если игроком с индексом 0 построено 10 золотых рудников то игрок 0 и его команда побеждают end;
Цитата (andreus) Если игрок насобирает определенное количество ресурсов то победа.
procedure OnTick; begin if States.StatResourceProducedCount(0,1) = 1000 then Actions.PlayerWin(0,true); //если игроком с индексом 0 произведено 1000 камня то игрок 0 и его команда побеждают end;
Цитата (AlexandrV) Если враг наберет определенное количество ресурсов или построит определенное количество построек определенного типа то поражения.
те же команды только индекс игрока меняй.
Как определить индекс игрока: в редакторе карт в ремейке указаны номера игроков - от 1 до 8. Индексы соответственно от 0 до 7. Т.е. игрок №4 имеет индекс в скрипте 3. Как задать тип ресурса: заходишь в склад и смотришь. 0 - бревно, 1 - камень, 2 - доска и т.д. Как задать тип здания:
13 - школа 27 - харчевня 14 - каменоломня 9 - лесник 0 - лесопилка 8 - ферма 22 - мельница 7 - пекарня 16 - свинарник 24 - колбаске 28 - бухлодельня 5 - золотая шахта 3 - угольная шахта 15 - выплавка золота 19 - оружейня 25 - дубильня 20 - доспешня 12 - конячке 4 - железная шахта 1 - выплавка железа 2 - кузница 10 - доспешня 21 - казармы 11 - склад 17 - башня 6 - рыбак 29 - рынок
Нашли баг на моей карте? Есть идеи по улучшению карт? Дайте мне знать
|
|
| | |
Alexandr_5 | Дата: Понедельник, 25.02.2013, 15:01 | Сообщение # 69 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| andreus, 5 это получается золотой рудник
и 0 это 1 игрок тоесть команда такая
индекс игрока - 1
procedure OnTick; begin if States.StatHouseTypeCount(0,5) = 10 then Actions.PlayerWin(0,true); //если игроком с индексом 0 построено 10 золотых рудников то игрок 0 и его команда побеждают end;
а это писать в блокноте и сохранять Neme_Mission.Script
Спасибо большое тебе.
Сообщение отредактировал AlexandrV - Четверг, 07.03.2013, 22:03 |
|
| | |
andreus | Дата: Четверг, 07.03.2013, 22:44 | Сообщение # 70 |
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
| перенес обсуждение скриптов сюда.
Нашли баг на моей карте? Есть идеи по улучшению карт? Дайте мне знать
|
|
| | |
Alexandr_5 | Дата: Четверг, 07.03.2013, 22:53 | Сообщение # 71 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| andreus, Слушай скажи а скрипты которое делает кам едит 9 будут работать вместе со скриптами NameMap.script
|
|
| | |
andreus | Дата: Четверг, 07.03.2013, 22:59 | Сообщение # 72 |
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
| KaM Edit работает только с .dat и .map
.script будет работать только в новой версии ремейка
Нашли баг на моей карте? Есть идеи по улучшению карт? Дайте мне знать
|
|
| | |
Krom | Дата: Четверг, 07.03.2013, 23:17 | Сообщение # 73 |
Воитель
Группа: Супер Модераторы
Сообщений: 2526
Награды: 25
Репутация: 153
Статус: Offline
| Лучше вот так сделать, чтобы проверка шла только когда построен новый дом, а не каждый тик игры )
procedure OnHouseBuilt(aHouseID: Integer); begin if States.StatHouseTypeCount(0,5) = 10 then Actions.PlayerWin(0,true); //если игроком с индексом 0 построено 10 золотых рудников то игрок 0 и его команда побеждают end;
Нашли баг в КаМ Ремейке? Отправьте отчет на с пометками, желательно на английском, в какой версии, что и когда случилось, приложите реплей или сохраненную игру в которой этот баг воспроизводится.
|
|
| | |
andreus | Дата: Четверг, 07.03.2013, 23:29 | Сообщение # 74 |
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
| Да, с OnHouseBuilt лучше, и вычислений компу меньше))
Нашли баг на моей карте? Есть идеи по улучшению карт? Дайте мне знать
|
|
| | |
Alexandr_5 | Дата: Четверг, 07.03.2013, 23:42 | Сообщение # 75 |
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
| Почемута скрипт в одиночных миссиях не работает
файл SKR06.script
сам скрипт procedure OnTick; begin if (States.StatHouseTypeCount(0,5) = 5) and (States.StatHouseTypeCount(0,4) = 5) and (if States.StatResourceProducedCount(0,3) = 50) and (if States.StatResourceProducedCount(0,4) = 50) then Actions.PlayerWin(0,true);
end;
Ремейк версия r4179
Сообщение отредактировал AlexandrV - Пятница, 08.03.2013, 17:10 |
|
| |
|