[G2 NK]Podwójna opcja "koniec" przy wydobyciu rudy 4267 10

O temacie

Autor Graveir

Zaczęty 10.03.2015 roku

Wyświetleń 4267

Odpowiedzi 10

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Zasadniczo nazwa tematu opisuje problem, ale napiszę na wszelki wypadek. Otóż jakiś czas temu postanowiłem sobie pododawać bajery do Gothica typu wydobywanie rudy, nowe wyświetlanie umiejętności w menu statusu itd. O ile wyświetlanie umiejętności w menu statystyk działa bez problemu, to w momencie, kiedy zacznę interakcję z bryłą rudy(niezależnie od miejsca, w którym ona jest wstawiona)to mam razem 4 opcje do wyboru. Poniżej screen, jak to wygląda w grze:
http://oi61.tinypic.com/2pyw0gy.jpg
Dodam, że opcja "konieec" pochodzi z pliku monologu wydobywania rudy, natomiast ta druga nie mam pojęcia skąd się wzięła. Dodatkowo, jeśli wybiorę drugą opcję dialogową nie mogę gadać z żadną postacią(tak jakby cały czas był dialog z bryłą rudy), natomiast po wyborze opcji "konieec" wszystko działa normalnie. Szukałem jakiegoś tutoriala o naprawie takiego błędu, ale albo źle wpisywałem albo jakoś inaczej był opisany tutorial o tym. Poniżej skrypt monologu(daję w spoilerze, bo trochę długi):

FUNC INT B_OreMob_Mining()
{

if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE2_GRIMES") && (OreMining_01_Amount_MAX > OreMining_01_Amount)
{
OreMining_01_Amount = (OreMining_01_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE2_STRF") && (OreMining_02_Amount_MAX > OreMining_02_Amount)
{
OreMining_02_Amount = (OreMining_02_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE2_ORE") && (OreMining_03_Amount_MAX > OreMining_03_Amount)
{
OreMining_03_Amount = (OreMining_03_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE2_ORE1") && (OreMining_04_Amount_MAX > OreMining_04_Amount)
{
OreMining_04_Amount = (OreMining_04_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE1_ORE") && (OreMining_05_Amount_MAX > OreMining_05_Amount)
{
OreMining_05_Amount = (OreMining_05_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE1_ORE1") && (OreMining_06_Amount_MAX > OreMining_06_Amount)
{
OreMining_06_Amount = (OreMining_06_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE3_ORE") && (OreMining_07_Amount_MAX > OreMining_07_Amount)
{
OreMining_07_Amount = (OreMining_07_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE3_ORE1") && (OreMining_08_Amount_MAX > OreMining_08_Amount)
{
OreMining_08_Amount = (OreMining_08_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE3_ORE2") && (OreMining_09_Amount_MAX > OreMining_09_Amount)
{
OreMining_09_Amount = (OreMining_09_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE3_ORE3") && (OreMining_10_Amount_MAX > OreMining_10_Amount)
{
OreMining_10_Amount = (OreMining_10_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE4_ORE") && (OreMining_11_Amount_MAX > OreMining_11_Amount)
{
OreMining_11_Amount = (OreMining_11_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE4_ORE1") && (OreMining_12_Amount_MAX > OreMining_12_Amount)
{
OreMining_12_Amount = (OreMining_12_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE4_ORE2") && (OreMining_13_Amount_MAX > OreMining_13_Amount)
{
OreMining_13_Amount = (OreMining_13_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE4_ORE3") && (OreMining_14_Amount_MAX > OreMining_14_Amount)
{
OreMining_14_Amount = (OreMining_14_Amount +1);
return TRUE;
}
else if Hlp_StrCmp (Npc_GetNearestWP (other), "OW_MINE4_ORE4") && (OreMining_15_Amount_MAX > OreMining_15_Amount)
{
OreMining_15_Amount = (OreMining_15_Amount +1);
return TRUE;
};
//sonst nicht
// return FALSE;
};

FUNC VOID OreMining_S1 ()
{
var C_NPC her; her = Hlp_GetNpc(PC_Hero);

if  (Hlp_GetInstanceID(self)==Hlp_GetInstanceID(her))
{
self.aivar[AIV_INVINCIBLE]=TRUE;
PLAYER_MOBSI_PRODUCTION = MOBSI_OREMINNING;
Ai_ProcessInfos (her);
};
};
//*******************************************************
// Goldhacken Dialog abbrechen
//*******************************************************
INSTANCE PC_OreMining_End (C_Info)
{
npc = PC_Hero;
nr = 999;
condition = PC_OreMining_End_Condition;
information = PC_OreMining_End_Info;
permanent = TRUE;
description = "Konieec";
};

FUNC INT PC_OreMining_End_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_OREMINNING)
{
return TRUE;
};
};

FUNC VOID PC_OreMining_End_Info()
{
BlueOre_Count = 0;

B_ENDPRODUCTIONDIALOG ();
};

//*******************************************************
// Goldhacken
//*******************************************************
INSTANCE PC_OreMine_Addon_Hour (C_Info)
{
npc = PC_Hero;
nr = 2;
condition = PC_OreMine_Addon_Hour_Condition;
information = PC_OreMine_Addon_Hour_Info;
permanent = TRUE;
description = "Odłup trochę.";
};

FUNC INT PC_OreMine_Addon_Hour_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_OREMINNING)
{
return TRUE;
};
};

var int BlueCounter;
FUNC VOID PC_OreMine_Addon_Hour_Info()
{

//---------- Learning by doing  10 PKT---------
Ruda_doing = (Ruda_doing +1);

if (Ruda_doing == 10)
{
B_Upgrade_Hero_OreHackChance (2);
}
else if (Ruda_doing == 15)
{
B_Upgrade_Hero_OreHackChance (3);
}
else if (Ruda_doing == 20)
{
B_Upgrade_Hero_OreHackChance (5);
};

//----- EIGENTLICHES HACKEN -------------

if (B_OreMob_Mining() == TRUE)
{
//----Ore verteilen-----------------------

if (Hero_BlueHackChance >= 100)
{
CreateInvItems (hero, ItMi_Nugget, 3);
PrintScreen ("Odpadły 3 bryłki rudy!", -1, -1, FONT_ScreenSmall, 2);
}
else if (Hero_BlueHackChance >= 50)
&& (Hero_BlueHackChance < 100)
{
CreateInvItems (hero, ItMi_Nugget, 2);
PrintScreen ("Odpadły 2 bryłki rudy!", -1, -1, FONT_ScreenSmall, 2);
}
else
{
CreateInvItems (hero, ItMi_Nugget, 1);
PrintScreen ("Odpadła 1 bryłka rudy!", -1, -1, FONT_ScreenSmall, 2);
};
}
else
{
PrintScreen ("Nic nie zostało.", -1, -1, FONT_ScreenSmall, 2);
B_ENDPRODUCTIONDIALOG ();
};
};
//*******************************************************
// Orehacken Chance
//*******************************************************
INSTANCE PC_Orehack_Addon_Chance (C_Info)
{
npc = PC_Hero;
nr = 3;
condition = PC_Orehack_Addon_Chance_Condition;
information = PC_Orehack_Addon_Chance_Info;
permanent = TRUE;
description = "(Ocena zdolności)";
};

FUNC INT PC_Orehack_Addon_Chance_Condition ()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_OREMINNING)
{
return TRUE;
};
};
FUNC VOID PC_Orehack_Addon_Chance_Info()
{
var string ConcatText;


if (Hero_BlueHackChance < 20)
{
ConcatText = ConcatStrings ("nieopierzony żółtodziób (", IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 40)
{
ConcatText = ConcatStrings ("przeciętny kopacz (" , IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 55)
{
ConcatText = ConcatStrings ("doświadczony kopacz (", IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 75)
{
ConcatText = ConcatStrings ("urodzony kopacz ( ", IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 90)
{
ConcatText = ConcatStrings ("piekielnie dobry kopacz ( ", IntToString (Hero_BlueHackChance));
}
else if (Hero_BlueHackChance < 98)
{
ConcatText = ConcatStrings ("mistrz kopania ( ", IntToString (Hero_BlueHackChance));
}
else
{
ConcatText = ConcatStrings ("guru kopaczy ( ", IntToString (Hero_BlueHackChance));
};

ConcatText = ConcatStrings (concatText, " procent)");

PrintScreen (concatText, -1, -1, FONT_ScreenSmall,2);
};
[/spoiler]
Jeśli trzeba będzie jeszcze coś dodać to napiszcie, a wrzucę potrzebne informacje.
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Zmień swój description "konieec" na DIALOG_ENDE. Powinno zadziałać.

Gothic sam z siebie przypisuje do dialogów i monologów opcję "KONIEC", jeśli nie ma w nich opcji z znakami, jakie są w zmiennej "DIALOG_ENDE". Czyli, jeśli DIALOG_ENDE = "Zupa", to jeśli w dialogu nie będzie opcji z description "Zupa", "zUpa", "ZUPA", "ZUpa" itp., sam ją doda i będzie kończyła dialog/monolog.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Zmieniłem i tak mam 2 opcje koniec do wyboru.
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
B_AssignAmbientInfo - w tym pliku takie rzeczy są opisane.
No i spróbuj po prostu skasować swoją opcję Koniec i sprawdź jak się na to gothic zachowa.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
@Sawik Po skasowaniu opcji koniec z monologu pozostaje jedna opcja koniec, ale przy niej nie mogę rozmawiać z żadną z postaci.
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Wypierdziel ten skrypt, skompiluj skrypty i dialogi i dodaj go jeszcze raz, albo po prostu wywal pliki OU i skompiluj jeszcze raz.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Sryncu

Sryncu

Użytkownicy
posty90
Propsy18
Profesjabrak
  • Użytkownicy
Hmm. Miałem podobny problem, ale to z NPC. Tzn. jeden NPC miał dwa dialogi Koniec. Działo się tak ponieważ drugi NPC miał w skrypcie dialogu Koniec podany kod pierwszego NPC . Przez co pierwszy miał dwa dialogi Koniec, a drugi nie miał w cale. Nie wiem czy u ciebie jest podobnie, ale może gdzieś w skryptach jest coś co nakazuje kończyć dialog tej właśnie interakcji z rudą.
 

kaczka

kaczka

RaveN Studio
Definitely not kaczka!
posty2280
Propsy2392
NagrodyV
ProfesjaLvl designer
  • RaveN Studio
  • Definitely not kaczka!
Działo się tak ponieważ drugi NPC miał w skrypcie dialogu Koniec podany kod pierwszego NPC
I nie wyjebywalo ci błędów?  o_0
 

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Nie i tak jest dobrze.
W swoim modzie pisałem wszystkie dialogi odnośnie questa w jednym pliku, jak chciałem coś zmienić w zadaniu - miałem wszystko elegancko pod ręką i pliki nie miały pierdyliona linijek. 
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Dobra, zapomniałem napisać - temat do zamknięcia. Brak warunku w innym skrypcie powodował problem.
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti


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