[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: Jery, Rey  
Форум » Knights and Merchants: Remake » Идеи и предложения » Скрипты
Скрипты
andreusДата: Четверг, 07.03.2013, 23:50 | Сообщение # 76
Sir James Vagabond
Группа: Администраторы
Сообщений: 3876
Награды: 21
Репутация: 391
Статус: Offline
Цитата (andreus)
.script будет работать только в новой версии ремейка



Нашли баг на моей карте? Есть идеи по улучшению карт? Дайте мне знать
 
Alexandr_5Дата: Пятница, 08.03.2013, 15:31 | Сообщение # 77
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
То есть в r4725 и выше.

Добавлено (08.03.2013, 15:31)
---------------------------------------------
Кром, Почемута скрипт

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;
в r4725 не работает но читает


Сообщение отредактировал AlexandrV - Пятница, 08.03.2013, 17:01
 
JeryДата: Пятница, 08.03.2013, 18:26 | Сообщение # 78
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
В игре он тебе сообщения кидает, если что-то не так. Что за ифы в скобках....

«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
 
Alexandr_5Дата: Пятница, 08.03.2013, 18:45 | Сообщение # 79
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
Синтаксическая ошибка

Добавлено (08.03.2013, 18:45)
---------------------------------------------
Если написать так
procedure OnTick;
begin
if (States.StatHouseTypeCount(0,5) = 3) and (States.StatHouseTypeCount(0,4) = 3) and (if States.StatResourceProducedCount(0,3) = 50) and (if States.StatResourceProducedCount(0,4) = 50) then Actions.PlayerWin(0,true);
end;

То выдает это



а если написать так

procedure OnTick;
begin
if States.StatHouseTypeCount(0,5) = 3 and (States.StatHouseTypeCount(0,4) = 3) and (if States.StatResourceProducedCount(0,3) = 50) and (if States.StatResourceProducedCount(0,4) = 50) then Actions.PlayerWin(0,true);
end;

то выдает это



Сообщение отредактировал AlexandrV - Пятница, 08.03.2013, 18:47
 
JeryДата: Пятница, 08.03.2013, 20:03 | Сообщение # 80
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Потому что нужно писать так:
procedure OnTick;
begin
if ((States.StatHouseTypeCount(0,5) = 3) and (States.StatHouseTypeCount(0,4) = 3)) and ((States.StatResourceProducedCount(0,3) = 50) and (States.StatResourceProducedCount(0,4) = 50)) then Actions.PlayerWin(0,true);
end;

Без всяких дополнительных ифов в скобках.

Еще чтобы не возникало глупых вопросов, когда видишь сообщение:
[Error](4:89): Syntax error - это значит что у тебя синтаксическая ошибка в четвертой строке после 89го символа.
[Error](4:82): Type mismatch -  несоответствие типов в четвертой строке после 82го символа.

Это там где ты пишешь нелепый IF в скобках.


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

Сообщение отредактировал Jery - Пятница, 08.03.2013, 20:04
 
Alexandr_5Дата: Пятница, 08.03.2013, 20:09 | Сообщение # 81
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
С ифами уже понял.

Добавлено (08.03.2013, 20:09)
---------------------------------------------
procedure OnTick;
begin
if ((States.StatHouseTypeCount(0,5) = 3) and (States.StatHouseTypeCount(0,4) = 3)) and ((States.StatResourceProducedCount(0,3) = 50) and (States.StatResourceProducedCount(0,4) = 50)) then Actions.PlayerWin(0,true);
end;

А теперь что не так после 216 символа

 
JeryДата: Пятница, 08.03.2013, 20:37 | Сообщение # 82
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Что пишет в сообщении? Я ошибок не вижу. У меня нет последней версии ремейка, где можно это запустить. В моей версии старые названия динамических скриптов.

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

Сообщение отредактировал Jery - Пятница, 08.03.2013, 20:47
 
Alexandr_5Дата: Пятница, 08.03.2013, 20:53 | Сообщение # 83
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
[Error](3:216): Type mismatch

Сообщение отредактировал AlexandrV - Пятница, 08.03.2013, 20:53
 
JeryДата: Пятница, 08.03.2013, 21:24 | Сообщение # 84
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Видать где-то типы опять не совпадают. Наверно в PlayerWin , там нужен массив индексов игроков. Хз как это понимать. У крома надо спрашивать=)
Замени PlayerWin на что-нибудь другое, чтобы можно было понять где ошибка. Например на Actions.GiveUnit(0,1,1,1,1), если все будет хорошо то ошибка точно в PlayerWin.


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

Сообщение отредактировал Jery - Пятница, 08.03.2013, 21:27
 
Alexandr_5Дата: Пятница, 08.03.2013, 21:26 | Сообщение # 85
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
Jery, А ты не знаешь как сделать массив индексов игроков.
 
JeryДата: Пятница, 08.03.2013, 21:31 | Сообщение # 86
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Нужно у крома узнавать, что это значит. Может это просто цифры через запятую типа Actions.PlayerWin(0,1,2, true), а может что посложнее.
procedure OnTick; 
begin 
if (States.StatHouseTypeCount(0,5) = 3) and (States.StatHouseTypeCount(0,4) = 3) and (States.StatResourceProducedCount(0,3) = 50) and (States.StatResourceProducedCount(0,4) = 50) then Actions.PlayerWin(0,true); 
end; 
Попробуй так, я убрал все лишние скобки.


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

Сообщение отредактировал Jery - Пятница, 08.03.2013, 21:33
 
Alexandr_5Дата: Пятница, 08.03.2013, 21:33 | Сообщение # 87
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
Jery, Только это нашел в исходных скриптах крома но я незнаю английского
PlayerWin Set 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. 1 - array player index
2 - TeamVictory: Boolean
 
JeryДата: Пятница, 08.03.2013, 21:35 | Сообщение # 88
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Здесь и написано про массив индексов игроков, я просто не понимаю что это значит. Почитал я немножко про паскаль попробуй еще написать вот так:
Actions.PlayerWin([1], true);


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

Сообщение отредактировал Jery - Пятница, 08.03.2013, 21:38
 
Alexandr_5Дата: Пятница, 08.03.2013, 21:36 | Сообщение # 89
Воитель
Группа: Проверенные
Сообщений: 1330
Награды: 4
Репутация: 33
Статус: Offline
А проверить у себя можешь скрипт и сказать мне как правильно у себя написать
 
JeryДата: Пятница, 08.03.2013, 21:42 | Сообщение # 90
Мечник
Группа: Модераторы
Сообщений: 568
Награды: 2
Репутация: 50
Статус: Offline
Я же говорю у меня нет последней версии ремейка, разбираться с его компиляцией тоже нет времени. А скачивать готовый ремейк инет не позволяет.

«Художник не тогда знает, что он достиг совершенства, когда нечего добавить, но когда нечего больше отнять». (Антуан де Сент-Экзюпери)
 
Форум » Knights and Merchants: Remake » Идеи и предложения » Скрипты
Поиск: