problem z Choice i else if 2797 5

O temacie

Autor Revo16pl

Zaczęty 10.03.2016 roku

Wyświetleń 2797

Odpowiedzi 5

Revo16pl

Revo16pl

RaveN Studio
posty101
Propsy100
ProfesjaGrafik 3D
  • RaveN Studio
Witam, prawdopodobnie jest to spowodowane jakimś podstawowym błędem albo moją nie znajomością języka skryptów Gothica
Przy próbie reparsowania skryptów wywala błąd:
http://scr.hu/829j/dgnkt

przedtem przed kilkoma zmianami (przy ustawieniu choice na końcu pojawiał się taki)
http://scr.hu/829j/25d3w

Ogólnie chciałem stworzyć dialog w którym oddanie przedmiotu zależało by od tego który z nich dwóch mamy. Z tym nie ma problemu to zwykłe Else IF
problem się pojawia wtedy gdy chciałem dodać do tego Choice (również pod else if) które pojawiałoby się gdybyśmy mieli oba przedmioty na raz (w przypadku posiadania jednego z nich [któregokolwiek] od razu byśmy go wręczali postaci)

Jeśli komuś się nudzi to mógłby spróbować sprawdzić to i wytypować błędy i powiedzieć co robię źle i czy coś takiego w ogóle ma możliwość działania

wszystko jest robione w Gothicu 2 NK

tutaj skrypt :
Spoiler
//========================================
//-----------------> HELLO2
//========================================

INSTANCE DIA_Skip_HELLO2 (C_INFO)
{
   npc          = VLK_1355_Skip;
   nr           = 1;
   condition    = DIA_Skip_HELLO2_Condition;
   information  = DIA_Skip_HELLO2_Info;
   permanent   = FALSE;
   description   = "Mam miecz";
};

FUNC INT DIA_Skip_HELLO2_Condition()   
    {
    return TRUE;
    };

}
if (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1)
     && (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
{
                   B_GiveInvItems (other, self, ItMw_1H_Mace_L_01, 1);
            AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //o ty chuju przegram
            AI_StopProcessInfos     (self);
         
}
else if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1)
&& (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
{
                  B_GiveInvItems (other, self, ItMw_1h_Vlk_Dagger1, 1);
            AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //zajebiscie, teraz wygram
            AI_StopProcessInfos     (self);
         
}
else  if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1)
    && (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1)
   && (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
    {
    AI_Output (other, self ,"DIA_Skip_HELLO2_15_01"); //Mam miecz
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_02"); //dawaj miecz

FUNC VOID DIA_Skip_HELLO2_dobry()
{
    AI_Output (other, self ,"DIA_Skip_HELLO2_dobry_15_01"); //masz
    B_GiveInvItems (other, self, ItMw_1h_Vlk_Dagger, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_dobry_03_02"); //Ale luj wygram w chuj
    Info_ClearChoices      (DIA_Skip_HELLO2);
    AI_StopProcessInfos   (self);
};

FUNC VOID DIA_Skip_HELLO2_zly()
{
    AI_Output (other, self ,"DIA_Skip_HELLO2_zly_15_01"); //masz
    B_GiveInvItems (other, self, ItMw_1H_Mace_L_01, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_zly_03_02"); //ale luj przegram w chuj
    Info_ClearChoices      (DIA_Skip_HELLO2);
    AI_StopProcessInfos   (self);
};

PS: tak wiem dialogi są zajebiste ale to tylko poglądowo napisany skrypt  :lol2:
 

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Problem jest w tym:
if (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1)
     && (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
{
                   B_GiveInvItems (other, self, ItMw_1H_Mace_L_01, 1);
            AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //o ty chuju przegram
            AI_StopProcessInfos     (self);
         
}
else if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1)
&& (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
{
                  B_GiveInvItems (other, self, ItMw_1h_Vlk_Dagger1, 1);
            AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //zajebiscie, teraz wygram
            AI_StopProcessInfos     (self);
         
}
else  if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1)
    && (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1)
   && (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
    {
    AI_Output (other, self ,"DIA_Skip_HELLO2_15_01"); //Mam miecz
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_02"); //dawaj miecz

Poprawione:
func void DIA_Skip_HELLO2_Info ()
{
    if (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1) && (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
    {
    B_GiveInvItems (other, self, ItMw_1H_Mace_L_01, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //o ty chuju przegram
    AI_StopProcessInfos (self);
    }
    else if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1) && (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
    {
    B_GiveInvItems (other, self, ItMw_1h_Vlk_Dagger1, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //zajebiscie, teraz wygram
    AI_StopProcessInfos     (self);       
    }
    else  if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1) && (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1) && (Npc_KnowsInfo (other, DIA_Skip_HELLO2))
    {
    AI_Output (other, self ,"DIA_Skip_HELLO2_15_01"); //Mam miecz
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_02"); //dawaj miecz
    };
};
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Revo16pl

Revo16pl

RaveN Studio
posty101
Propsy100
ProfesjaGrafik 3D
  • RaveN Studio

Revo16pl
RaveN Studio

problem z Choice i else if
#2 2016-03-10, 18:27(Ostatnia zmiana: 2016-03-10, 20:00)
dobra po poprawieniu kilku błędów gra się włącza, wszystko działa nie liczac tego że gdy mamy oba przedmioty nie pokazuje się opcja choice tylko wręcza od razu jeden z nich, zaraz spróbuję jeszcze wrzucić choice na początek to powinno pomóc

Post połączony: 2016-03-10, 19:54
Spoiler
//========================================
//-----------------> HELLO2
//========================================

INSTANCE DIA_Skip_HELLO2 (C_INFO)
{
   npc          = VLK_1355_Skip;
   nr           = 1;
   condition    = DIA_Skip_HELLO2_Condition;
   information  = DIA_Skip_HELLO2_Info;
   permanent   = FALSE;
   description   = "Mam miecz";
};

FUNC INT DIA_Skip_HELLO2_Condition()   

if (Npc_KnowsInfo (other, DIA_Skip_HELLO1))
|| (Npc_HasItems (other, ItMw_1H_Mace_L_01))
&& (Npc_HasItems (other, ItMw_1h_Vlk_Dagger))
    {
    return TRUE;
    };
};
FUNC VOID DIA_Skip_HELLO2_Info()
{
    Info_ClearChoices      (DIA_Skip_HELLO2);
    Info_AddChoice      (DIA_Skip_HELLO2, "(daj dobry miecz)", DIA_Skip_HELLO2_dobry);
    Info_AddChoice      (DIA_Skip_HELLO2, "(daj zly miecz)", DIA_Skip_HELLO2_zly);
};
FUNC VOID DIA_Skip_HELLO2_dobry()
{

    AI_Output (other, self ,"DIA_Skip_HELLO2_dobry_15_01"); //masz
    B_GiveInvItems (other, self, ItMw_1h_Vlk_Dagger, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_dobry_03_02"); //Ale luj wygram w chuj
    Info_ClearChoices      (DIA_Skip_HELLO2);
    AI_StopProcessInfos   (self);
};

FUNC VOID DIA_Skip_HELLO2_zly()
{
    AI_Output (other, self ,"DIA_Skip_HELLO2_zly_15_01"); //masz
    B_GiveInvItems (other, self, ItMw_1H_Mace_L_01, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_zly_03_02"); //ale luj przegram w chuj
    Info_ClearChoices      (DIA_Skip_HELLO2);
    AI_StopProcessInfos   (self);
};
func void DIA_Skip_HELLO2_Info ()
{
    if (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1)
   && (Npc_KnowsInfo (other, DIA_Skip_HELLO1))
    {
    B_GiveInvItems (other, self, ItMw_1H_Mace_L_01, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //o ty chuju przegram
    AI_StopProcessInfos (self);
    }
    else if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1)
   && (Npc_KnowsInfo (other, DIA_Skip_HELLO1))
    {
    B_GiveInvItems (other, self, ItMw_1h_Vlk_Dagger, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //zajebiscie, teraz wygram
    AI_StopProcessInfos     (self);       
    }
    else  if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1)
   && (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1)
   && (Npc_KnowsInfo (other, DIA_Skip_HELLO1))
    {
    AI_Output (other, self ,"DIA_Skip_HELLO2_15_01"); //Mam miecz
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_02"); //dawaj miecz
    };
};

mógłbyś jeszcze to obejrzeć?  dalej jest tak jak napisałem, gdy mamy obie bronie daje od razu tą pierwszą a chciałbym żeby wtedy pojawiał się wybór

http://scr.hu/829j/g1jh2

pojawia się taki błąd po włączenu po dodałem jedną linijkę z info, sorki za niedomówienie
 

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Po prostu masz dwie funkcje o nazwie DIA_Skip_HELLO2_Info.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Revo16pl

Revo16pl

RaveN Studio
posty101
Propsy100
ProfesjaGrafik 3D
  • RaveN Studio

Revo16pl
RaveN Studio

problem z Choice i else if
#4 2016-03-10, 21:47(Ostatnia zmiana: 2016-03-11, 00:45)
No wiem ale jak to usunę dalej pojawiają się błędy, tak samo przy zmianie.
 

Finciakowski

Finciakowski

Użytkownicy
posty80
Propsy3
ProfesjaSkrypter
  • Użytkownicy
Nic nie usuwaj tylko masz tutaj poprawiony skrypt
Cytuj
//========================================
//-----------------> HELLO2
//========================================

INSTANCE DIA_Skip_HELLO2 (C_INFO)
{
   npc          = VLK_1355_Skip;
   nr           = 1;
   condition    = DIA_Skip_HELLO2_Condition;
   information  = DIA_Skip_HELLO2_Info;
   permanent   = FALSE;
   description   = "Mam miecz";
};

FUNC INT DIA_Skip_HELLO2_Condition()   

if (Npc_KnowsInfo (other, DIA_Skip_HELLO1))
|| (Npc_HasItems (other, ItMw_1H_Mace_L_01))
&& (Npc_HasItems (other, ItMw_1h_Vlk_Dagger))
    {
    return TRUE;
    };
};
FUNC VOID DIA_Skip_HELLO2_cos_tam()
{
    Info_ClearChoices      (DIA_Skip_HELLO2);
    Info_AddChoice      (DIA_Skip_HELLO2, "(daj dobry miecz)", DIA_Skip_HELLO2_dobry);
    Info_AddChoice      (DIA_Skip_HELLO2, "(daj zly miecz)", DIA_Skip_HELLO2_zly);
};
FUNC VOID DIA_Skip_HELLO2_dobry()
{

    AI_Output (other, self ,"DIA_Skip_HELLO2_dobry_15_01"); //masz
    B_GiveInvItems (other, self, ItMw_1h_Vlk_Dagger, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_dobry_03_02"); //Ale luj wygram w chuj
    Info_ClearChoices      (DIA_Skip_HELLO2);
    AI_StopProcessInfos   (self);
};

FUNC VOID DIA_Skip_HELLO2_zly()
{
    AI_Output (other, self ,"DIA_Skip_HELLO2_zly_15_01"); //masz
    B_GiveInvItems (other, self, ItMw_1H_Mace_L_01, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_zly_03_02"); //ale luj przegram w chuj
    Info_ClearChoices      (DIA_Skip_HELLO2);
    AI_StopProcessInfos   (self);
};
func void DIA_Skip_HELLO2_zly_miecz ()
{
    if (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1)
   && (Npc_KnowsInfo (other, DIA_Skip_HELLO1))
    {
    B_GiveInvItems (other, self, ItMw_1H_Mace_L_01, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //o ty chuju przegram
    AI_StopProcessInfos (self);
    }
    else if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1)
   && (Npc_KnowsInfo (other, DIA_Skip_HELLO1))
    {
    B_GiveInvItems (other, self, ItMw_1h_Vlk_Dagger, 1);
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_04"); //zajebiscie, teraz wygram
    AI_StopProcessInfos     (self);       
    }
    else  if (Npc_HasItems (other, ItMw_1h_Vlk_Dagger) >=1)
   && (Npc_HasItems (other, ItMw_1H_Mace_L_01) >=1)
   && (Npc_KnowsInfo (other, DIA_Skip_HELLO1))
    {
    AI_Output (other, self ,"DIA_Skip_HELLO2_15_01"); //Mam miecz
    AI_Output (self, other ,"DIA_Skip_HELLO2_03_02"); //dawaj miecz
    };
};
Pomogło?
 
Mod będze wyglądał gdzieś tak ^^


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