Dialog 16935 95

O temacie

Autor

Zaczęty 15.01.2010 roku

Wyświetleń 16935

Odpowiedzi 95

WonderiuS
  • Gość
Nie, nie wywaliło. NO TO KURDĘ jak ma wyglądać ten dialog?! Żeby skrzypek mnie zatrzymał i żądał rudy za przejście tak jak Wykidajło w Nowym Obozie.
 

WonderiuS
  • Gość
Odświeżam. Dlaczego Skrzypek nie zatrzymuje mnie jak do niego podejdę? I dlaczego jak już mu zapłacę to nie pojawia się opcja dialogowa o daniu mu tych przedmiotów i o tym że nie chce wpuszczać Najemników? Dialog obecnie wygląda tak, mógłby go ktoś poprawić tak jak opisałem wyżej lub wymienić te błędy które opisałem wyżej?

// ************************************************************
// 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"); //Jestem kopaczem! Chcę wejść!

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"); //Taak.. A dlaczego miałbym wpuszczać szczura ze Starego Obozu? No dobra! Właź, ale jeżeli dotkniesz czegoś swoimi łapskami, to obetnę ci paluszki, zrozumiano?!
self.aivar[AIV_PASSGATE] = TRUE;

AI_StopProcessInfos (self);
}
else
{
AI_Output (self, other,"DIA_Grd_8001_Pallissade_NOPALLISSADE_06_00"); //Jakim kopaczem? Nawet nie masz na sobie spodni tych szczurów. Nawet nie ma mowy, żebyś tu wszedł! Załatw sobie jakieś gacie to 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"); //Ile? Pewno nie masz przy sobie a ni 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"); //Co? Gdzie? No gdzie masz te 10 bryłek rudy?
};

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"); //Co ty? Żarty sobie ze mnie stroisz? Wynocha!
};

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"); //Spadaj! Nie będę tracił na ciebie czasu! Gdzie masz te 100 bryłek rudy? No właśnie. Jak ich nie zdobędziesz, to nie waż się tutaj pokazywać!
};

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"); //Co ty mi tu się pytasz? MOŻESZ mi wyjaśnić, co ci do tego? Wchodzisz czy nie?! Bo zawracasz mi głowę!
};

// ************************************************************
// 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 = 0;
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"); //Stój! Gdzie leziesz? NIE widzisz że tu nie wolno? WON stąd!
AI_Output (other, self,"DIA_Grd_8001_GRDD_15_01"); //No co? Łyso ci? Zaraz ci pokażę!
AI_Output (self, other,"DIA_Grd_8001_GRDD_06_02"); //Nie no! Nie wytrzymam! WŁAŹ! Będziemy mieli się przynajmniej z kogo pośmiać! Ha,ha!
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 = 0;
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"); //Nie wpuszczamy tutaj za bardzo szkodników albo najemników!
AI_Output (self, other,"DIA_Grd_8001_ScSlds_06_01"); //Chyba, że chcą z nami pohandlować.
};

// ************************************************************
// 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 = "Hmm.. moźe chcesz parę butelek piwa lub wina i może ziela?";
};  

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"); //Hmm.. może chcesz parę butelek piwa lub wina i może ziela?

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_3))
{ B_GiveInvItems (other, self,ItMiJoint_3, 10); };

AI_Output (self, other,"DIA_Grd_8001_BeersBottle_06_01"); //Oo..! Naprawdę wielkie dzięki! Przyda mi się! Jesteś tutaj na razie mile widziany.
self.aivar[AIV_PASSGATE] = TRUE;
Grd_8001_BeersBottle = TRUE;
}
else
{
AI_Output (other, self,"DIA_Grd_8001_BeersBottle_KEIN_15_00"); //Czekaj, czekaj.. No cóż, na razie nic nie mam.
AI_Output (self, other,"DIA_Grd_8001_BeersBottle_KEIN_06_00"); //Mówi się trudno. Następnym razem coś przynieś!
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_BRAME = "OC_GUARD_PALISSADE";
// **********************************************

instance Info_Org_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"); //Ej, ej! A dokąd to się wybieramy?
AI_Output (hero, self,"Info_Grd_8001_Pall_Info_15_01"); //No chcę wejść do obozu!
AI_Output (self, hero,"Info_Grd_8001_Pall_Info_06_02"); //I co? Myślisz że cię wpuszczę? Nie tak prędko!

hero.aivar[AIV_LASTDISTTOWP] = Npc_GetDistToWP(hero,Grd_8001_Brame);
hero.aivar[AIV_GUARDPASSAGE_STATUS] = AIV_GPS_FIRSTWARN;
};

//------------------------------------------------------------------------
// 2. Warnung
//------------------------------------------------------------------------
instance Info_Grd_8001_WarnBrame (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,Org_876_CHECKPOINT) < (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_06_00"); //Ty głuchy jesteś czy co?! A ni kroku dalej!

hero.aivar[AIV_LASTDISTTOWP] = Npc_GetDistToWP (hero,Grd_8001_Brame);
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, "");
};
 

maciejG

maciejG

Użytkownicy
posty450
Propsy1
  • Użytkownicy

maciejG

Dialog
#42 2010-01-19, 21:47(Ostatnia zmiana: 2010-01-20, 12:54)
W dialogu, w którym ma zaczepiac ustaw po permanent = 1:
important = 1
Wtedy on cię zaczepi. Zrób sobie zmienną var int INCAMP = 0 W condition żądania rudy ustaw:
if(INCAMP == 0)
{
  return true;
};
I tak w każdym dialogu związanym z wpuszczaniem. Gdy już dasz rudę temu kolesiowi, po dialogu wpisz:
INCAMP = 1;
 
Spoiler

WonderiuS
  • Gość
Tyle że w dialogu nie ma inportant a pernament, a tą zmienną to gdzie wkleić po dialogu? A z tym żądania rudy to on żąda xD.
 

eto

eto

Użytkownicy
-Banany pod pokładem? -SĄĄĄĄĄĄ
posty1741
Propsy1793
ProfesjaLvl designer
  • Użytkownicy
  • -Banany pod pokładem? -SĄĄĄĄĄĄ
Cytuj
Tyle że w dialogu nie ma inportant a pernament
No to dopisz!

Cytuj
a tą zmienną to gdzie wkleić po dialogu
Najpierw zainicjuj przed dialogiem, a później tylko w warunkach.
 
Niespełniony Level Designer z ambicjami, zmęczeniem i brakiem czasu...

WonderiuS
  • Gość
Ok, ehh.. zrobiłem jeszcze dialog handlu z NPC no i podczas reparsowania skryptów w Gothic Starterze MOD, pokazuje mi się błąd w linii 19. A w lini 19 jest }; no i nie wiem o co chodzi.

func void B_Give_MartinWeaponChapters1 ()
{
var C_NPC npc;
npc = Hlp_GetNpc(Grd_8005_Martin);

//-------- Nahkampfwaffen --------
CreateInvItems (self, ItKeLockpick,15);
CreateInvItem (npc,ItMw_1H_Sword_01);
CreateInvItem (npc,ItMw_1H_Sword_02);
CreateInvItem (npc,ItMw_1H_Sword_03);
CreateInvItem (npc,ItMw_1H_Sword_Short_01);
CreateInvItem (npc,ItMw_1H_Sword_Short_05);
CreateInvItem (npc,ItRw_Crossbow_01);
CreateInvItems (npc,ItMiNugget,400);
CreateInvItems (npc, ItAmBolt,20
//-------- Fernkampfwaffen --------
//-------- Munition --------

};

func void B_Give_MartinWepon2Chapters2 ()
{
var C_NPC npc;
npc = Hlp_GetNpc(Grd_8005_Martin);

//-------- Nahkampfwaffen --------
CreateInvItems (self, ItKeLockpick,40);
CreateInvItem (npc,ItMw_1H_Sword_04);
CreateInvItem (npc,ItRw_bow_long_04);
CreateInvItem (npc,ItAmArrow,50);
CreateInvItem (npc,ItAmBolt,50);
CreateInvItem (npc,ItFo_Potion_Strength_03);
CreateInvItem (npc,ItFo_Potion_Health_01,3);
CreateInvItems (npc,ItMiNugget,800);
//-------- Fernkampfwaffen --------

 
//-------- Munition --------
 
};

func void B_Give_MartinWeaponChapters3 ()
{
var C_NPC npc;
npc = Hlp_GetNpc(Grd_8005_Martin);

//-------- Nahkampfwaffen --------
CreateInvItems (self, ItKeLockpick,70);
CreateInvItem (npc, ItMw_1H_Sword_Long_03);
CreateInvItem (npc, ItMw_1H_Sword_Long_02);
CreateInvItem (npc, ItFo_Potion_Health_02,10);
CreateInvItem (npc, ItMw_1H_Sword_Long_02);
CreateInvItem (npc, ItMw_1H_Sword_Long_04);
CreateInvItems (npc, ItMw_1H_Sword_Broad_01,4);
CreateInvItems (npc,ItMiNugget,1200);
//-------- Fernkampfwaffen --------
//-------- Munition --------
 
};

func void B_Give_MartinWeaponChapters4 ()
{
var C_NPC npc;
npc = Hlp_GetNpc(Grd_8005_Martin);

//-------- Nahkampfwaffen --------
CreateInvItems (self, ItKeLockpick,100);
CreateInvItem (npc, ItMw_1H_Sword_Long_04);
CreateInvItem (npc, ItMw_1H_Sword_Long_02);
CreateInvItem (npc, ItFo_Potion_Health_03,3);
CreateInvItem (npc, ItMw_1h_Mace_War_04);
CreateInvItem (npc, ItMw_1H_Sword_Long_04);
CreateInvItems (npc, ItMw_1H_Sword_Broad_01);
CreateInvItems (npc,ItMiNugget,1600);
//-------- Fernkampfwaffen --------
//-------- Munition --------
 
};

func void B_Give_MartinWeaponChapters5 ()
{
var C_NPC npc;
npc = Hlp_GetNpc(Grd_8005_Martin);

//-------- Nahkampfwaffen --------
CreateInvItems (self, ItKeLockpick,130);
CreateInvItem (npc, ItMw_1H_Sword_Long_04);
CreateInvItem (npc, ItMw_1h_sword_broad_02);
CreateInvItem (npc, ItFo_Potion_Health_03,10);
CreateInvItem (npc, ItMw_2h_Sword_Light_03);
CreateInvItem (npc, ItMw_2h_Axe_Heavy_04);
CreateInvItems (npc, ItMw_1H_Sword_Broad_01);
CreateInvItems (npc,ItMiNugget,2000);
//-------- Fernkampfwaffen --------
//-------- Munition --------
 
};
 

maciejG

maciejG

Użytkownicy
posty450
Propsy1
  • Użytkownicy
CreateInvItems (npc, ItAmBolt,20Nie masz nawiasu.
CreateInvItems (npc, ItAmBolt,20);
 
Spoiler

WonderiuS
  • Gość
Ok, działa ale znowu u Skrzypka coś nie tak. Przedtem wszystko działało, ale teraz nie. A nic przy nim nie ruszałem.

Error-Message

U:PAR: Content\Story\Missions\DIA_Grd_8001_Skrzypek.d: Unkown identifier: Grd_8001_WarnBrame

??

// ************************************************************
// 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 = 0;
important   = 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"); //Jestem kopaczem! Chcę wejść!

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"); //Taak.. A dlaczego miałbym wpuszczać szczura ze Starego Obozu? No dobra! Właź, ale jeżeli dotkniesz czegoś swoimi łapskami, to obetnę ci paluszki, zrozumiano?!
self.aivar[AIV_PASSGATE] = TRUE;

AI_StopProcessInfos (self);
}
else
{
AI_Output (self, other,"DIA_Grd_8001_Pallissade_NOPALLISSADE_06_00"); //Jakim kopaczem? Nawet nie masz na sobie spodni tych szczurów. Nawet nie ma mowy, żebyś tu wszedł! Załatw sobie jakieś gacie to 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"); //Ile? Pewno nie masz przy sobie a ni 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"); //Co? Gdzie? No gdzie masz te 10 bryłek rudy?
};

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"); //Co ty? Żarty sobie ze mnie stroisz? Wynocha!
};

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"); //Spadaj! Nie będę tracił na ciebie czasu! Gdzie masz te 100 bryłek rudy? No właśnie. Jak ich nie zdobędziesz, to nie waż się tutaj pokazywać!
};

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"); //Co ty mi tu się pytasz? MOŻESZ mi wyjaśnić, co ci do tego? Wchodzisz czy nie?! Bo zawracasz mi głowę!
};

// ************************************************************
// 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"); //Stój! Gdzie leziesz? NIE widzisz że tu nie wolno? WON stąd!
AI_Output (other, self,"DIA_Grd_8001_GRDD_15_01"); //No co? Łyso ci? Zaraz ci pokażę!
AI_Output (self, other,"DIA_Grd_8001_GRDD_06_02"); //Nie no! Nie wytrzymam! WŁAŹ! Będziemy mieli się przynajmniej z kogo pośmiać! Ha,ha!
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"); //Nie wpuszczamy tutaj za bardzo szkodników albo najemników!
AI_Output (self, other,"DIA_Grd_8001_ScSlds_06_01"); //Chyba, że chcą z nami pohandlować.
};

// ************************************************************
// 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 = "Hmm.. moźe chcesz parę butelek piwa lub wina i może ziela?";
};  

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"); //Hmm.. może chcesz parę butelek piwa lub wina i może ziela?

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_3))
{ B_GiveInvItems (other, self,ItMiJoint_3, 10); };

AI_Output (self, other,"DIA_Grd_8001_BeersBottle_06_01"); //Oo..! Naprawdę wielkie dzięki! Przyda mi się! Jesteś tutaj na razie mile widziany.
self.aivar[AIV_PASSGATE] = TRUE;
Grd_8001_BeersBottle = TRUE;
}
else
{
AI_Output (other, self,"DIA_Grd_8001_BeersBottle_KEIN_15_00"); //Czekaj, czekaj.. No cóż, na razie nic nie mam.
AI_Output (self, other,"DIA_Grd_8001_BeersBottle_KEIN_06_00"); //Mówi się trudno. Następnym razem coś przynieś!
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_BRAME = "OC_GUARD_PALISSADE";
// **********************************************

instance Info_Org_8001_Pall (C_INFO)
{
npc = Grd_8001_Skrzypek;
nr = 2;
condition = Info_Grd_8001_Pall_Condition;
information = Info_Grd_8001_Pall_Info;
permanent = 0;
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"); //Ej, ej! A dokąd to się wybieramy?
AI_Output (hero, self,"Info_Grd_8001_Pall_Info_15_01"); //No chcę wejść do obozu!
AI_Output (self, hero,"Info_Grd_8001_Pall_Info_06_02"); //I co? Myślisz że cię wpuszczę? Nie tak prędko!

hero.aivar[AIV_LASTDISTTOWP] = Npc_GetDistToWP(hero,Grd_8001_Brame);
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 = 0;
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"); //Ty głuchy jesteś czy co?! A ni kroku dalej!

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 = 0;
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, "");
};
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Dodaj Info_ przed Grd_8001_WarnBrame

WonderiuS
  • Gość
Jak już podajesz co mam dodać, to powiedz chociaż gdzie jeszcze to dodać.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Dialog
#50 2010-01-20, 19:54(Ostatnia zmiana: 2010-01-20, 19:55)
Tam gdzie wywala ci błąd. A nie wiem gdzie, bo nie podałeś, w którym wierszu masz błąd.  :lol2:
Najłatwiej to chyba wyszukać z pomocą CTRL+F.  :roll:

WonderiuS
  • Gość

WonderiuS
Gość

Dialog
#51 2010-01-20, 20:14(Ostatnia zmiana: 2010-01-21, 18:25)
No właśnie nie podaje w którym wierszu tylko od razu błąd.

I jeszcze jeden problem, zrobiłem taki skrypt handlu z NPC. Wzorowałem się na skrypcie handlu Fiska no i zrobiłem takie coś, skrypt handlu znajduje się w Content\Story\B no i po zreparsowaniu skryptów ten NPC nie posiada tego co tam napisałem tylko swój ekwipunek. Więc co robię źle?

[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"); //Jestem kopaczem! Chcę wejść!
   
   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"); //Taak.. A dlaczego miałbym wpuszczać szczura ze Starego Obozu? No dobra! Właź, ale jeżeli dotkniesz czegoś swoimi łapskami, to obetnę ci paluszki, zrozumiano?!
      self.aivar[AIV_PASSGATE] = TRUE;   
      
      AI_StopProcessInfos   (self);
   }
   else
   {
      AI_Output (self, other,"DIA_Grd_8001_Pallissade_NOPALLISSADE_06_00"); //Jakim kopaczem? Nawet nie masz na sobie spodni tych szczurów. Nawet nie ma mowy, żebyś tu wszedł! Załatw sobie jakieś gacie to 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"); //Ile? Pewno nie masz przy sobie a ni 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"); //Co? Gdzie? No gdzie masz te 10 bryłek rudy?
   };
   
   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"); //Co ty? Żarty sobie ze mnie stroisz? Wynocha!
   };
   
   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"); //Spadaj! Nie będę tracił na ciebie czasu! Gdzie masz te 100 bryłek rudy? No właśnie. Jak ich nie zdobędziesz, to nie waż się tutaj pokazywać!
   };

   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"); //Co ty mi tu się pytasz? MOŻESZ mi wyjaśnić, co ci do tego? Wchodzisz czy nie?! Bo zawracasz mi głowę!
};

// ************************************************************
//                   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"); //Stój! Gdzie leziesz? NIE widzisz że tu nie wolno? WON stąd!
   AI_Output (other, self,"DIA_Grd_8001_GRDD_15_01"); //No co? Łyso ci? Zaraz ci pokażę!
   AI_Output (self, other,"DIA_Grd_8001_GRDD_06_02"); //Nie no! Nie wytrzymam! WŁAŹ! Będziemy mieli się przynajmniej z kogo pośmiać! Ha,ha!
   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"); //Nie wpuszczamy tutaj za bardzo szkodników albo najemników!
   AI_Output (self, other,"DIA_Grd_8001_ScSlds_06_01"); //Chyba, że chcą z nami pohandlować.
};

// ************************************************************
//                   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))
      {   B_GiveInvItems   (other, self,ItFoBeer, 10); }
      else 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,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ą? Martin żąda 400 bryłek rudy za ten towar! (śmiech)
      AI_Output (self, other,"DIA_Grd_8001_BeersBottle_KEIN_06_00"); //Co, co? Aż 400 bryłek rudy? Niech stracę! Masz i zjeżdżaj stąd!
      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_Org_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"); //Ej, ej! A dokąd to się wybieramy?
   AI_Output (hero, self,"Info_Grd_8001_Pall_Info_15_01"); //No chcę wejść do obozu!
   AI_Output (self, hero,"Info_Grd_8001_Pall_Info_06_02"); //I co? Myślisz że cię wpuszczę? Nie tak prędko!

   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"); //Ty głuchy jesteś czy co?! A ni kroku dalej!

   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]
Dwie sprawy:
Po pierwsze, nadal dublujesz posty i odświeżasz zaraz po napisaniu swojego poprzedniego posta i to mimo ostrzeżeń w tej sprawie. Spam skasowałem, posty połączyłem.
Po drugie, kiedy kopiujesz dłuuugie fragmenty kodu, używaj tagów codebox, ale to już raczej kwestia estetyki.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Dialog
#52 2010-01-21, 21:01(Ostatnia zmiana: 2010-01-21, 21:08)
Cytuj
No właśnie nie podaje w którym wierszu tylko od razu błąd.
Jeśli chodzi o ten błąd to otwórz skrypt np. notatnikiem i naciśnij ctrl+F i wpisz Grd_8001_WarnBrame. Jak ci znajdzie, to zrób tak, jak napisałem wcześniej. Może być kilka wystąpień tego Grd_8001_WarnBrame.
Cytuj
I jeszcze jeden problem, zrobiłem taki skrypt handlu z NPC. Wzorowałem się na skrypcie handlu Fiska no i zrobiłem takie coś, skrypt handlu znajduje się w Content\Story\B no i po zreparsowaniu skryptów ten NPC nie posiada tego co tam napisałem tylko swój ekwipunek. Więc co robię źle?
Stworzyłeś dialog handlu na podstawie Fiska?
Cytuj
Błąd: ELSE
Linia: 274
Jeśli chodzi oto, to przed else nie może być średnika. Po drugie po co dwa razy to samo? Czyli zamiast tego
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,ItFoBeer))
{ B_GiveInvItems (other, self,ItFoBeer, 10); }
else if (Npc_HasItems(other,ItFoWine))
{ B_GiveInvItems (other,self, ItFoWine, 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;
}
wstaw to:
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;
}
Tylko się nie pomyl...

EDYCJA
Może cię wywalić z gry, jeśli będziesz miał 1 przedmiot..., bo każesz dać 10 mimo, że możesz mieć jeden...
No i rób wcięcia w skrypcie. Lepiej się potem czyta.

WonderiuS
  • Gość

WonderiuS
Gość

Dialog
#53 2010-01-22, 13:00(Ostatnia zmiana: 2010-01-22, 13:08)
Tak wzorowałem się na dialogu Fiska tym w MISSIONS, tylko wszystko pozmieniałem i działa. I stworzyłem jeszcze w folderze B dokument też na podstawie tego dialogu handlu na podstawie Fiska, tego co znajdował się w B. I po zreparsowaniu skryptów, NPC handlował tylko swoim ekwipunkiem.

I znowu błąd którego sam nie potrafię rozwiązać w linii 298, chyba że brakuje przecinka.

[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_Org_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]
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
I znowu błąd którego sam nie potrafię rozwiązać w linii 298, chyba że brakuje przecinka.
Brak ; w wierszu 297 po B_GiveInvItems(self,other,itminugget,400)
Cytuj
I po zreparsowaniu skryptów, NPC handlował tylko swoim ekwipunkiem.
A jesteś pewien, że dałeś mu inne rzeczy? A jak go pobijesz, to co ma w ekwipunku?

WonderiuS
  • Gość

WonderiuS
Gość

Dialog
#55 2010-01-22, 14:30(Ostatnia zmiana: 2010-01-22, 14:50)
Tak dałem mu inne rzeczy. Masz tu nawet skrypt handlu który znajduje się w folderze B, no jak handluje swoim ekwipunkiem to normalne że jak go pobiję to będzie miał swój ekwipunek.

[codebox]// **************************************************
var int Bob_Nerve;
const int NerveSec = 30;
var int Bob_NerveRealized;
// **************************************************

// **************************************************
//                    EXIT
// **************************************************

INSTANCE DIA_Bob_Exit (C_INFO)
{
   npc         = Grd_8003_Bob;
   nr          = 999;
   condition   = DIA_Bob_Exit_Condition;
   information   = DIA_Bob_Exit_Info;
   permanent   = 1;
   description = DIALOG_ENDE;
};                      

FUNC INT DIA_Bob_Exit_Condition()
{
   //if (Npc_KnowsInfo(hero, DIA_Bob_FirstEXIT))
   //{
      return 1;
   //};
};

FUNC VOID DIA_Bob_Exit_Info()
{
   AI_StopProcessInfos   ( self );
};

// **************************************************
//                   First + EXIT
// **************************************************

INSTANCE DIA_Bob_FirstEXIT (C_INFO)
{
   npc         = Grd_8003_Bob;
   nr          = 1;
   condition   = DIA_Bob_FirstEXIT_Condition;
   information   = DIA_Bob_FirstEXIT_Info;
   permanent   = 0;
   important    = 1;
};                      

FUNC INT DIA_Bob_FirstEXIT_Condition()
{
   if (Npc_GetDistToNpc(self,hero) < ZivilAnquatschDist)
   {
      return 1;
   };
};

FUNC VOID DIA_Bob_FirstEXIT_Info()
{
   AI_Output (self, other,"DIA_Bob_FirstEXIT_07_00"); //Hej, ty! Zajmuję się myślistwem, gdy byś potrzebował towarzysza, przyjdź do mnie.
   AI_Output (self, other,"DIA_Bob_FirstEXIT_07_01"); //Wtedy pomogę ci na polowaniu, gdybyś potrzebował pomocy.
   Info_ClearChoices(DIA_Bob_FirstEXIT);
   Info_AddChoice    (DIA_Bob_FirstEXIT, "Nie, dzięki!"         ,DIA_Bob_FirstEXIT_Verpiss);
   Info_AddChoice    (DIA_Bob_FirstEXIT, "W takim razie chodźmy!"   ,DIA_Bob_FirstEXIT_Komm);
};

func void DIA_Bob_FirstEXIT_Verpiss()
{
   AI_Output (other, self,"DIA_Bob_FirstEXIT_Verpiss_15_00"); //Nie, dzięki!
   AI_Output (self, other,"DIA_Bob_FirstEXIT_Verpiss_07_01"); //No cóż, może innym razem.
   Info_ClearChoices(DIA_Bob_FirstEXIT);
   AI_StopProcessInfos   ( self );
};

func void DIA_Bob_FirstEXIT_Komm()
{
   AI_Output (other, self,"DIA_Bob_FirstEXIT_Komm_15_00"); //W takim razie chodźmy!
   AI_Output (self, other,"DIA_Bob_FirstEXIT_Komm_07_01"); //Świetnie! Prowadź, pójdę za tobą!
   Bull_Zutaten = LOG_RUNNING;
   
   Log_CreateTopic(CH1_TradeBob, LOG_NOTE);
   Log_SetTopicStatus(CH1_TradeBob, LOG_NOTE);
   B_LogEntry( CH1_TradeBob, "Bob, jeden ze strażników w obozie Gwardii Królewskiej, zajmuje się myślistwem, gdy tylko będę potrzebował pomocy, zgłoszę się do niego.");
   
        Info_ClearChoices(DIA_Bob_FirstEXIT);
   AI_StopProcessInfos   ( self );
   Npc_ExchangeRoutine (self,"FOLLOW");
};[/codebox]
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Nie widzę jakoś błędu w skrypcie. A nie ma podanej treści błędu?

WonderiuS
  • Gość

WonderiuS
Gość

Dialog
#57 2010-01-22, 15:33(Ostatnia zmiana: 2010-01-22, 15:42)
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?
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Ok, już wiem, co może być źle. To:
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);
powinno być tak:
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnStrength_5,5*LPCOST_ATTRIBUTE_STRENGTH,0) ,GRD_8017_Franck_Teach_STR_5);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUTE_STRENGTH,0) ,GRD_8017_Franck_Teach_STR_1);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnDexterity_5,5*LPCOST_ATTRIBUTE_DEXTERITY,0) ,GRD_8017_Franck_Teach_DEX_5);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBUTE_DEXTERITY,0) ,GRD_8017_Franck_Teach_DEX_1);
Po prostu źle podzieliłeś argumenty funkcji. Nie ucina się w połowie słowa.

WonderiuS
  • Gość
Info_ClearChoices (GRD_8017_Franck_Teach);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnStrength_5,5*LPCOST_ATTRIBUT
E_STRENGTH,0) ,GRD_8017_Franck_Teach_STR_5);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUTE_
STRENGTH,0) ,GRD_8017_Franck_Teach_STR_1);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnDexterity_5,5*LPCOST_ATTRIBU
TE_DEXTERITY,0) ,GRD_8017_Franck_Teach_DEX_5);
Info_AddChoice (GRD_8017_Franck_Teach,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBUTE
_DEXTERITY,0) ,GRD_8017_Franck_Teach_DEX_1);
};


Tak mam ten skrypt.

I jeszcze jedno, jak np. edytuję startscreen w GIMPIE, to zapisać pod rozszerzeniem .tga? Żeby potem pojawiło się w grze?
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry