Ikarus (Pakiet skryptów) 413889 1020

O temacie

Autor orcwarrior

Zaczęty 11.06.2010 roku

Wyświetleń 413889

Odpowiedzi 1020

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Nie ma mnie w domu, więc nie dam rady.
 
: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
Cóż, mimo to dzięki za pomoc z tym wszystkim, kiedyś postaram sie to ogarnąć, (szczególnie ten chory movment boxa ;-; )
Tutaj wrzucam dodatkowy skrypt (zmieniający tex nieba D:, przerobiłem skrypt Splash'a pod zmianę tex (u mnie działa dobrze))
func void SetSkyTexture (var int day_time,var string texture)
{
    var int ptr; ptr = MEM_ReadInt (MEM_SkyController.stateList_array + day_time * 4);
    var zCSkyState state; state = MEM_PtrToInst (ptr);
state.layer0_texName = texture;
};
i za pomocą offsetów
// 0 - 12:00
// 1 - 17:00
// 2 - 19:12
// 3 - 20:24
// 4 - 0:00
// 5 - 3:20
// 6 - 4:30
// 7 - 6:00
Ustawiamy czas i teksturę:
/*****************\
*****Per_Frame*****
\*****************/
SetSkyTexture(0,"Poludnie.tga");
Oczywiście potrzebny jest skrypt Splasha który jest na stronie 16 tego tematu.
 

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

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Można zmieniać co tylko sobie zażyczysz, ale akurat zmiana tekstury nieba nie jest na tyle imponującym efektem jak się wydaje, ponieważ nie da się zmieniać kanału alfa tekstury nieba w Gothicu 2 wedle życzenia, przez co efekt "przenikających" przez siebie tekstur jest niemożliwy do osiągnięcia i wygląda to tak:
 
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
O tym to nie wiedziałem, ale dzięki za taką odpowiedź (A nie da się zmienić textury nieba na 100% alfa :lol2:?)
Ciekawią mnie jeszcze dwie zmienne:
-fogDist ??? Dystans mgły?
-domeColor1 i 2 (to są raczej tablice) kolor czego?
Jak byś był taki miły to powiedz mi od czego są, może się tym pobawię :lol:
 

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

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Cytuj
A nie da się zmienić textury nieba na 100% alfa :lol2:?
Tym sposobem nie. Może niedługo to rozkminię.
Cytuj
-fogDist ??? Dystans mgły?
Yep.
Cytuj
-domeColor1 i 2 (to są raczej tablice) kolor czego?
Kolor tekstury nieba. 0 - R, 1 - G, 2 - B. DomeColor0 to pierwsza warstwa, a domeColor1 to druga.

    var int sunOn;               //zBOOL - włączone słońce (nie wiem czy działa)
    var int cloudShadowOn;       //int - cienie chmur
    var int layer0_skyMode;      //zESkyLayerMode nie wiem, jakiś tryb
    var int layer0_texAlpha;     //zREAL - kanał alfa tekstury
    var int layer0_texScale;     //zREAL - rozmiar tekstury
    var int layer0_texSpeed[2];  //zVEC2 - prędkość przemieszczania się po niebe tekstury
    var int layer1_skyMode;      //zESkyLayerMode
    var int layer1_tex;          //zCTexture*
    var string layer1_texName;   //zSTRING
    var int layer1_texAlpha;     //zREAL
    var int layer1_texScale;     //zREAL
    var int layer1_texSpeed[2];  //zVEC2
W przypadku prędkości przemieszczania się tekstury, każdy indeks (czyli tylko dwa :lol: ) odpowiada także za kierunek w którym się przemieszcza. Prawdopodobnie wartości ujemne spowodują przemieszczanie się w przeciwną stronę.
 
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
Dobra i ostatnie pytanie na razie D:
Otóż tak: aby połączyć się z klasą (nie wiem jak to się nazywa): muszę użyć czegoś takiego:
MEM_ReadInt- przypisać to do zmiennej. przykład(MEM_ReadInt(MEM_Camera), i dzięki temu zmienna jest przypisana do klasy kamery, i mogę teraz liczyć pointery +4,8 itd. tak to działa?, drugi przykład to zamiast liczyć pointer np. MEM_ReadInt(MEM_Camera+56) mogę dać MEM_ReadInt(MEM_Camera.nazwaptr)
Chodzi mi o to że chcę zacząc bawić się czymś ciekawszym niż pisanie skryptu z użyciem LeGo i View :F
 

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

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Jeśli nie masz wskaźnika do obiektu, to musisz użyć funkcji MEM_InstToPtr (MEM_InstGetOffset to ta sama funkcja), a nie MEM_ReadInt.
MEM_ReadInt (MEM_InstToPtr (MEM_Camera)+4);
 
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
Ok, dzięki teraz już to powoli rozumiem. Czyli np. do klasy oCGame wyglądało by to tak :
var int ptr; ptr=MEM_ReadInt(MEM_InstToPtr(MEM_Game)+4);
ptr= ptr+8; i tak dalej?
Ponowne pytanie do klasy nieba :lol:
layer1_texSpeed to czy layer0_texSpeed to odpowiada za przemieszczanie się chmur na niebie :F (chcę zrobić podobny efekt snu jaki jest w CZ, tylko nie wiem jak ugryźć chmury :F )
 

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

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Cytuj
var int ptr; ptr=MEM_ReadInt(MEM_InstToPtr(MEM_Game)+4);
ptr= ptr+8; i tak dalej?
Nie.

MEM_ReadInt (MEM_InstToPtr (MEM_Camera)+4);To to samo co:
var int ptr; ptr = MEM_InstToPtr (MEM_Camera);
MEM_ReadInt (ptr+4);

 
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 można liczyć już ptr w taki sposób ptr=ptr+4;
Czy chodzi o takie coś?
ptr=MEM_IntsToPtr(MEM_GAME);
ptr=MEM_ReadInt(ptr);
ptr=ptr+4;
 Tak to wygląda :F ?
 

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

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Tak.
ptr = MEM_ReadInt(ptr); // _vtbl
ptr = ptr+4; // _zCSession_csMan
ptr = ptr+8; // _zCSession_world
I tak dalej.
 
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
Ok, coraz lepiej to ogarniam :F I teraz ostatnie D: Tak więc, skąd mam wiedzieć z jakiej klasy jest ptr np. w skryptach orka:
func void SleepFX_SpeedUpLayersOffset()
{
var int state;
var int speed;
speed = mkf(160);//regular speed will be multipiled by 160
state = MEM_ReadInt(SkyController_Ptr+308);//state0
if(state!=last_state0)&&(state!=last_state1)
{
//break if already multipiled
if(gef(MEM_ReadInt(state+184),mkf(2)))
{ return; };
if(!Hlp_StrCmp(STR_Prefix (MEM_ReadString(state+92),8),"SKYNIGHT"))
{
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+120));
MEM_WriteInt(state+120,speed);//layer1 speedx
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+124));
MEM_WriteInt(state+124,speed);//layer1 speedy
};
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+184));
MEM_WriteInt(state+184,speed);//layer1 speedx
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+188));
MEM_WriteInt(state+188,speed);//layer1 speedy
};
last_state0 = state;
state = MEM_ReadInt(SkyController_Ptr+312);//state1
if(state!=last_state1)
{
//break if already multipiled
if(gef(MEM_ReadInt(state+184),mkf(2)))
{ return; };
if(!Hlp_StrCmp(STR_Prefix (MEM_ReadString(state+92),8),"SKYNIGHT"))
{
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+120));
MEM_WriteInt(state+120,speed);//layer1 speedx
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+124));
MEM_WriteInt(state+124,speed);//layer1 speedy
};

speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+184));
MEM_WriteInt(state+184,speed);//layer1 speedx
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+188));
MEM_WriteInt(state+188,speed);//layer1 speedy
};
last_state1 = state;
};
Wiem że nie mogę tego żywcem skopiować bo klasa nieba się tragicznie różni od tej z G2 :F a nigdzie nie jest okomentowane do jakiej (do zCSkyController_Outdoor mi nie pasuje bo jest tam duża tablica[256] ktora blokuje ptr np. 320, a wątpie aby ork ją rozbił na nowe ptr :F ) I drugie już moje ostatnie upewnienie:
Czy pointery udało mi się dobrze policzyć ?
class zCMesh {
    var int    _vtbl;//0
    var int    _zCObject_refCtr;//4
    var int    _zCObject_hashIndex;//8
    var int    _zCObject_hashNext;//12
    var string _zCObject_objectName;//16

    var int _zCVisual_nextLODVisual;        //36
    var int _zCVisual_prevLODVisual;               //40 
    var int _zCVisual_lodFarDistance;                //44   
    var int _zCVisual_lodNearFadeOutDistance;//48

    var int numPoly;       //int //52
    var int numVert;       //int 56
    var int numFeat;       //int 60

    var int vertList;              //zCVertex** 64
    var int polyList;              //zCPolygon** 68
    var int featList;              //zCVertFeature** 72

    var int vertArray;             //zCVertex* 76
    var int polyArray;             //zCPolygon* 80
    var int featArray;             //zCVertFeature*84

    //zTBBox3D        bbox3D;
        var int bbox3D_mins[3];       //zREAL //88
        var int bbox3D_maxs[3];       //zREAL //88+3*4= 100
    //112 i tak dalej?
:F mam nadzieje że to mój ostatni tego typu post D:
 

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

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Cytuj
skąd mam wiedzieć z jakiej klasy jest ptr np. w skryptach orka
Zapytaj Orca :lol: albo czytaj pozostawione przez niego różne dopiski.
Cytuj
Czy pointery udało mi się dobrze policzyć ?
Chyba tak.
 
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
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
mam problem z Lego chickena, niestety ucina dialogi 2giej osoby (tzn. albo nie wyświetla okienka i nie ma głosu, albo oba na raz, raczej działa losowo, szczególnie w połowie dialogu). nie bardzo nawet wiem gdzie to szukać.
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Czy to możliwe aby klasa była źle napisana/ policzona?
Przerabiałem skrypt orka dot. snu, ale natrafiłem na crash gothica...
func void SleepFX_SpeedUpLayersOffset()
{
var int state;
var int speed;
speed = mkf(160);//regular speed will be multipiled by 160
MEM_Info("Crashprzed ");
state = MEM_ReadInt(SkyController_Ptr+250);//state0
if(state!=last_state0)&&(state!=last_state1)
{
//break if already multipiled
if(gef(MEM_ReadInt(state+144),mkf(2)))
{ return; };
if(!Hlp_StrCmp(STR_Prefix (MEM_ReadString(state+72),8),"SKYNIGHT"))
{
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+100));//jest
MEM_WriteInt(state+100,speed);//layer0 speedx //jest
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+104));//jest
MEM_WriteInt(state+104,speed);//layer0 speedy //jest
};
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+144));//jest
MEM_WriteInt(state+144,speed);//layer1 speedx
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+148));//jest
MEM_WriteInt(state+148,speed);//layer1 speedy
};
last_state0 = state;
state = MEM_ReadInt(SkyController_Ptr+254);//state1//jest
if(state!=last_state1)
{
//break if already multipiled
if(gef(MEM_ReadInt(state+144),mkf(2)))//jest
{ return; };
if(!Hlp_StrCmp(STR_Prefix (MEM_ReadString(state+72),8),"SKYNIGHT"))
{
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+100));
MEM_WriteInt(state+100,speed);//layer1 speedx
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+104));
MEM_WriteInt(state+104,speed);//layer1 speedy
};

speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+144));
MEM_WriteInt(state+144,speed);//layer1 speedx
speed = mulf(sleepfx_cloudsSpeedMultipiler , MEM_ReadInt(state+148));
MEM_WriteInt(state+148,speed);//layer1 speedy
MEM_Info("Crashpo");
};
last_state1 = state;
};
Klasa zSkyState w gothic'ach różni się o jakieś dodatkowe pięć zmiennych w Layer0 i Layer1. Ptr już przeliczyłem (nawet dwu krotnie :lol2: ) Podobny błąd miałem gdy przepisywałem funkcje do zmiany pogody, jednak tam udało mi się to obejść skryptem Splash'a.
 

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.
Każda klasa różni się pomiędzy gothicami. Musisz znaleźć klasę zSkyState i porównać co się czym różni, lub pozmieniać pointery (tylko). Ale nie wiem czy jest udostępniona ta klasa gdziekolwiek.
 
: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 zCSkyState {
    var int time;                //zREAL
    var int polyColor[3];        //zVEC3
    var int fogColor[3];         //zVEC3
    var int domeColor1[3];       //zVEC3
    var int domeColor0[3];       //zVEC3
    var int fogDist;             //zREAL
    var int sunOn;               //zBOOL
    var int cloudShadowOn;       //int
    var int layer0_skyMode;      //zESkyLayerMode
    var int layer0_tex;          //zCTexture*
    var string layer0_texName;   //zSTRING
    var int layer0_texAlpha;     //zREAL
    var int layer0_texScale;     //zREAL
    var int layer0_texSpeed[2];  //zVEC2
    var int layer1_skyMode;      //zESkyLayerMode
    var int layer1_tex;          //zCTexture*
    var string layer1_texName;   //zSTRING
    var int layer1_texAlpha;     //zREAL
    var int layer1_texScale;     //zREAL
    var int layer1_texSpeed[2];  //zVEC2
};
Użyłem tej klasy pod g2, ale crashuje złymi ptr. Klasę zCSkyController_Outdoor porównałem i wyszukałem właściwie pointery (bo system deszczu działa akurat bardzo dobrze ) D: pytanie gdzie jest błą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.
Gdzieś na pewno. :trollface:
 
: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
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Przeglądając stare tematy zauważyłem, że niektórych problemów nie udało się rozwiązać, ponieważ trzeba było użyć konsoli, między innymi dotyczyły one wywołania komendy zHighQualityRender. Problem solved:
func void zCConsole_Evaluate (var string command)
{
    CALL_zStringPtrParam (command);
    CALL__thiscall (MEMINT_SwitchG1G2 (9291168, 11221088), MEMINT_SwitchG1G2 (7189968, 7882848));
};
Komendy muszą być pisane dużymi literami
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Możesz rozwinąć, co ta funkcja robi? Niektóre półmózgi (ja) nie czają. :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.


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