respawn potworów 11054 12

O temacie

Autor pioziol

Zaczęty 10.12.2009 roku

Wyświetleń 11054

Odpowiedzi 12

pioziol

pioziol

Użytkownicy
posty1
  • Użytkownicy

pioziol

respawn potworów
2009-12-10, 16:55(Ostatnia zmiana: 2009-12-10, 16:56)
Hej! Mam problem, a dokładnie to nie wiem jak wprowadzić respawn potworów w gothic 1
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

respawn potworów
#1 2009-12-10, 17:28(Ostatnia zmiana: 2009-12-10, 17:31)
Funkcja skopiowana prosto z listy na forum:
func void Wld_InsertNpcAndRespawn (VAR INT instance, VAR STRING spawnPoint, VAR FLOAT spawnDelay)Naprawdę tak trudno samemu poszukać?

Ewentualnie można też stworzyć własną, alternatywną: za pomocą skryptu wywoływanego co określony okres czasu przez ScriptTrigger sprawdzałoby się czy dane potwory zostały zabite i wtedy by się je zastępowało nowymi, można by wówczas wprowadzić losowanie gatunku potwora, stopniowo zwiększać jego poziom i dodawać w tym miejscu jakieś itemy. Jednak to już jest sprawa o wiele trudniejsza.

Necro59

Necro59

Użytkownicy
Nekromanta
posty1002
Propsy98
ProfesjaGracz
  • Użytkownicy
  • Nekromanta
Aha, a jak dodać to do gry żeby działało? Tzw spie 4 dni i respawn.
 
"Jestem NAJLEPSZYM Nekromantą na świecie, jedynym władcą podziemi, ożywieńców, i demonów... Dziwko!"

PC, na którym siedzę:

Karta Graficzna: GeForce GTX 550Ti
Procesor: Intel(R) Core(TM) Quad CPU Q9300 @ 2.50GHz
Pamięć: 3,00GB pamięci RAM (użyteczne 3,00 GB)
System Operacyjny: Windows 7 Ultimate.

Wicon

Wicon

Użytkownicy
posty147
Propsy5
  • Użytkownicy

Wicon

respawn potworów
#3 2012-05-29, 20:17(Ostatnia zmiana: 2012-05-29, 20:36)
Mój sposób: oryginalny i myslę, że całkiem niezły.

Zrób sobie kilku npc i postaw ich w najważniejszych miejscach na mapie. W pliku startup są wszystkie przywołane potwory do gry. Ich instance musisz zmienić tak, aby każdy potwór miał swój własny instance, np. wolf1, wolf2 itd.
Potem w postaci którą stworzyłeś dodajesz dialog respawnu potworów i dodajesz coś takiego:

if (Npc_IsDead (Instance Npca))
{
Wld_InsertNpc (Instance Npca , WP w którym ma się pojawić); //Instance Npca musi być takie samo jak w warunku if, a WP taki sam jak tego potwora w startup.
};

Przykład:
W startup.d masz taką linijkę:
Wld_InsertNpc (Wolf, NW_RESP_WOLF_01);Zmieniasz tylko instance wilka na:
Wld_InsertNpc (Wolf1, NW_RESP_WOLF_01);
Należy też stworzyć wilka o podanym instance.

Potem w dialogu respawnu dodajesz:
if (Npc_IsDead (Wolf1))
{
Wld_InsertNpc (Wolf1, NW_RESP_WOLF_01);
};

Oznacza to, że jeżeli npc Wolf1 został zabity, to npc Wolf1 (czyli ten sam) zostanie przywołany w podanym WP czyli: NW_RESP_WOLF_01.  Ważne jest aby WP był taki sam jak w Startup. Jak dasz inny to zrespi się w innym miejscu.


Roboty przy tym jest dużo, ale rozwiązuje sprawę respawnu. Dajesz taki dialog kilku postacią i jest git.

EDIT: Działa w G2 nie wiem jak jest w G1, ale podejrzewam, że bez różnicy.

Aha, a jak dodać to do gry żeby działało? Tzw spie 4 dni i respawn.

Tak po za tym robisz to co ja, gdy próbowałem dodać nowy atrybut. Masz już napisane, a dalej się pytasz.
 

Necro59

Necro59

Użytkownicy
Nekromanta
posty1002
Propsy98
ProfesjaGracz
  • Użytkownicy
  • Nekromanta
Chodzi mi do jakiego pliku dodać tą linijkę.
 
"Jestem NAJLEPSZYM Nekromantą na świecie, jedynym władcą podziemi, ożywieńców, i demonów... Dziwko!"

PC, na którym siedzę:

Karta Graficzna: GeForce GTX 550Ti
Procesor: Intel(R) Core(TM) Quad CPU Q9300 @ 2.50GHz
Pamięć: 3,00GB pamięci RAM (użyteczne 3,00 GB)
System Operacyjny: Windows 7 Ultimate.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

respawn potworów
#5 2012-05-29, 20:54(Ostatnia zmiana: 2012-05-29, 23:11)
Oho, wykopaliska.

@Wicon: Dialog respawnu? :|

@Necro59: możesz użyć funkcji zaproponowanej przezemnie w 2009 (kilka postów wyżej) (zamiast zwykłej Wld_InsertNPC) - niestety być może jest w jakiś sposób zbugowana, musiałbyś ją przetestować. Jeśli chcesz skorzystać z tego co napisał Wicon, zamiast w dialogu, proponuję wrzucić to w \_Work\Data\Scripts\Content\AI\B_Human\B_RefreshArmor.d - będzie się odpalało każdej doby o północy (ale jeśli gracz pójdzie spać, wtedy nie, więc jeśli to też ma się liczyć, będziesz musiał także dodać w monologu sleepabit.d).

Zucklov

Zucklov

Quest Pack Team
Sztywniutko
posty1220
Propsy1241
ProfesjaSkrypter
  • Quest Pack Team
  • Sztywniutko
Wicon. Sposób jest błędny, ponieważ od razu po zabici NPC pojawi się kolejny.
Najłatwiej jest zrobić to tick_tockiem.
http://themodders.org/index.php?/topic/89-wywolywanie-skryptu-co-xx-czyli-wywolanie-skryptu-co-18-sekundy/
Tutek jak zrobić Tick_Tocka.
A w funkcji dajesz
func void tick_tock()
{
Wld_InsertNpc (INSTANCE_POTWORA, WAYPOINT);
};

Oczywiście takie jedno Wld_InsertNpc odpowiada za 1 potwora, więc jak chcesz np. 3 potwory to musisz dać trzy takie linijki.
Żeby Gothic nie lagował, musisz też te potwory regularnie eksterminować.
I jeszcze jedno: jak chcesz respawn co 4 dni, to musisz w fireDelaySec w tick_tocku Spacerowym dać liczbę sekund odpowiadających za 4 dni Gothicowe.
Jeśli się nie mylę, jedna Gothicowa godzina to 4 minuty, więc:
4*24 = 96 - jeden dzień Gothicowy (min)
4*96 = 384 - 4 dni Gothicowe (min)
384*60 = 23040 - 4 dni Gothicowe (sek)
Czyli musisz tam wpisać 23040.
 
Lieb Vaterland magst ruhig sein

Necro59

Necro59

Użytkownicy
Nekromanta
posty1002
Propsy98
ProfesjaGracz
  • Użytkownicy
  • Nekromanta
Ja bym wolał taki respawn jak w MT 1 czy 2 potworki nie lagujące gry. Co 2 dni dopoki sie nie zabije ich nie rodza sie nowe kolo nich
 
"Jestem NAJLEPSZYM Nekromantą na świecie, jedynym władcą podziemi, ożywieńców, i demonów... Dziwko!"

PC, na którym siedzę:

Karta Graficzna: GeForce GTX 550Ti
Procesor: Intel(R) Core(TM) Quad CPU Q9300 @ 2.50GHz
Pamięć: 3,00GB pamięci RAM (użyteczne 3,00 GB)
System Operacyjny: Windows 7 Ultimate.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.

Bogdan Zwei

respawn potworów
#8 2012-05-29, 21:46(Ostatnia zmiana: 2012-05-29, 21:46)
Wicon. Sposób jest błędny, ponieważ od razu po zabici NPC pojawi się kolejny.
Najłatwiej jest zrobić to tick_tockiem.
http://themodders.org/index.php?/topic/89-wywolywanie-skryptu-co-xx-czyli-wywolanie-skryptu-co-18-sekundy/
Tutek jak zrobić Tick_Tocka.
A w funkcji dajesz
func void tick_tock()
{
Wld_InsertNpc (INSTANCE_POTWORA, WAYPOINT);
};

Oczywiście takie jedno Wld_InsertNpc odpowiada za 1 potwora, więc jak chcesz np. 3 potwory to musisz dać trzy takie linijki.
Żeby Gothic nie lagował, musisz też te potwory regularnie eksterminować.
I jeszcze jedno: jak chcesz respawn co 4 dni, to musisz w fireDelaySec w tick_tocku Spacerowym dać liczbę sekund odpowiadających za 4 dni Gothicowe.
Jeśli się nie mylę, jedna Gothicowa godzina to 4 minuty, więc:
4*24 = 96 - jeden dzień Gothicowy (min)
4*96 = 384 - 4 dni Gothicowe (min)
384*60 = 23040 - 4 dni Gothicowe (sek)
Czyli musisz tam wpisać 23040.

A nie lepiej Tick_Tock co np. 10 sekund i Wld_GetDay() >=4(czy jakoś tak) ?
 
: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.

Wicon

Wicon

Użytkownicy
posty147
Propsy5
  • Użytkownicy
Nie, potwór nie pojawia się odrazu po zabiciu, tylko po tym, jak włącze dialog, w którym są wszystkie linijki. W grze jest wilk o jednym instance, czyli : Wolf. Wszędzie gdzie jest przywołany wilk, jest:
Wld_InsertNpc (Wolf, WP);
Trzeba dodać nowego wilka o instance:
Wolf1, potem Wolf2 itd.

Sprawdziłem to, u mnie działa. Zrobiłem tak ze wszystkimi światami. Czy laguje to nie wiem, bo zabiłem tylko kilka potworków, żeby sprawdzić czy działa.

I działa! Przywołuje tylko te potwory, które są zabite.
DAJCIE PROPSA ZA ORYGINALNOŚĆ!! ;p

Jeśli chcesz, aby potwór pojawiał się co 1 czy 2 dni, albo 4 wystarczy wpisać w warunku komende " jeśli minęło 24h" lub "48h" ile będziesz chciał. Oczywiście sposób avallacha jest szybszy od mojego.
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

respawn potworów
#10 2012-05-30, 12:26(Ostatnia zmiana: 2012-05-30, 12:27)
Jeśli się nie mylę, jedna Gothicowa godzina to 4 minuty, więc:
4*24 = 96 - jeden dzień Gothicowy (min)
4*96 = 384 - 4 dni Gothicowe (min)
384*60 = 23040 - 4 dni Gothicowe (sek)
Czyli musisz tam wpisać 23040.
A co jeśli jakiś no nie wiem "dziwny" gracz pójdzie spać. Wtedy twoją metodą się nie sprawdza a respawn można przedłużyć do 6-7 dni.

I nie jestem pewny czy wartość czekania się nie skasuje przy wczytywaniu zapisów.

Zucklov

Zucklov

Quest Pack Team
Sztywniutko
posty1220
Propsy1241
ProfesjaSkrypter
  • Quest Pack Team
  • Sztywniutko
A co jeśli jakiś no nie wiem "dziwny" gracz pójdzie spać. Wtedy twoją metodą się nie sprawdza a respawn można przedłużyć do 6-7 dni.

I nie jestem pewny czy wartość czekania się nie skasuje przy wczytywaniu zapisów.

Nie mam zielonego pojęcia. Ja tak zrobiłem i mi działa bez zarzutów.
 
Lieb Vaterland magst ruhig sein

Matero77

Matero77

Użytkownicy
posty14
Propsy1
Profesjabrak
  • Użytkownicy
Witajcie,
czy jest ktoś wstanie mi wyjaśnić to powoli? bo chciałbym aby pojawiały mi się potworki w gothic 1, ale nie wiem gdzie i co mam wrzucić. Tak wiem dla was to pewnie proste, ale dla mnie nie :(.
 


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