[G1] Zamiana dwóch instancji w dialogu (?) 5030 9

O temacie

Autor Draquer

Zaczęty 18.04.2019 roku

Wyświetleń 5030

Odpowiedzi 9

Draquer

Draquer

Użytkownicy
Problematyk :F
posty360
Propsy23
ProfesjaNierób
  • Użytkownicy
  • Problematyk :F
Czy ktoś może mi wytłumaczyć jakim cudem opcja HALLO - "Kim jesteś?" zamienia się z After Trade - Normal Price -
"Sprzedałem twoje skóry."?

Po wyborze opcji "Kim jesteś?" wyświetlają się dialogi z "Sprzedałem Twoje skóry.", pomimo warunku w funkcji Condition.
Dialog:
Spoiler
// ********************************
//             EXIT
// ********************************

instance DIA_Rascal_EXIT (C_INFO)
{
   npc         = Sld_6000_Rascal;
   nr         = 999;
   condition   = DIA_Rascal_EXIT_Condition;
   information   = DIA_Rascal_EXIT_Info;
   permanent   = 1;
   description = DIALOG_ENDE;
};                       

FUNC int DIA_Rascal_EXIT_Condition()
{
   return 1;
};

FUNC VOID  DIA_Rascal_EXIT_Info()
{
   AI_StopProcessInfos   (self);
};

// ********************************
//             Hallo
// ********************************

instance DIA_Rascal_Hallo (C_INFO)
{
   npc         = Sld_6000_Rascal;
   nr         = 1;
   condition   = DIA_Rascal_Hallo_Condition;
   information   = DIA_Rascal_Hallo_Info;
   permanent   = 1;
   description = "Kim jesteś?";
};                       

FUNC int DIA_Rascal_Hallo_Condition()
{
   return 1;
};

FUNC VOID  DIA_Rascal_Hallo_Info()
{
   AI_Output (other, self,"DIA_Rascal_Hallo_15_00"); //Kim jesteś?
   AI_Output (self, other,"DIA_Rascal_Hallo_04_01"); //Nazywam się Rascal.
   AI_Output (self, other,"DIA_Rascal_Hallo_04_02"); //Zanim tu trafiłem, byłem myśliwym.
   AI_Output (self, other,"DIA_Rascal_Hallo_04_03"); //Kiedyś pomyliłem królewskiego żołnierza z goblinem, to był wielki błąd.
   AI_Output (self, other,"DIA_Rascal_Hallo_04_04"); //W ten sposób wylądowałem tutaj.
};

// ********************************
//             Quest
// ********************************

instance DIA_Rascal_Quest (C_INFO)
{
   npc         = Sld_6000_Rascal;
   nr         = 2;
   condition   = DIA_Rascal_Quest_Condition;
   information   = DIA_Rascal_Quest_Info;
   permanent   = 0;
   description = "Czy mogę Ci w czymś pomóc?";
};                       

FUNC int DIA_Rascal_Quest_Condition()
{
   return 1;
};

FUNC VOID  DIA_Rascal_Quest_Info()
{
   AI_Output (other, self,"DIA_Rascal_Quest_15_00"); //Mogę Ci w czymś pomóc?
   AI_Output (self, other,"DIA_Rascal_Quest_04_01"); //Hm, skoro już tu jesteś...
   AI_Output (self, other,"DIA_Rascal_Quest_04_02"); //Sprzedaje upolowane trofea w Starym Obozie, kupcowi o imieniu Fisk.
   AI_Output (self, other,"DIA_Rascal_Quest_04_03"); //Trzymaj. Zanieś mu te skóry, powinieneś za nią dostać jakieś 200 bryłek rudy.
   CreateInvItems (self, ItAt_Wolf_01, 10);
   B_GiveInvItems(self, other,ItAt_Wolf_01, 10);
   AI_Output (self, other,"DIA_Rascal_Quest_04_04"); //Tylko uważaj, Fisk to stary cwaniak, może chcieć Cię wykiwać z ceną.
   AI_Output (other, self,"DIA_Rascal_Quest_15_01"); //Wrócę, gdy tylko dokonam z nim wymiany.
   
      Rascal_Quest = LOG_RUNNING;
   
   Log_CreateTopic      (CH1_Rascal_Quest,LOG_MISSION);
   Log_SetTopicStatus   (CH1_Rascal_Quest,LOG_RUNNING);
   B_LogEntry (CH1_Rascal_Quest,"Myśliwy Rascal potrzebuje kogoś, kto sprzeda 10 wilczych skór sprzedawcy ze Starego Obozu kupcowi Fiskowi.");
};

//*********************************************************
//                   After Trade - Lower Price
//*********************************************************

instance DIA_Rascal_Quest_After_Trade_Low (C_INFO)
{
   npc         = Sld_6000_Rascal;
   nr         = 998;
   condition   = DIA_Rascal_Quest_After_Trade_Low_Condition;
   information   = DIA_Rascal_Quest_After_Trade_Low_Info;
   permanent   = 0;
   description = "Sprzedałem twoje skóry.";
};                       

FUNC int DIA_Rascal_Quest_After_Trade_Low_Condition()
{
   if(Fisk_SkinsSoldLowPrice = TRUE)
   {
      return 1;
   };
};

FUNC VOID  DIA_Rascal_Quest_After_Trade_Low_Info()
{
   AI_Output (other, self,"DIA_Rascal_Quest_After_Trade_Low_15_00");  //Sprzedałem Twoje skóry.
   B_GiveInvItems(other, self,itminugget, 150);
   AI_Output (self, other,"DIA_Rascal_Quest_After_Trade_low_04_01");  //A gdzie reszta rudy!?
   AI_Output (other, self,"DIA_Rascal_Quest_After_Trade_Low_15_01"); //Fisk dał mi tylko 150 bryłek rudy.
   AI_Output (self, other,"DIA_Rascal_Quest_After_Trade_Low_04_02");  //Ty idioto. Zejdź mi z oczu!
   
   B_LogEntry (CH1_Rascal_Quest,"Oddałem Rascalowi 150 bryłek rudy, nieźle się wkurzył.");
   
      Rascal_Quest = LOG_SUCCESS;
   
   Log_SetTopicStatus   (CH1_Rascal_Quest,LOG_SUCCESS);
};
//*********************************************************
//                   After Trade - Normal Price
//*********************************************************

instance DIA_Rascal_Quest_After_Trade_Normal (C_INFO)
{
   npc         = Sld_6000_Rascal;
   nr         = 988;
   condition   = DIA_Rascal_Quest_After_Trade_Normal_Condition;
   information   = DIA_Rascal_Quest_After_Trade_Normal_Info;
   permanent   = 0;
   description = "Sprzedałem twoje skóry.";
};                       

FUNC int DIA_Rascal_Quest_After_Trade_Normal_Condition()
{
   if(Fisk_SkinsSoldNormalPrice = TRUE)
   {
      return 1;
   };
};

FUNC VOID  DIA_Rascal_Quest_After_Trade_Normal_Info()
{
   AI_Output (other, self,"DIA_Rascal_Quest_After_Trade_Normal_15_00");  //Sprzedałem Twoje skóry.
   B_GiveInvItems(other, self,itminugget, 200);
   AI_Output (self, other,"DIA_Rascal_Quest_After_Trade_Normal_04_01");  //Świetnie! Nie mogę podzielić się z Tobą rudą, ponieważ sam jej bardzo potrzebuję.
   AI_Output (self, other,"DIA_Rascal_Quest_After_Trade_Normal_04_02");  //Dalej jednak jestem myśliwym, więc nauczyć Cię którejś z umiejętności myśliwskiej.
   
   B_LogEntry (CH1_Rascal_Quest,"Oddałem Rascalowi 200 bryłek rudy, w zamian zaoferował mi naukę jednej umiejętności myśliwskiej.");
   
      Rascal_Quest = LOG_SUCCESS;
   
   Log_SetTopicStatus   (CH1_Rascal_Quest,LOG_SUCCESS);
   Rascal_Teach_One_Skill = TRUE;
};
 
Spoiler
#include<iostream>
using namespace std;

int main()
{
      cout << "Hello theModders" <<endl;
      return 0;
}

outlander

outlander

Użytkownicy
posty471
Propsy237
ProfesjaReżyser
  • Użytkownicy
A kiedy pojawia się ten dialog o sprzedaniu skór to masz wpis w dzienniku?
Chodzi mi o to, czy jeśli klikniesz to wywołuje się kod stąd?    B_LogEntry (CH1_Rascal_Quest,"Oddałem Rascalowi 200 bryłek rudy, w zamian zaoferował mi naukę jednej umiejętności myśliwskiej.");
   
      Rascal_Quest = LOG_SUCCESS;
   
   Log_SetTopicStatus   (CH1_Rascal_Quest,LOG_SUCCESS);
   Rascal_Teach_One_Skill = TRUE;
 

Draquer

Draquer

Użytkownicy
Problematyk :F
posty360
Propsy23
ProfesjaNierób
  • Użytkownicy
  • Problematyk :F
Spoiler
O kurwa, Outlander :F
Tak, z tym że dialog o sprzedaniu skór u Rascala pojawia się dopiero kiedy sprzedamy je Fiskowi (po sprzedaży zmienna Fisk_SkinsSoldNormalPrice zmienia się na TRUE. )
Najbardziej dziwi mnie to, że wypowiedzi z HALLO mają jak byk przed tekstem DIA_Rascal_Hallo
a z After Trade - Normal Price mają DIA_Rascal_Quest_After_Trade_Normal
dlatego nie rozumiem dlaczego te teksty są zamienione.
Chyba wybrałem sobie za trudne zadanie na pierwszego questa :F
Kod Fiska:
Spoiler
// ***************************************
//            Rascal_Quest
// ***************************************

instance DIA_Stt_311_Fisk_Rascal_Quest (C_INFO)
{
   npc         = Stt_311_Fisk;
   nr         = 998;
   condition   = DIA_Stt_311_Fisk_Rascal_Quest_Condition;
   information   = DIA_Stt_311_Fisk_Rascal_Quest_Info;
   permanent   = 0;
   description = "Rascal prosił mnie, żebym sprzedał Ci te skóry.";
};                       

FUNC int DIA_Stt_311_Fisk_Rascal_Quest_Condition()
{
   if(Rascal_Quest == LOG_RUNNING)
   {
      return 1;
   };
};

FUNC VOID  DIA_Stt_311_Fisk_Rascal_Quest_Info()
{
   AI_Output (other, self,"DIA_Stt_311_Fisk_Rascal_Quest_15_00"); //Rascal prosił mnie, żebym sprzedał Ci te skóry.
   AI_Output (self, other,"DIA_Stt_311_Fisk_Rascal_Quest_04_01"); //No nareszcie! Już myślałem że go coś zeżarło.
   AI_Output (self, other,"DIA_Stt_311_Fisk_Rascal_Quest_04_02"); //Dam Ci za nie 150 bryłek rudy.
   
   Info_ClearChoices(DIA_Stt_311_Fisk_Rascal_Quest);
   Info_AddChoice    (DIA_Stt_311_Fisk_Rascal_Quest, "Oto skóry."                        ,DIA_Stt_311_Fisk_Rascal_Quest_Low);
   Info_AddChoice    (DIA_Stt_311_Fisk_Rascal_Quest, "Rascal mówił o 200 bryłkach!"            ,DIA_Stt_311_Fisk_Rascal_Quest_Normal);   
};

FUNC VOID   DIA_Stt_311_Fisk_Rascal_Quest_Low()
{
   AI_Output (other, self,"DIA_Stt_311_Fisk_Rascal_Quest_Low_15_00"); //Oto skóry.
   B_GiveInvItems (other, self, ItAt_Wolf_01, 10);
   CreateInvItems (self, itminugget, 150);
   B_GiveInvItems(self, other,itminugget, 150);
   
   B_LogEntry (CH1_Rascal_Quest,"Sprzedałem skóry Rascala za 150 bryłek rudy.");
   Fisk_SkinsSoldLowPrice = TRUE;
};

FUNC VOID   DIA_Stt_311_Fisk_Rascal_Quest_Normal()
{
   AI_Output (other, self,"DIA_Stt_311_Fisk_Rascal_Quest_Normal_15_00");  //Rascal mówił o 200 bryłkach!
   AI_Output (self, other,"DIA_Stt_311_Fisk_Rascal_Quest_Normal_04_01");  //A tak, 200 bryłek, moja wina.
   B_GiveInvItems (other, self, ItAt_Wolf_01, 10);
   CreateInvItems (self, itminugget, 200);
   B_GiveInvItems(self, other,itminugget, 200);
   
   B_LogEntry (CH1_Rascal_Quest,"Sprzedałem skóry Rascala za 200 bryłek rudy.");
   Fisk_SkinsSoldNormalPrice = TRUE;
};

 
Spoiler
#include<iostream>
using namespace std;

int main()
{
      cout << "Hello theModders" <<endl;
      return 0;
}

outlander

outlander

Użytkownicy
posty471
Propsy237
ProfesjaReżyser
  • Użytkownicy
To jeszcze raz, powoli, bo nie wiem czy się w 100% zrozumieliśmy.  :F
Jeśli wybierzesz opcję "Kim jesteś" to pojawiają się dialogi z DIA_Rascal_Quest_After_Trade_Normal wraz z wpisem do dziennika "Oddałem Rascalowi 200 bryłek rudy, w zamian zaoferował mi naukę jednej umiejętności myśliwskiej?
Są 2 opcje. Jeśli ten wpis się pojawia, to faktycznie jest tu grubo coś nie tak, bo wychodziło by na to że wywołuje się funkcja z innego dialogu.
Ale jeśli ten wpis się nie pojawia to obstawiam bałagan w pliku OU (oceniam na podstawie twojego poprzedniego wątku) i w takim wypadku zaleciłbym 1) zreparsowanie ponownie skryptów po czym 2) skompilowanie pliku OU Redefixem.
 

Draquer

Draquer

Użytkownicy
Problematyk :F
posty360
Propsy23
ProfesjaNierób
  • Użytkownicy
  • Problematyk :F
No i redefix pomógł.
Dziękuję za pomoc :D

Temat do zamknięcia.

//EDIT: Jednak nie

Jaki warunek dodać, żeby wyświetlić opcję "ukończenia zadania"?
Próbowałem z if((Rascal_Quest == LOG_RUNNING) && (Fisk_SkinsSoldLowPrice = TRUE)), ale nie mogę oddać Rascalowi rudy za sprzedane skóry, nie mam "Sprzedałem Twoje skóry".
 
Spoiler
#include<iostream>
using namespace std;

int main()
{
      cout << "Hello theModders" <<endl;
      return 0;
}

Darkmodders

Darkmodders

DarkModders Team
Mistrz mrocznych sztuk
posty828
Propsy283
ProfesjaProducent
  • DarkModders Team
  • Mistrz mrocznych sztuk
A te dwie zmienne są wywoływane w innym dialogu?
 
Blog grupy DarkModders Team.

http://darkmodders.pl/

Discord: darkmodders

Draquer

Draquer

Użytkownicy
Problematyk :F
posty360
Propsy23
ProfesjaNierób
  • Użytkownicy
  • Problematyk :F
Rascal_Quest jest wywoływana pierwszy raz w dialogu z którym mam problem, a Fisk_SkinsSoldLowPrice w dialogu Fiska, jest ustawiana tam na TRUE.
 
Spoiler
#include<iostream>
using namespace std;

int main()
{
      cout << "Hello theModders" <<endl;
      return 0;
}

Darkmodders

Darkmodders

DarkModders Team
Mistrz mrocznych sztuk
posty828
Propsy283
ProfesjaProducent
  • DarkModders Team
  • Mistrz mrocznych sztuk
Wrzuć tutaj cały kod ze skryptów. Rzuce okiem na to, co tam mogłeś sknocić.
 
Blog grupy DarkModders Team.

http://darkmodders.pl/

Discord: darkmodders

outlander

outlander

Użytkownicy
posty471
Propsy237
ProfesjaReżyser
  • Użytkownicy
 (Fisk_SkinsSoldLowPrice = TRUE))
Błąd składni. Jak przyrównujesz zmienną musisz dać "=="
Powinno być  (Fisk_SkinsSoldLowPrice == TRUE))
Jeszcze jedna uwaga. Zobacz sobie, że w dialogach oddajesz rudę a nie stawiasz warunku czy gracz ją ma. Tym samym ktoś może wydać rudę, którą dostał za skóry a i tak zadanie się zaliczy. Nie wiem też czy oddanie "mniejszej ilości rudy niż się ma" nie doprowadzi też do jakichś bugów. Warto to poprawić.
 

Draquer

Draquer

Użytkownicy
Problematyk :F
posty360
Propsy23
ProfesjaNierób
  • Użytkownicy
  • Problematyk :F
Na takim prostym się wyj*bać XD
Dzięki za uwagę co do oddawania rudy.
 
Spoiler
#include<iostream>
using namespace std;

int main()
{
      cout << "Hello theModders" <<endl;
      return 0;
}


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