Resp po zabiciu danego mobka (G1) 6709 22

O temacie

Autor Buras

Zaczęty 23.01.2011 roku

Wyświetleń 6709

Odpowiedzi 22

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
Witam...
Jako, iż nie jestem jakimś tam profesjonalnym skrypterem itp. prosiłbym was o pomoc...
Otóż, mam pomysł, aby zrobić coś w rodzaju: Zabij kogoś tam, a zrespi ci ktoś tam inny w danym waypoincie.
Próbowałem zrobić to na zasadzie jakiegoś warunku. W tym celu zrobiłem coś takiego:

FUNC VOID FINALBATTLEMOD
{
if ((Npc_IsDead(arcansas1))
{
Wld_SpawnNpcRange (self,OrcShaman,"ORCMAGE1");
};
};

W oddzielnym pliku (w sumie Gothic chyba nie rozróżnia położenia pliku ze skryptem).
Wiedziałem, że nie zadziała, ale próbować przecież można :D

I teraz ostateczne pytanie: Jak tego dokonać? Prosiłbym o naprowadzenie, podpowiedź, cokolwiek...
 

Sulejman

Sulejman

Użytkownicy
Piotrek
posty237
Propsy229
Profesjabrak
  • Użytkownicy
  • Piotrek
func void FinalBattleMod
{
if ((Npc_IsDead(arcansas1))
{
Wld_InsertNPC(self,OrcShaman,"ORCMAGE1");
};
};

Tak nie zadziała?
 

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
Tak sobie myślę, że wielkość liter nie ma znaczenia, ale sprawdzę...

EDIT:
To również nie odniosło żadnego skutku... :(
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
nie o wielkość liter chodziło tylko o funkcje Wld_InsertNPC :P
ja bym spróbował tak zastanawia mnie jedno z kąt wzieliście argument self :D  
func void FinalBattleMod ()
{      
        if (Npc_IsDead(Hlp_GetNpc(instance_zabitego)))
        {
                Wld_InsertNPC(instance_powstającego,"ORCMAGE1");
        };
};


i jak wywołujesz tą pente ??

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
To również można powiedzieć zawarte było w pytaniu. Tak myślałem, że coś należy dodać do story globals, ale to raczej nie ma z tym nic wspólnego... Jak już mówiłem jestem zielony...
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
do story globals

var int juz;

startup.d

juz = 0;
w twoim skrypcie
func void FinalBattleMod ()
{      if(juz==0){
 
        if (Npc_IsDead(Hlp_GetNpc(instance_zabitego)))
        {

                Wld_InsertNPC(instance_powstającego,"ORCMAGE1");
                juz=1;

        };
                };
};

w _Work\Data\Scripts\Content\Story\EVENTS\Sleepabit.d
W petli SLEEPABIT_S1 () piszesz
FinalBattleMod();
w \_Work\Data\Scripts\Content\AI\B_Human\B_RefreshArmor.d
W petli B_RefreshArmor() piszesz
FinalBattleMod();
potworek będzie się respił po położenie się spać (nie koniecznie snu wystarczy ze połozy się i zejść) albo po godzinie 00 jak by gracz nie poszedł spać

jak chcesz natychmiastowego respa to poczytaj o wywoływaniu skryptów ;)

Kain

Kain

Użytkownicy
RAP-Fanatyk
posty311
Propsy100
  • Użytkownicy
  • RAP-Fanatyk
Cytuj
W oddzielnym pliku (w sumie Gothic chyba nie rozróżnia położenia pliku ze skryptem).

A czasem nie trzeba dodać ścieżki tego pliku do Gothic.src?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
zależy niektóre foldery biorą wszystkie pliki jakie są w nich są to
STORY\EVENTS\*.D
AI\TEST_SKRIPTS\*.D
AI\TEST_SKRIPTS\TESTZUSTAENDE\*.D
STORY\NPC\*.D
AI\MONSTER\*.D
STORY\ZS\*.D
STORY\ZS\PERS\*.D
STORY\ZS\ZS_STEUERUNG\*.D
MAGIC\ZS\*.D
AI\ZS_HUMAN\*.D
AI\ZS_MONSTER\*.D
resztę musimy dopisywać W ODPOWIEDNIE MIEJSCE !!!

ja bym ci radzi twój skrypt dać w pliku z mieczami na samym końcu ;) wtedy będziesz miał pewność ze spacer przeczytał plik ;)

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
Hmmm...
Wstawiłem mój skrypt do pliku Weapons.d, jednak wywaliło mi błąd "Wymagany )" w tej linijce:

if (Npc_IsDead(Hlp_GetNpc(arcansas1)))

A z kolei w pętlach: SLEEPABIT_S1 oraz B_RefreshArmor() wstawiłem moje FinalBattleMod();, ale niestety wywaliło mi z nimi błąd z nieznanym indetyfikatorem...
 

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
Odświeżam, bardzo mi zależy na tym, żeby to coś wyglądało, jak ma wyglądać...
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
if (Npc_IsDead(Hlp_GetNpc(arcansas1)))
Co to jest arcansas1? Zmienna czy NPC?

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
NPC... Wykonywałem wszystko zgodnie z instrukcjami RafalBudzis... Znaczy starałem się wykonywać zgodnie ;p
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Czyli jest to instancja NPC? Jeśli tak, to zrób tak:
var C_NPC arcan = Hlp_GetNpc(arcansas1);
FUNC VOID FINALBATTLEMOD()
{      
        if ((Npc_IsDead(arcan))
        {
                Wld_SpawnNpcRange (self,OrcShaman,"ORCMAGE1");
        };
};

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
Najlepiej wstawić to do jakiegoś istniejącego skryptu np. broni, tak? Czy jeszcze trzeba coś dodać w innych skryptach?

EDIT:
Dziwna anomalia... W linijce:

var C_NPC arcan = Hlp_GetNpc(arcansas1);

Wymaga mi średnika, który przecież tam jest...  :blink:
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Resp po zabiciu danego mobka (G1)
#14 2011-01-26, 22:35(Ostatnia zmiana: 2011-01-26, 22:36)
No, musisz ją jeszcze gdzieś wywołać, ale to już chyba zrobiłeś?


Cytuj
Dziwna anomalia... W linijce:

var C_NPC arcan = Hlp_GetNpc(arcansas1);



Wymaga mi średnika, który przecież tam jest... :blink:  

Sorry, popełniłem błąd :P

var C_NPC; arcan = Hlp_GetNpc(arcansas1);
Najlepiej ten skrypt by było dać chyba do ZS_Dead.

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
Nie no... Teraz to zgłupiałem (w sumie wcześniej też), dalej wymagany ;
"Rozbiłem" to:

var C_NPC; arcan = Hlp_GetNpc(arcansas1);

Na to:

var C_NPC;

arcan = Hlp_GetNpc(arcansas1);

Nie wiem czy tak można, ale wtedy wykrył mi błąd (ponownie z przeklętym średnikiem) tutaj:

arcan = Hlp_GetNpc(arcansas1);
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
var C_NPC arcan; arcan = Hlp_GetNpc(arcansas1);Tak będzie dobrze :D  Tak to jest jak się robi kilka rzeczy naraz :D

Buras

Buras

Użytkownicy
posty202
Propsy23
Profesjabrak
  • Użytkownicy
Tym razem syntax "ARCAN" w:
var C_NPC arcan; arcan = Hlp_GetNpc(arcansas1);

Obstawiam na ten 2 arcan :D

Wnerwiające są te znaczniki code...
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Resp po zabiciu danego mobka (G1)
#18 2011-01-26, 23:04(Ostatnia zmiana: 2011-01-26, 23:05)
A jaka dokładnie treść błędu?

Albo zmień te dwa "arcan" na "dupa" :lol:

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders

orcwarrior
The Modders

Resp po zabiciu danego mobka (G1)
#19 2011-01-26, 23:11(Ostatnia zmiana: 2011-01-26, 23:14)
A czy przypisanie do arcana jest wywoływane w jakimś bloku? nie można przypisac do zmiennej arcan wartosci poza ramami funkcji.
//Mozesz je dodać w init_nazwaWorldaWKtorymRozgrywaSieMod w pliku startup.d
// A wlasciwie to wystarczy w wywołaniu tej funkcji od respawna
Jezeli cos bedzie nie tak oznacza to ze przypisanie instancji do C_NPC wykonuje sie przed deklaracja tej instacji, po ludzku, muszisz wstawic ta funkcje kiedy npc juz bedzie "skompilowany"
 




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