Błąd z pętlą i warunkami 4793 12

O temacie

Autor UsersGothicMod

Zaczęty 1.09.2009 roku

Wyświetleń 4793

Odpowiedzi 12

UsersGothicMod

UsersGothicMod

Użytkownicy
posty8
  • Użytkownicy
// ************************************************************
// LOS
// ************************************************************

INSTANCE DIA_Diego_LOS (C_INFO)
{
npc = PC_Thief;
nr = 898;
condition = DIA_Diego_LOS_Condition;
information = DIA_Diego_LOS_Info;
permanent = 1;
description = "Loteria";
};  

FUNC INT DIA_Diego_LOS_Condition()
{
return 1;
};


FUNC VOID DIA_Diego_LOS_Info()
{
AI_Output (hero, self,"DIA_Diego_LOS_15_00"); //Loteria.
if (Npc_HasItems (hero, ItMiNugget) >=5)
{
AI_Output (self, hero,"DIA_Diego_LOS_13_01"); //Losowanie się rozpoczęło.

BONUS = Hlp_Random (4);

if (Zmienna == 1)
{
AI_Output (self, hero,"DIA_Mud_Dialog_01"); //JEDEN!
AI_Output (self, hero, "DIA_Diego_LOS_22"); //Wygrałeś 10 bryłek rudy.
CreateInvItems (self, ItMiNugget, 10);
B_GiveInvItems (self, hero, ItMiNugget, 10);
};
if (Zmienna == 2)
{
AI_Output (self, hero,"DIA_Mud_Dialog_01"); //DWA!
AI_Output (self, hero, "DIA_Diego_LOS_22"); //Wygrałeś 10 piw.
CreateInvItems (self, ItFoBeer, 10);
B_GiveInvItems (self, hero, ItFoBeer, 10);
};
if (Zmienna == 3)
{
AI_Output (self, hero,"DIA_Mud_Dialog_01"); //TRZY!
AI_Output (self, hero, "DIA_Diego_LOS_22"); //Wygrałeś 2 Rozgrzane Pręty i 10 Jagód.
CreateInvItems (self, ItMiSwordrawhot, 2);
CreateInvItems (self, ItFo_Plants_Berrys_01, 10);
B_GiveInvItems (self, hero, ItMiSwordrawhot, 2);
B_GiveInvItems (self, hero, ItFo_Plants_Berrys_01, 10);
if (Zmienna == 4)
{
AI_Output (self, hero,"DIA_Mud_Dialog_02"); //CZTERY!
AI_Output (self, hero,"DIA_Mud_Dialog_03"); //Dawaj mi 10 jednostek Magicznej Rudy.
B_GiveInvItems (hero, self, ItMiNugget, 10);
};
};
};
else
{
AI_Output (self, hero,"DIA_Diego_LOS_15_01"); //Nie masz 5 Bryłek Rudy.
};
AI_StopProcessInfos (self);
};

Czy ktoś może mi powiedzieć gdzie w tym skrypcie jest błąd?
Może czegoś zapomniałem dopisać, w tym, albo innym pliku?
 

gothI

gothI

Użytkownicy
posty167
  • Użytkownicy
A może byś powiedział jaki błąd wyskakuje czy coś? I jak sie nie myle to jak w Random dasz np 4 to masz do 3 (0,1,2,3) - chyba zrozumiesz;D
 
GG:10938162

Jurigag

Jurigag

Użytkownicy
posty869
Propsy285
ProfesjaSkrypter
  • Użytkownicy
Zmienna == 1

Jak juz coś to BONUS sam przecież tam napisałeś tak. Poza tym w story_globals.d dodaj tam var int BONUS i powinno być git, no i zamień all o jedno mniej :D
 
Skrypter/Tester - Szukasz testera/skryptera - Pisz !

UsersGothicMod

UsersGothicMod

Użytkownicy
posty8
  • Użytkownicy
Zrobiłem tak jak radziliście i wyświetliły mi się takie błędy
[codebox]
// ************************************************************
//                             LOS
// ************************************************************

INSTANCE DIA_Diego_LOS (C_INFO)
{
    npc            = PC_Thief;
    nr            = 898;
    condition    = DIA_Diego_LOS_Condition;
    information    = DIA_Diego_LOS_Info;
    permanent    = 1;
    description = "Loteria";
};                      

FUNC INT DIA_Diego_LOS_Condition()
{
        return 1;
};


FUNC VOID DIA_Diego_LOS_Info()
{    
    AI_Output (hero, self,"DIA_Diego_LOS_15_00"); //Loteria.
    if (Npc_HasItems (hero, ItMiNugget) >=5)
    {
    AI_Output (self, hero,"DIA_Diego_LOS_13_01"); //Losowanie się rozpoczęło.
   
BONUS = Hlp_Random (4);

if (BONUS == 0)
{
AI_Output (self, hero,"DIA_Mud_Dialog_01"); //JEDEN!
AI_Output (self, hero, "DIA_Diego_LOS_22"); //Wygrałeś 10 bryłek rudy.
CreateInvItems (self, ItMiNugget, 10);
B_GiveInvItems (self, hero, ItMiNugget, 10);
};
if (BONUS == 1)
{
AI_Output (self, hero,"DIA_Mud_Dialog_01"); //DWA!
AI_Output (self, hero, "DIA_Diego_LOS_22"); //Wygrałeś 10 piw.
CreateInvItems (self, ItFoBeer, 10);
B_GiveInvItems (self, hero, ItFoBeer, 10);
};
if (BONUS == 2)
{
AI_Output (self, hero,"DIA_Mud_Dialog_01"); //TRZY!
AI_Output (self, hero, "DIA_Diego_LOS_22"); //Wygrałeś 2 Rozgrzane Pręty i 10 Jagód.
CreateInvItems (self, ItMiSwordrawhot, 2);
CreateInvItems (self, ItFo_Plants_Berrys_01, 10);
B_GiveInvItems (self, hero, ItMiSwordrawhot, 2);
B_GiveInvItems (self, hero, ItFo_Plants_Berrys_01, 10);
};
if (BONUS == 3)
{
AI_Output (self, hero,"DIA_Mud_Dialog_02"); //CZTERY!
AI_Output (self, hero,"DIA_Mud_Dialog_03"); //Przegrałeś! I straciłeś rudę.
};
    };
    else
    {
    AI_Output (self, hero,"DIA_Diego_LOS_15_01"); //Nie masz 5 Bryłek Rudy.
    };
    AI_StopProcessInfos   (self);
};
[/codebox]
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Mi taka lawina błędów pokazuje się jak zapomnę domknąć jakiegoś nawiasu lub cudzysłowu. Wtedy kompilator myśli że cała reszta skryptu to dalszy ciąg nawiasu, a tak oczywiście być nie może i każdy następny wyraz traktuje jako błąd. Błąd który to spowodował najprawdopodobniej jest w linijce 94/95. No i właśnie, zastanów się co jest twoją zmienną "zmienna" czy "bonus".

UsersGothicMod

UsersGothicMod

Użytkownicy
posty8
  • Użytkownicy
Trochę pozmieniałem. Mój plik PC_thief.d poniżej.
Mój dialog pod exit.
Nadal wyskakują błędy takie same jak w poprzednim poście.
[attachment=281:DIA_Pc_Thief.d]
 


UsersGothicMod

UsersGothicMod

Użytkownicy
posty8
  • Użytkownicy
Następny błąd tym razem w praktyce.
Gdy daje u Diego Loteria całe dolne okienko się wyłącza nic nie dostaję, nic mi nie gada. Od razu kończy dialog i mogę sobie pójść gdzieś indziej. Podchodzę do niego jeszcze raz klikam Loteria i znów to samo.
O CO CHODZI?
 

muttley

muttley

Użytkownicy
posty567
Propsy381
  • Użytkownicy
Reparsowałeś skrypty spacerem ?
 

UsersGothicMod

UsersGothicMod

Użytkownicy
posty8
  • Użytkownicy
wchodzę w GothicStarter_mod.exe, klikam w pierwsze z brzegu, nastawiam zSpy Messages na 10 (czyli max), zaznaczam Reparse Scripts i klikam w Start the Editor.
---Moje pliki, które edytowałem:
-----http://www.sendspace.com/file/iu4dvu - DIA_PC_Thief.d
-----http://www.sendspace.com/file/e8t0cn - Story_Globals.d
-----http://www.sendspace.com/file/zmjc3d - filmik jak teraz ten "dialog" działa w praktyce, wtedy miałem na początku ok. 50 bryłek rudy.
10 bryłek oddane - otrzymałem 10 bryłek
nic się nie stało - "straciłem" 5 bryłek rudy (ponieważ nie było w tym dialogu funkcji, że masz oddać te bryłki to zaznaczyłem ten wyraz w cudzysłów, bo nic się nie stało)
10 przedmioty otrzymane - otrzymałem 10 piw
10 przedmioty otrzymane (i na nim napis 2 przedmioty otrzymane) - otrzymałem 10 jagód i 2 rozgrzane pręty
----tekstu nie che mi pokazywać
----jeżeli nie masz bryłek to dialog się kończy.
----Pobieranie z Sendspace.com jest DARMOWE, w przeciwieństwie do podobnego sendspace.pl
 

Gamer

Gamer

Użytkownicy
posty245
Propsy20
Profesjabrak
  • Użytkownicy
jeśli chodzi o dialogi to musisz reparsnąc skrypty
 
89% graczy uważa że najważniejsza jest grafika jeśli należysz do tych 11% wklej to do podpisu!

muttley

muttley

Użytkownicy
posty567
Propsy381
  • Użytkownicy
 

UsersGothicMod

UsersGothicMod

Użytkownicy
posty8
  • Użytkownicy
Dzięki wszystkim za pomoc.
Już wszystko się udało. Dialog działa. Muszę tylko poprawić pare błędów i będzie dobrze.
 


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