Problem z prostym zadaniem 9822 29

O temacie

Autor StarFighter

Zaczęty 7.06.2010 roku

Wyświetleń 9822

Odpowiedzi 29

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
Witam. Właśnie udało mi się zrobić moje pierwsze zadanie w Gothicu. Po otrzymaniu wpisu do dziennika musimy dać postaci miecz. Niby proste. Pojawia się jednak problem: po otrzymaniu nowej (i lepszej) broni gość  nie chce jej założyć (dodam że jest to moja własna, stworzona postać: może tu jest problem??). Próbowałem wielu rzeczy m. in. if w rozmowie, dzięki czemu dostawałem jego starą broń jeśli on ją jeszcze miał. I niestety nawet wtedy nie zakładał nowej tylko chodził bez broni.
Co mam zrobić, by po dialogu założył broń, którą mu dałem?
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Na koniec dialogu daj:
EquipItem (self, moja_bron);lub
AI_EquipBestMeleeWeapon (self);

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
Wariant pierwszy: nie działa.
Po wejściu marvinem i "o" w postać widzę ku mojemu zdziwieniu, że są dwie bronie, z tego jedna zaznaczona, ale jej nie widać. Trzeba najechać na drugą broń i ją zaznaczyć. Wtedy mamy dwie bronie zaznaczone naraz (nie wiem jak to możliwe) i jedną widoczną oraz aktywną.
Ale to i tak nie ważne bo wariant drugi działa  :D   (i to jak!)
Naprawdę bardzo dziękuję za pomoc  :P   Tylko pytanie co zrobić, jeśli chcę by postać założyła zbroję bądź łuk, albo broń, ale taką z właścicielem (te co mają owner poza normalnym skryptem i są w innym pliku)
Dać AI_EquipBestArmor(self);
AI_EquipBestRangedWeapon (self);
i tak dalej? (tak jak nazwy folderów w których są przechowywane?)
Aha, jeszcze jedno (skoro już mam  kolejny temat to zadam jeszcze to pytanie może ktoś odpowie).
Jak zrobić, by po dialogu  inny NPC się pojawił?
Przeglądałem skrypty różnych postaci i chyba widziałem u niektórych puste rutyny (  { }; ). Wydaje mi się, że aby to zrobić należy ustawić NPC co najmniej dwie rutyny w tym jedną pustą i jaką dailyroutine ustawić tą pustą, a później ją zmienić przez dialog (żeby postać się pojawiła)
Dobrze kombinuję? Czy jest  może jeszcze inny, lepszy sposób na wstawianie NPC nie od początku gry i bez dialogu (np po czyjejś śmierci)?
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
Wariant pierwszy: nie działa.
Po wejściu marvinem i "o" w postać widzę ku mojemu zdziwieniu, że są dwie bronie, z tego jedna zaznaczona, ale jej nie widać. Trzeba najechać na drugą broń i ją zaznaczyć. Wtedy mamy dwie bronie zaznaczone naraz (nie wiem jak to możliwe) i jedną widoczną oraz aktywną.
Możliwe. Zapewne trzeba jeszcze przed założeniem dodać:
AI_UnequipWeapons(self);ale ściąga wtedy wszystkie bronie, więc musiałbyś założyć i broń białą i dystansową.

Cytuj
Tylko pytanie co zrobić, jeśli chcę by postać założyła zbroję bądź łuk, albo broń, ale taką z właścicielem (te co mają owner poza normalnym skryptem i są w innym pliku)
Dać AI_EquipBestArmor(self);
AI_EquipBestRangedWeapon (self);
i tak dalej? (tak jak nazwy folderów w których są przechowywane?)
A tą z właścicielem to są jakieś szczególne, że nie możesz ich założyć?  :ok:  
Te funkcje mogą być, ale założą ci najlepszą możliwą broń/zbroję. Lepiej najpierw ściągnąć, a później założyć.
Cytuj
Przeglądałem skrypty różnych postaci i chyba widziałem u niektórych puste rutyny ( { }; ). Wydaje mi się, że aby to zrobić należy ustawić NPC co najmniej dwie rutyny w tym jedną pustą i jaką dailyroutine ustawić tą pustą, a później ją zmienić przez dialog (żeby postać się pojawiła)
Dobrze kombinuję? Czy jest może jeszcze inny, lepszy sposób na wstawianie NPC nie od początku gry i bez dialogu (np po czyjejś śmierci)?
Na koniec dialogu wstawiasz:
wld_insertnpc(NPC,"WAYPOINT");No i oczywiście dajesz NPC-owi odpowiednią rutynę, dzięki której będzie wiedział, co ma robić po dialogu.

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
No tak, w startup.d była ta sama komenda. Dzięki  :lol:  
A można tak przywołać potwora?
Cytuj
A tą z właścicielem to są jakieś szczególne, że nie możesz ich założyć?
Są w innym folderze pod nazwą weapons ale nieważne co mi szkodzi wypróbować AI_EquipBestWeapon (self); i AI_EquipBestMeleeWeapon (self); jak będę potrzebować.
Jeszcze jedno pytanie, mógłby mi ktoś objaśnić plik PC_Hero? Jest tam postać głównego bohatera, chciałem trochę się tym pobawić, ale ten plik jest inny niż normalne z NPC, tak jakby zawierał kilka postaci głównego bohatera, z różnymi levelami, gildiami, atrybutami itp. Czemu tak jest? Do czego te wszystkie postacie służą? Wie ktoś?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Cytuj
A można tak przywołać potwora?
tak potwory nie wymagają rutyny tam gdzie go przywołasz tam będzie stał

Cytuj
Jeszcze jedno pytanie, mógłby mi ktoś objaśnić plik PC_Hero? Jest tam postać głównego bohatera, chciałem trochę się tym pobawić, ale ten plik jest inny niż normalne z NPC, tak jakby zawierał kilka postaci głównego bohatera, z różnymi levelami, gildiami, atrybutami itp. Czemu tak jest? Do czego te wszystkie postacie służą? Wie ktoś?
są chyba tylko do przywoływania z konsoli jeśli chcesz edytować beziego edytujesz tylko pierwsza postać z 1 lvl

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
Ok, dzięki.  :foch:  
W takim razie kolejne pytanie: wie ktoś w jakim pliku określone jest zdobywanie leveli przez bezimiennego?
Chodzi mi o to, ile dostaje hp, punktów nauki, ile doświadczenia jest potrzebne do konkretnego poziomu itp.
 

jono

jono

Użytkownicy
posty525
Propsy155
ProfesjaNierób
  • Użytkownicy
w pc_hero
np: // ------ XP Setup ------
   exp            = 0;
   exp_next      = 500;
lub
   // ------ XP Setup ------
   exp         = 248000;
   exp_next   = 264000;
   lp         = 0;
 

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
Dzięki.  :foch:  
Ale nadal nie rozumiem wszystkiego w tym pliku.
Wygląda na to, że tam są tylko niektóre levele, a nie wszystkie?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Problem z prostym zadaniem
#9 2010-06-08, 18:39(Ostatnia zmiana: 2010-06-08, 20:25)
źle ci gada nie zna sie na rzeczy zdobywanie lvl jest w pliku B_GiveXP.d

interesuje cie ta linijka
hero.exp_next = hero.exp_next +((hero.level+1)*500);
@down nikt nie jest nie omylny :foch:  liczą się chęci a nie wynik

jono

jono

Użytkownicy
posty525
Propsy155
ProfesjaNierób
  • Użytkownicy
@up, racja, wybacz StarFighter, coś mi się jebło :foch:  a to z tego powodu iż dawno nie modowałem takich rzeczy, aktualnie bawię się w nowe talenty wyświetlanie w menu itp. itd.
 

Sulejman

Sulejman

Użytkownicy
Piotrek
posty237
Propsy229
Profesjabrak
  • Użytkownicy
  • Piotrek
Cytat: jono\'
aktualnie bawię się w nowe talenty wyświetlanie w menu itp. itd.
Co niewiele wnosi do tematu...

Cytat: RafalBudzis\'
źle ci gada nie zna sie na rzeczy zdobywanie lvl jest w pliku B_GiveXP.d
_Work/Data/Scripts/Content/B_Story/B_GivePlayerXP.d
 

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
Eee tam, do **** ten plik  ;)  Nie mam oczywiście do was pretensji, tylko do siebie. Liczyłem, że będą tam wszystkie levele i sobie pozamieniam progi. A tam jest tylko pierwszy i opisane + ile hp będzie przyrastać. A próg potrzebny do next lvl się chyba mnoży x2 z tego co pamiętam z gry ;)  A ja chciałem inaczej przy tym się pobawić.
No nic trudno, jeden z moich pomysłów nie wypalił, chyba że kiedyś nauczę się edytować ten plik (taką mam nadzieję).

Cytuj
_Work/Data/Scripts/Content/B_Story/B_GivePlayerXP.d
Nie ma czegoś takiego  ;)  

@up, racja, wybacz StarFighter, coś mi się jebło :lol2:  a to z tego powodu iż dawno nie modowałem takich rzeczy, aktualnie bawię się w nowe talenty wyświetlanie w menu itp. itd.
A mógłbyś napisać jak stworzyć nowy talent (nie chodzi mi o jakiś tutorial krok po kroku ani nic z tych rzeczy bo z wykonaniem chyba sobie poradzę analogicznie do już istniejących talentów tylko jakie pliki trzeba wyedytować i na co trzeba uważać/pamiętać jak się tworzy talent żeby się nie naciąć na jakiś poważny problem)
Chodzi mi o jakiś prosty talent, który nic praktycznie nie zmienia, ale można go użyć jako condition w dialogach.
 

jono

jono

Użytkownicy
posty525
Propsy155
ProfesjaNierób
  • Użytkownicy
25 zł xdddd,
wszystko plik text.d, wykorzystaj któryś z nie używanych talentów g1 są takie 2 g2 jest ich 5. Aby ci się wyświetliło w menu, to poszukaj tutka w dziale tutoriale xd
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Cytuj
A ja chciałem inaczej przy tym się pobawić.
kto ci broni przecież podałem ci linijke
hero.exp_next = hero.exp_next +((hero.level+1)*500);czyli nie o 2 jak pisałeś tylko 500 więcej za każdym razem ale jak ci się chce to możesz ta podaną linijkę usunąć i zrobić if`y
np.
if(hero.level=1){
hero.exp_next = 100;
}
if(hero.level=2){
hero.exp_next = 200;
}
if(hero.level=3){
hero.exp_next = 215;
}

i możesz dowolnie dobierać ale trzeba by było dużo tego zrobić ;)

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
Ja mam dużo czasu.

Jono - dzięki, popróbuję jak skończę co innego.
Rafal - też dzięki, heh nie pomyślałem. I rzeczywiście lvl x 500 nie pamiętałem dokładnie bo dawno tam zaglądałem (wczoraj znaczy się)

Mam jeszcze dwa pytania jeśli nie macie nic przeciwko  :D  

Przeglądając folder B znalazłem takie coś

Cytuj
//*****************************************************************************
//***         Diese Funktion tötet alle Bewohner des FMC               ***
//*****************************************************************************
func void B_ClearFMC()
{
   //-------- Soeldner --------
   B_KillNpc   (SLD_750_Soeldner);
   B_KillNpc   (SLD_751_Soeldner);
   B_KillNpc   (SLD_752_Okyl);
   B_KillNpc   (SLD_753_Baloro);
   B_KillNpc   (SLD_755_Soeldner);
   B_KillNpc   (SLD_756_Soeldner);
   B_KillNpc   (SLD_757_Soeldner);
   B_KillNpc   (SLD_758_Soeldner);
   B_KillNpc   (SLD_759_Soeldner);
   B_KillNpc   (SLD_760_Soeldner);
   B_KillNpc   (SLD_761_Soeldner);
   B_KillNpc   (SLD_762_Soeldner);
   B_KillNpc   (SLD_763_Soeldner);
   B_KillNpc   (SLD_764_Soeldner);
   B_KillNpc   (SLD_765_Soeldner);

   //-------- Schuerfer --------
   B_KillNpc   (SFB_1030_Schuerfer);
   B_KillNpc   (SFB_1031_Schuerfer);
   B_KillNpc   (SFB_1032_Schuerfer);
   B_KillNpc   (SFB_1033_Schuerfer);
   B_KillNpc   (SFB_1034_Schuerfer);
   B_KillNpc   (SFB_1035_Schuerfer);
   B_KillNpc   (SFB_1036_Schuerfer);
   B_KillNpc   (SFB_1037_Swiney);
   B_KillNpc   (SFB_1038_Schuerfer);
   B_KillNpc   (SFB_1039_Schuerfer);
   B_KillNpc   (SFB_1040_Schuerfer);
   B_KillNpc   (SFB_1041_Schuerfer);
   B_KillNpc   (SFB_1042_Schuerfer);
   B_KillNpc   (SFB_1043_Schuerfer);
   B_KillNpc   (SFB_1044_Schuerfer);
      
   //-------- Organisatoren --------      
   B_KillNpc   (ORG_890_Organisator);
   B_KillNpc   (ORG_891_Organisator);
   B_KillNpc   (ORG_892_Organisator);
      
   //-------- Gardisten --------
   Wld_InsertNpc   ( Grd_283_Gardist, "FMC_ENTRANCE" );//FMC-Guard(Mineneingang)         
   Wld_InsertNpc   ( Grd_285_Gardist, "FMC_ENTRANCE" );//FMC-Guard(Mineneingang)   
};
Wygląda na to, że jest to pozabijanie npc z wolnej  kopalni ( a gadali że zabili ich ludzie gomeza hmm  :)  )
Można by było to skopiować i podmienić npc to by się przydało w przyszłości do bardziej zaawansowanego modowania.
Załóżmy, że podmieniłem npc i nazwałem to: func void B_jakaśnazwa()
Jak to przywołać w dialogu? Rozmawiam z kimś i ten mówi że np kolesie z bandy quentina napadli na stary obóz i pozabijali dużo ludzi: i wtedy włącza się zabijanie tych npc.

Inna (druga) sprawa: nie wie ktoś jak zrobić by po dialogu npc stał się np silniejszy, miał więcej hp czy coś? wystarczy jeden przykład to sobię zrobię dalej resztę. (no wiecie jak np raz pokonamy npc to on później będzie chciał się zemścić i wtedy będzie trudniej go pokonać)

EDIT: PS. Znalazłem w dialogu horacego i podmieniłem other na self
self.attribute[ATR_STRENGTH] = self.attribute[ATR_STRENGTH] + 5;

Takie coś wystarczy?
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
Załóżmy, że podmieniłem npc i nazwałem to: func void B_jakaśnazwa()
Jak to przywołać w dialogu? Rozmawiam z kimś i ten mówi że np kolesie z bandy quentina napadli na stary obóz i pozabijali dużo ludzi: i wtedy włącza się zabijanie tych npc.
Na koniec dialogu dodać:
B_jakaśnazwa();
Cytuj
Inna (druga) sprawa: nie wie ktoś jak zrobić by po dialogu npc stał się np silniejszy, miał więcej hp czy coś? wystarczy jeden przykład to sobię zrobię dalej resztę. (no wiecie jak np raz pokonamy npc to on później będzie chciał się zemścić i wtedy będzie trudniej go pokonać)

EDIT: PS. Znalazłem w dialogu horacego i podmieniłem other na self
self.attribute[ATR_STRENGTH] = self.attribute[ATR_STRENGTH] + 5;

Takie coś wystarczy?
Jeśli nie chcesz zmieniać tego graczowi, tylko NPCowi, to tak.

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
Dzięki.
Mam kolejne 100 pytań jeśli nie macie nic przeciwko  :)  
No dobra, nie ma ich aż tyle :D  
-Rozumiem, że w tym B może być wszystko (zmiany rutyn oraz inne rzeczy a nie tylko zabijanie/pojawianie)?
-Nie wiecie jak zrobić by np. po takim przypakowaniu npc możemy go pokonać drugi raz zdobywając przy tym ponownie doświadczenie? Gdzieś muszą być przechowywane jakieś zmienne, które określają, czy postać była już pokonana i bohater dostał za nią doświadczenie, czy nie. Chciałbym wiedzieć gdzie to jest i jak można to wyzerować w dialogu, jeżeli jest taka możliwość.
Jeśli to niemożliwe, to będzie poważny problem z arenami. Bo co, jeśli ktoś najpierw pokona gladiatora, a później go wyzwie, a gra połączy dwa fakty (został wyzwany && został pobity)?
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
-Rozumiem, że w tym B może być wszystko (zmiany rutyn oraz inne rzeczy a nie tylko zabijanie/pojawianie)?
Tak.
Co do drugiego, to nie wiem.

sebinho

sebinho

Użytkownicy
posty339
Propsy44
Profesjabrak
  • Użytkownicy

sebinho

Problem z prostym zadaniem
#19 2010-06-09, 22:01(Ostatnia zmiana: 2010-06-09, 22:02)
del
 


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