Dialog a la "Quest Virana" 5230 14

O temacie

Autor Antitraxx

Zaczęty 20.03.2010 roku

Wyświetleń 5230

Odpowiedzi 14

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy
Stworzyłem dialog na zasadzie questu Virana, czyli pojawia się mniej więcej taki dialog:
- Co do tego polowania...
- Tak? O co chodzi?
(tutaj się pojawia warunek JEŚLI MAMY)
- Mam mięso o które prosiłeś.
- Dziękuję, oto twoja zapłata.
(i teoretyczny koniec zadania)
(JEŚLI NIE MAMY)
- Jeszcze nie wyruszyłem na polowanie.
- No to się pośpiesz, chłopcy nie lubią czekać.
(i zadanie trwa dalej)
Dialog ma do końca zadania trwać cały czas (permanent = 1) do końca zadania. Jednak po poprawnym skończeniu zadania, ten dialog nie znika, i jest cały czas. Co zrobić żeby po skończeniu questa zniknął?

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Dialog a la "Quest Virana"
#1 2010-03-20, 19:14(Ostatnia zmiana: 2010-03-20, 19:18)
zrób zmienną która będzie miała wartość 0 i po udanej dodajesz do zmiennej 1
a if`a zrób tak

FUNC INT nazwa_dialogu_Condition()
{
if (zmienna==0)
{
return 1;
};
};

będzie działało 100 % :lol2:

Magia zmiennych XD jak ja to lubię powtarzać XD

Pragasek

Pragasek

Użytkownicy
posty334
Propsy39
ProfesjaSkrypter
  • Użytkownicy

Pragasek

Dialog a la "Quest Virana"
#2 2010-03-20, 19:20(Ostatnia zmiana: 2010-03-20, 19:21)
a nie łatwiej będzie tak?

- Co do tego polowania...
- Tak? O co chodzi?
  if (Npc_HasItems (hero, instance_miesa) >=10)
- Mam mięso o które prosiłeś.
- Dziękuję, oto twoja zapłata.
Dajesz wpis do dziennika jako LOG_SUCCESS
{
else
}
- Jeszcze nie wyruszyłem na polowanie.
- No to się pośpiesz, chłopcy nie lubią czekać.

Tak bedzie o wiele łatwiej.
Jak mam ci wytłumaczyć inaczej, napisz.
Oczywiścię dodaj zmienną jak napisał RafalBudzis

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy

Antitraxx

Dialog a la "Quest Virana"
#3 2010-03-20, 19:23(Ostatnia zmiana: 2010-03-20, 19:27)
Właśnie ja tak jak pokazałeś mam xD Kierowałem się skryptami z G2NK, ale widać wyszło jak jest... chyba będę musiał pokazać wam cały dialog z tym związany :lol2:

//========================================
//-----------------> Meat
//========================================

INSTANCE DIA_Brian_Meat (C_INFO)
{
   npc = ORG_895_Brian;
   nr = 3;
   condition = DIA_Brian_Meat_Condition;
   information = DIA_Brian_Meat_Info;
   permanent = TRUE;
   description = "Co do polowania...";
};

FUNC INT DIA_Brian_Meat_Condition()
{
if (Npc_KnowsInfo (other, DIA_Brian_Job))
{
return TRUE;
};
};


func VOID DIA_Brian_Meat_Info()
{
AI_Output (other, self ,"DIA_Brian_Meat_15_01"); //Co do polowania...
AI_Output (self, other ,"DIA_Brian_Meat_03_02"); //Tak? Masz już coś?
if (Npc_HasItems (other, ItAt_Wolf_01) >=4)
&& (Npc_HasItems (other, ItFoMuttonRaw) >=12)
{
AI_Output (other, self ,"DIA_Brian_Meat_15_03"); //Mam, proszę bardzo. Oto mój łup.
AI_Output (self, other ,"DIA_Brian_Meat_03_04"); //No, no... jednak na coś się na dasz. Daj mi go!

B_GiveInvItems (other, self, ItFoMuttonRaw, 12);
B_GiveInvItems (other, self, ItAt_Wolf_01, 4);

AI_Output (self, other ,"DIA_Brian_Meat_03_05"); //A oto twoja nagroda. Jeśli będziesz miał jeszcze jakieś mięso, wpadnij do mnie. Dam ci uczciwą zapłatę.
AI_Output (self, other ,"DIA_Brian_Meat_03_06"); //Pamiętaj, przynoś nie mniej niż tuzin sztuk!

B_LogEntry (CH1_Hunting,"Brian ucieszył się, gdy wręczyłem mu łup. W sumie opłacało się.");
Log_SetTopicStatus(CH1_Hunting, LOG_SUCCESS);

B_GiveXP (200);
B_GiveInvItems (self, other, ItMiNugget, 50);

}
else
{
AI_Output (other, self ,"DIA_Brian_Meat_15_07"); //Jeszcze nic nie upolowałem.
AI_Output (self, other ,"DIA_Brian_Meat_03_08"); //A więc się pośpiesz, moi chłopcy nie będą czekać w nieskończoność.
};

};

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Dialog a la "Quest Virana"
#4 2010-03-20, 19:34(Ostatnia zmiana: 2010-03-20, 19:35)
var int zmienna  = 0;
INSTANCE DIA_Brian_Meat (C_INFO)
{
   npc = ORG_895_Brian;
   nr = 3;
   condition = DIA_Brian_Meat_Condition;
   information = DIA_Brian_Meat_Info;
   permanent = TRUE;
   description = "Co do polowania...";
};

FUNC INT DIA_Brian_Meat_Condition()
{
if (Npc_KnowsInfo (other, DIA_Brian_Job))
&&(zmienna  == 0)
{
return TRUE;
};
};


func VOID DIA_Brian_Meat_Info()
{
AI_Output (other, self ,"DIA_Brian_Meat_15_01"); //Co do polowania...
AI_Output (self, other ,"DIA_Brian_Meat_03_02"); //Tak? Masz już coś?
if (Npc_HasItems (other, ItAt_Wolf_01) >=4)
&& (Npc_HasItems (other, ItFoMuttonRaw) >=12)
{
AI_Output (other, self ,"DIA_Brian_Meat_15_03"); //Mam, proszę bardzo. Oto mój łup.
AI_Output (self, other ,"DIA_Brian_Meat_03_04"); //No, no... jednak na coś się na dasz. Daj mi go!

B_GiveInvItems (other, self, ItFoMuttonRaw, 12);
B_GiveInvItems (other, self, ItAt_Wolf_01, 4);

AI_Output (self, other ,"DIA_Brian_Meat_03_05"); //A oto twoja nagroda. Jeśli będziesz miał jeszcze jakieś mięso, wpadnij do mnie. Dam ci uczciwą zapłatę.
AI_Output (self, other ,"DIA_Brian_Meat_03_06"); //Pamiętaj, przynoś nie mniej niż tuzin sztuk!

B_LogEntry (CH1_Hunting,"Brian ucieszył się, gdy wręczyłem mu łup. W sumie opłacało się.");
Log_SetTopicStatus(CH1_Hunting, LOG_SUCCESS);

B_GiveXP (200);
B_GiveInvItems (self, other, ItMiNugget, 50);
zmienna=zmienna+1
}
else
{
AI_Output (other, self ,"DIA_Brian_Meat_15_07"); //Jeszcze nic nie upolowałem.
AI_Output (self, other ,"DIA_Brian_Meat_03_08"); //A więc się pośpiesz, moi chłopcy nie będą czekać w nieskończoność.
};

};

zrób tak powinno być dobrze

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy

Antitraxx

Dialog a la "Quest Virana"
#5 2010-03-20, 19:45(Ostatnia zmiana: 2010-03-20, 19:46)
Już mamy pierwsze błędy przy reparsowaniu skryptów :)  Wstawiłem tą wzmiankę o zmiennej (tj. "var int zmienna  = 0;" i przerobione na "var int BriansMeat = 0;") na samym początku skryptu i wywaliło mi błąd:

00:54 Fatal:-1 U: PAR: Expected ';' ( line 1 ) .... <zParser.cpp,#599>

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
daj zamiast var const

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy
Nadal to samo... Dialog według twoich poprawek:

var int BriansMeat = 0;
//========================================
//-----------------> Meat
//========================================

INSTANCE DIA_Brian_Meat (C_INFO)
{
   npc = ORG_895_Brian;
   nr = 3;
   condition = DIA_Brian_Meat_Condition;
   information = DIA_Brian_Meat_Info;
   permanent = TRUE;
   description = "Co do polowania...";
};

FUNC INT DIA_Brian_Meat_Condition()
{
if (Npc_KnowsInfo (other, DIA_Brian_Job))
&& (BrainsMeat  == 0)
{
return TRUE;
};
};


func VOID DIA_Brian_Meat_Info()
{
AI_Output (other, self ,"DIA_Brian_Meat_15_01"); //Co do polowania...
AI_Output (self, other ,"DIA_Brian_Meat_03_02"); //Tak? Masz już coś?
if (Npc_HasItems (other, ItAt_Wolf_01) >=4)
&& (Npc_HasItems (other, ItFoMuttonRaw) >=12)
{
AI_Output (other, self ,"DIA_Brian_Meat_15_03"); //Mam, proszę bardzo. Oto mój łup.
AI_Output (self, other ,"DIA_Brian_Meat_03_04"); //No, no... jednak na coś się na dasz. Daj mi go!

B_GiveInvItems (other, self, ItFoMuttonRaw, 12);
B_GiveInvItems (other, self, ItAt_Wolf_01, 4);

AI_Output (self, other ,"DIA_Brian_Meat_03_05"); //A oto twoja nagroda. Jeśli będziesz miał jeszcze jakieś mięso, wpadnij do mnie. Dam ci uczciwą zapłatę.
AI_Output (self, other ,"DIA_Brian_Meat_03_06"); //Pamiętaj, przynoś nie mniej niż tuzin sztuk!

B_LogEntry (CH1_Hunting,"Brian ucieszył się, gdy wręczyłem mu łup. W sumie opłacało się.");
Log_SetTopicStatus(CH1_Hunting, LOG_SUCCESS);

B_GiveXP (200);
B_GiveInvItems (self, other, ItMiNugget, 50);
BriansMeat = BriansMeat + 1;

}
else
{
AI_Output (other, self ,"DIA_Brian_Meat_15_07"); //Jeszcze nic nie upolowałem.
AI_Output (self, other ,"DIA_Brian_Meat_03_08"); //A więc się pośpiesz, moi chłopcy nie będą czekać w nieskończoność.
};

};

I powiedz mi w czym do jasnej cholery jest błąd?  :)

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Cytuj
daj zamiast var const
czyli
const int BriansMeat = 0;

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy
A w zamian w zSpy pojawia się to:

00:28 Fatal:-1 U: PAR: CONTENT\STORY\MISSIONS\DIA_ORG_895_BRIAN.D: Unknown identifier : BRAINSMEAT .... <zParser.cpp,#599>

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
zmień nazwę na jakąś inną może nazwa się powtarza

i czy napewno dałeś const int BriansMeat = 0; przed całym skryptem dialogu ??


Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy
Dobra, ludzie już nie mam siły. Tak jak polecił mi RafalBudzis dodałem na początku stałą, do tego dodałem drugą zmienną, co wygląda to tak:

const int BrainsMeat1 = 0;
var int BriansMeat2;

A potem żeby zmienna BriansMeat2 miała wartość 1, dodaję na koniec warunku:
BriansMeat2 = BriansMeat1 + 1;
I wywala mi błąd 00:28 Fatal:-1 U: PAR: CONTENT\STORY\MISSIONS\DIA_ORG_895_BRIAN.D: Unknown identifier : BRAINSMEAT1 .... <zParser.cpp,#599>
I powiedzcie mi co do ch**a bladego, jest nie tak? :) :/:lol2:

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
W błędzie pisze że brakuje tego:
const int BrainsMeat1 = 0;Sprawdź czy na pewno zdefiniowałeś zmienną zanim się do niej odwołałeś, czy jest to zmienna globalna lub znajduje się W tej funkcji oraz czy nie zrobiłeś literówki.

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy

Antitraxx

Dialog a la "Quest Virana"
#14 2010-03-20, 21:23(Ostatnia zmiana: 2010-03-21, 11:43)
No dobra, po długiej pracy trwającej od 19... w końcu mi się udało, dialog działa jak należy. Dziękuję za pomoc wszystkim mniej i bardziej doświadczonym modderom którzy się udzielali w tym temacie. Temat do zamknięcia. :)


Ech, chciałem napisać posta, a tu inny moderator mi zamknął...
Dobra, trochę się przyczepię... Po co tworzyć stałą równą 0??? przecież zmienna = 0 + 1,  to jest to samo co zmienna = 1. Tylko sobie komplikujecie,
Adanos


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