Показать сообщение отдельно
Старый 15.12.2011, 16:37   #2515
Magmatic

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Привет люди, решил поскриптить на досуге и вот такое дело накарябал, однако сорсер ошибки там на ровном месте находит, одни строки принимает как должное, а другие похожие в штыки. В общем и целом, это скрипт игры в кости (вроде кто-то такой уже делал), осталось доделать часть, чтобы можно было играть по-новой.

Cпойлер(щелкните, чтобы прочесть):


var int Player;
instance NPC_Game(C_Info)
{
* * *npc = VLK_454_Buerger;
* * *nr = 3;
* * *condition = PC_Game_Condition;
* * *information = PC_Game_Info;
* * *permanent = TRUE;
* * *description = "Сыграем в кости?";
};
func int PC_Game_Condition()
{
* * *if(Npc_KnowsInfo(other,DIA_VLK_454_Hello))
* * *{
* * * * * *return TRUE;
* * *};
};

func void PC_Game_Info()

{
*AI_Output(other,self,"DIA_PlayGame_15_01"); //Сыграем в кости?
*AI_Output(self,other,"DIA_PlayGame_15_02"); //Не терпится расстаться с золотом? (смеется) Хорошо.Какая ставка?
*Info_ClearChoices(PC_Game);
*Info_AddChoice(PC_Game,"20 золотых",PC_Game_1);
*Info_AddChoice(PC_Game,"30 золотых",PC_Game_2);
*Info_AddChoice(PC_Game,"50 золотых",PC_Game_3);
*Info_AddChoice(PC_Game,"100 золотых",PC_Game_4);
};

var int Round;
func void PC_Game_1()
{
* * *AI_Output(other,self,"DIA_PlayGame_15_03"); *// 20золотых
* * *Round = 20;
};

func void PC_Game_2()
{
* ** * *AI_Output(other,self,"DIA_PlayGame_15_04"); *//30 золотых
* * *Round = 30;
};

func void PC_Game_3()
{
* * *AI_Output(other,self,"DIA_PlayGame_15_05"); *//50 золотых
* * *Round = 50;
};

func void PC_Game_4()
{
* * *AI_Output(other,self,"DIA_PlayGame_15_06"); *//100 золотых
* * *Round = 100;
};


instance NPC_Game_Start(C_Info)
{
* * *npc = VLK_454_Buerger;
* * *nr = 3;
* * *condition = PC_Game_Start_Condition;
* * *information = PC_Game_Start_Info;
* * *permanent = TRUE;
* * *
};
func int PC_Game_Start_Condition()
{
* * *if(Npc_KnowsInfo(other,NPC_Game))
* * *{
* * * * * *return TRUE;
* * *};
};
var int Game;
var int MyGame;
func void PC_Game_Start_Info()

{ * * *Game = Hlp_Random(12);
* if(Game <= 2)
*{
* * *AI_Output(other,self,"DIA_BigGame_15_01"); * * *//Проклятье! Двойка.
*}
else if(Game = 3)
*{
* * *AI_Output(other,self,"DIA_BigGame_15_02"); * * *//Три очка. * * *
*}

else if(Game = 4)
*{
* * *AI_Output(other,self,"DIA_BigGame_15_03"); * * *//Четыре, паршиво. * * *
*}
else if(Game = 5)
*{
* * *AI_Output(other,self,"DIA_BigGame_15_04"); * * *//Пять. * * *
*}
else if(Game = 6)
*{
* * *AI_Output(other,self,"DIA_BigGame_15_05"); * * *//Шесть, хоть что-то. * * *
*}
else if(Game = 7)
{
* * *AI_Output(other,self,"DIA_BigGame_15_06"); * * *//Семь. * * *
}
else if(Game = 8)
{
* * *AI_Output(other,self,"DIA_BigGame_15_07"); * * *//Восемь, неплохо, совсем неплохо. * * *
}
else if(Game = 9)
{
* * *AI_Output(other,self,"DIA_BigGame_15_08"); * * *//Девять. Посмотрим, что ты на это скажешь. * * *
}
else if(Game = 10) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Нельзя выполнить присвоение if. Прикол в том, что стоило перенести if строкой ниже, а потом вернуть на место, эта ошибка пропала, но два нижних условия по прежнему считаются ошибочными. Если же убрать if, начинает выдавать ошибки в строках с условиями ранее признанные программой как правильные.
*{
* * *AI_Output(other,self,"DIA_BigGame_15_09"); * * *//Десятка, разрази меня гром! Я сегодня в ударе.
*}
else if(Game = 11)
*{
* * *AI_Output(other,self,"DIA_BigGame_15_10"); // Одинадцать.(хвастливо) Попробуй кинуть лучше! * * * * * *
*}
else if(Game = 12)
*{
* * *AI_Output(other,self,"DIA_BigGame_15_11"); // Двенадцать.Ха-ха, теперь твои деньги уплывут в мой карман!
*};
};


instance NPC_HGame(C_Info)
{
* * *npc = VLK_454_Buerger;
* * *nr = 3;
* * *condition = PC_HGame_Condition;
* * *information = PC_HGame_Info;
* * *permanent = TRUE;
* * *description = "Моя очередь";
};


func int PC_HGame_Condition()
{
* * *if(Npc_KnowsInfo(other,NPC_Game_Start))
* * *{
* * * * * *return TRUE;
* * *};
};

func void PC_HGame_Info()
{
MyGame = Hlp_Random(12);
if(MyGame <= 2) && (Game > 2)
{
* * *AI_Output(other,self,"DIA_BigGame_16_01"); * * *//Двойка. (усмехается) Тебе невезет приятель.
* * *B_GiveInvItems(other,self,ItMi_Gold,Round);
}
else if(MyGame <= 2) && (Game <= 2)
{
* * *AI_Output(other,self,"DIA_BigGame_17_01"); * * *//Двойка. Ничья.
}
else if(MyGame > 2) && (Game <= 2) || (MyGame = 3) && (Game <= 2) || (MyGame > 3) && (Game <= 3) || (MyGame = 4) && (Game <= 3) *|| (MyGame > 4) && (Game <= 4) * || (MyGame = 5) && (Game <= 4) ||
Ошибка синтаксиса.|| (MyGame > 5) && (Game <= 5) || (MyGame = 6) && (Game <= 5) || (MyGame > 6) && (Game <= 6) || (MyGame = 7) && (Game <= 6) || (MyGame > 7) && (Game <= 7) || (MyGame = 8) && (Game <= 7) || (MyGame > 8) && (Game <= 8) ||
||(MyGame = 9) && (Game <= 8) *||(MyGame > 9) && (Game <= 9) ||(MyGame = 10) && (Game <= 9) ||(MyGame > 10) && (Game <= 10) ||(MyGame = 11) && (Game <= 10) ||(MyGame > 11) && (Game <= 11) || (MyGame = 12) && (Game <= 11)
Здесь не очень хорошо видно, ситуация такова: условие было слишком длинным, и я решил разделить его в три строки. Такое встречается в скриптах готики, однако в данном случае это не сработало. Попытка удаления "лишних палочек" также как попытка написать условие в одну строку, без переносов приводят к вылету программы на рабочий стол.

{
* * *AI_Output(other,self,"DIA_BigGame_16_02"); * * *//Зараза, ты победил!
* * *B_GiveInvItems(self,other,ItMi_Gold,Round);
}

else if(MyGame = 3) && (Game > 3)
{
* * *AI_Output(other,self,"DIA_BigGame_17_02"); * * *//Три очка. * * *Твои деньги стали моими.
* * *B_GiveInvItems(other,self,ItMi_Gold,Round);
}
else if(MyGame = 3) && (Game = 3)
{
* * *AI_Output(other,self,"DIA_BigGame_17_03"); * * *//Ничья.
}

else if(MyGame = 4) && (Game > 4)
{
* * *AI_Output(other,self,"DIA_BigGame_16_03"); * * *//Четыре, гони золотишко.
* *B_GiveInvItems(other,self,ItMi_Gold,Round); * * *
}

else if(MyGame = 4) && (Game = 4)
{
* * *AI_Output(other,self,"DIA_BigGame_17_03"); * * *//Ни тебе, ни мне. Ничья.
}
else if(MyGame = 5) && (Game > 5)
{
* * *AI_Output(other,self,"DIA_BigGame_16_04"); * * *//Пять, золото гони опять. (ржет)
* *B_GiveInvItems(other,self,ItMi_Gold,Round); * * *
}
else if(MyGame = 5) && (Game = 5) || *(MyGame = 6) && (Game = 6)
{
* * *AI_Output(other,self,"DIA_BigGame_16_05"); * * *//Одинаковый результат тоже результат. Вот только карман от него не тяжелеет.
}
else if(MyGame = 6) && (Game > 6)
{
* * *AI_Output(other,self,"DIA_BigGame_16_06"); * * *//Шесть,отличная попытка, но до меня далеко.
* *B_GiveInvItems(other,self,ItMi_Gold,Round); * * *
}
else if(MyGame = 7) && (Game > 7)
{
* * *AI_Output(other,self,"DIA_BigGame_16_07"); * * *//Семь. * * *Хороший бросок,но мой лучше.
* * *B_GiveInvItems(other,self,ItMi_Gold,Round); * * *
}
else if(MyGame = 7) && (MyGame = 7) || (MyGame = 7) && (Game = 7) *|| (MyGame = 8) && (Game = 8) || (MyGame = 9) && (Game = 9) *|| (MyGame = 10) && (Game = 10) || (MyGame = 11) && (Game = 11)
{
* * *AI_Output(other,self,"DIA_BigGame_16_08"); * * *//Однако, счет равный.
}
else if(MyGame = 8) && (Game > 8)
{
* * *AI_Output(other,self,"DIA_BigGame_16_09"); * * *//Восемь. Совсем неплохо. А теперь гони мои деньги. * * *
* * *B_GiveInvItems(other,self,ItMi_Gold,Round); * * *
}
else if(MyGame = 9) && (Game > 9)
{
* * *AI_Output(other,self,"DIA_BigGame_16_10"); * * *//Девять. Для новичка ты хорош, однако удача на моей стороне.
* *B_GiveInvItems(other,self,ItMi_Gold,Round); * * * * * *
}
else if(MyGame = 10) && (Game > 10)
{
* * *AI_Output(other,self,"DIA_BigGame_16_11"); * * *//Десятка.
* * *B_GiveInvItems(other,self,ItMi_Gold,Round); * * *
}
else if(MyGame = 11) && (Game > 11)
{
* * *AI_Output(other,self,"DIA_BigGame_16_12"); // Одинадцать.Ты почти достал меня.
B_GiveInvItems(other,self,ItMi_Gold,Round); * * * * * *
}
else if(MyGame = 12) && (Game = 12)
{
* * *AI_Output(other,self,"DIA_BigGame_16_13"); // Двенадцать! Чтоб тебя! Вот это везение, я уж думал тебе не отвертеться.
}



*


Help anybody!!!
Ответить с цитированием