Ikarus (Pakiet skryptów) 414721 1020

O temacie

Autor orcwarrior

Zaczęty 11.06.2010 roku

Wyświetleń 414721

Odpowiedzi 1020

Lehona

Lehona

Użytkownicy
posty196
Propsy190
  • Użytkownicy
That is... surprising. Although the hero does not exist at that point, object.attribute should just evaluate to 0 if object is null.

Whatever, it's fixed.
 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Czy mogę gdzieś dostać strukturę klasy "zCModelNodeInst" ? Przydała by mi się ona do pewnych "rozważań".
 

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

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Szperając w klasach G2 (tych z AST) natknąłem się na coś co mnie interesuje i to nawet bardzo:
virtual int CanThisCollideWith(zCVob*)
{
XCALL(0x004042A0);
};
I rodzi się moje pytanie :O Czy jest możliwe pobieranie kolizji NPC i miecza ? Znalazłem to w oCAniCtrl oraz oCItem. Co oznacza że jest możliwe pobieranie kolizji za pomocą Ikarusa. Moje pytanie jak :O Nie umiem Calli tak dobrze. Wiem tylko że trzeba podać ptr. do zCVob a najlepiej (jak to npc) to oCNpc>zCVob > Call .

Aby nie było z angielskiego > funkcja liczbowa (może być zBool, może spowodować kolizję z [zCVob])  :D
 

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.
Tak jeszcze jedno :F Jak wywołać cały VFX na itemie ?
Wld_PlayEffect("Spellfx_FireArmor", her, MET_ITEM, 0, 300, DAM_MAGIC, FALSE);
To powoduje że vfx leci w stronę tego no... przedmiotu. A jak zrobić by moje "jabłko" się paliło w całości (oprócz zmiennej effect w klasie oCNpc)...

Wld_PlayEffect("Spellfx_FireArmor", MET_ITEM, MET_ITEM, 0, 0, 0, FALSE);
 
: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.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Dzięki dawno o tym już wiedziałem, ale mimo to dzięki za pomoc (fajne to ma zastosowanie to tych no zaklęć obszarowych :D )

Czy ktoś miły z tutaj obecnych wie jak się tworzy vectory ? Chciałbym stworzyć kilka do moich genialnych pomysłów, ale nie wiem jak się za to zabrać :I
 

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.
LeGo/Vector2D.d
 
: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.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Dzięki o tym nie pomyślałem :F Ale Gratt wyjaśnił mi jak otrzymać efekt jaki chce :)

Jeszcze jedno chcę pobierać Pozycje strzały, która jest w ręce. Ale nie wiem czemu Call crashuje. Nie znam się na nich za bardzo, ale wiem że ty się znasz i może mógłbyś pomóc :) Mój kod:
func int GetItemWorldPosition()
{
const int zCVob_GetPosInWorld = 5430416; //0x0052DC90
var int vptr; vptr = MEM_InstToPtr(GetSlotItem(hero,"ZS_RIGHTHAND")); //to jest funkcja [member=12058]Splash[/member]'a
CALL__thiscall(vptr,zCVob_GetPosInWorld);
return CALL_RetValAsPtr ();
};
 

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

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Wielokrotnie mówiłem, że nie da się otrzymać pozycji przedmiotów umieszczonych w slotach. Cokolwiek byś nie zrobił, pozycja przedmiotów będzie zwracana jako 0. Sloty są obiektami klasy oCSlot. Orcwarrior już dawno to rozpracował:
//############################################3
//      Experimental Classes & Arrays
//      Connected with oCNPC
//      by orcwarrior
//############################################3
const int TNpcSlot_Size = 64;  // 0x0040
class TNpcSlot{
    var int    Slot_RightHand; // 0x0000 oCSlot*
    var int    Slot_LeftHand;  // 0x0004 oCSlot*
    var int    Slot_Sword;     // 0x0008 oCSlot*
    var int    Slot_LongSword; // 0x000C oCSlot*
    var int    Slot_Bow;       // 0x0010 oCSlot*
    var int    Slot_CrossBow;  // 0x0014 oCSlot*
    var int    Slot_Helmet;    // 0x0018 oCSlot*
    var int    Slot_Armor;     // 0x001C oCSlot*
    var int    Slot_Unknown1; // 0x0020 oCSlot*
    var int    Slot_Unknown2; // 0x0024 oCSlot*
    var int    Slot_Unknown3; // 0x0028 oCSlot*
    var int    Slot_Unknown4; // 0x002C oCSlot*
    var int    Slot_Unknown5; // 0x0030 oCSlot*
    var int    Slot_Unknown6; // 0x0034 oCSlot*
    var int    Slot_Unknown7; // 0x0038 oCSlot*
    var int    Slot_Unknown8; // 0x003C oCSlot*
 
};
 
class oCSlot{
    var string Node_name;       // 0x0000 zString
    var int    b_ObjInSlot; // 0x0014 BOOL
    var int    val1;            // 0x0018 always 0
    var string unkn_string; // 0x001C zString => always without pointer and len only vtbl and allocator filled with values
    var int    ObjInNode;       // 0x0030 zCVob*
    var int    val2;            // 0x0034 always 0
 
};
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Pisałem na ten temat z twórcą AST i powiedział mi :
"get world transform"
Z dalszej rozmowy przesłał mi screen kodu C++ rozmowa przebiegała tak:
Spoiler
Gratt: get world transform
Ja: trafo_objtoworld ?
Gratt: npc -> node -> item ->get data
Ja: _player->GetModel->SearchNode("Slot") ?
Gratt: or _player->GetSotItem
I później wysłał Screena:

Więc zapewne da się... Jednak moim problemem jest pointer. Jak przekształcić Item>Npc do zCVob ? Jest na to jakiś adres :hmmm:
 

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

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Nie trzeba nic "przekształcać". oCNpc i oCItem to także zCVob.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
To jak ten call ma wyglądać :I Bo wszystkie opcje Crashują ...
 

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.
Podaj nam Twój skrypt. Wtedy będziemy wiedzieli, co źle zrobiłeś. Mnie się nie chce szukać tej funkcji w silniku. :F
 
: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.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Nie masz listy adresów :F
func int GetSlotItem (var C_NPC slf, var string slotName)
{
    CALL_zStringPtrParam (slotName);
    CALL__thiscall (MEM_InstToPtr (slf), 7544560);
    return CALL_RetValAsPtr ();
};


func int GetItemWorldPosition()
{
const int zCVob_GetPosInWorld = 5430416; //0x0052DC90
var int vptr; vptr = MEM_InstToPtr(GetSlotItem(hero,"ZS_RIGHTHAND"));
CALL__thiscall(vptr,zCVob_GetPosInWorld);
return CALL_RetValAsPtr ();
};

func void Foodffdsfds()
{
if(MEM_KeyState(KEY_P)==KEY_PRESSED)
{
//GetItemWorldPosition(); testy
};
};
Adres:
zVEC3 __thiscall zCVob::GetPositionWorld(void)const      0x0052DC90 0 7 public: zVEC3 __thiscall zCVob::GetPositionWorld(void)const
 

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.
Te funkcje nie wymagają parametrów. Z nimi nic nie podziałasz (chyba, że się mylę).
 
: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
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
func int GetItemWorldPosition()
{
const int zCVob_GetPosInWorld = 5430416; //0x0052DC90
var int vptr; vptr = MEM_InstToPtr(GetSlotItem(hero,"ZS_RIGHTHAND"));
CALL_RetValIsStruct (12);
CALL__thiscall(vptr,zCVob_GetPosInWorld);
return CALL_RetValAsPtr ();
};

var int vec; vec = GetItemWorldPosition();
var int x; x = roundf (MEM_ReadInt (vec));
var int y; y = roundf (MEM_ReadInt (vec+4));
var int z; z = roundf (MEM_ReadInt (vec+8));

Dokumentacja Ikarusa taka fajna.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Niestety ale dalej crash :I
(Gdy miałem wyciągniętą broń jak coś)
 

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

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Dopiero teraz zauważyłem co jest źle:
vptr = MEM_InstToPtr(GetSlotItem(hero,"ZS_RIGHTHAND"));
vptr = GetSlotItem(hero,"ZS_RIGHTHAND");
:ok:
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota

Siemekk
Złote Wrota

Ikarus (Pakiet skryptów)
#717 2016-10-03, 18:44(Ostatnia zmiana: 2016-10-03, 19:29)
I weź tu kurde coś ogarnij :F
Mam kod z C++ jednak nie wiem czemu w Gothiczku crashuje:
C++
Spoiler


Gothic :I ten najgorszy :D poleci tu z 20 facepalmów
/***************/
func int GetNodeTrafo(var int npc, var string node)
{
const int zMAT4_GetTrafoNode = 6310240; //0x00604960
CALL_zStringPtrParam(node);
CALL_RetValIsStruct (12);
CALL__thiscall(MEM_InstToPtr(npc),zMAT4_GetTrafoNode);
return CALL_RetValAsPtr ();
};

func void Set_TrafoObjToWorld(var int ptr, var int trafo)
{
const int zCVob_SetTrafoOBJ   =      6405248; //0x0061BC80
CALL_IntParam(trafo);
CALL__thiscall(ptr,zCVob_SetTrafoOBJ);
};

func int GetSlotItem (var C_NPC slf, var string slotName)
{
    CALL_zStringPtrParam (slotName);
    CALL__thiscall (MEM_InstToPtr (slf), 7544560);
    return CALL_RetValAsPtr ();
};


func int GetItemWorldPosition(var int vptr)
{
const int zCVob_GetPosInWorld = 5430416; //0x0052DC90
CALL_RetValIsStruct (12);
CALL__thiscall(vptr,zCVob_GetPosInWorld);
return CALL_RetValAsPtr ();
};

func void Foodffdsfds()
{
if(MEM_KeyState(KEY_P)==KEY_PRESSED)
{
var int pItem; pItem = GetSlotItem(hero,"ZS_RIGHTHAND");

if(!pItem){return;};

var int trafo_her; trafo_her = GetNodeTrafo(hero,"ZS_RIGHTHAND");
Set_TrafoObjToWorld(pItem,trafo_her);

var int vec;
vec = GetItemWorldPosition(pItem);
var int x; x = roundf (MEM_ReadInt (vec));
var int y; y = roundf (MEM_ReadInt (vec+4));
var int z; z = roundf (MEM_ReadInt (vec+8));

Prints(ConcatStrings("X pos: ",IntToString(x)));
Prints(ConcatStrings("Y pos: ",IntToString(y)));
Prints(ConcatStrings("Z pos: ",IntToString(Z)));

};
};


 

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

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Nie jestem pewien, ale jeśli funkcja zwraca zMAT4, to nie trzeba używać funkcji CALL_RetValIsStruct. A jeśli trzeba by było, to w argumencie funkcji powinno być wtedy 16, a nie 12.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
W obu przypadkach Crashuje :I
Tylko że gdy nie ma CALL_RetValIsStruct jest powiadomienie.
 

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


0 użytkowników i 4 gości przegląda ten wątek.
0 użytkowników
Do góry