Czarny ekran podczas wczytywania nowego świta 2042 85

O temacie

Autor Ravofficial

Zaczęty 22.01.2019 roku

Wyświetleń 2042

Odpowiedzi 85

Splash

Splash

Moderator
posty3920
Propsy3127
ProfesjaNierób
  • Moderator
Zgaduję, że w warunku dałeś jeden znak równości zamiast dwóch

Źle:
if (pierwsza wartość = druga wartość)
Dobrze:
if (pierwsza wartość == druga wartość)
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Rzeczywiście 2 razy == kompletnie o tym zapomniałem

Post połączony: 2019-02-11, 21:05
Wiem, że zalewam pytaniami. Jednak teraz mam taki dziwny problem.
Chodzi o to, że napisałem sobie postać do niej dialogi i wszystko śmigało. Ale gdy teraz chce zmienić trochę fabułę i przerabiam te dialogi to w grze i tak uruchamiają się te stare. No i nie wiem jak to naprawić.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5202
Propsy3849
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Po lewej stronie wyrażenia masz niepoprawny operand. Prawdopodobnie masz niezdefiniowaną zmienną lub coś co nie jest zmienną i nie zwraca wartości. Najlepiej pokaż skrypt.

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Masz tu przykład dialogu w którym to występuje
//*********************************************************************
// Info Hello
//*********************************************************************
INSTANCE DIA_RAV_3001_Guard_Hello   (C_INFO)
{
npc         = RAV_3001_Guard;
nr          = 1;
condition   = DIA_RAV_3001_Guard_Hello_Condition;
information = DIA_RAV_3001_Guard_Hello_Info;
permanent   = False;
description = "Hej Ty !";
Important   = TRUE;
};

FUNC INT DIA_RAV_3001_Guard_Hello_Condition()

{
if (Npc_GetDistToWP (self,"GUA_01") < 200 )
{
return TRUE;
};
};

FUNC VOID DIA_RAV_3001_Guard_Hello_Info()
{
AI_Output (self,other,"DIA_RAV_3001_Guard_Hello_200_00"); //STÓJ !
AI_Output (self,other,"DIA_RAV_3001_Guard_Hello_200_01"); //Kim jesteś i co tutaj robisz ?
AI_Output (other,self,"DIA_RAV_3001_Guard_Hello_15_02"); //Jestem Artur , nie wiem jak się tu znalazłem . Obudziłem się w pobliskim obozowisku.
AI_Output (other,self,"DIA_RAV_3001_Guard_Hello_15_03"); //Jedyne co pamiętam to ,że mój Ojciec wysłał mnie abym pozbierał drewno na opał. I gdy wszedłem do lasu zaatakował mnie ogar.
AI_Output (self,other,"DIA_RAV_3001_Guard_Hello_200_04"); //Hmmmm.... Pewnie znaleźli Cię myśliwi Talbin i Engrom i opatrzyli w swoim obozowisku.
AI_Output (other,self,"DIA_RAV_3001_Guard_Hello_15_05"); //Gdzie oni teraz są , chciałbym im podziękować ?
AI_Output (self,other,"DIA_RAV_3001_Guard_Hello_200_06"); //Jeden z nich został zagryziony przez bestie a drugi uciekł wraz z paladynami.
AI_Output (self,other,"DIA_RAV_3001_Guard_Hello_200_07"); //Dobra , nie ważnę .
AI_Output (self,other,"DIA_RAV_3001_Guard_Hello_200_08"); //Pójdziesz teraz do Robina, to dowódca obozu. Jest w jaskini.
AI_Output (other,self,"DIA_RAV_3001_Guard_Hello_15_09"); //Ale..
AI_Output (self,other,"DIA_RAV_3001_Guard_Hello_200_10"); //Właź !

};
Jednak jeśli dodam całkowicie nową linijkę kodu z dialogiem wszystko jest okej

Post połączony: 2019-02-12, 10:02
Ta linijka jest całkiem nowa i działa poprawnie
Cytuj
AI_Output (self,other,"DIA_RAV_3001_Guard_Hello_200_08"); //Pójdziesz teraz do Robina, to dowódca obozu. Jest w jaskini.
A ta była edytowana i cały czas w grze jest stara wersja
Cytuj
AI_Output (other,self,"DIA_RAV_3001_Guard_Hello_15_03"); //Jedyne co pamiętam to ,że mój Ojciec wysłał mnie abym pozbierał drewno na opał. I gdy wszedłem do lasu zaatakował mnie ogar.
 

Cruc

Cruc

Użytkownicy
posty572
Propsy189
Profesjabrak
  • Użytkownicy
Sprawdź ustawienia programu. Może nie nadpisuje obecnych już kwestii dialogowych.

Ja parsując spacerem w ogóle usuwam poprzednie pliki z dialogami, zanim przygotuję nowe.
 
while (!success) try{...}

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Po kolei robię tak
1.Odpalam Spacer
2.Reparse Script
Jak się zrobi to przechodzę do okna z dialogami:
1.klikam Update
2.z folderu Gothic 2 NK\_Work\data\Scripts\Content\Cutscene usuwam OU.BIN i OU.CSL
3.Jak się zrobi to Save
No i  odpalam grę i sprawdzam z zaznaczonym Skripte Parsen.
 

Splash

Splash

Moderator
posty3920
Propsy3127
ProfesjaNierób
  • Moderator
Lepiej używaj Redefixa, bo robi to szybciej i nie buguje się tak jak Spacer. No i jeśli mnie pamięć nie myli, zmiany w dialogach są wprowadzane po rozpoczęciu nowej gry.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
A masz może link do spolszczonej wersji. Bo niemieckiego to ni w ząb nie potrafię
 

Splash

Splash

Moderator
posty3920
Propsy3127
ProfesjaNierób
  • Moderator
Chyba takowej nie ma. Ale nie potrzebujesz tego raczej, bo w tym poście masz instrukcję:
https://themodders.org/index.php?topic=16628.msg1192785#msg1192785
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Dobra, udało mi się z pomocą tłumacza :D Działa
 

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Mam jeszcze  pytanie. Mam postać która ma wyznaczone WP.
 Chce zrobić zadanie z polowaniem i potrzebuje zrobić coś na zasadzie polowania z Bartokiem.
1.Czyli Gadam z postacią o polowaniu
2.Zmieniają się jej WP  i idziemy na polowanie
3.Po dojściu do wyznaczonego punktu wracają stare WP
Problemem nie jest ustawienie WP czy coś tylko jak zrobić, że po rozmowie zmieniają się WP a potem wracają z powrotem te stare ?

Post połączony: 2019-02-15, 22:06
A i czy to
B_TeachThiefTalent (self, other, NPC_TALENT_PICKLOCK)
odpowiada za naukę włamywania się  naszego npc ?

 

Cruc

Cruc

Użytkownicy
posty572
Propsy189
Profesjabrak
  • Użytkownicy
1. W dialogu dajesz B_StartOtherRoutine (npc,"NazwaRutyny");

2. Tak.
 
while (!success) try{...}

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Wiesz, może jak zrobić aby nie było progów punktowych za naukę, cały czas 1 za 1, 5 za 5 itd ?

 

Cruc

Cruc

Użytkownicy
posty572
Propsy189
Profesjabrak
  • Użytkownicy
Będzie Cię interesować funkcja B_GetLearnCostTalent.
 
while (!success) try{...}

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Robiłem to na podstawie dialogu cavalorna
//*********************************************************************
// Info luk
//*********************************************************************
var int RAV_3004_Marcus_Merke_Bow;
//---------------------------------------------------------------------
INSTANCE DIA_RAV_3004_Marcus_luk   (C_INFO)
{
npc         = RAV_3004_Marcus;
nr          = 997;
condition   = DIA_RAV_3004_Marcus_luk_Condition;
information = DIA_RAV_3004_Marcus_luk_Info;
permanent   = False;
description = "Pokaż mi jak używać łuku.";
};

FUNC INT DIA_RAV_3004_Marcus_luk_Condition()
{
if (Npc_KnowsInfo (other, DIA_RAV_3004_Marcus_Nauka))
{
return TRUE;
};
};

func VOID DIA_RAV_3004_Marcus_luk_Choices ()
{
Info_ClearChoices (DIA_RAV_3004_Marcus_luk);
Info_AddChoice (DIA_RAV_3004_Marcus_luk, DIALOG_BACK);  // 179 linijka

Info_AddChoice (DIA_RAV_3004_Marcus_luk, B_BuildLearnString(PRINT_LearnBow1, B_GetLearnCostTalent(other, NPC_TALENT_BOW, 1)) ,DIA_RAV_3004_Marcus_luk_Bow_1);
Info_AddChoice (DIA_RAV_3004_Marcus_luk, B_BuildLearnString(PRINT_LearnBow5, B_GetLearnCostTalent(other, NPC_TALENT_BOW, 1)*5) ,DIA_RAV_3004_Marcus_luk_Bow_5);


};
func void DIA_RAV_3004_Marcus_luk_Info ()
{
AI_Output (other, self, "DIA_RAV_3004_Marcus_luk_15_00"); //Pokaż mi jak używać łuku.
AI_Output (self, other, "DIA_RAV_3004_Marcus_luk_08_01"); //Pewnie. Co chcesz wiedzieć?

RAV_3004_Marcus_Merke_Bow = other.HitChance[NPC_TALENT_BOW];

DIA_RAV_3004_Marcus_luk_Choices ();
};


FUNC VOID DIA_RAV_3004_Marcus_luk_BOW_1 ()
{
B_TeachFightTalentPercent (self, other, NPC_TALENT_BOW, 1, 90);

DIA_RAV_3004_Marcus_luk_Choices ();
};

FUNC VOID DIA_RAV_3004_Marcus_luk_BOW_5 ()
{
B_TeachFightTalentPercent (self, other, NPC_TALENT_BOW, 5, 90);

DIA_RAV_3004_Marcus_luk_Choices ();
};
Jednak coś jest tutaj źle ponieważ w 179 linijce oczekuje " , " ale tam jest raczej okej.
 

Cruc

Cruc

Użytkownicy
posty572
Propsy189
Profesjabrak
  • Użytkownicy
Jak parser/kompilator się czepia, to w 90% ma rację. Tylko, że w przypadku dedalusowego parsera potrafi mieć bardzo nieintuicyjny zwrot. A tym razem wskazuje akurat adekwatną linijkę :P

Do rzeczy. Funkcja Info_AddChoice przyjmuje 3 parametry, a Ty podałeś jedynie dwa.

Od razu podpowiem Ci, że do pierwszej opcji wyboru potrzebujesz jeszcze czegoś takiego
func VOID DIA_RAV_3004_Marcus_luk_Back ()
{
Info_ClearChoices (DIA_RAV_3004_Marcus_luk);
};
W przeciwnym wypadku opcje wyboru będą się mieszały z opcjami dialogowymi.
 
while (!success) try{...}

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Dobra tylko mam kolejne pytanie. Co trzeba dopisać, żeby na początku sprawdzało czy mamy punkty nauki.
Bo wygląda to teraz tak, że klikam naucz mnie otwierania zamków, płacę mu hajs za naukę , on mówi swój dialog i na końcu dodaje brak ci doświadczenia. A hajsu już nie ma.
//*********************************************************************
// Info zlo
//*********************************************************************
INSTANCE DIA_RAV_3004_Marcus_zlo   (C_INFO)
{
npc         = RAV_3004_Marcus;
nr          = 998;
condition   = DIA_RAV_3004_Marcus_zlo_Condition;
information = DIA_RAV_3004_Marcus_zlo_Info;
permanent   = True;
description = "Naucz mnie otwierać zamki!";
};

FUNC INT DIA_RAV_3004_Marcus_zlo_Condition()
{
if (Npc_GetTalentSkill  (other, NPC_TALENT_PICKLOCK) == FALSE) && (Npc_KnowsInfo (other, DIA_RAV_3004_Marcus_Nauka))
{
return TRUE;
};
};

FUNC VOID DIA_RAV_3004_Marcus_zlo_Info()
{
AI_Output (other,self ,"DIA_RAV_3004_Marcus_zlo_15_00"); //Naucz mnie otwierać zamki!
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_01"); //Najpierw złoto.
if (npc_hasitems  (other, itmi_gold) >= 200)
{
AI_Output (other,self ,"DIA_RAV_3004_Marcus_zlo_15_02"); //Masz tutaj 200 sztuk złota.
B_giveinvitems(other, self,  itmi_gold, 200);
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_03"); //Dobrze, a więc słuchaj.
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_04"); //Klęcząc przy zamku, należy łagodnie obrócić wytrych, w lewo lub w prawo.
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_05"); //Jeśli obrócisz go zbyt szybko lub zbyt mocno - złamie się.
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_06"); //Jednak z czasem nabierzesz wprawy w posługiwaniu się tym narzędziem.
B_TeachThiefTalent (self, other, NPC_TALENT_PICKLOCK);
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_07"); //Potrzeba do tego wiele uczucia i intuicji. No, i kilka dobrych wytrychów.
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_08"); //Pamiętaj jednak że, niektóre skrzynie są jednak zabezpieczone zamkami, dającymi się otworzyć tylko przez użycie odpowiedniego klucza. Wtedy nawet nie masz co próbować.
}
else
{
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_02"); //Próbujesz mnie oszukać chłoptasiu. Spadaj stąd !
AI_StopProcessInfos(self);
};
 

Cruc

Cruc

Użytkownicy
posty572
Propsy189
Profesjabrak
  • Użytkownicy
W opisie słownym tak wygląda to co napisałeś:

1. jakiś dialog
2. sprawdź czy hero ma co najmniej 200 złota
3. oddaj 200 złota
4. S P R Ó B U J nauczyć bohatera włamywania.

B_TeachThiefTalent przy okazji zwraca informację o tym czy nauka się powiodła, czy nie. Wobec tego Twój kod powinien wyglądać mniej więcej tak:

FUNC VOID DIA_RAV_3004_Marcus_zlo_Info()
{
AI_Output (other,self ,"DIA_RAV_3004_Marcus_zlo_15_00"); //Naucz mnie otwierać zamki!
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_01"); //Najpierw złoto.
if (npc_hasitems  (other, itmi_gold) >= 200)
{
if B_TeachThiefTalent (self, other, NPC_TALENT_PICKLOCK)
{
AI_Output (other,self ,"DIA_RAV_3004_Marcus_zlo_15_02"); //Masz tutaj 200 sztuk złota.
B_giveinvitems(other, self,  itmi_gold, 200);
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_03"); //Dobrze, a więc słuchaj.
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_04"); //Klęcząc przy zamku, należy łagodnie obrócić wytrych, w lewo lub w prawo.
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_05"); //Jeśli obrócisz go zbyt szybko lub zbyt mocno - złamie się.
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_06"); //Jednak z czasem nabierzesz wprawy w posługiwaniu się tym narzędziem.

AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_07"); //Potrzeba do tego wiele uczucia i intuicji. No, i kilka dobrych wytrychów.
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_08"); //Pamiętaj jednak że, niektóre skrzynie są jednak zabezpieczone zamkami, dającymi się otworzyć tylko przez użycie odpowiedniego klucza. Wtedy nawet nie masz co próbować.
};
}
else
{
AI_Output (self ,other,"DIA_RAV_3004_Marcus_zlo_54_02"); //Próbujesz mnie oszukać chłoptasiu. Spadaj stąd !
AI_StopProcessInfos(self);
};

B_TeachThiefTalent sprawdza również czy posiadasz odpowiednią liczbę punktów nauki, i gdy nie ma ich wystarczająco, sprawia, że postać wypowiada odpowiednią kwestię, zatem nie potrzeba dodatkowych elsów.
 
while (!success) try{...}

Ravofficial

Ravofficial

Użytkownicy
posty61
Profesjabrak
  • Użytkownicy
Dodałem mojej postaci tą funkcje
FUNC VOID Rtn_Guide_3004 ()
{
TA_Guide_Player         (08,00,23,00,"POL_15");
TA_Guide_Player (23,00,08,00,"POL_15");
};

Chodzi tu o polowanie. Jednak gdy dojdzie do 1 potwora i go zabije, to się zatrzymuje i się już nie rusza.Dopiero wcielenie się w niego i odsunięcie na pewną odległość a następnie wcielenie się znów w bohatera to naprawia. Nie działa wczytywanie. Tak WP są połączone
 

Cruc

Cruc

Użytkownicy
posty572
Propsy189
Profesjabrak
  • Użytkownicy
Nie grzebałeś w rutynie? Nie ma powodu, dla którego powinien się tak zacinać, nawet jak na standardy gothica.
 
while (!success) try{...}


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