Skrypt zadawanych obrażeń 11334 48

O temacie

Autor TheKetrab

Zaczęty 5.07.2016 roku

Wyświetleń 11334

Odpowiedzi 48

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Cześć,

chcę zrobić wściekłe zwierzęta. Krótko mówiąc - jeśli zwierzę zada obrażenia, hero zostanie zatruty. Jeśli zwierzę zada obrażenia, zmieni się zmienna trucizny... Gdzie jest skrypt odpowiadający za zadawanie obrażeń?

Pozdrawiam.
 

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Próbuję coś z tym więcej. Jeśli hero zostaną zadane obrażenia to odpali się funkcja trucizny.
var int prev_hp;

func void B_Hero_AssessDamage()
{
if (self.attribute[ATR_HITPOINTS] < prev_hp)
{
TruciznaFunction();
};
prev_hp = self.attribute[ATR_HITPOINTS];
};


I teraz funkcja trucizny:
func void TruciznaFunction ()
{
B_Attack (self, hero, AR_ReactToDamage, 0);

if (self.aivar[AIV_Trucizna] == 1) {
WillZatruty = 1; //to jest do TickTocka
PrintScreen ("zatruty", -1,-1, "font_old_20_white.tga",3);
};

};

Zrobiłem wściekłego wilka, który ma
aivar[AIV_Trucizna] = 1;
Ale funkcja nie działa... Jakieś rady jak wywołać tę funkcję?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Do tego potrzebujesz triggera. Normalnymi skryptami nie da się zrobić funkcji czasowych.
 
: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.

WayneBlack

WayneBlack

Użytkownicy
posty30
Propsy6
ProfesjaSkrypter
  • Użytkownicy
Nie, wcale nie da się ustalić czasu trwania podpalenia, ani nie da się zmienić czasu życia przywołanych istot. Wcale nie ma funkcji czasowych w grze, w zwykłych skryptach. Ani trochę, wcale nie warto jest szukać.

Sorki za to, ale szału dostałem. Niestety, nie wiem, jak coś takiego odpalić, ale da się to zrobić... możesz próbować uzależnić czas trucizny od innego czynnika, który już ma ustawiony czas - jak chociażby wspomniane przeze mnie podpalenie, czy przywołanie.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Tak, bo to co ty gadasz na pewno wywołuje się przez całą grę. Jeśli nie wiesz, nie pierdol głupot.

Ja moduję Gothica od 8 lat, wiem co mówię.
 
: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.

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Nie chodzi mi o czas tego. Czas to tam pal sześć. Chodzi mi tylko o wywołanie tego skryptu. Że jak wściekły wilk mnie zaatakuje to włączy się skrypt. Że jak hero jest raniony przez wściekłego wilka włącza się trucizna...
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Chcesz zrobić żeby trucizna raniła hero co X sekund przez Y sekund, zaraz po tym jak wilk Cię zaatakuje. Musisz dodać skrypt włączania trucizny do B_AssessDamage i B_MM_AssessDamage (w zasadzie to tylko do B_MM_AssessDamage, jeśli tylko ten wilk ma truć) i potem zrobić triggera, gdzie to będzie odejmowało HP hero co X sekund przez Y sekund.
 
: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.

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Odejmowanie HP sobie poradzę. Ale nie potrafię rozgryźć B_MM_AssessDamage i to tam nie wiem jak ustawić, żeby tylko 'wściekły wilk' truł.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
func void B_PoisonousWolf (var C_NPC slf)
{
if (slf.aivar[AIV_MM_REAL_ID] == ID_Wilka)//Jakieś unikalne, poszukaj w AI_Constants.d linijek ID_* i dodaj własną stałą, oraz dodaj ją do ID wilka (ID = nowaStała)
{
if (slf.attribute[ATR_HITPOINTS] < prev_hp)
{
TruciznaFunction();
};
prev_hp = slf.attribute[ATR_HITPOINTS];
};
};

W B_MM_AssessDamage:
B_PoisonousWolf (self);
 
: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.

WayneBlack

WayneBlack

Użytkownicy
posty30
Propsy6
ProfesjaSkrypter
  • Użytkownicy
Tak, bo to co ty gadasz na pewno wywołuje się przez całą grę. Jeśli nie wiesz, nie pierdol głupot.

Ja moduję Gothica od 8 lat, wiem co mówię.

Obrażenia od ognia działają 6 sekund, w tym czasie zadając 50 obrażeń od ognia co sekundę. Tak jest bazowo w skryptach i można to ustawić.

W mojej myśli byłoby się opierać na tym, wraz z damagetype.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Ta, jeśli jesteś mistrzem wstaw tutaj skrypt podpalania. Chcę widzieć jego strukturę. Nie chcę zmieniać samych obrażeń, bo po chuj jak to nic nie da + przeciwnik będzie się palił? Trucizna która podpala, ciekawe... Za chuja nic nie wnosisz do tego tematu tylko pierdolisz głupoty cały czas. Nawet nie poczytałeś, co TheKetrab chce osiągnąć.
 
: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.

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Wstawiłem tę funkcję. Dałem na razie na próbę ID_Wolf zwykłego wilka. Ale nieważne czy uderzy mnie czarny goblin czy wilk, i tak wykonuje się funkcja trucizny. A więc to:
if (slf.aivar[AIV_MM_REAL_ID] == ID_WOLF)nie działa. Dlaczego?
 

WayneBlack

WayneBlack

Użytkownicy
posty30
Propsy6
ProfesjaSkrypter
  • Użytkownicy
Skrypt podpalenia to ustawienie w linijce damagetype to: damagetype = DAM_FIRE, ot, cały skrypt obrażeń. Znajdź odpowiedni plik, w którym masz WSZYSTKO - skoro jesteś takim mistrzem, to będziesz wiedział, o jaki mi chodzi. I tam masz, ile sekund podpalenie trwa, ile zadaje obrażeń i co ile "tyknięć" je zadaje.

Wstyd mi, że wdaję się w dyskusję z kimś takim...
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Ja pierdole jakim ty jesteś pojebem. Nie wierzę, że jeszcze do ciebie piszę. Blokuję cię bo nie ma sensu gadać z takim półmózgiem.


TheKetrab pokaż swoje skrypty, będzie łatwiej.
 
: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.

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Skrypt podpalenia to ustawienie w linijce damagetype to: damagetype = DAM_FIRE, ot, cały skrypt obrażeń. Znajdź odpowiedni plik, w którym masz WSZYSTKO - skoro jesteś takim mistrzem, to będziesz wiedział, o jaki mi chodzi. I tam masz, ile sekund podpalenie trwa, ile zadaje obrażeń i co ile "tyknięć" je zadaje.

Wstyd mi, że wdaję się w dyskusję z kimś takim...
Czy do ciebie w ogóle dociera, że on chce zrobić efekt zatrucia? A ty wjeżdżasz z podpalaniem :ayfkm: Może według twojej logiki zatrucie powoduje tak wysoką gorączkę, że zacznie płonąć?
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Okazało się, że za wywoływanie funkcji trucizny odpowiadała inna funkcja, którą wcześniej zrobiłem na próbę.
func void B_Hero_AssessDamage()
{
if (hero.attribute[ATR_HITPOINTS] < prev_hp)
{
TruciznaFunction();
};
prev_hp = hero.attribute[ATR_HITPOINTS];
};
Dlatego każdy potwór trafiający wywoływał truciznę. Ale usunąłem to i teraz NIKT nie zadaje trucizny. A powinny wszystkie wilki...
// *****************
// B_MM_AssessDamage
// *****************

func void TruciznaFunction ()
{

WillZatruty = 1;
PrintScreen ("zatruty", -1,-1, "font_old_20_white.tga",3);

};

var int prev_hp;

func void B_PoisonousWolf (var C_NPC slf)
{
if (slf.aivar[AIV_MM_REAL_ID] == ID_WOLF)//Jakieś unikalne, poszukaj w AI_Constants.d linijek ID_* i dodaj własną stałą, oraz dodaj ją do ID wilka (ID = nowaStała)
{
if (slf.attribute[ATR_HITPOINTS] < prev_hp)
{
TruciznaFunction();
};
prev_hp = slf.attribute[ATR_HITPOINTS];
};
};


func void B_MM_AssessDamage ()
{
self.aivar[AIV_MM_PRIORITY] = PRIO_ATTACK;

B_BeliarsWeaponSpecialDamage (other, self);

// EXIT IF

// ------ SONDERFALL: Magic Golem ------ //JUUUUNGEEEEE!!!

// ----- wenn Monster Beute von Angreifer ------
if (C_PredatorFoundPrey(other,self))
{
Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Flee, 0, "");
return;
};

// ------ wenn Monster im ZS_Attack ------
if (Npc_IsInState(self,ZS_MM_Attack))
{
// EXIT IF...

// ------ Partymember ignorieren Treffer vom Spieler im Kampf ------
if (Npc_IsPlayer (other))
&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
return;
};

// ------ HACK: von Skelettmagier getroffene Skelette ignorieren Schaden ------
if (self.aivar[AIV_MM_REAL_ID] == ID_SKELETON)
&& (other.aivar[AIV_MM_REAL_ID] == ID_SKELETON_MAGE)
{
return;
};


// FUNC

// ------ Wenn ich von jemand ANDEREM getroffen werde ------
if (Hlp_GetInstanceID (other) != self.aivar[AIV_LASTTARGET])
{
if (self.aivar[AIV_HitByOtherNpc] == Hlp_GetInstanceID (other))
{
Npc_SetTarget (self, other); //Ziel wechseln, wenn zum zweiten Mal getroffen
}
else
{
self.aivar[AIV_HitByOtherNpc] = Hlp_GetInstanceID (other); //EIN Freischlag
};
};

return;
};


// FUNC

Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Attack, 0, "");
B_PoisonousWolf (self);
return;
};


 

WayneBlack

WayneBlack

Użytkownicy
posty30
Propsy6
ProfesjaSkrypter
  • Użytkownicy
Wyjaśniłem dwa razy, o co mi chodziło. Podałem po prostu, że PRZYKŁADEM obrażeń w czasie jest podpalenie. Czyli, że MOŻNA zrobić to, o co chodzi autorowi tematu. Nie moja wina, że nie potraficie przyswoić najprostszych informacji.
 

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Nie moja wina, że zdecydowanie za mało wiesz w tej dziedzinie. Nie jest to możliwe do czego dążysz, bo FUNKCJA podpalania znajduje się w kodzie silnika, a nie w skryptach, więc nie jest możliwe edytowanie jej lub bazowanie na niej.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

WayneBlack

WayneBlack

Użytkownicy
posty30
Propsy6
ProfesjaSkrypter
  • Użytkownicy
To jakim cudem udało mi się to wszystko ustawić w zwykłych skryptach, by zamiast 50 obrażeń co sekundę, podpalenie zadawało 8? I by czary ogniste zadawały obrażenia DAM_MAGIC|DAM_FIRE - czyli obrażenia dwojakie - trafi magią, to podpali? No nie mówiłbym Ci o czymś, czego nie ma, bądź o czym nie wiem. W innym temacie, gdzie podawałem skalowanie się zaklęć, podałem też WSZYSTKO dotyczące tych obrażeń, bo przykładem była Kula Ognia.
 

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Ależ ja doskonale wiem, że można to zmienić, ale na tym kończą się możliwości. Jak jesteś taki mądry, to proszę, pokaż wszystkim jak dzięki temu zrobisz zatrucie.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie


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