Skoro jest odzew to pociągnę temat. Stworzyłem sobie postać gladiatora Ulgora z Gothic der Comic. Chciałem mu wstawić dialog na podstawie tego z Draxem i przyniesieniem piwa. Jednak spacer wysypuje mi się na funkcji if
// ************************************************************
// EXIT
// ************************************************************
INSTANCE DIA_Ulgor_EXIT(C_INFO)
{
npc = GRD_886_Ulgor;
nr = 999;
condition = DIA_Ulgor_EXIT_Condition;
information = DIA_Ulgor_EXIT_Info;
permanent = 1;
description = DIALOG_ENDE;
};
FUNC INT DIA_Ulgor_EXIT_Condition()
{
return 1;
};
FUNC VOID DIA_Ulgor_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// ************************************************************
// Powitanie?
// ************************************************************
INSTANCE DIA_Ulgor_Hello (C_INFO)
{
npc = GRD_886_Ulgor;
nr = 1;
condition = DIA_Ulgor_Hello_Condition;
information = DIA_Ulgor_Hello_Info;
permanent = 0;
description = "Witaj. Kim jesteś?";
};
FUNC INT DIA_Ulgor_Hello_Condition()
{
return 1;
};
FUNC VOID DIA_Ulgor_Hello_Info()
{
AI_Output (other, self,"DIA_Ulgor_Hello_15_00"); //Witaj. Kim jesteś?
AI_Output (self, other,"DIA_Ulgor_Hello_13_01"); //Mam na imię Ulgor. Jestem gladiatorem, walczę na arenie.
};
// ************************************************************
// What
// ************************************************************
INSTANCE DIA_Ulgor_What (C_INFO)
{
npc = GRD_886_Ulgor;
nr = 2;
condition = DIA_Ulgor_What_Condition;
information = DIA_Ulgor_What_Info;
permanent = 1;
description = "Mogę z Tobą walczyć?";
};
FUNC INT DIA_Ulgor_What_Condition()
{
if (Npc_KnowsInfo(hero, DIA_Ulgor_Hello))
{
return 1;
};
};
FUNC VOID DIA_Ulgor_What_Info()
{
AI_Output (other, self,"DIA_Ulgor_What_15_00"); //Mogę z Tobą walczyć na arenie?
AI_Output (self, other,"DIA_Ulgor_What_13_01"); //Oczywiście, ale nie w tej chwili...
AI_Output (self, other,"DIA_Ulgor_What_13_02"); //Jestem ranny po ostatniej walce i potrzebuję paru dni przerwy.
};
// ************************************************************
// PRZESZŁOŚĆ
// ************************************************************
INSTANCE DIA_Ulgor_PRZE (C_INFO)
{
npc = GRD_886_Ulgor;
nr = 3;
condition = DIA_Ulgor_PRZE_Condition;
information = DIA_Ulgor_PRZE_Info;
permanent = 0;
description = "Jak się tutaj znalazłeś?";
};
FUNC INT DIA_Ulgor_PRZE_Condition()
{
if (Npc_KnowsInfo (hero,DIA_Ulgor_Hello))
{
return 1;
};
};
FUNC VOID DIA_Ulgor_PRZE_Info()
{
AI_Output (other, self,"DIA_Ulgor_PRZE_15_00"); //Jak się tutaj znalzłeś?
AI_Output (self, other,"DIA_Ulgor_PRZE_13_01"); //Jesteś tu nowy i ledwo się znamy, nie mam powodu żeby Ci się zwierzać.
};
//*********************************************************
// Zadanie z piwem
//*********************************************************
var int Ulgor_piwosz;
INSTANCE DIA_Ulgor_PIWO (C_INFO)
{
npc = GRD_886_Ulgor;
nr = 4;
condition = DIA_Ulgor_PIWO_Condition;
information = DIA_Ulgor_PIWO_Info;
permanent = 1;
description = "Poczęstuj Ulgora piwem";
};
FUNC int DIA_Ulgor_PIWO_Condition()
{
if ( Npc_KnowsInfo(hero,DIA_Ulgor_Hello) && (Ulgor_piwosz==FALSE) )
{
return 1;
};
};
FUNC VOID DIA_Ulgor_PIWO_Info()
{
if (Npc_HasItems(other,itfobeer)>0)
{
B_GiveInvItems (other, self, itfobeer,1);
AI_Output (other, self,"DIA_Ulgor_PIWO_15_00"); //Proszę, łyknij sobie. Przemyciłem jedno gdy mnie tu zrzucano, prosto z Khorinis.
if ( C_BodystateContains(self, BS_SIT) )
{
AI_StandUp (self);
AI_TurnToNpc (self, hero);
};
AI_UseItem (self, ItFobeer);
AI_Output (self, other,"DIA_Ulgor_PIWO_13_01"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_02"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_03"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_04"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_05"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_06"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_07"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_08"); //tekst
Ulgor_piwosz==TRUE;
};
else if(Npc_HasItems(other,itfobooze)>0)
{
B_GiveInvItems (other, self, itfobooze,1);
AI_Output (other, self,"DIA_Ulgor_PIWO_15_00"); //Proszę, łyknij sobie.
if ( C_BodystateContains(self, BS_SIT) )
{
AI_StandUp (self);
AI_TurnToNpc (self, hero);
};
AI_UseItem (self, ItFobooze);
AI_Output (self, other,"DIA_Ulgor_PIWO_13_01"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_02"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_03"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_04"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_05"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_06"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_07"); //tekst
AI_Output (self, other,"DIA_Ulgor_PIWO_13_08"); //tekst
Ulgor_piwosz==TRUE;
};
else
{
AI_Output (other, self,"DIA_Ulgor_PIWO_15_00"); //Nie mam przy sobie piwa.
AI_Output (self, other,"DIA_Ulgor_PIWO_13_01"); //tekst
};
};
Jak powinna wyglądać składnia if jeśli mam, w tym przypadku trzy warunki ale tylko dwa zawierają jakieś wyrażenie warunkowe, a to osatnie wykona się gdy poprzednie dwa nie zostaną spełnione?
Spróbowałem jedynie z dwoma warunkami z if i potem else ale też wyskoczył błąd to użyłem dwa razy if, co prawda funkcja wykonała się dwa razy ale chociaż spacer przyjął ;) Ale wtedy w samym dialogu od razu wyswietliła się opcja z przekazaniem piwa jakby ignorując
FUNC int DIA_Ulgor_PIWO_Condition()
{
if ( Npc_KnowsInfo(hero,DIA_Ulgor_Hello) && (Ulgor_piwosz==FALSE) )
{
return 1;
};
};