Takie coś ',', jak w innych skryptach sprawdzałem w linii 27, to pokazywało mi to //, w linii 27.
A z tym handlem, to nie pokazuje się żaden komunikat.
[codebox]INSTANCE GRD_8017_Franck_Teach(C_INFO)
{
npc = GRD_8017_Franck;
nr = 10;
condition = GRD_8017_Franck_Teach_Condition;
information = GRD_8017_Franck_Teach_Info;
permanent = 1;
description = "Szkolisz innych?";
};
FUNC INT GRD_8017_Franck_Teach_Condition()
{
if (C_NpcBelongsToPsiCamp(hero))
{
return TRUE;
};
}; FUNC VOID GRD_8017_Franck_Teach_Info()
{
AI_Output(other,self,"GRD_8017_Franck_Teach_15_00"); //Szkolisz innych?
AI_Output(self,other,"GRD_8017_Franck_Teach_08_01"); //No cóż. Jeżeli chcesz być lepszym wojownikiem, to czemu nie.
AI_Output(other,self,"GRD_8017_Franck_Teach_08_02"); //W takim razie powiedz mi jak podwyższyć moją siłę lub zręczność.
Info_ClearChoices (GRD_8017_Franck_Teach);
Info_AddChoice (GRD_8017_Franck_Teach,DIALOG_BACK ,GRD_8017_Franck_Teach_BACK);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnStrength_5,5*LPCOST_ATTRIB
UTE_STRENGTH,0) ,GRD_8017_Franck_Teach_STR_5);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUT
E_STRENGTH,0) ,GRD_8017_Franck_Teach_STR_1);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnDexterity_5,5*LPCOST_ATTRI
BUTE_DEXTERITY,0) ,GRD_8017_Franck_Teach_DEX_5);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBU
TE_DEXTERITY,0) ,GRD_8017_Franck_Teach_DEX_1);
};
// ************************************************************
// EXIT
// ************************************************************
INSTANCE DIA_FRANCK_EXIT(C_INFO)
{
npc = GRD_8017_Franck;
nr = 999;
condition = DIA_FRANCK_EXIT_Condition;
information = DIA_FRANCK_EXIT_Info;
permanent = 1;
description = DIALOG_ENDE;
};
FUNC INT DIA_FRANCK_EXIT_Condition()
{
return 1;
};
FUNC VOID DIA_FRANCK_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// ************************************************************
// Hallo
// ************************************************************
INSTANCE DIA_FRANCK_Hello (C_INFO)
{
npc = GRD_8017_Franck;
nr = 1;
condition = DIA_FRANCK_Hello_Condition;
information = DIA_FRANCK_Hello_Info;
permanent = 0;
description = "Oprócz tego, zajmujesz się jeszcze czymś?";
};
FUNC INT DIA_FRANCK_Hello_Condition()
{
return 1;
};
FUNC VOID DIA_FRANCK_Hello_Info()
{
AI_Output (other, self,"DIA_FRANCK_Hello_15_00"); //Oprócz tego, zajmujesz się jeszcze czymś?
AI_Output (self, other,"DIA_FRANCK_Hello_13_01"); //Nie, całymi dniami trenuję, przez co jestem dobrym wojownikiem. Po prostu lubię trenować i tyle!
AI_Output (other, self,"DIA_FRANCK_Hello_15_02"); //Aha, a po treningu odpoczywasz?
AI_Output (self, other,"DIA_FRANCK_Hello_13_03"); //Co za pytanie? Oczywiście że tak!
AI_Output (other, self,"DIA_FRANCK_Hello_13_04"); //A trenujesz innych w walce bronią jednoręczną lub dwuręczną?
AI_Output (self, other,"DIA_FRANCK_Hello_13_05"); //Tak, trenuję, walkę bronią jedno i dwuręczną, ale tylko za drobną opłatą.
AI_Output (other, self,"DIA_FRANCK_Hello_13_06"); //Ile?
AI_Output (self, other,"DIA_FRANCK_Hello_13_07"); //30 bryłek rudy za pierwszą lekcję, a za drugą, 60 bryłek rudy.
};
// **************************************************
// TRAIN
// **************************************************
INSTANCE DIA_Franck_TRAIN (C_INFO)
{
npc = Grd_8017_Franck;
nr = 10;
condition = DIA_Franck_TRAIN_Condition;
information = DIA_Franck_TRAIN_Info;
permanent = 1;
description = "Niech będzie! Naucz mnie walczyć bronią jednoręczną!";
};
FUNC INT DIA_Franck_TRAIN_Condition()
{
if (Npc_KnowsInfo(hero,DIA_Franck_WhatDoYouDo))
{
return 1;
};
};
FUNC VOID DIA_Franck_TRAIN_Info()
{
if( log_Francktrain == FALSE)
{
Log_CreateTopic (GE_TeacheWalk,LOG_NOTE);
B_LogEntry(GE_TeacheWalk, "Franck może mnie nauczyć walki bronią jednoręczną w zamian za 30 bryłek rudy za pierwszą lekcję.");
log_Francktrain = TRUE;
};
AI_Output (other,self,"DIA_Franck_TRAIN_15_00"); //Niech będzie! Naucz mnie walczyć bronią jednoręczną!
AI_Output (self,other,"DIA_Franck_TRAIN_01_01"); //Dobrze. W takim razie zaczynamy.
Info_ClearChoices (DIA_Franck_TRAIN );
Info_AddChoice (DIA_Franck_TRAIN,DIALOG_BACK ,DIA_Franck_TRAIN_BACK);
if (Npc_GetTalentSkill(hero, NPC_TALENT_1H) == 1)
{
Info_AddChoice (DIA_Franck_TRAIN,B_BuildLearnString(NAME_Learn1h_2, LPCOST_TALENT_1H_2,60) ,DIA_Franck_TRAIN_2h);
};
if (Npc_GetTalentSkill(hero, NPC_TALENT_1H) == 0)
{
Info_AddChoice (DIA_Franck_TRAIN,B_BuildLearnString(NAME_Learn1h_1, LPCOST_TALENT_1H_1,30) ,DIA_Franck_TRAIN_1h);
};
};
func void DIA_Franck_TRAIN_BACK()
{
Info_ClearChoices (DIA_Franck_TRAIN );
};
func void DIA_Franck_TRAIN_1h()
{
AI_Output (other,self,"DIA_Franck_TRAIN_1h_15_00"); //Naucz mnie walki jednoręcznym orężem!
if (Npc_HasItems(other,itminugget) >= 30)
{
if (B_GiveSkill(other, NPC_TALENT_1H, 1, LPCOST_TALENT_1H_1))
{
AI_Output (self,other,"DIA_Franck_TRAIN_1h_01_01"); //Świetnie! Zatem na początek, powinieneś umieć prawidłowo trzymać miecz. To sukces dla nowego wojownika, w przypadku jeżeli tego się nie nauczysz, żaden z ciebie wojownik!
AI_Output (self,other,"DIA_Franck_TRAIN_1h_01_02"); //Każdy nowy wojownik trzyma miecz dwoma rękoma, ale jeżeli chcesz lepiej walczyć, powinieneś trzymać miecz jedną ręką.
AI_Output (self,other,"DIA_Franck_TRAIN_1h_01_03"); //Gdy już trzymasz broń jednoręczną ostrzem do góry, naucz się nią prawidłowo machać.
AI_Output (self,other,"DIA_Franck_TRAIN_1h_01_04"); //Trenuj aż w końcu nauczysz się prawidłowo walczyć, wtedy twoje ciosy będą silniejsze i szybko powalisz przeciwnika.
AI_Output (self,other,"DIA_Franck_TRAIN_1h_01_05"); //Zapamiętaj to sobie dobrze, to co ci powiedziałem! A w ten sposób staniesz się dobrym wojownikiem!
AI_Output (self,other,"DIA_Franck_TRAIN_1h_01_06"); //Aha! Czasami uda ci się zadać silny i bolesny cios u przeciwnika, ale jak na ciebie, to musisz jeszcze długo potrenować.
AI_Output (self,other,"DIA_Franck_TRAIN_1h_01_07"); //Jeżeli nauczysz się tego prawidłowo, tego co ci wymieniłem, staniesz się wojownikiem!
B_GiveInvItems(other,self,itminugget,50);
};
}
else
{
AI_Output (self,other,"DIA_Franck_TRAIN_1h_NoOre_01_00"); //Przykro mi! Ale nie masz wystarczająco dużo rudy.
};
};
func void DIA_Franck_TRAIN_2h()
{
AI_Output (other,self,"DIA_Franck_TRAIN_2h_15_01"); //Naucz mnie walczyć bronią dwuręczną!
if (Npc_HasItems(other,itminugget) >= 60)
{
if (B_GiveSkill(other, NPC_TALENT_2H, 1, LPCOST_TALENT_2H_1))
{
AI_Output (self, other,"DIA_Franck_TRAIN_2h_Info_01_02"); //Dobrze, w takim razie naucz się trzymać broń dwoma rękami, każdy początkujący wojownik tak robi.
AI_Output (self, other,"DIA_Franck_TRAIN_2h_Info_01_03"); //Gdy już to opanujesz, zadawaj silne i bolesne ciosy. Machaj mieczem dwuręcznym od góry, lub od boków. Z czasem będziesz zadawał coraz silniejsze ciosy, gdy tylko podwyższysz sobie siłę.
AI_Output (self, other,"DIA_Franck_TRAIN_2h_Info_01_04"); //Następnie prowadź cięcia od góry, i z lewej bądź prawej ciosy.
AI_Output (self, other,"DIA_Franck_TRAIN_2h_Info_01_05"); //Zapamiętaj te słowa, i potrenuj trochę. A staniesz się dobrym wojownikiem! Tak jak ja!
B_GiveInvItems(other,self,itminugget,150);
};
}
else
{
AI_Output (self,other,"DIA_Franck_TRAIN_2h_NoOre_01_00"); //Niestety, masz za mało rudy!
};
};
[/codebox]
[codebox]// ************************************************************
// EXIT
// ************************************************************
INSTANCE DIA_Grd_8001_EXIT (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 999;
condition = DIA_Grd_8001_EXIT_Condition;
information = DIA_Grd_8001_EXIT_Info;
permanent = 1;
description = DIALOG_ENDE;
};
FUNC INT DIA_Grd_8001_EXIT_Condition()
{
return 1;
};
FUNC VOID DIA_Grd_8001_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// ************************************************************
// Bin Schürfer
// ************************************************************
INSTANCE DIA_Grd_8001_Pallissade (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 1;
condition = DIA_Grd_8001_Pallissade_Condition;
information = DIA_Grd_8001_Pallissade_Info;
permanent = 1;
description = "Jestem kopaczem. Chcę wejść!";
};
FUNC INT DIA_Grd_8001_Pallissade_Condition()
{
if (self.aivar[AIV_PASSGATE] == FALSE)
&& (Npc_GetAttitude(self,hero) != ATT_FRIENDLY)
{
return TRUE;
};
};
FUNC VOID DIA_Grd_8001_Pallissade_Info()
{
AI_Output (other, self,"DIA_Grd_8001_Pallissade_15_00"); //Przecież jestem tym szczurem ze Starego Obozu!
var C_ITEM myarmor;
myarmor = Npc_GetEquippedArmor(hero);
if (Hlp_IsItem(myarmor, VLK_ARMOR_L))
{
AI_Output (self, other,"DIA_Grd_8001_Pallissade_06_01"); //No a dlaczego miałbym wpuszczać tu takiego brudasa? Co? Wysiedziałeś się w kopalni, a teraz pchasz tu dupę? Dobra idź już, bo tak od ciebie cuchnie że aż cofa!
self.aivar[AIV_PASSGATE] = TRUE;
AI_StopProcessInfos (self);
}
else
{
AI_Output (self, other,"DIA_Grd_8001_Pallissade_NOPALLISSADE_06_00"); //Nawet nie masz na sobie gaci tych brudasów! Zjeżdżaj stąd! Jak będziesz miał jakies gacie to wtedy pogadamy!
};
};
// ************************************************************
// Bestechen
// ************************************************************
INSTANCE DIA_Grd_8001_GuardPalissade (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 1;
condition = DIA_Grd_8001_GuardPalissade_Condition;
information = DIA_Grd_8001_GuardPalissade_Info;
permanent = 1;
description = "To w takim razie, może parę bryłek rudy załatwi sprawę?";
};
FUNC INT DIA_Grd_8001_GuardPalissade_Condition()
{
if (self.aivar[AIV_PASSGATE] == FALSE)
&& (Npc_GetAttitude(self,hero) != ATT_FRIENDLY)
{
return 1;
};
};
FUNC VOID DIA_Grd_8001_GuardPalissade_Info()
{
AI_Output (other, self,"DIA_Grd_8001_GuardPalissade_15_00"); //To w takim razie, może parę bryłek rudy załatwi sprawę?
AI_Output (self, other,"DIA_Grd_8001_GuardPalissade_06_01"); //Śmieszny jesteś! Co taki brudas przy sobie ma? Założę się że ani nie masz 5 bryłek rudy.
Info_ClearChoices (DIA_Grd_8001_GuardPalissade );
Info_AddChoice (DIA_Grd_8001_GuardPalissade,"Co powiesz na 100 bryłek rudy?" ,DIA_Grd_8001_GuardPalissade_100Erz);
Info_AddChoice (DIA_Grd_8001_GuardPalissade,"Może 50 bryłek rudy wystarczy?" ,DIA_Grd_8001_GuardPalissade_50Erz);
Info_AddChoice (DIA_Grd_8001_GuardPalissade,"Mam tylko przy sobie te 10 bryłek rudy." ,DIA_Grd_8001_GuardPalissade_10Erz);
};
func void DIA_Grd_8001_GuardPalissade_10Erz()
{
AI_Output (other, self,"DIA_Grd_8001_GuardPalissade_10Erz_15_00"); //Mam tylko przy sobie te 10 bryłek rudy - masz.
if (Npc_HasItems (other, itminugget) >= 10)
{
AI_Output (self, other,"DIA_Grd_8001_GuardPalissade_10Erz_06_01"); //10 bryłek rudy?! Tak też myślałem. Zjeżdżaj!
}
else
{
AI_Output (self, other,"DIA_Grd_8001_GuardPalissade_10Erz_06_02"); //Jaja sobie robisz? Wynocha!
};
AI_StopProcessInfos (self);
};
func void DIA_Grd_8001_GuardPalissade_50Erz()
{
AI_Output (other, self,"DIA_Grd_8001_GuardPalissade_50Erz_15_00"); //Może 50 bryłek rudy wystarczy?
if (Npc_HasItems (other, itminugget) >= 50)
{
AI_Output (self, other,"DIA_Grd_8001_GuardPalissade_50Erz_06_01"); //Mało! Nie stać cię na nic więcej?
}
else
{
AI_Output (self, other,"DIA_Grd_8001_GuardPalissade_50Erz_06_02"); //WIESZ CO?! Żarty to sobie możesz stroić z tego GOMEZA!
};
AI_StopProcessInfos (self);
};
func void DIA_Grd_8001_GuardPalissade_100Erz()
{
AI_Output (other, self,"DIA_Grd_8001_GuardPalissade_100Erz_15_00"); //Co powiesz na 100 bryłek rudy?
if (Npc_HasItems (other, itminugget) >= 100)
{
AI_Output (self, other,"DIA_Grd_8001_GuardPalissade_100Erz_06_01"); //No! Widać da się na tobie więcej wyciągnąć! Właź! Ale jak tylko będziesz sprawiał kłopoty, wylecisz stąd szybciej niż tutaj wszedłeś!
self.aivar[AIV_PASSGATE] = TRUE;
B_GiveInvItems (other, self, ItMiNugget, 100);
}
else
{
AI_Output (self, other,"DIA_Grd_8001_GuardPalissade_100Erz_06_02"); //Oh.. gdzie masz te 100 bryłek rudy? Tak, gdzie taki szczur miałby 100 bryłek rudy? Co? Spadaj..
};
AI_StopProcessInfos (self);
};
// ************************************************************
// PERM
// ************************************************************
INSTANCE DIA_Grd_8001_GARD (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 1;
condition = DIA_Grd_8001_GARD_Condition;
information = DIA_Grd_8001_GARD_Info;
permanent = 1;
description = "Jak się sprawy mają?";
};
FUNC INT DIA_Grd_8001_GARD_Condition()
{
if (self.aivar[AIV_PASSGATE] == TRUE)
|| (Npc_GetAttitude(self,hero) == ATT_FRIENDLY)
{
return 1;
};
};
FUNC VOID DIA_Grd_8001_GARD_Info()
{
AI_Output (other, self,"DIA_Grd_8001_GARD_15_00"); //Jak się sprawy mają?
AI_Output (self, other,"DIA_Grd_8001_GARD_06_01"); //Nijak. Nie zawracaj mi głowy takimi głupotami!
};
// ************************************************************
// SC = GRD oder Magier
// ************************************************************
INSTANCE DIA_Grd_8001_GRDD (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 1;
condition = DIA_Grd_8001_GRDD_Condition;
information = DIA_Grd_8001_GRDD_Info;
permanent = 1;
important = 1;
};
FUNC INT DIA_Grd_8001_GRDD_Condition()
{
if ( (other.guild == GIL_GRD) || (other.guild == GIL_SLD) || (other.guild == GIL_NOV) )
{
return 1;
};
};
FUNC VOID DIA_Grd_8001_GRDD_Info()
{
AI_Output (self, other,"DIA_Grd_8001_GRDD_06_00"); //A dokąd to się wybieramy?
AI_Output (other, self,"DIA_Grd_8001_GRDD_15_01"); //Do obozu!
AI_Output (self, other,"DIA_Grd_8001_GRDD_06_02"); //No. Na pewno cię wpuszczę! Trafiłeś nie tam gdzie trzeba! Hehe..
self.aivar[AIV_PASSGATE] = TRUE;
};
// ************************************************************
// SC = SLD
// ************************************************************
INSTANCE DIA_Grd_8001_ScSlds (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 1;
condition = DIA_Grd_8001_ScSlds_Condition;
information = DIA_Grd_8001_ScSlds_Info;
permanent = 1;
important = 1;
};
FUNC INT DIA_Grd_8001_ScSlds_Condition()
{
if ( (other.guild == GIL_ORG) || (other.guild == GIL_SLD) )
{
return 1;
};
};
FUNC VOID DIA_Grd_8001_ScSlds_Info()
{
AI_Output (self, other,"DIA_Grd_8001_ScSlds_06_00"); //Ty wiesz że nie wpuszczamy tutaj najemników i szkodników
AI_Output (self, other,"DIA_Grd_8001_ScSlds_06_01"); //Ale jak chesz pohandlować to wejdź.
};
// ************************************************************
// Kraut geben
// ************************************************************
var int Grd_8001_BeersBottle;
// ************************************************************
INSTANCE DIA_Grd_8001_BeersBottle (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 1;
condition = DIA_Grd_8001_BeersBottle_Condition;
information = DIA_Grd_8001_BeersBottle_Info;
permanent = 1;
description = "Mam tu dla ciebie towar!";
};
FUNC INT DIA_Grd_8001_BeersBottle_Condition()
{
if ( Npc_KnowsInfo(hero,DIA_Grd_8001_BeersBottle))
{
return 1;
};
};
FUNC VOID DIA_Grd_8001_BeersBottle_Info()
{
AI_Output (other, self,"DIA_Grd_8001_BeersBottle_15_00"); //Mam tu dla ciebie towar!
if ( (Npc_HasItems(other,ItFoBeer)>0) || (Npc_HasItems(other,ItFoWine)>0) || (Npc_HasItems(other,ItFoBeer)>0) )
{
if ( (Npc_HasItems(other,ItFoBeer)>0) || (Npc_HasItems(other,ItFoWine)>0) || (Npc_HasItems(other,ItFoBeer)>0) )
{
if (Npc_HasItems(other,ItFoBeer))
{
B_GiveInvItems (other, self,ItFoBeer, 10);
}
else if (Npc_HasItems(other,ItFoWine))
{
B_GiveInvItems (other, self,ItFoWine, 10);
}
else if (Npc_HasItems(other,ItMiJoint_1))
{
B_GiveInvItems (other, self,ItMiJoint_1, 10);
}
else if (Npc_HasItems(other,ItMiJoint_2))
{
B_GiveInvItems (other, self,ItMiJoint_2, 10);
}
else if (Npc_HasItems(other,ItMiJoint_3))
{
B_GiveInvItems (other, self,ItMiJoint_3, 10);
};
AI_Output (self, other,"DIA_Grd_8001_BeersBottle_06_01"); //Dobra, dobra, dawaj to i wynocha!
self.aivar[AIV_PASSGATE] = TRUE;
Grd_8001_BeersBottle = TRUE;
}
else
{
AI_Output (other, self,"DIA_Grd_8001_BeersBottle_KEIN_15_00"); //A co z rudą? 400 bryłek za ten towar! Tak powiedział Martin.
AI_Output (self, other,"DIA_Grd_8001_BeersBottle_KEIN_06_00"); //Co? Aż tyle? A masz, i spadaj! (śmiech)
B_GiveInvItems(self,other,itminugget,400);
self.aivar[AIV_PASSGATE] = TRUE;
};
};
//////////////////////////////////////////////////////////////////////////
// DURCHGANGSWACHE
// ===============
// NSC: Grd_8001_Skrzypek
// Lager: NewCamp
// Durchgang: Brame (rechte Wache)
// Uhrzeit: 24h
//
// Es passiert folgendes:
// 1. Nähert sich der Spieler dem Durchgang, so wird er in diesen
// Dialog gezwungen und einmal gewarnt
// 2. Nähert sich der SC trotzdem weiter, so wird er ein ZWEITES Mal
// gewarnt (aggressiver mit Waffe ziehen)
// 3. Nähert er sich trotzdem wieder, wird er angegriffen
//////////////////////////////////////////////////////////////////////////
// **********************************************
// Erste Warnung
// **********************************************
const string Grd_8001_WarnBrame = "OC_GUARD_PALISSADE";
// **********************************************
}; instance Info_Grd_8001_Pall (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 2;
condition = Info_Grd_8001_Pall_Condition;
information = Info_Grd_8001_Pall_Info;
permanent = 1;
important = 1;
};
func int Info_Grd_8001_Pall_Condition()
{
if ((hero.aivar[AIV_GUARDPASSAGE_STATUS]== AIV_GPS_BEGIN)
&& (self.aivar[AIV_PASSGATE] == FALSE )
&& (Npc_GetAttitude(self,hero) != ATT_FRIENDLY )
&& (Hlp_StrCmp(Npc_GetNearestWP(self), self.wp) ))
{
return TRUE;
};
};
func void Info_Grd_8001_Pall_Info()
{
PrintGlobals (PD_MISSION);
AI_Output (self, hero,"Info_Grd_8001_Pall_Info_06_00"); //Stój! Gdzie leziesz? Pomyliłeś numery.
AI_Output (hero, self,"Info_Grd_8001_Pall_Info_15_01"); //Chcę wejść do obozu, to wszystko.
AI_Output (self, hero,"Info_Grd_8001_Pall_Info_06_02"); //Chyba żartujesz?! Mam wpuścić takiego brudasa, który ledwo co tutaj został zrzucony? Nie ma mowy!
hero.aivar[AIV_LASTDISTTOWP] = Npc_GetDistToWP(hero,Grd_8001_WarnBrame);
hero.aivar[AIV_GUARDPASSAGE_STATUS] = AIV_GPS_FIRSTWARN;
};
//------------------------------------------------------------------------
// 2. Warnung
//------------------------------------------------------------------------
instance Info_Grd_8001_Bram (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 1;
condition = Info_Grd_8001_WarnBrame_Condition;
information = Info_Grd_8001_WarnBrame_Info;
permanent = 1;
important = 1;
};
func int Info_Grd_8001_WarnBrame_Condition()
{
if ((hero.aivar[AIV_GUARDPASSAGE_STATUS] == AIV_GPS_FIRSTWARN )
&& (self.aivar[AIV_PASSGATE] == FALSE )
&& (Npc_GetAttitude(self,hero) != ATT_FRIENDLY )
&& (Npc_GetDistToWP(hero,GRD_8001_WarnBrame) < (hero.aivar[AIV_LASTDISTTOWP]-100))
&& (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) ))
{
return TRUE;
};
};
func int Info_Grd_8001_WarnBrame_Info()
{
AI_Output (self, hero,"Info_Grd_8001_WarnBrame_STOP_06_00"); //Ile razy mam jeszcze powtarzać? JESZCZE JEDEN KROK A WYJDZIESZ STĄD SZYBCIEJ NIŻ TUTAJ WSZEDŁEŚ!!
hero.aivar[AIV_LASTDISTTOWP] = Npc_GetDistToWP (hero,Grd_8001_WarnBrame);
hero.aivar[AIV_GUARDPASSAGE_STATUS] = AIV_GPS_LASTWARN;
AI_StopProcessInfos (self);
};
//------------------------------------------------------------------------
// Attack
//------------------------------------------------------------------------
instance Info_Grd_8001_WalkAttack (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 1;
condition = Info_Grd_8001_WalkAttack_Condition;
information = Info_Grd_8001_WalkAttack_Info;
permanent = 1;
important = 1;
};
func int Info_Grd_8001_WalkAttack_Condition()
{
if ((hero.aivar[AIV_GUARDPASSAGE_STATUS] == AIV_GPS_LASTWARN )
&& (Npc_GetAttitude(self,hero) != ATT_FRIENDLY )
&& (self.aivar[AIV_PASSGATE] == FALSE)
&& (Npc_GetDistToWP(hero,Org_876_CHECKPOINT) < (hero.aivar[AIV_LASTDISTTOWP]-100))
&& (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) ))
{
return TRUE;
};
};
func int Info_Grd_8001_WalkAttack_Info()
{
hero.aivar[AIV_LASTDISTTOWP] = 0;
hero.aivar[AIV_GUARDPASSAGE_STATUS] = AIV_GPS_PUNISH;
B_FullStop (self);
AI_StopProcessInfos (self); // dem Spieler sofort wieder die Kontrolle zurückgeben
B_IntruderAlert (self, other);
B_SetAttackReason (self, AIV_AR_INTRUDER);
Npc_SetTarget (self, hero);
AI_StartState (self, ZS_Attack, 1, "");
};
[/codebox]
[codebox]// **************************************************
// EXIT
// **************************************************
instance Grd_8001_Martin_Exit (C_INFO)
{
npc = Grd_8001_Martin;
nr = 999;
condition = Grd_8001_Martin_Exit_Condition;
information = Grd_8001_Martin_Exit_Info;
permanent = 1;
description = DIALOG_ENDE;
};
FUNC int Grd_8001_Martin_Exit_Condition()
{
return 1;
};
FUNC VOID Grd_8001_Martin_Exit_Info()
{
AI_StopProcessInfos (self);
};
// **************************************************
// First
// **************************************************
instance Grd_8001_Martin_First (C_INFO)
{
npc = Grd_8001_Martin;
nr = 1;
condition = Grd_8001_Martin_First_Condition;
information = Grd_8001_Martin_First_Info;
permanent = 0;
important = 1;
};
FUNC int Grd_8001_Martin_First_Condition()
{
return 1;
};
FUNC VOID Grd_8001_Martin_First_Info()
{
AI_Output (self, other,"Grd_8001_Martin_First_12_00"); //Witaj! Jesteś tu nowy, prawda? Jestem Martin, handluję bronią jak i pancerzem. Jeżeli będziesz czegoś potrzebował, zajrzyj do mnie.
Log_CreateTopic (GE_TradeGuards,LOG_NOTE);
B_LogEntry (GE_TradeGuards,"Strażnik w obozie Gwardii Królewskiej imieniem Martin, handluje bronią i pancerzami. Gdy będę czegoś potrzebował, zajrzę do niego.");
};
// **************************************************
// Handeln
// **************************************************
instance Grd_8001_Martin_Trade (C_INFO)
{
npc = Grd_8001_Martin;
nr = 800;
condition = Grd_8001_Martin_Trade_Condition;
information = Grd_8001_Martin_Trade_Info;
permanent = 1;
description = "Pokaż mi swoje towary.";
trade = 1;
};
FUNC int Grd_8001_Martin_Trade_Condition()
{
return TRUE;
};
FUNC VOID Grd_8001_Martin_Trade_Info()
{
AI_Output (other, self,"Grd_8001_Martin_Trade_15_00"); //Pokaż mi swoje towary.
};
/*------------------------------------------------------------------------
RÜSTUNG
------------------------------------------------------------------------*/
instance Grd_8005_Martin_ARMOR (C_INFO)
{
npc = Grd_8005_Martin;
condition = Grd_8005_Martin_ARMOR_Condition;
information = Grd_8005_Martin_ARMOR_Info;
important = 0;
permanent = 1;
description = "Masz może dla mnie jakąś zbroję?";
};
FUNC int Grd_8005_Martin_ARMOR_Condition()
{
if (Kapitel < 2)
&& (Npc_KnowsInfo (hero, Grd_8005_Martin_First))
{
return TRUE;
};
};
FUNC void Grd_8005_Martin_ARMOR_Info()
{
AI_Output (other, self,"Grd_8005_Martin_ARMOR_Info_15_01"); //Masz może dla mnie jakąś zbroję?
AI_Output (self, other,"Grd_8005_Martin_ARMOR_Info_12_02"); //Tak, akurat mam na zbyciu parę pancerzy. Myślę że ci się spodobają.
Info_ClearChoices (Grd_8005_Martin_ARMOR);
Info_Addchoice (Grd_8005_Martin_ARMOR,DIALOG_BACK,Grd_8005_Martin_ARMOR_BACK);
Info_Addchoice (Grd_8005_Martin_ARMOR,B_BuildBuyArmorString(NAME_FiskLightDiggers,VALUE_SFB_ARM
OR_L),Grd_8005_Martin_ARMOR_L);
Info_Addchoice (Grd_8005_Martin_ARMOR,B_BuildBuyArmorString(NAME_FiskDiggers,VALUE_VLK_ARMOR_L)
,Grd_8005_Martin_ARMOR_L);
};
func void Grd_8005_Martin_ARMOR_BACK()
{
Info_ClearChoices (Grd_8005_Martin_ARMOR);
};
func void Grd_8005_Martin_ARMOR_L()
{
AI_Output (other, self,"Grd_8005_Martin_ARMOR_L_Info_15_01"); //Chcę kupić te spodnie Kreta.
if (Npc_HasItems (hero,ItMiNugget) < VALUE_SFB_ARMOR_L)
{
AI_Output (self, other,"Grd_8005_Martin_ARMOR_L_Info_12_02"); //Przykro mi, ale masz za mało rudy!
}
else
{
AI_Output (self, other, "Grd_8005_Martin_ARMOR_L_Info_12_03"); //Świetny wybór!
B_GiveInvItems (hero, self, ItMinugget, VALUE_SFB_ARMOR_L);
CreateInvItem (self, SFB_ARMOR_L);
B_GiveInvItems (self, hero, SFB_ARMOR_L, 1);
};
};
func void Grd_8005_Martin_VLK_ARMOR_L()
{
AI_Output (other, self,"Grd_8005_Martin_ARMOR_L_Info_15_01"); //Daj mi te spodnie Kopacza.
if (Npc_HasItems (hero,ItMiNugget) < VALUE_VLK_ARMOR_L)
{
AI_Output (self, other,"Grd_8005_Martin_ARMOR_L_Info_12_02"); //Przykro mi, ale masz za mało rudy!
}
else
{
AI_Output (self, other,"Grd_8005_Martin_ARMOR_L_Info_12_03"); //Świetny wybór!
AI_Output (self, other,"Grd_8005_Martin_ARMOR_L_Info_12_04"); //Gdy będziesz czegoś jeszcze potrzebował, zajrzyj do mnie.
B_GiveInvItems (hero, self, ItMinugget, VALUE_VLK_ARMOR_L);
CreateInvItem (self, VLK_ARMOR_L);
B_GiveInvItems (self,hero, VLK_ARMOR_L, 1);
};
};
// ************************************************************
// EXIT
// ************************************************************
INSTANCE DIA_Martin_EXIT(C_INFO)
{
npc = Nov_1333_Martin;
nr = 999;
condition = DIA_Martin_EXIT_Condition;
information = DIA_Martin_EXIT_Info;
permanent = 1;
description = DIALOG_ENDE;
};
FUNC INT DIA_Martin_EXIT_Condition()
{
return 1;
};
FUNC VOID DIA_Martin_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// ************************************************************
// Hallo
// ************************************************************
INSTANCE DIA_Martin_Hello(C_INFO)
{
npc = Nov_1333_Martin;
nr = 1;
condition = DIA_Martin_Hello_Condition;
information = DIA_Martin_Hello_Info;
permanent = 0;
description = "Może mógłbym coś dla ciebie zrobić?";
};
FUNC INT DIA_Martin_Hello_Condition()
{
return 1;
};
FUNC VOID DIA_Martin_Hello_Info()
{
AI_Output (other, self,"DIA_Martin_Hello_15_00"); //Może mógłbym coś dla ciebie zrobić?
AI_Output (self, other,"DIA_Martin_Hello_03_01"); //W sumie tak. Wiesz co, masz tu ten towar i zanieś go do Skrzypka. Skrzypek zamówił ten towar około tydzień temu i teraz nie może go odebrać bo stoi na straży. Jak mu sprzedasz, to przynieś mi rudę za ten towar, chyba że nie zapłaci.
AI_Output (self, other,"DIA_Martin_Hello_03_02"); //Co to za towar?
AI_Output (other, self,"DIA_Martin_Hello_15_03"); //Eee... jakieś 10 butelek piwa i wina, i jeszcze ziele, o ile dobrze pamiętam. To jak, zgadasz się?
AI_Output (self, other,"DIA_Martin_Hello_03_04"); //Niech będzie! Daj mi towar a ja się wszystkim zajmę.
};
// ************************************************************
// TRADE
// ************************************************************
INSTANCE DIA_Martin_TRADE(C_INFO)
{
npc = Nov_1333_Martin;
nr = 800;
condition = DIA_Martin_TRADE_Condition;
information = DIA_Martin_TRADE_Info;
permanent = 1;
description = "A po co Skrzypkowi taki towar?";
trade = 1;
};
FUNC INT DIA_Martin_TRADE_Condition()
{
if (Npc_KnowsInfo(hero, DIA_Martin_Hello))
{
return 1;
};
};
FUNC VOID DIA_Martin_TRADE_Info()
{
AI_Output (other, self,"DIA_Martin_TRADE_15_00"); //A po co Skrzypkowi taki towar?
AI_Output (self, other,"DIA_Martin_TRADE_03_01"); //A skąd mam wiedzieć? Bełkotał że na coś mu jest potrzebny.
};
// ************************************************************
// Ich verkaufe für dich
// ************************************************************
INSTANCE DIA_Martin_GimmeKraut(C_INFO)
{
npc = Nov_1333_Martin;
nr = 1;
condition = DIA_Martin_GimmeKraut_Condition;
information = DIA_Martin_GimmeKraut_Info;
permanent = 0;
description = "A ile mam otrzymać rudy w zamian za oddanie tego towaru?";
};
FUNC INT DIA_Martin_GimmeKraut_Condition()
{
if (Npc_KnowsInfo(hero, DIA_Martin_Hello))
{
return 1;
};
};
FUNC VOID DIA_Martin_GimmeKraut_Info()
{
AI_Output (other, self,"DIA_Martin_GimmeKraut_15_00"); //A ile mam otrzymać rudy w zamian za oddanie tego towaru?
AI_Output (self, other,"DIA_Martin_GimmeKraut_03_01"); //Bo ja wiem? Przynieś tyle ile da. Jeżeli nie da, to sam odda w swoim czasie.
Log_CreateTopic (CH1_BottleSkrzypek, LOG_MISSION);
Log_SetTopicStatus (CH1_BottleSkrzypek, LOG_RUNNING);
B_LogEntry (CH1_BottleSkrzypek, "Martin prosił mnie, abym zaniósł towar Skrzypkowi który zamówił tydzień temu. Mam przynieść rudę za ten towar, jeżeli nie zapłaci, to napewno zapłaci za ten towar w swoim czasie.");
};
// ************************************************************
// Skrzypeks
// ************************************************************
INSTANCE DIA_Martin_Problem(C_INFO)
{
npc = Nov_1333_Martin;
nr = 1;
condition = DIA_Martin_Problem_Condition;
information = DIA_Martin_Problem_Info;
permanent = 0;
description = "A co, jeżeli zwieję z twoim towarem?";
};
FUNC INT DIA_Martin_Problem_Condition()
{
if (Npc_KnowsInfo(hero,DIA_BaalKagan_WannaHelp))
{
return 1;
};
};
FUNC VOID DIA_Martin_Problem_Info()
{
AI_Output (other, self,"DIA_Martin_Problem_15_00"); //A co, jeżeli zwieję z twoim towarem?
AI_Output (self, other,"DIA_Martin_Problem_03_01"); //Co? To nawet nie waż się tu pokazywać! Prędzej czy później, i tak bym cię znalazł.
if (Martin_GotDrink == FALSE)
{
B_LogEntry (CH1_BottleSkrzypek, "Jeżeli zwieję z towarem Martina, to Martin i tak prędzej czy później mnie znajdzie.");
}
else
{
B_LogEntry (CH1_BottleSkrzypek, "Hmm.. sam nie wiem, czy zwiać z towarem, czy oddać go Skrzypkowi.");
};
};
// ************************************************************
// Trink noch einen
// ************************************************************
var int Martin_GotDrink;
// ************************************************************
INSTANCE DIA_Martin_Drink(C_INFO)
{
npc = Nov_1333_Martin;
nr = 1;
condition = DIA_Martin_Drink_Condition;
information = DIA_Martin_Drink_Info;
permanent = 1;
description = "A może się czegoś napijesz?";
};
FUNC INT DIA_Martin_Drink_Condition()
{
if ( Npc_KnowsInfo(hero, DIA_Martin_GimmeKraut) && (Martin_GotDrink == FALSE) )
{
return 1;
};
};
FUNC VOID DIA_Martin_Drink_Info()
{
AI_Output (other, self,"DIA_Martin_Drink_15_00"); //A może się czegoś napijesz?
if ( (Npc_HasItems(other,ItFoBooze)>0) || (Npc_HasItems(other,ItFoBeer)>0) || (Npc_HasItems(other,ItFoWine)>0) )
{
AI_Output (self, other,"DIA_Martin_Drink_03_01"); //Wiesz że tak. Zaschło mi w gardle, daj coś do picia.
if (Npc_HasItems(other,ItFoBooze))
{
B_GiveInvItems (other,self,ItFoBooze,1);
if ( C_BodystateContains(self, BS_SIT) )
{
AI_StandUp (self);
AI_TurnToNpc (self, hero);
};
AI_UseItem (self,ItFoBooze);
}
else if (Npc_HasItems(other,ItFoBeer))
{
B_GiveInvItems (other,self,ItFoBeer,1);
if ( C_BodystateContains(self, BS_SIT) )
{
AI_StandUp (self);
AI_TurnToNpc (self, hero);
};
AI_UseItem (self,ItFoBeer);
}
else if (Npc_HasItems(other,ItFoWine))
{
B_GiveInvItems (other,self,ItFoWine,1);
if ( C_BodystateContains(self, BS_SIT) )
{
AI_StandUp (self);
AI_TurnToNpc (self, hero);
};
AI_UseItem (self,ItFoWine);
};
Martin_GotDrink = TRUE;
if Npc_KnowsInfo(hero,DIA_Martin_Problem)
{
B_LogEntry (CH1_BottleSkrzypek, "Napiłem się z Martinem, ponieważ Martin prosił mnie, abym coś postawił ponieważ zaschło mu w gardle.");
}
else
{
B_LogEntry (CH1_BottleSkrzypek, "Hmm.. ciekawe ile dostanę rudy za ten towar..");
};
}
else
{
AI_Output (self, other,"DIA_Martin_NO_Drink_03_00"); //Hmm...
};
};
// ************************************************************
// Übrleg's dir!
// ************************************************************
var int Martin_BottleSkrzypek;
// ************************************************************
INSTANCE DIA_Martin_ThinkAgain(C_INFO)
{
npc = Nov_1333_Martin;
nr = 1;
condition = DIA_Martin_ThinkAgain_Condition;
information = DIA_Martin_ThinkAgain_Info;
permanent = 1;
description = "To w końcu dasz mi ten towar?";
};
FUNC INT DIA_Martin_ThinkAgain_Condition()
{
if ( Npc_KnowsInfo(hero, DIA_Martin_GimmeKraut) && ((Martin_BottleSkrzypek!=LOG_RUNNING)&&(Martin_BottleSkrzypek!=LOG_SUCCESS)) )
{
return 1;
};
};
FUNC VOID DIA_Martin_ThinkAgain_Info()
{
AI_Output (other, self,"DIA_Martin_ThinkAgain_15_00"); //To dasz mi w końcu ten towar?
if ( (Martin_GotDrink == TRUE) && Npc_KnowsInfo(hero,DIA_Martin_Problem) )
{
AI_Output (self, other,"DIA_Martin_ThinkAgain_03_01"); //Tak, ale pamiętaj jeżeli z nim zwiejesz, to powyrywam ci..
AI_Output (other, self,"DIA_Martin_ThinkAgain_15_02"); //Dlaczego nie dokończyłeś zdania?
AI_Output (self, other,"DIA_Martin_ThinkAgain_03_03"); //Zamknij się jełopie!
AI_Output (self, other,"DIA_Martin_ThinkAgain_03_05"); //Coś ty powiedział? JEŁOPIE?
AI_Output (self, other,"DIA_Martin_ThinkAgain_03_06"); //To co żeś słyszał! Masz ten towar i WON mi stąd! Aha, i nie wracaj bez rudy! Bo jak nie przyniesiesz mi rudy, to nawet nie myśl, aby się tu zbliżać!
Martin_BottleSkrzypek = LOG_RUNNING;
B_LogEntry (CH1_BottleSkrzypek, "Dałem Martinowi butelkę ryżówki, po wypiciu jej był pijany. Ale w końcu otrzymałem towar.");
//Itemübergabe
CreateInvItems (self, itfobeer, 10);
B_GiveInvItems (self, other, itfobeer, 10);//Notwendig zur Textausgabe "50 Items übergeben", wird sofort ausgeglichen
Npc_RemoveInvItems (self, itfowine, 10);
Npc_RemoveInvItems (self, itfowine, 10);
Npc_RemoveInvItems (other, itmijoint_1, 10);
CreateInvItems (other, itmijoint_2, 10);
CreateInvItems (other, itmijoint_3, 10);
AI_StopProcessInfos (self);
}
else
{
AI_Output (self, other,"DIA_Martin_REFUSE_ThinkAgain_03_00"); //Oo..! Sporo tego! Jakoś sobie poradzę!
};
};
// ************************************************************
// RUNNING / SUCCESS
// ************************************************************
INSTANCE DIA_Martin_RUNNING(C_INFO)
{
npc = Nov_1333_Martin;
nr = 1;
condition = DIA_Martin_RUNNING_Condition;
information = DIA_Martin_RUNNING_Info;
permanent = 0;
description = "Sprzedałem towar Skrzypkowi!";
};
FUNC INT DIA_Martin_RUNNING_Condition()
{
if (Martin_DealerJob == LOG_RUNNING)
{
return 1;
};
};
FUNC VOID DIA_Martin_RUNNING_Info()
{
AI_Output (other, self,"DIA_Martin_RUNNING_15_00"); //Sprzedałem towar Skrzypkowi!
AI_Output (self, other,"DIA_Martin_RUNNING_03_01"); //A co z rudą?
if (Npc_HasItems(other,itminugget)>=200)
{
AI_Output (other, self,"DIA_Martin_RUNNING_15_02"); //Mam tu 400 bryłek rudy. Myślę że wystarczy?
AI_Output (self, other,"DIA_Martin_RUNNING_03_03"); //Tak, wystarczy. Jednak na coś się nam przydasz. Masz tu 100 bryłek rudy, na coś ci się przydadzą.
B_GiveInvItems(self,other,itminugget,100);
AI_Output (other, self,"DIA_Martin_RUNNING_03_04"); //Wielkie dzięki!
B_GiveInvItems (hero, self, ItMiNugget, 400);
Martin_BottleSkrzypek = LOG_SUCCESS;
Log_SetTopicStatus (CH1_BottleSkrzypek, LOG_SUCCESS);
B_LogEntry (CH1_BottleSkrzypek, "Martin był ucieszony, gdy dałem mu 400 bryłek rudy, a w zamian otrzymałem 100 bryłek rudy.");
B_GiveXP (XP_MartinPayShare);
}
else
{
AI_Output (other, self,"DIA_Martin_RUNNING_NoOre_15_05"); //Niestety, nie mam ich przy sobie.
AI_Output (self, other,"DIA_Martin_RUNNING_NoOre_03_06"); //Co?! A co mnie to obchodzi?! Masz mi je natychmiast przynieść!
AI_StopProcessInfos (self);
};
};
[/codebox]
A może w tych skryptach będą jakieś błędy w liniach 27, albo innych?