Problem ze zmiennymi 12712 37

O temacie

Autor Tasilvar

Zaczęty 22.08.2009 roku

Wyświetleń 12712

Odpowiedzi 37

Tasilvar

Tasilvar

Użytkownicy
zwykły user
posty264
Propsy17
ProfesjaSkrypter
  • Użytkownicy
  • zwykły user

Tasilvar

Problem ze zmiennymi
2009-08-22, 18:08(Ostatnia zmiana: 2009-08-22, 18:11)
Sprządziłem dialog npcta,w tym dialogu utworzyłem zmienną

var string  zmienna;
podczas pewnej kwestji przypisuje zmiennej wartość TRUE

zmienna = TRUE;
następnie w folderze evenst tworze plik ze skryptem:


var string zmienna_ok;

zmienna = zmienna_ok;  // U:PAR: Syntax Error (line 3)

func void join_ok()
{
if (zmienna_ok == TRUE)
{
IF (Npc_GetDistToWP (hero,"GUARD_1") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
};
IF (Npc_GetDistToWP (hero,"PATH_OC_NC_5_1") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
};
IF (Npc_GetDistToWP (hero,"PUSTELNIK5") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
};
};
};

Przy repreasowaniu skryptów pojawia mi się błąd Syntax Error (line 3)

Nie wiem, co zrobiłem nie tak, ale dopiero zaczynam się w tym bawić.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Mam dwie teorie. Pierwsza zakłada że operację zmiany zawartości zmiennej trzeba przeprowadzić w obrębie jakiejś funkcji. Kiedy niby gra miała by to wykonać skoro nie zawarłeś tego w żadnym poleceniu?
To: zmienna = zmienna_ok; powinno być dopiero po tym: func void join_ok()
{

Druga teoria, mało prawdopodobna, zakłada że popełniłeś błąd przy definiowaniu zmiennej. Skoro używasz w niej tylko operatorów logicznych (TRUE / FALSE) to może nadaj jej typ nie "string" (łańcuch znaków - tekst) ale "int". Ewentualnie spróbuj dać zawartość zmiennej w cudzysłów.

Tasilvar

Tasilvar

Użytkownicy
zwykły user
posty264
Propsy17
ProfesjaSkrypter
  • Użytkownicy
  • zwykły user
Zastosowałem obie porady i błędu nie ma ale niestety nie pokazuje mi efektu w grze jaki jest umieszczony w funkcji.
 

sebinho

sebinho

Użytkownicy
posty339
Propsy44
Profesjabrak
  • Użytkownicy

sebinho

Problem ze zmiennymi
#3 2009-08-22, 18:59(Ostatnia zmiana: 2009-08-22, 19:00)
Może tak (chodzi o warunki):

func void join_ok()
{
if (zmienna_ok == TRUE)
{
IF (Npc_GetDistToWP (hero,"GUARD_1") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
}
else IF (Npc_GetDistToWP (hero,"PATH_OC_NC_5_1") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
}
else IF (Npc_GetDistToWP (hero,"PUSTELNIK5") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
};
};
};
 

Tasilvar

Tasilvar

Użytkownicy
zwykły user
posty264
Propsy17
ProfesjaSkrypter
  • Użytkownicy
  • zwykły user

Tasilvar

Problem ze zmiennymi
#4 2009-08-22, 19:11(Ostatnia zmiana: 2009-08-22, 19:14)
Niestety ale to nie pomogło, ja mam podejrzenia co do dialogu:

func void  Info_NON_3333336_Wojownik_join_ok()
{
AI_Output (other, self,"Info_NON_3333336_Wojownik_join_ok_13_00"); //....
AI_Output (self, other,"Info_NON_3333336_Wojownik_join_ok_15_01"); //...
AI_Output (self, other,"Info_NON_3333336_Wojownik_join_ok_15_02"); //....
AI_Output (self, other,"Info_NON_3333336_Wojownik_join_ok_15_03"); //....
AI_Output (self, other,"Info_NON_3333336_Wojownik_join_ok_15_04"); //...

Log_CreateTopic (TEST,LOG_MISSION);
Log_SetTopicStatus (TEST,LOG_RUNNING);
B_LogEntry (TEST,"....");

zmienna = TRUE;


B_GiveInvItems (self, other, MAP_SNEAK, 1);


AI_StopProcessInfos (self);

};
 

sebinho

sebinho

Użytkownicy
posty339
Propsy44
Profesjabrak
  • Użytkownicy
To może zamiast zmienna_ok użyj zmienna?
 

gothI

gothI

Użytkownicy
posty167
  • Użytkownicy
W tym dialogu masz że "zmienna = TRUE;" a w funkcji masz warunek ze to Zmienna_Ok = true
 
GG:10938162

Tasilvar

Tasilvar

Użytkownicy
zwykły user
posty264
Propsy17
ProfesjaSkrypter
  • Użytkownicy
  • zwykły user
To może zamiast zmienna_ok użyj zmienna?


Cytat: gothI link=topic=6957.msg62263#msg62262 date=Aug 22 2009, 07:28 PM\'
W tym dialogu masz że "zmienna = TRUE;" a w funkcji masz warunek ze to Zmienna_Ok = true


var int zmienna_ok; // w sumie to moge wywalic

func void join_ok()
{
zmienna = zmienna_ok;  // i to

if (zmienna == TRUE)
{
IF (Npc_GetDistToWP (hero,"GUARD_1") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
}
else IF (Npc_GetDistToWP (hero,"PATH_OC_NC_5_1") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
}
else IF (Npc_GetDistToWP (hero,"PUSTELNIK5") < 1000 )
{
B_LogEntry (TEST,"...");
PrintScreen ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
};
};
};


Mimo wszystko i tak nie działa;/  za 2 godzinki jakbede znow przy kompie to pokombinuje z tym jeszcze... jesli macie jakies pomysly to piszcie.
 

sebinho

sebinho

Użytkownicy
posty339
Propsy44
Profesjabrak
  • Użytkownicy
Wywaliłeś to co zaznaczyłeś komentarzem, czy jeszcze nie?
 

gothI

gothI

Użytkownicy
posty167
  • Użytkownicy
W dialogu dałeś by zmianan = true a znów w funkcji by ta sama zmienna była rówa zminnaj_ok (jesli nie deklarowałeąś nigdzie wczesniej to ona jest równa 0) poczym dałeś warunek by ona była = true ;D Wywal to 2;P
 
GG:10938162

Tasilvar

Tasilvar

Użytkownicy
zwykły user
posty264
Propsy17
ProfesjaSkrypter
  • Użytkownicy
  • zwykły user

Tasilvar

Problem ze zmiennymi
#10 2009-08-22, 21:46(Ostatnia zmiana: 2009-08-22, 21:47)
Witam ponownie. Przerzuciłem się z wartościami zmiennej na cyfry.

utworzyłem zmienną w Story_Globals.D

var int test_zaufania;
Nastepnie w dialogu:
/*** IF ***/

FUNC INT Info_NON_3333336_Wojownik_join_Condition()
{
if  (test_zaufania == 0)
{
return 1;
};
};


/***** Dialog *****/


func void  Info_NON_3333336_Wojownik_join_ok()
{
AI_Output (other, self,"Info_NON_3333336_Wojownik_join_ok_13_00"); //...
AI_Output (self, other,"Info_NON_3333336_Wojownik_join_ok_15_01"); //....
AI_Output (self, other,"Info_NON_3333336_Wojownik_join_ok_15_02"); /...
AI_Output (self, other,"Info_NON_3333336_Wojownik_join_ok_15_03"); //...
AI_Output (self, other,"Info_NON_3333336_Wojownik_join_ok_15_04"); //...

Log_CreateTopic (TEST,LOG_MISSION);
Log_SetTopicStatus (TEST,LOG_RUNNING);
B_LogEntry (TEST,"....");

test_zaufania + 1;


B_GiveInvItems (self, other, MAP_SNEAK, 1);


AI_StopProcessInfos (self);

};

no i wreszcie w evenst funkcja:

Cytuj
func void join_ok()
{
   if (test_zaufania == 1)
    {
        IF     (Npc_GetDistToWP (hero,"GUARD_1") < 1000 )
        {
        B_LogEntry (TEST,"...");
        PrintScreen    ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
        }
        else IF     (Npc_GetDistToWP (hero,"PATH_OC_NC_5_1") < 1000 )
        {
        B_LogEntry (TEST,"...");
        PrintScreen    ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
        }
        else IF     (Npc_GetDistToWP (hero,"PUSTELNIK5") < 1000 )
        {
        B_LogEntry (TEST,"...");
        PrintScreen    ("...", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
        };
    };
};

Mimo to nadal nie działa, chyba wyczerpałem już moje pomysły;/ Jeśli ktoś jest w stanie doradzić to proszę pisać, ja będę jutro ^^
 

sebinho

sebinho

Użytkownicy
posty339
Propsy44
Profesjabrak
  • Użytkownicy
test_zaufania + 1; zamień na test_zaufania = test_zaufania + 1;
 

Tasilvar

Tasilvar

Użytkownicy
zwykły user
posty264
Propsy17
ProfesjaSkrypter
  • Użytkownicy
  • zwykły user
Niestety to również nie pomogło;/  Tym razem wywaliłem warunek ze zmienymi i dodałem w spacerze trigger script aby po dojsciu do waypointu  coś się stało, ale też nic;/


func VOID SZPIEGI()
{
IF (Npc_GetDistToWP (hero,"GUARD_1") < 500 )
{
B_LogEntry (TEST,"opis");
PrintScreen ("Tytuł", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
}
else IF (Npc_GetDistToWP (hero,"PATH_OC_NC_5_1") < 500 )
{
B_LogEntry (TEST,"opis");
PrintScreen ("Tytuł", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
}
else IF (Npc_GetDistToWP (hero,"PUSTELNIK5") < 500 )
{
B_LogEntry (TEST,"opis");
PrintScreen ("Tytuł", -1,-1,"FONT_OLD_20_WHITE.TGA",_TIME_MESSAGE_RAISEATTRIBUTE);
};
};


reasumując  wygląda na to, że warunek if jest w grze 'pomijnany'..
 

gothI

gothI

Użytkownicy
posty167
  • Użytkownicy
A do start upa dodałeś tego triggera?
 
GG:10938162

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

Problem ze zmiennymi
#14 2009-08-23, 18:16(Ostatnia zmiana: 2009-08-23, 18:18)
skoro już jesteśmy przy zmiennych, czy zmienne liczbowe mogą występować w 2 oddzielnych miejscach np.w dialogu kirga lub diega??

chodzi o tą sama zmienną liczbową istniejącą i kształtowaną w 2 niezależnych miejscach, np.
var int reputacja, której punkty będą sumowane po dialogu z kirgiem jak i diegiem.
 

Tasilvar

Tasilvar

Użytkownicy
zwykły user
posty264
Propsy17
ProfesjaSkrypter
  • Użytkownicy
  • zwykły user
FUNC VOID INIT_WORLD ()
{
if (true)
{
Wld_SendTrigger("SZPIEGI");
};
 

gothI

gothI

Użytkownicy
posty167
  • Użytkownicy

gothI

Problem ze zmiennymi
#16 2009-08-23, 18:17(Ostatnia zmiana: 2009-08-23, 18:20)
skoro już jesteśmy przy zmiennych, czy zmienne liczbowe mogą występować w 2 oddzielnych miejscach np.w dialogu kirga lub diega??


Jasne, czemu by nie.





Cytuj
if (true)


A to co? Zostaw normalnie Wld_SendTrigger ( wywal ten warunek)
 
GG:10938162

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

Problem ze zmiennymi
#17 2009-08-23, 18:19(Ostatnia zmiana: 2009-08-23, 18:22)
gothi sprawdzałeś to??

bo np. points_oc liczone u diego do przyjęcia do starego obozu, przyznawane np. u kirgo powodują, że błędu nie ma, a dialog kirga prawidłowo się nie wyswietlla.
spróbuj dodać var int points_oc dla kirga i doliczyć points_oc np. po wygranej walce na arenie
 

gothI

gothI

Użytkownicy
posty167
  • Użytkownicy
Zmienna dodajesz do story globals, a w dialogach mozesz robic zmienna=zmienna+1; a w 2 dialogu +2 itp
 
GG:10938162

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Zmienna dodajesz do story globals, a w dialogach mozesz robic zmienna=zmienna+1; a w 2 dialogu +2 itp
zmienna jest w story globals, nie zmienia to faktu , że jest błąd w dialogu, które reparse scripts nie wykrywa
 


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