#include "include\AIM.cpp"
void proc OnTryConvict(char cMech) // Попытка убеждения
{
if ( GetMechClan(CHAR)!="ORG_PLAYER") // Если игрок не в клане игрока (кхм, если игрок не создал свой клан)
return; // Дальше не продолжаем, прекращаем обработку функции
if (!GetVar("APROGUS.1")) // Если переменная APROGUS НЕ ровна единице
{
Dialog("TS_L1_Q1_1"); // Вывод диалога TS_L1_Q1_1 - <color=violet>Условия APROGUS - <color=orange>Хочешь, чтобы я стал частью твоего клана, %NAME? Вообще-то мне совсем неплохо в своем клане. Однако есть один способ... <p>Задача:<color=yellow>Убедить минимум 7 механоидов пятого поколения.
SetMsgJ("TS_L1_J_Q1_1"); // Вствить информацию в журнал
MarkMsgJ("TS_L1_J_Q1_1", 1); // Пометить в журнале запись
}
if (GetVar("G5_CONVICTED")>=7) // Если переменная G5_CONVICTED больше ровна 7 (игрок убедил более 6 мехов пятого поколения)
{
Dialog("TS_L1_Q1_4"); // Вывод диалога: "Тебе удалось то, чего не смог никто. Объединить больше половины нашего поколения, присоединив его к своему клану! Уверен, что ты сумеешь Убедить и остальных. А я, как и обещал, стану дополнительной силой в твоем клане."
SetVar("G5_CONVICTED", GetVar("G5_CONVICTED")+1); // Добавляем +1 к переменной G5_CONVICTED (количество убежденных 5-ого поколения)
SetMechClan("TS_GRP_APROGUS", "ORG_PLAYER"); // Присваиваем группе "TS_GRP_APROGUS" огранизацию "ORG_PLAYER" (вступления APROGUS в клан игрока)
SetVar("AIM.APROGUS.CONVICTED"); // Установка переменной, что APROGUS убежден
// У нас есть еще один механоид 5-го поколения. (комментарий разработчика)
// Если этот уйдет - пусть ARHHAND станет главарем клана.. (комментарий разработчика)
if (GetMechClan("ORG_ARHHAND")=="ORG_CALMKEEPERS") // По моему здесь ошибка со скриптом... разберу подбробнее внизу
SetClanLider("ORG_ASCENDS", "TS_GRP_ARHHAND"); // Установить лидером клана Восходящих "TS_GRP_ARHHAND" (то есть ARHHAND'a)
else
SetClanLider("ORG_ASCENDS", ""); // Установить лидером клана "Восходящих" (ORG_ASCENDS) никого = ""
SetQuestPart("TS_L1_J_Q1_1", "TS_L1_J_Q1_3");// Задать часть квеста
MarkMsgJ("TS_L1_J_Q1_1", 2); // Пометить в журнале запись
}
else // ИНАЧЕ (переменная G5_CONVICTED меньше 7)
{
if (GetVar("APROGUS.1")) // Если APROGUS'а уже была попытка убедить
MechSay(cMech, "TS_L1_Q1_6");// Мех скажет "TS_L1_Q1_6" - Я знаю, что Убедить в свой клан кого-то из пятого поколения, тем более не одного, а семерых, предельно сложно. Но наверняка возможно.
}
if (!GetVar("APROGUS.1")) // Если квар APROGUS не ровен единице
SetVar("APROGUS.1"); // Установим квар APROGUS равен еденице
// Переменная APROGUS, значение 1 устанавливаем после первой попытки убеждения
// Значение переменной G5_CONVICTED соответсвует количеству убежденных механоидов пятого поколения
}
void proc OnTalk(char cMech) // Разговор с мехом
{
if (GetMechClan(cMech)!="ORG_PLAYER") // Если мех не в клане игрока
MechSay(cMech, "MSG_M5_TALK"); // Мех скажет "Приветствую тебя, %NAME! Я слышал о тебе от Считающих, но не думал, что когда-либо увижу лично."
else // Иначе (если в клане игрока)
MechSay(cMech, "MSG_5GEN_AFTER_PER"); // Мех скажет "Вместе мы - сила, %NAME!"
}
void proc OnView(char cMech) // Когда входим в пределы видимости меха
{
SetRelation(cMech, "PLAYER", 10, 0); // Устанавливаем отношение в +10 (все мехи 5-ого поколения друзья нашему ГГ)
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//
http://forum.skyriver.ru// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Разбор части скрипта.
if (GetVar("G5_CONVICTED")>=7) // Если игрок убедил более шести механоидов пятого поколения)
{
~ (тут функция что APROGUS убежден и диалоги) ~
[ОТСЮДА БЕРЕМ ЧАСТЬ КОДА И АНАЛИЗИРУЕМ]
~ (тут функция отметок квеста в жернале) ~
}
Разбор части кода:
Надо сделать ARHHAND-а лидером "Восходящих" (ORG_ASCENDS), но только при условии что ARHHAND в клане Восходящих (а не убежден игроком, к примеру)
За что отвечает функция GetMechClan?
Ответ:
// Получить идентификатор клана механоида
char proc GetMechClan(char gliderID)
{
char cValue;
cValue = UserFunc(36, gliderID);
return cValue;
}
Смотрим на код оригиального скрипта:
if (GetMechClan("ORG_ARHHAND")=="ORG_CALMKEEPERS") // (!?) Если идентификатор клана Органицазии Арханда "ORG_ARHHAND" равно "ORG_CALMKEEPERS"
SetClanLider("ORG_ASCENDS", "TS_GRP_ARHHAND"); // Установить лидером клана Восходящих "TS_GRP_ARHHAND" (то есть ARHHAND'a)
else
SetClanLider("ORG_ASCENDS", ""); // Установить лидером клана "Восходящих" (ORG_ASCENDS) никого
Органицазии Арханда "ORG_ARHHAND" - это не Воходящие. Такого клана (ORG_ARHHAND) вообще не существует в игре.
Воходящие это ORG_ASCENDS. Хранители Покоя это ORG_CALMKEEPERS.
Аргументом для функции GetMechClan должен выступать механоид, а не клан. Правильным аргументом должен быть "TS_GRP_ARHHAND".
Но и сравнивать надо не с Хранителями Покоя, а с Восходящими.
В итоге скрипт должет выглядить так:
if (GetMechClan("TS_GRP_ARHHAND")=="ORG_ASCENDS") // Если Арханд состоит в елане Восходящих.
SetClanLider("ORG_ASCENDS", "TS_GRP_ARHHAND"); // Установить Арханда лидером клана Восходящих
else // иначе
SetClanLider("ORG_ASCENDS", ""); // Установить лидером клана Восходящих" никого (освободить пост лидера)
Аналогичная ошибка присуствует у скрипте с ARHHAND.scr
Это был скрипт APROGUS.src
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Но это еще не все.
В скрипте есть TS_L1_Q1_1, TS_L1_Q1_4, TS_L1_Q1_6
Но нету TS_L1_Q1_2, TS_L1_Q1_3, TS_L1_Q1_5
TS_L1_Q1_2
<color=orange>Ты сумел объединить под своим началом семерых из нашего поколения, %NAME?<color><p>Да/Нет<p>
TS_L1_Q1_3
<color=orange>Я не верю тебе. До сих пор выполнить мое задание не удавалось никому.
Придется съездить на ближайшую базу и проверить.<color><p>
TS_L1_Q1_5
Требования APROGUS не выполнены
<color=orange>
Ты попытался меня обмануть, %NAME! Это было весьма жалкой попыткой подражать величайшему умению Создателей. Механоидам далеко до них, поэтому все, что тебе остается, это выполнить мои условия.<color><p>
В ИТОГЕ СО СКРИПТА ВЫРЕЗАНА ВОЗМОЖНОСТЬ ОТВЕТИТЬ (сказать правду или солгать).
ВЫРЕЗАНА УСЛОВНАЯ СЦЕНА "Я не верю тебе... Придется съездить на ближайшую базу и проверить."
ВЫРЕЗАНО сообщение "Ты пытался обмануть меня"...// // Найти больше информации можно форуме
http://forum.skyriver.ru в разделе Механоиды 2 - SDK и модификации