Ikarus (Pakiet skryptów) 283756 1020

O temacie

Autor orcwarrior

Zaczęty 11.06.2010 roku

Wyświetleń 283756

Odpowiedzi 1020

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
QS_GetItem() -> HookEngineF(7369071,6,QS_GetItem);
 

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 aCQuickSlot qs; qs = get(new(aQuickSlot));

var aCQuickSlot qs; qs = new(aQuickSlot);

W ogóle to podejrzyj już gotowce. Musisz zrobić jeszcze instance do tej klasy.
 
: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
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Prosty pointer do klasy zCObjectFactory!!
W dość prosty sposób stworzyłem wskaźnik który wskazuję na klasę zCObjectFactory. Wykorzystuje się go jak np. MEM_CAMERA. Oto Kod:
//Pusta klasa, nie mam jeszcze wskaźników.
class zCObjectFactory
{
};
//Instancja:
instance MEM_Factory(zCObjectFactory);
//Inicjacja w funkcji: MEM_InitGlobalInst()
MEM_Factory = _^(MEM_ReadInt(MEMINT_ObjectFactory));
I gotowe :D Wszystko pięknie śmiga ;)
Btw. Na WorldOfPlayers.ru są wszystkie adresy z G2, jednak nie są w arkuszu kalkulacyjnym lecz w zwykłym pliku tekstowym :/
 

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.
Wszystko ok, tylko dwa pytania:
1. Co to jest? MEMINT_ObjectFactory
2. Do czego ta klasa jest przydatna?
 
: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
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Wszystko ok, tylko dwa pytania:
1. Co to jest? MEMINT_ObjectFactory
2. Do czego ta klasa jest przydatna?
Ups, zapomniałem o adresie.
const int MEMINT_ObjectFactory = 9276912;//0x008D8DF0
Klasa tworzy różne obiekty, które można później wykorzystać jako wskaźnik. np.
virtual zCWaypoint* CreateWaypoint(void)
{
XCALL(0x0076FEA0);
};
Gdzie wystarczy CALL__thiscall(_@(MEM_Factory),0x0076FEA0); //rzecz jasna DEC
I mamy już wskaźnik do klasy zCWaypoint.
Takie pytanie xD Napisałem render przedmiotu w taki sposób:
func void _QS_RenderItem(var int slot,var int itm, var int view, var int RenderI)
{
view = 1; //brak view na chwile obecną
if(view)
{
if(!MEM_ReadStatArr(QS_RenderDeb,slot))
{
RenderI = Render_AddItem(itm,Calculate_ViewPos(slot),256,Calculate_ViewPos(slot)+512,256+512);
// Render_AddView(view);
Render_OpenView(RenderI);
MEM_WriteStatArr(QS_RenderDeb,slot,true);
};
};
};
I wywołuje go np. tak:
_QS_RenderItem(1,strzala,0,QS_RenderID[1]);
RenderID to tablica, ale gdy chce usunąć render pojawia się błąd bo render wynosi 0, i nie znika... O co chodzi, czy Render i View nie może zostać zapisany w tablicy?
Dodam, że Print z napisem "Remove" pojawia się gdy użyje funkcji.
 

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.
@Siemekk Nie wiem, czy już sobie z tą myszką poradziłeś, ale znalazłem funkcję, która Cię zaciekawi (tzn. funkcję Mud-Freak'a):

/* Mouse handling for manually turning the player model by mouse input */
func void freeAimManualRotation() {
    if (!freeAimIsActive()) { return; };
    var int deltaX; deltaX = mulf(mkf(MEM_ReadInt(mouseDeltaX)), MEM_ReadInt(mouseSensX)); // Get mouse change in x
    if (deltaX == FLOATNULL) { return; }; // Only rotate if there was movement along x position
    deltaX = mulf(deltaX, castToIntf(FREEAIM_ROTATION_SCALE)); // Turn rate
    var int hAniCtrl; hAniCtrl = MEM_ReadInt(_@(hero)+2432); // oCNpc.anictrl
    const int call = 0; var int null;
    if (CALL_Begin(call)) {
        CALL_IntParam(_@(null)); // 0 = disable turn animation (there is none while aiming anyways)
        CALL_FloatParam(_@(deltaX));
        CALL__thiscall(_@(hAniCtrl), oCAniCtrl_Human__Turn);
        call = CALL_End();
    };
};

Tu kod, który skaluje szybkość myszki pozycji X.
const float  FREEAIM_ROTATION_SCALE     = 0.16;                 // Turn rate. Non-weapon mode: 0.2 (zMouseRotationScale)
var int deltaX; deltaX = mulf(mkf(MEM_ReadInt(mouseDeltaX)), MEM_ReadInt(mouseSensX)); // Get mouse change in x
deltaX = mulf(deltaX, castToIntf(FREEAIM_ROTATION_SCALE)); // Turn rate

Powinno Ci pomóc.
 
: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
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Dzięki, jak skończe QuickSlot'a to wezmę się za ten cholerny kursor.
Btw. Próbuję założyć tarczę(_EquipItem()), ale nie pojawia się na slocie :/ Ktoś wie jak najlepiej sprawić aby pojawiała się?
Funkcja Equip_Item by Splash:
func void _EquipItem(var c_npc slf, var int inst)
{
CALL_PtrParam(MEM_InstToPtr(inst));
CALL__thiscall(MEM_InstToPtr(slf),7545792);
};
//A tu mój kod do zakładania tarczy

func void _QS_Shields(var int inst)
{
var oCNpc her; her = Hlp_GetNpc(hero);
if(GetSlotItem(hero,"ZS_SHIELD"))&& (!her.fmode)
{
var c_item shield; shield = _^(GetSlotItem(hero,"ZS_SHIELD"));
if(Hlp_GetInstanceID(shield) != inst)
{
_Unequip_Item(hero,Hlp_GetInstanceID(shield));
_EquipItem(hero,inst);
};
}
else if(!GetSlotItem(hero,"ZS_SHIELD")) && (!her.fmode)
{
_EquipItem(hero,inst);
};
};
 

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.
Czy mainflag Twojej tarczy to ITEM_KAT_NF?
 
: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
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Tak.
 

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.
Wychodziło by na to, że system pack używa innej funkcji zakładania przedmiotu. Musiałbyś pogadać o tym z MaGoth'em.
 
: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
Cytuj
Funkcja Equip_Item by Splash
By Piranha Bytes* xD
 
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
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Przeszperałem całą klasę oCNpc.h Jednak nic nie znalazłem ;/ Jedyne co mam to nowe metody AST np.
EquipWeapon_ast(oCItem*);
Jednak nie mam kodu źródłowego tych funkcji :/ Ale zapewne tam może być odpowiedź ponieważ:
mają External'a który pozwala założyć np. Npctowi hełm lub lewego duala.
 

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

K4R0L111

K4R0L111

Użytkownicy
posty31
Propsy14
ProfesjaSkrypter
  • Zbanowany
A w pliku SystemPack.ini zmieniłeś EnableShields na 1?

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator

Splash
Moderator

Ikarus (Pakiet skryptów)
#813 2017-01-13, 13:33(Ostatnia zmiana: 2017-01-13, 13:40)
W pliku Trialoge znajduje się funkcja EquipWeapon. Działa prawidłowo na broni do walki wręcz jak i tarczach. Funkcja sama zdejmuje broń, jeśli próbujesz założyć tą sama broń, co masz już założoną. Niestety nie działa za dobrze z bronią dystansową. Ale to działa prawidłowo:
CALL_PtrParam (itemPtr);
CALL__thiscall (MEM_InstToPtr (hero), 7578384);

I jeszcze coś. Okazuje się, że Frame Functions nie zawsze lubi się z funkcjami, których metodą jest klasa oCNpc (nie wykluczam innych). A dokładnie chodzi o funkcję, która jest hookowana do ich funkcjonowania - oCGame::Render. Funkcja jest wywoływana co klatkę przez silnik, dlatego postanowiłem podpiąć do niej swoją funkcję za pomocą HookEngine. Efekt? Gra się scrashowała, a treść błędu z okna access violation wyglądała tak:
[w] 03:53 Warn:  0 ==    ============================================= CALLSTACK : ============================================================== .... <zError.cpp,#474>
[w] 03:53 Warn:  0 00    1B:00780D86 (0x0135FCA8 0x00000000 0x0135FCA8 0x00000000) Gothic2.exe, oCWorldTimer::Timer()+6 byte(s), P:\dev\g2addon\release\Gothic\_ulf\oWorld.cpp, line 1001+6 byte(s) .... <zError.cpp,#474>
[w] 03:53 Warn:  0 00    1B:006C87A5 (0x0082F0EC 0x00000014 0x00380D4C 0x0EBE8410) Gothic2.exe, oCGame::Render()+261 byte(s), P:\dev\g2addon\release\Gothic\_ulf\oGame.cpp, line 2648 .... <zError.cpp,#474>
[w] 03:53 Warn:  0 00    1B:0078188B (0x0000002C 0x000A61EC 0x00000006 0x00000000) Gothic2.exe, MainProg()+75 byte(s), P:\dev\g2addon\release\Gothic\_ulf\Phoenix.cpp, line 111 .... <zError.cpp,#474>
[w] 03:53 Warn:  0 00    1B:00503270 (0x00400000 0x00000000 0x00162747 0x00000001) Gothic2.exe, HandledWinMain()+928 byte(s), P:\dev\g2addon\release\ZenGin\_carsten\zWin32.cpp, line 1169 .... <zError.cpp,#474>
[w] 03:53 Warn:  0 00    1B:00502DFD (0x0135FED0 0x00000000 0x00162747 0x00000001) Gothic2.exe, WinMain()+141 byte(s), P:\dev\g2addon\release\ZenGin\_carsten\zWin32.cpp, line 1054+17 byte(s) .... <zError.cpp,#474>
[w] 03:53 Warn:  0 00    1B:007D43F8 (0x00000000 0x00000000 0x00000000 0x00000000) Gothic2.exe, WinMainCRTStartup()+224 byte(s) .... <zError.cpp,#474>
[w] 03:53 Warn:  0 ==    ===================================== UNHANDLED EXCEPTION OCCURED ====================================================== .... <zError.cpp,#474>

Dla niektórych wygląda ona znajomo. Gdy zhookowałem inną funkcję, moja funkcja wywoła się prawidłowo. Nie mam pojęcia czym jest to spowodowane. Wiem tylko tyle, że Gothic ma swoje humorki i trzeba znaleźć inny sposób na wywołanie funkcji.
 
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
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Miałem tak z wierzchowcami... Przez co musiałem stworzyć Tick-Tocki. Wtedy działa już normalnie.
 

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

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer

Siemekk
Złote Wrota

Ikarus (Pakiet skryptów)
#815 2017-01-17, 15:22(Ostatnia zmiana: 2017-01-17, 16:10)
Czy da w jakiś sposób zapisać do pliku (BinaryMachines) listę ostatnio wykonanych funkcji przez silnik gry? Chciałbym wiedzieć jakie funkcje wykonuje bohater np. gdy umiera... Chodzi mi o zapis do pliku np. tego:
EV_AimAt
EV_AlignToFP
EV_Ask

Post połączony: 2017-01-17, 16:10
Edit:: Lub jak sprawdzić która funkcja odpowiedzialna jest za wywołanie funkcji klawisza? Przeszukałem całe zcinput.h, ale nic ciekawego tam nie ma: Hooki nie działają :/
 

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

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
Co masz na myśli poprzez "funkcji klawisza"?
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Fabio

Fabio

The Modders
posty3466
Propsy2150
ProfesjaSkrypter
  • The Modders
Co masz na myśli poprzez "funkcji klawisza"?

Pewnie wywołanie funkcji poprzez wciśnięcie danego klawisza.

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer

Siemekk
Złote Wrota

Ikarus (Pakiet skryptów)
#818 2017-01-17, 17:08(Ostatnia zmiana: 2017-01-17, 18:20)
Jakoś znalazłem nie wiem jak, ale działa xD
func void _RemoveKey(var int key)
{
if(MEM_ReadInt(ESP+4)==key)
{
MEM_WriteInt(ESP+4,-1);
};
};

func void RemoveKeys()
{
_RemoveKey(KEY_ESCAPE);//Przykłady
_RemoveKey(KEY_X); //Przykłady
};
[...]
HookEngineF(7324016,7,RemoveKeys); /
Funkcja wyłącza klawisz np. ESC (Nie robi tego co miał robić np. Nie otwiera menu). I tu co dziwne działają funkcję Ikarusowe MEM_KeyState!! Więc dla przykładu... Można wyłączyć stare menu i napisać nowe z użyciem LeGo i Ikarusa!
 

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

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Czym jest MEM_AssignContentInst?
Rozumiem że przypisuje ona wartość Instancji... Ale czy można to jakoś zastąpić?
Przykład:
INSTANCE wilczek(C_ITEM);

MEM_AssignContentInst(wiczek, moja wartość);
Czy da się to jakoś zastąpić(np. PermMem get(), new() etc.)
 

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


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