Hej, mam dziwne problemy z którymi nie mogę sobie poradzić ze skryptami w G2NK..
1. Brak polskich znaków w dialogach (notepad++).
- Wklepuje jakiś tekst z polskimi znakami (polskie znaki działają w edytorze)
- Format/Konwertuj na format ANSI (polskie znaki znikają)
- Reparsuje skrypty w Spacerze (upgrade, save)
- W grze tekst jest bez polskich znaków.
2. Dziwne zachowanie z wyborem dialogu.
*Item jest przykładowy
FUNC VOID DIA_VLK_9998_SC_HELLO_Info(){
if( Npc_HasItems (other, ItAt_Addon_Heart) >= 1 ) {
Info_AddChoice (DIA_VLK_9998_SC_HELLO, "Tak, prosze" , DIA_VLK_9998_SC_HELLO_YesIHave );
} else {
Info_AddChoice (DIA_VLK_9998_SC_HELLO, "Nie mam serca", DIA_VLK_9998_SC_HELLO_iDontHave );
Info_ClearChoices (DIA_VLK_9998_SC_HELLO);
};
};
Według mnie powinno to działać tak, że jeżeli mam ten określony item to odpali się funkcja ...HELLO_YesIHave a jeśli nie mam tego itemu odpali się funkcja ...HELLO_iDontHave.
Działa prawidłowo jeżeli mam ten item ale jeżeli nie mam go to jakby pomijał funkcję iDontHave i uruchamiał tylko Info_ClearChoices
*Funkcja iDontHave to sam tekst, brak jakichkolwiek warunków.
3. Kolejny problem z dialogiem
func void DIA_9999_AR_Amulet_Info (){
AI_Output (self, other, "DIA_9999_AR_Amulet_26_00"); // Bla, bla
if( Npc_HasItems (other, ITAM_STRG_01) >= 1 ) {
AI_Output (self, other,"DIA_9999_Archibald_Amulet_26_01"); //Masz go
B_giveinvitems ( other, self, ITAM_STRG_01, 1);
B_LogEntry( TOPIC_SC, "Oddałem go");
Log_SetTopicStatus(TOPIC_SC, LOG_SUCCESS);
} else {
AI_Output (self, other,"DIA_9999_AR_Amulet_26_01"); //Nie masz go
B_LogEntry( TOPIC_Scenarzysta, "Nie miałem go");
Log_SetTopicStatus(TOPIC_Scenarzysta, LOG_SUCCESS);
};
};
Tym razem mając item if odpala się dobrze tyle, że pomija tekst NPC'a, oddaję mu item, zadanie zakończone jest sukcesem i odpala się tekst z elsa...
4. Mam przywołać swojego potworka i przy jego pomocy ubić konkretnego potworka, który ma konkretny przedmiot.
Po ubiciu potworka mam dostać wpis do dziennika oraz gdy zdobędę ten przedmiot kolejny wpis.
Kod sprawdzający żywotność potworka dodałem do ZS_Dead:
if( Npc_IsDead( ktos_tam ) && isDead == FALSE){
Log_CreateTopic( TOPIC_SC, LOG_MISSION );
Log_SetTopicStatus( TOPIC_ScC, LOG_RUNNING );
B_LogEntry( TOPIC_Scenarzysta, "Zabity" );
isDead = TRUE;
};
Kod do sprawdzania czy dorwałem item w startup.d
func void INIT_GLOBAL()
{
// wird fuer jede Welt aufgerufen (vor INIT_<LevelName>)
Game_InitGerman();
LeGo_Init (LeGo_All);
if (!FF_Active (heart) && iHave == FALSE ) {
FF_ApplyOnce (heart);
};
};
Wywoływana funkcja heart
func int heart()
{
if( Npc_HasItems (other, ItAt_Addon_Heart) ) {
iHave = TRUE;
} else {
iHave = FALSE;
return FALSE;
};
if( iHave == TRUE ) {
Log_CreateTopic(TOPIC_SC, LOG_MISSION);
Log_SetTopicStatus(TOPIC_SC, LOG_RUNNING);
B_LogEntry( TOPIC_SC, "Mam serce");
return TRUE;
};
};
(Funkcja troszkę pokombinowana bo już testowałem przeróżne warunki oraz jakiś sposób na zatrzymanie wywoływania tej funkcji po zdobyciu mojego fanta aby odciążyć system)
I gdy np odpalę mojego pomagiera to od razu po jego pierwszym ataku dostaję wpisy, że tamten jest martwy i mam z niego item...