Ikarus (Pakiet skryptów) 412832 1020

O temacie

Autor orcwarrior

Zaczęty 11.06.2010 roku

Wyświetleń 412832

Odpowiedzi 1020

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
//zMAT4
class zMAT4 {
    /* die Matrix hat folgende Gestalt:
     *
     *  x1  y1  z1  p1
     *  x2  y2  z2  p2
     *  x3  y3  z3  p3
     *
     * Dabei sind x, y, z die Bilder der Einheitsvektoren unter der Transformation.
     * Andersgesagt: x, y, z sind die Vektoren, die im Spacer angezeigt werden, wenn man das
     * Vob anklickt (davon ist y die Komponente die normalerweise nach oben zeigt).
     * Ist ein Punkt im lokalen Koordinatensystem des Vobs an (a1, a2, a3), und liegt das
     * Vob mit Transformationsmatrix M in der Welt dann ist der Punkt im
     * Koordinatensystem der Welt an M * (a1, a2, a3, 1)^T.
     * ("^T" soll nur bedeuten, dass der Vektor eigentlich senkrecht stehen muss).
     * Die vierte Zeile der Matrix ist ungenutzt und sinnlos. */
   
    /* Zeilenweise */
    var int v0[4]; //zREAL[4]
    var int v1[4]; //zREAL[4]
    var int v2[4]; //zREAL[4]
    var int v3[4]; //zREAL[4]
};

//andere Formulierung, wer lieber alles in einem array haben will:
class zMATRIX4 {
    var int trafo[16]; //zREAL[16]
};
 
: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
Hmmm...
func int I_Npc_CollideWithHeroWeapon(var int att, var int vic)//item-> int or C_ITEM
{
var oCNpc attacker; attacker=Hlp_GetNpc(att);
var oCNpc victim; victim=Hlp_GetNpc(vic);
var C_Item ReadiedWeapon; ReadiedWeapon=Npc_GetReadiedWeapon(hero);

var int attacker_Trafo; attacker_Trafo = attacker._zCVob_trafo;
var int target_Trafo; target_Trafo = victim._zCVob_trafo;

var int attackerpos;
var int targetpos;


var int attacker_bbox_0; attacker_bbox_0 = attacker._zCVob_bbox3D_mins[0];
var int attacker_bbox_1; attacker_bbox_1 = attacker._zCVob_bbox3D_mins[1];
var int attacker_bbox_2; attacker_bbox_2 = attacker._zCVob_bbox3D_mins[2];
var int attacker_bbox_3; attacker_bbox_3 = attacker._zCVob_bbox3D_maxs[0];
var int attacker_bbox_4; attacker_bbox_4 = attacker._zCVob_bbox3D_maxs[1];
var int attacker_bbox_5; attacker_bbox_5 = attacker._zCVob_bbox3D_maxs[2];
/****Negate****/
if(attacker_bbox_0<0)
{
negf(attacker_bbox_0);
};
//Next
if(attacker_bbox_1<0)
{
negf(attacker_bbox_1);
};
//Next
if(attacker_bbox_2<0)
{
negf(attacker_bbox_2);
};
//Next
if(attacker_bbox_3<0)
{
negf(attacker_bbox_3);
};
//Next
if(attacker_bbox_4<0)
{
negf(attacker_bbox_4);
};
//Next
if(attacker_bbox_5<0)
{
negf(attacker_bbox_5);
};
//#####################
var int victim_bbox_0; victim_bbox_0 = victim._zCVob_bbox3D_mins[0];
var int victim_bbox_1; victim_bbox_1 = victim._zCVob_bbox3D_mins[1];
var int victim_bbox_2; victim_bbox_2 = victim._zCVob_bbox3D_mins[2];
var int victim_bbox_3; victim_bbox_3 = victim._zCVob_bbox3D_maxs[0];
var int victim_bbox_4; victim_bbox_4 = victim._zCVob_bbox3D_maxs[1];
var int victim_bbox_5; victim_bbox_5 = victim._zCVob_bbox3D_maxs[2];
/****Negate****/
if(victim_bbox_0<0)
{
negf(victim_bbox_0);
};
//Next
if(victim_bbox_1<0)
{
negf(victim_bbox_1);
};
//Next
if(victim_bbox_2<0)
{
negf(victim_bbox_2);
};
//Next
if(victim_bbox_3<0)
{
negf(victim_bbox_3);
};
//Next
if(victim_bbox_4<0)
{
negf(victim_bbox_4);
};
//Next
if(victim_bbox_5<0)
{
negf(victim_bbox_5);
};
var int add1; add1=addf(attacker_bbox_0,attacker_bbox_1);
var int add2; add2=addf(attacker_bbox_2,attacker_bbox_3);
var int add3; add3=addf(attacker_bbox_4,attacker_bbox_5);
var int add4; add4=addf(add1,add2);
var int add5; add5=addf(add3,add4);
var int add6; add6=addf(attacker_Trafo,add5);

attackerpos=add6+ReadiedWeapon.range;

//#####################
var int add7; add7=addf(victim_bbox_0,victim_bbox_1);
var int add8; add8=addf(victim_bbox_2,victim_bbox_3);
var int add9; add9=addf(victim_bbox_4,victim_bbox_5);
var int add10; add10=addf(add7,add8);
var int add11; add11=addf(add9,add10);
var int add12; add12=addf(target_Trafo,add11);
targetpos=add12;

if(LEF(attackerpos,targetpos))
{
Print("Kolizja!");
};
};
Jednak nic się nie dzieje :/ a jestem pewien że dobrze napisałem (wg. twoich wskazówek)
 

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.
var int attacker_Trafo; attacker_Trafo = attacker._zCVob_trafo;
var int target_Trafo; target_Trafo = victim._zCVob_trafo;

??? Zajrzyj do skryptów oCNpc...
 
: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
class oCNpc
{
//zCVob {
  //zCObject {
  var int    _vtbl;
  var int    _zCObject_refCtr;
  var int    _zCObject_hashIndex;
  var int    _zCObject_hashNext;
  var string _zCObject_objectName;
  //}
  var int    _zCVob_globalVobTreeNode;
  var int    _zCVob_lastTimeDrawn;
  var int    _zCVob_lastTimeCollected;
  var int    _zCVob_vobLeafList_array;
  var int    _zCVob_vobLeafList_numAlloc;
  var int    _zCVob_vobLeafList_numInArray;
  var int    _zCVob_trafoObjToWorld[16];
  var int    _zCVob_bbox3D_mins[3];
  var int    _zCVob_bbox3D_maxs[3];
  var int    _zCVob_bsphere3D_center[3];
  var int    _zCVob_bsphere3D_radius;
  var int    _zCVob_touchVobList_array;
  var int    _zCVob_touchVobList_numAlloc;
  var int    _zCVob_touchVobList_numInArray;
  var int    _zCVob_type;
  var int    _zCVob_groundShadowSizePacked;
  var int    _zCVob_homeWorld;
  var int    _zCVob_groundPoly;
  var int    _zCVob_callback_ai;
  var int    _zCVob_trafo;
  var int    _zCVob_visual;
  var int    _zCVob_visualAlpha;
  var int    _zCVob_m_fVobFarClipZScale;
  var int    _zCVob_m_AniMode;
  var int    _zCVob_m_aniModeStrength;
  var int    _zCVob_m_zBias;
  var int    _zCVob_rigidBody;
  var int    _zCVob_lightColorStat;
  var int    _zCVob_lightColorDyn;
  var int    _zCVob_lightDirectionStat[3];
  var int    _zCVob_vobPresetName;
  var int    _zCVob_eventManager;
  var int    _zCVob_nextOnTimer;
  var int    _zCVob_bitfield[5];
  var int    _zCVob_m_poCollisionObjectClass;
  var int    _zCVob_m_poCollisionObject;
 
Jest to :
_zCVob_trafo
i to
_zCVob_trafoObjToWorld
Więc co ? Chyba nie _zCVob_trafoObjToWorld .-. ?
 

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.
Właśnie, że tak.
 
: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
To było szybkie :D
func int I_Npc_CollideWithHeroWeapon(var int att, var int vic)//item-> int or C_ITEM
{
var oCNpc attacker; attacker=Hlp_GetNpc(att);
var oCNpc victim; victim=Hlp_GetNpc(vic);
var C_Item ReadiedWeapon; ReadiedWeapon=Npc_GetReadiedWeapon(hero);

var int attacker_Trafo_x; attacker_Trafo_x = attacker._zCVob_trafoObjToWorld[3];
var int attacker_Trafo_y; attacker_Trafo_y = attacker._zCVob_trafoObjToWorld[7];
var int attacker_Trafo_z; attacker_Trafo_z = attacker._zCVob_trafoObjToWorld[11];

var int target_Trafo_x; target_Trafo_x = victim._zCVob_trafoObjToWorld[3];
var int target_Trafo_y; target_Trafo_y = victim._zCVob_trafoObjToWorld[7];
var int target_Trafo_z; target_Trafo_z = victim._zCVob_trafoObjToWorld[11];

var int attackerpos;
var int targetpos;


var int attacker_bbox_0; attacker_bbox_0 = attacker._zCVob_bbox3D_mins[0];
var int attacker_bbox_1; attacker_bbox_1 = attacker._zCVob_bbox3D_mins[1];
var int attacker_bbox_2; attacker_bbox_2 = attacker._zCVob_bbox3D_mins[2];
var int attacker_bbox_3; attacker_bbox_3 = attacker._zCVob_bbox3D_maxs[0];
var int attacker_bbox_4; attacker_bbox_4 = attacker._zCVob_bbox3D_maxs[1];
var int attacker_bbox_5; attacker_bbox_5 = attacker._zCVob_bbox3D_maxs[2];
/****Negate****/
if(attacker_bbox_0<0)
{
negf(attacker_bbox_0);
};
//Next
if(attacker_bbox_1<0)
{
negf(attacker_bbox_1);
};
//Next
if(attacker_bbox_2<0)
{
negf(attacker_bbox_2);
};
//Next
if(attacker_bbox_3<0)
{
negf(attacker_bbox_3);
};
//Next
if(attacker_bbox_4<0)
{
negf(attacker_bbox_4);
};
//Next
if(attacker_bbox_5<0)
{
negf(attacker_bbox_5);
};
//#####################
var int victim_bbox_0; victim_bbox_0 = victim._zCVob_bbox3D_mins[0];
var int victim_bbox_1; victim_bbox_1 = victim._zCVob_bbox3D_mins[1];
var int victim_bbox_2; victim_bbox_2 = victim._zCVob_bbox3D_mins[2];
var int victim_bbox_3; victim_bbox_3 = victim._zCVob_bbox3D_maxs[0];
var int victim_bbox_4; victim_bbox_4 = victim._zCVob_bbox3D_maxs[1];
var int victim_bbox_5; victim_bbox_5 = victim._zCVob_bbox3D_maxs[2];
/****Negate****/
if(victim_bbox_0<0)
{
negf(victim_bbox_0);
};
//Next
if(victim_bbox_1<0)
{
negf(victim_bbox_1);
};
//Next
if(victim_bbox_2<0)
{
negf(victim_bbox_2);
};
//Next
if(victim_bbox_3<0)
{
negf(victim_bbox_3);
};
//Next
if(victim_bbox_4<0)
{
negf(victim_bbox_4);
};
//Next
if(victim_bbox_5<0)
{
negf(victim_bbox_5);
};
var int add1; add1=addf(attacker_bbox_0,attacker_bbox_1);
var int add2; add2=addf(attacker_bbox_2,attacker_bbox_3);
var int add3; add3=addf(attacker_bbox_4,attacker_bbox_5);
var int add4; add4=addf(add1,add2);
var int add5; add5=addf(add3,add4);
var int add_a_x_y; add_a_x_y=addf(attacker_Trafo_x,attacker_Trafo_y);
var int add_a_x_y_z; add_a_x_y_z=addf(add_a_x_y,attacker_Trafo_z);

var int add6; add6=addf(add_a_x_y_z,add5);

attackerpos=add6+ReadiedWeapon.range;

//#####################
var int add7; add7=addf(victim_bbox_0,victim_bbox_1);
var int add8; add8=addf(victim_bbox_2,victim_bbox_3);
var int add9; add9=addf(victim_bbox_4,victim_bbox_5);
var int add10; add10=addf(add7,add8);
var int add11; add11=addf(add9,add10);

var int add_t_x_y; add_t_x_y=addf(target_Trafo_x,target_Trafo_y);
var int add_t_x_y_z; add_t_x_y_z=addf(add_t_x_y,target_Trafo_z);

var int add12; add12=addf(add_t_x_y_z,add11);
targetpos=add12;

if(LEF(targetpos,attackerpos))
{
Print("Kolizja!");
};
};
Jednak dalej nie działa :/ Tablice o rozmiarach [3],[7],[11] wziąłem stąd :
Yep 
To odpowiada za pozycje.
 

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.
Szczerze, Ty nawet nie wiesz co robisz. Mówiłem, że musisz znegować też trafo, jeśli jest ujemne. Bboxy musisz do siebie dodać. A Ty zrobiłeś coś na odpierdol żeby dostać gotowca.

Po chuj:
Dodajesz bbox y? Dodaje się to na samym końcu, jak już wszystko działa - jest wygodniej, mniej bugów.
Dodajesz trafo y? Po prostu po chuj?
Milion zmiennych?

Od kiedy:
item.range = float?
dodajemy Z do Y i X do Y?

Twój skrypt będzie zjadał 156 bajtów ze samych zmiennych (masz ich 39). Zmienne dla liczenia floatów mają ci pomóc pisać skrypt, potem je kasuj i zamieniaj nazwę zmiennej na strukturę tej zmiennej. Zaoszczędzasz w kurwy bajtów.

Ja sam nie jestem pewien jak to zrobić, próbuję, co mi przyjdzie na myśl... Może bboxZ + trafoZ i bboxX + trafoX liczyć osobno?
 
: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
Wiem co robię D: Pobieram z oCNPC tablice bbox i trafo(których nie neguje) i później dodaje je za pomocą addf aby potem je porównać, co nie daje skutków ;P
Przeszperałem w CZ i znalazłem tą kolizję, pobiera ona [bbox] z klasy oCNPC i porównuje je do (chyba vfx dafuq?)
Gdy się zgadza jest print X1- in etc.
Tak wygląda to z tym niby vfx...
var int m11,var int m14;
var int m21,var int m24;
var int m31,var int m34;
var int dist;
//------------------
// Right Hand
//------------------

m11 =  MEM_ReadInt(R_SWDDMG_PTR+60);
m14 =  MEM_ReadInt(R_SWDDMG_PTR+72);

m21 =  MEM_ReadInt(R_SWDDMG_PTR+76);
m24 =  MEM_ReadInt(R_SWDDMG_PTR+88);

m31 =  MEM_ReadInt(R_SWDDMG_PTR+92);
m34 =  MEM_ReadInt(R_SWDDMG_PTR+104); 

item = Npc_GetReadiedWeapon(hero);
dist = mkf(item.range);
dist = negf(dist);//-N



HeroDamage_Hitpos1_X = mulf(dist,m11);
HeroDamage_Hitpos1_Y = mulf(dist,m21);
HeroDamage_Hitpos1_Z = mulf(dist,m31);

HeroDamage_Hitpos1_X = addf(HeroDamage_Hitpos1_X,m14);
HeroDamage_Hitpos1_Y = addf(HeroDamage_Hitpos1_Y,m24);
HeroDamage_Hitpos1_Z = addf(HeroDamage_Hitpos1_Z,m34);


dist = divf(dist,mkf(2));//-N/2

HeroDamage_Hitpos2_X = mulf(m11, dist);
HeroDamage_Hitpos2_Y = mulf(m21, dist);
HeroDamage_Hitpos2_Z = mulf(m31, dist);

HeroDamage_Hitpos2_X = addf(HeroDamage_Hitpos2_X,m14);
HeroDamage_Hitpos2_Y = addf(HeroDamage_Hitpos2_Y,m24);
HeroDamage_Hitpos2_Z = addf(HeroDamage_Hitpos2_Z,m34);         
Tutaj to szczerze nie mam pojęcia co to m14 m24 itd. Najlepiej jakby się wypowiedziała osoba która miała stycznośc z tymi skryptami.
komentarz zmiennej
var int R_SWDDMG_PTR;//ptr to vfx
 

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.
orcwarrior zapewne robił te skrypty. Z tego co mi wiadomo to tylko on takie cuda wyczyniał. I nie, nie wiesz, co robisz.
 
: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.

Surmax

Surmax

Użytkownicy
posty22
ProfesjaSkrypter
  • Użytkownicy
Próbuję ogarnąć Ikarusa ale jakoś mi to nie wychodzi  :hmmm:
Może wy mi pomożecie?  :cool:

Skrypt użytkownika Splash modyfikujący kolor mgły i oświetlenia  O_O
func void SetFogColor (var int day_time, var int R, var int G, var int B)
{
    var int ptr; ptr = MEM_ReadInt (MEM_SkyController.stateList_array + day_time * 4);
    MEM_WriteInt (ptr+16, mkf(R));
    MEM_WriteInt (ptr+20, mkf(G));
    MEM_WriteInt (ptr+24, mkf(B));
};

func void SetLightningColor (var int day_time, var int R, var int G, var int B)
{
    var int ptr; ptr = MEM_ReadInt (MEM_SkyController.stateList_array + day_time * 4);
    MEM_WriteInt(ptr+4, mkf(R));
    MEM_WriteInt(ptr+8, mkf(G));
    MEM_WriteInt(ptr+12, mkf(B));
};

Nie chę używać czegoś czego nie rozumiem więc mam kilka pytań:

1. mkf(r), mkf(g), mkf(b) to zapewne kanały RBG koloru a co oznacza mkf?
2. Co oznacza MEM_WriteInt i MEM_ReadInt?
3. Co to jest ptr i dlaczego się zwiększa?
4. Skąd wiecie o ile trzeba zwiększać ptr by zmodyfikować kanały RGB mgły?
5. Co to jest MEM_SkyController.stateList_array?
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
1) mkf stwórz float.  Jest to zReal wiec trzeba użyć floatow.
2)MEM_Writeint (pamięć, wypisz inta) służy do zmiany zmiennych które zostały ustalone przez Piranie na nasze własne. MEM_ReadInt (pamiec,  wczytaj int)  pobiera zmienna z danej klasy.
3) ptr to zmienna która ustala zmienne z klasy. (wzrasta bo zmienne z klasy są wyższe. (ciężko  wyjaśnić z telefonu)
4)Odpowiednie obliczenie zmiennych z klas w tym przypadku zCSkyState.
5) Jest to ptr odnoszący się do klasy zCSkyState z klasy zCSkyController
 

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

Surmax

Surmax

Użytkownicy
posty22
ProfesjaSkrypter
  • Użytkownicy
1. Już rozumiem, znalazlem temat Ikarusowe Float
2. MEM_WriteInt (ptr+16, mkf(R));      W tym przypadku zmienna przyjmuje wartość zmiennej R?
3. Dalej nie czaje :(
4. Też nie rozumiem :/
5. 50/50 rozumiem :D

Jest coraz lepiej. Jeszcze 10 odpowiedzi i bede rozumial Ikarusa. :trollface:
 

Wowoz

Wowoz

Użytkownicy
Wowoźny
posty3698
Propsy4862
NagrodyVV
Profesjabrak
  • Użytkownicy
  • Wowoźny
ptr to przypadkiem nie wskaźnik na konkretną komórkę pamięci?
 

Surmax

Surmax

Użytkownicy
posty22
ProfesjaSkrypter
  • Użytkownicy
Mylicie mnie :/ :P

A co to są tak zwane "adresy"?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
ptr = wskaźnik do pamięci gry, w danym adresie, czyli inaczej wskaźnik do funkcji systemowej gry. Zwiększanie ptr (dodawanie danej liczby) jest zależne od długości zmiennej, dodajemy +4, jeśli szukamy inty, +20 jeśli stringi.
 
: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
http://themodders.org/index.php?topic=25699.20
Może zrozumiesz z postu Avallach'a.
Tak pointer zwiększa się o 4 lub 20. Ale można też zrobić np tak.
var zCSkyState state; State= _^(MEM_SkyControler.state0);
state.fogcolor[0]= mkf(x);
Jakoś tak >.< niestety nie znam wsyzstkich zmiennych na pamięć więc mogę to przedstawić na błędnym przykładzie.
W takim wypadku jak wyżej nie trzeba liczyć pointerów. (Ale nie zawsze to działą, i trzeba korzystać z MEM_WriteInt)
P.S Ikarusa nie ogarniesz w 10 odpowiedzi. Mi to zajęło pół roku, i do tej pory nie ogarniam go w 100%
 

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

Surmax

Surmax

Użytkownicy
posty22
ProfesjaSkrypter
  • Użytkownicy
Aaa.  To po prostu jest zapis bajtowy? Lub bitowy(nie wiem jaki :D)
A jeśli dam +5 to wywali błąd? A skąd mam wiedzieć jaki ma adres to co mnie interesuje?

Edit: Co to jest _^ ?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
@SiemaczyS Troszkę go mylisz.

var int ptr; ptr = MEM_ReadInt (MEM_SkyController.stateList_array + day_time * 4);
To wskaźnik do tablicy zapisanej w systemie gry. Tablica ma rozmiar 8 (jeśli dobrze pamiętam), stąd zmienna day_time, w której wpisujemy wartość od 0 do 7, a ta wartość sprawdza godzinę gry.

MEM_WriteInt(ptr+4, mkf(R));Odszukuje zmienną, która opisuje kolor czerwony w tej tablicy (co prawda, tablica tylko zawiera czas, to funkcja określa kolory). Ptr+4 = kolor czerwony, +8 kolor zielony, a +12 niebieski. To przykład tylko na tym kawałku skryptu.

_^ to MEM_PtrToInst, czyli przekształca wskaźnik w instance.
 
: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.

Surmax

Surmax

Użytkownicy
posty22
ProfesjaSkrypter
  • Użytkownicy
Coś czaję.
Ale jednego nie wiem
Cytuj
   _^ to MEM_PtrToInst, czyli przekształca wskaźnik w instance. 
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Masz klasę oCSkyController, a jego ptr jest w postaci int. Przypisując MEM_SkyController = ptr wywali błąd, jeśli zaś użyjesz MEM_SkyController = _^(ptr); lub MEM_SkyController = MEM_PtrToInst(ptr); to nie wywali błędu.
 
: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.


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