efekt odrzutu jak przy DAM_FLY przy otwieraniu skrzyni 1830 10

O temacie

Autor pawbuj

Zaczęty 25.05.2016 roku

Wyświetleń 1830

Odpowiedzi 10

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
chce zrobić skrzynię z pułapką. chodzi mi o nałożenie fizycznego efektu jak przy uderzeniu DAM_FLY do odrzucenia postaci. o ile efekty efekty pfx wywołujemy za pomocą wld_playeffect to tutaj nic nie przychodzi mi do głowy.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Sam chciałem kiedyś dorwać funkcję odrzutu, lecz jej nie znalazłem. Dzięki tej funkcji dałoby radę modyfikować odległość odrzutu oraz wywoływać odrzut kiedy się chce.
 
: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.

Draks

Draks

Użytkownicy
Gothic 2 Nowy porządek
posty1714
Propsy766
ProfesjaGrafik 3D
  • Użytkownicy
  • Gothic 2 Nowy porządek
Nie jestem pewny, ale ilość siły chyba określą odległość odrzutu.
 

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
prototype Mst_Default_Troll_Black(C_Npc)
{
name[0] = "Czarny Troll";
guild = GIL_TROLL;
aivar[AIV_MM_REAL_ID] = ID_TROLL_BLACK;
level = 80;
attribute[ATR_STRENGTH] = 650;
attribute[ATR_DEXTERITY] = 350;
attribute[ATR_HITPOINTS_MAX] = 4000;
attribute[ATR_HITPOINTS] = 4000;
attribute[ATR_MANA_MAX] = 0;
attribute[ATR_MANA] = 0;
protection[PROT_BLUNT] = IMMUNE;
protection[PROT_EDGE] = 300;
protection[PROT_POINT] = 1000;
protection[PROT_FIRE] = 250;
protection[PROT_FLY] = 299;
protection[PROT_MAGIC] = 240;
damagetype = DAM_FLY;
fight_tactic = FAI_TROLL;
senses = SENSE_HEAR | SENSE_SEE | SENSE_SMELL;
senses_range = PERC_DIST_MONSTER_ACTIVE_MAX;
aivar[AIV_MM_ThreatenBeforeAttack] = TRUE;
aivar[AIV_MM_FollowTime] = FOLLOWTIME_MEDIUM;
aivar[AIV_MM_FollowInWater] = FALSE;
start_aistate = ZS_MM_AllScheduler;
aivar[AIV_MM_SleepStart] = 22;
aivar[AIV_MM_SleepEnd] = 6;
aivar[AIV_MM_RestStart] = 6;
aivar[AIV_MM_RestStart] = 22;
bodyStateInterruptableOverride = TRUE;
};
Skrypt trolla z R2.0 ma porządne Yebnięcie tą łapą D: Może to w czymś pomoże chociaż wątpie.
Co do odrzutu to może spróbuj pokombinować z pięścią wichru D: tam na 100% coś znajdziesz.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.


Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
O kurde! Temat, który napisałem jak jeszcze byłem totalnym noobem.  :lol2: :lol2: :lol2: :lol2: :lol2:
 
: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
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
Wld_PlayEffect może nie tylko odpalić efekt, ale też ustawić obrażenia i ich typ. 5 i 6 parametr. Typ DAM_FLY. TargetVob ustawiasz na postać.
Można też skorzystać z Ikarusa i poszerzyć możliwości:
func void StaryFlyDamage (var int npcPtr, var int speed, var int x, var int y, var int z)
{
    const int oCAIHuman__StartFlyDamage = 6936896; //0x69D940
    var oCNpc slf; slf = _^ (npcPtr);
    var int vec[3];
    vec[0] = slf._zCVob_trafoObjToWorld[zCVob_trafoObjToWorld_X] + mkf (x);
    vec[1] = slf._zCVob_trafoObjToWorld[zCVob_trafoObjToWorld_Y] + mkf (y);
    vec[2] = slf._zCVob_trafoObjToWorld[zCVob_trafoObjToWorld_Z] + mkf (z);
    CALL_PtrParam (_@(vec));
    CALL_IntParam (mkf (speed)); //chyba prędkość
    CALL__thiscall (slf.human_ai, oCAIHuman__StartFlyDamage);
};
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Splash, zdecydowanie polecam nie robić nigdy czegoś takiego:
CALL__thiscall (slf.human_ai, 6936896);To się nazywa "magic value" i jest w programowaniu okropną praktyką. Poprawnie jest zdefiniować stałą której nazwa opisuje co to za liczba, a następnie użyć tej stałej. Odpowiednie konwencje nazewnicze do wskaźników na funkcje już są.
Oba sposoby zadziałają. Tylko drugie rozwiązanie powie czytającemu kod co oznacza 6936896 i dlaczego to akurat ta liczba a nie inna. Zalet jest masa.

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
const int oCAIHuman__StartFlyDamage = 6936896; //0x69D940wiecie, że mi chodzi o adres do g1?

anyway przykład takiej funkcji StaryFlyDamage (hero, 1000, x,y,z)

x,y,z to wspólrzędne, gdzie hero ma polecieć po odrzucie?
 

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
Cytuj
wiecie, że mi chodzi o adres do g1?
6381888
Nie testowałem tego w Gothicu 1, ale powinno działać.
Cytuj
x,y,z to wspólrzędne, gdzie hero ma polecieć po odrzucie?
W x, y, z wpisujesz liczby na jaką odległość postać ma odlecieć w danym kierunku. Co do floata to nie jestem pewien. Prawdopodobnie jest to prędkość z jaką postać odleci.

Zapomniałem wcześniej wspomnieć o dość ważnej rzeczy. Mianowicie, argumenty funkcji są wywoływane w odwrotnej kolejności, ponieważ przy poprawnej (według disassemblera) Gothic się crashuje. Jest to kolejny raz, kiedy coś takiego mi się przydarzyło. Porównanie:
0069D940 public: void __thiscall oCAIHuman::StartFlyDamage(float, class zVEC3 &)CALL_PtrParam (_@(vec));
CALL_IntParam (mkf (dist));
 
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