Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Shothic

Strony: [1] 2
1
Czas Zapłaty / Czas Zapłaty - premiera!
« dnia: 2014-02-13, 10:01 »
Jak tam prace nad patchem? github coś ucichło ostatnio , dalej trwają prace?

2
Czas Zapłaty / Błędy w ostatecznej wersji moda
« dnia: 2013-11-19, 15:19 »
Co do zadania z informatorem urta, to jest problem z tym, że jak bezi uderzy z runy i wszyscy strażnicy zginą( czasem także informator) to nie można z nim później porozmawiać. Rozwiązaniem było to, że musiałem zmusić informatora do bicia mnie i wtedy nie zgineli nagle wszyscy strażnicy i poszło dalej z fabułą. Tak mi się wydaje , że im więcej jest zmiennych i warunków do spełnienia w jakimś zadaniu to występuje więcej nie dociągnięć, bugów itd. Wiem, że większość zostało naprawionych . Ale co tu mówić przy tak rozbudowanym modzie.  Ciężka to je praca, życzę powodzenia :D

3
Skrypty / dwie zmienne w jednej linii
« dnia: 2011-12-09, 22:56 »
http://imageshack.us/photo/my-images/853/lolqn.png

Na końcu UseCzystaKsiega dodaj
tab = "";

4
Skrypty / dwie zmienne w jednej linii
« dnia: 2011-12-09, 22:23 »
Robisz tak:
func void DIA_Questob_ST_Wybor1_1_1()
{
        a = ConcatStrings(a, "A");
};

func void DIA_Questob_ST_Wybor3_1()
{
        a = ConcatStrings(a, "B");
};

func void DIA_Questob_ST_Wybor3_4 ()
{
       a = ConcatStrings(a, "C");
};

func void DIA_Questob_ST_Wybor3_5 ()
{
        a = ConcatStrings(a, "D");
};

func void DIA_Questob_ST_Wybor1_1_2()
{
        Info_ClearChoices       (DIA_Questob_ST);
};

FUNC VOID UseCzystaKsiega()
        {
        tab = ConcatStrings(tab, a);
        var int nDocID;
                nDocID =        Doc_Create              ()                        ;                                                             // DocManager
                                        Doc_SetPages    ( nDocID,  2 );                         //wieviel Pages

                                        Doc_SetPage     ( nDocID,  0, "Book_Mage_L.tga",        0               );
                                        Doc_SetPage     ( nDocID,  1, "Book_Mage_R.tga",        0               );
                                       
                                        //1.Seite
                                       
                                        Doc_SetFont     ( nDocID, -1, "font_15_book.tga"                                );      // -1 -> all pages
                                        Doc_PrintLine   ( nDocID,  0, "");
                                        Doc_PrintLine   ( nDocID,  0, "");
                                        Doc_SetMargins  ( nDocID,  0,  275, 20, 30, 20, 1               );  //  0 -> margins are in pixels
                                        Doc_PrintLine   ( nDocID,  0, " "                       );
                                        Doc_SetFont     ( nDocID, -1, "font_10_book.TGA"                                );      // -1 -> all pages
                                        Doc_PrintLine   ( nDocID,  0,  "");
                                        Doc_PrintLine   ( nDocID,  0, "");
                                        Doc_PrintLines  ( nDocID,  0, tab);
                                        Doc_PrintLines  ( nDocID,  0, "");
                                        //2.Seite
                                        Doc_SetMargins  ( nDocID, -1, 30, 20, 275, 20, 1                );  //  0 -> margins are in pixels (Position des Textes von den Ränder des TGAs aus, links,oben,rechts,unten)
                                        Doc_PrintLine   ( nDocID,  1,"");
                                        Doc_PrintLine   ( nDocID,  1, "");
                                        Doc_PrintLine   ( nDocID,  1, "");
                                        Doc_PrintLine   ( nDocID,  1, "");
                                        Doc_PrintLines  ( nDocID,  1, "");      
                                        Doc_PrintLine   ( nDocID,  1, "");
                                        Doc_PrintLine   ( nDocID,  1, "");
                                        Doc_PrintLine   ( nDocID,  1, "");
                                        Doc_Show                ( nDocID );
                                       
        };

o to ci chodziło?

5
Skrypty / dwie zmienne w jednej linii
« dnia: 2011-12-09, 21:44 »
No to coś źle wpisujesz, bo mi wszystko działa.
Odpal print i zobacz czy wypisze tego stringa.

6
Skrypty / dwie zmienne w jednej linii
« dnia: 2011-12-09, 21:21 »
Najpierw ustaw marginesy a potem napisz


Doc_PrintLines  ( nDocID,  1, tab); // Doc_PrintLines  ( nDocID,  0, tab)
Doc_PrintLines  ( nDocID,  0, "");
//2.Seite
Doc_SetMargins  ( nDocID, -1, 30, 20, 275, 20, 1  
 

7
Skrypty / wywoływanie funkcji z hooka w g1
« dnia: 2011-09-14, 20:19 »
W Gothicu ;p
najlepsza do szukania tego będzie IDA Pro Disassembler. A jeżeli jesteś w tym zielony to polecam ReverseCraft.

8
Skrypty / wywoływanie funkcji z hooka w g1
« dnia: 2011-09-14, 16:05 »
Teraz twoja funkcja wywoła się wtedy gdy kogoś pobijesz

próbuj dalej

9
Skrypty / wywoływanie funkcji z hooka w g1
« dnia: 2011-09-13, 20:53 »
Pisałem już o tym wcześniej, ale jeszcze raz napisze w G1 pod adresem 0x6C3B79 masz
.text:006C3B77                 push    offset ?classDef@oCMsgManipulate@@0VzCClassDef@@A ; zCClassDef oCMsgManipulate::classDef

więc ten adres jest nie użyteczny. Musisz odszukać funkcje która wywołuje się dosyć często(w Gothic 2 UpdateStatus_X)
w Gothic 1 i do niej przypisać swoja funkcje. Albo wywołać z ticktoca , chociaż jak pamiętam masz z tym jakieś problemy...

10
Skrypty / Sprawdzanie czy menu jest otworzone
« dnia: 2011-08-28, 17:01 »
Zrozumienie Hooka jest dość proste, jest do skok do za alokowanej nowej procedury gdzieś w pamięci a potem powrót do starej.

Dokładnie nie tłumaczyłem każdej linijki w HookEngine ale mogę napisać jak mniej więcej to działa.

funkcja MemoryProtectionOverride przypisuje na podane adres  prawa do zapisuj i odczytu.
Tak jak ja to robię i raczej jest tak samo w Hookengine to przypisanie do adresu na którym stara procedura jest wykonywana skoku, do nowej procedury, albo do nowej utworzonej pamięci z nową procedurą. Następnie skok do starej procedury, albo jej wywołanie i zpowrotem skok do następnego adresu w kodzie. I tak się wszystko zapętla.

Rozwiązanie może i dobre tylko trzeba by najpierw znaleźć adres  który odpowiada za wywołanie menu, potem przypisać do tego adresu nasza procedurę która zwraca 1 albo 0  do jakiegoś adresu, który potem możemy odczytać i sprawdzić czy menu jest otwarte heh.

Życzę powodzenia

12
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-30, 22:19 »
Ale w tamtych przypadkach nie używasz funkcji z silnika tak jak SetFontColor np
Nie jestem pewien czy to przez to masz ten błąd bo ja jego nie mam i nie mam jak tego
dobrze sprawdzić

13
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-30, 22:11 »
To musi być ten sam błąd co wcześniej
czyli u ciebie nie mogą funkcje z ticktoca startować, dziwne bo u mnie jest dobrze
Musisz poszukać adresu jakiejś funkcji która wywołuje się z silnika i do niej podczepić
Postaram się takowej poszukać bo też by mi się przydała ;]

@
ja nie używam hookengine bo nie mam adresu i go nie aktywuje

14
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-30, 21:55 »
Dziwne ale coś jest nie tak w tej funkcji w gothic 1 sprawdziłem i funkcja Npc_GetPermAttitude
nie pokazywała dobrze nastawiania (nie zawsze) ale nie wiem dlaczego, po mojej poprawce u mnie wszystko działa dobrze
sprawdź to :
func void EVT_UpdateStatus_FocusName() {
    const int zCView__SetFontColor = 7339392; //0x7A9910
    var int col;
    var int att;
    var oCNpc her; her = Hlp_GetNpc(hero);
if(Hlp_Is_oCNpc(her.focus_vob)) {
var oCNpc  oth; oth = MEM_PtrToInst(her.focus_vob);
att =  oth.attitude;
if(att == ATT_FRIENDLY) {
col = RGBA(0,255,0,255); //Grün
}
else if(att == ATT_ANGRY) {
col = RGBA(255,180,0,255); //Orange
}
else if(att == ATT_HOSTILE) {
col = RGBA(255,0,0,255); //Rot
}
else if(att == ATT_NEUTRAL) {
col = RGBA(255,255,255,255); //Weiß
};
}
else {
col = RGBA(255,255,255,255); //Weiß
};
   
    var int ptr; ptr = MEM_Alloc(4);
    MEM_WriteInt(ptr, col);
    CALL_IntParam(ptr);
    CALL__thiscall(MEM_ReadInt(screen_offset), zCView__SetFontColor);
    MEM_Free(ptr);
};
I wywołuje ją z Ticktoka

15
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-08, 20:40 »
Funkcja jest cały czas wywoływana i to może być problem
zamień tą starą tą poniżej
Spoiler
func void FocusColor() {

    var oCNpc her;  her = Hlp_GetNpc (hero);
    var int ptr;
    var oCMobLockable Zamek;  Zamek = MEM_PtrToInst (her.focus_vob);
    var int col;
    var int Is;
    const int zCView__SetFontColor = 7339392; //0x6FFD80
    PrintScreen (inttostring(is), 25,50,"FONT_OLD_20_WHITE.TGA",1);


   if (!her.focus_vob) {
        if (is == 1)
        {
        is = 0;    
        PrintScreen (inttostring(ptr), 50,50,"FONT_OLD_20_WHITE.TGA",1);
        col = RGBA(255,255,255,255); //Weiß
        ptr = MEM_Alloc(4);
        MEM_WriteInt(ptr, col);
        CALL_IntParam(ptr);
        CALL__thiscall(MEM_ReadInt(screen_offset), zCView__SetFontColor);
        MEM_Free(ptr);    
        };              
   } else {
               if (Hlp_Is_oCMobLockable(her.focus_vob))
               {
                         if (Zamek.bitfield & oCMobLockable_bitfield_locked)
                         {
                         col = RGBA(255,180,0,255); //Orange
                         } else {
                         col = RGBA(255,255,255,255); //Weiß
                         };
               Is = 1;
               ptr = MEM_Alloc(4);
               MEM_WriteInt(ptr, col);
               CALL_IntParam(ptr);
               CALL__thiscall(MEM_ReadInt(screen_offset), zCView__SetFontColor);
               MEM_Free(ptr);
               };

          };

};

16
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-08, 14:57 »
pawbuj przewidziałem i to i w moim skrypcie dodałem ten warunek
tutaj masz poprawkę ;]
Spoiler
func void ChestRename() {
        var oCMob Mob;
        var oCMobContainer Skrzynia;
        var oCNpc her; her = Hlp_GetNpc(pc_hero);
        var string newName; newName = "Pusta Skrzynia";
        var int NameSymbIndex;
        var string OldName; OldName = "Skrzynia";
        if(her.focus_vob)
        {
                if(MEM_ReadInt(her.focus_vob)==oCMobContainer_vtbl)
                {
                        MEM_AssignContentInst (Mob,her.focus_vob);
                        MEM_AssignContentInst (Skrzynia,her.focus_vob);
                        if (MEM_ReadInt(MEM_InstToPtr(Skrzynia)+604) == 0)
                        {
                                MEM_ReinitParser();      
                                NameSymbIndex = MEM_FindParserSymbol("CHESTRENAME.NEWNAME"); // NAME OF THE VARIABLE!
                                Mob.focusNameIndex = NameSymbIndex;
                         } else {
                                MEM_ReinitParser();      
                                NameSymbIndex = MEM_FindParserSymbol("CHESTRENAME.OLDNAME"); // NAME OF THE VARIABLE!
                                Mob.focusNameIndex = NameSymbIndex;
                         };
                };
        };
};


17
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-07, 20:23 »
Ehh ten mój skrypt jest pod gothic 1
powinieneś wywalić enginehook dać funkcję focuscolor do tictocka sprawdzić czy dalej są błędy

18
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-07, 19:01 »
Tak ja nawet gothic 2 nie mam

19
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-07, 18:54 »
Naucz się czytać napisałem "albo"


W gothic 1 nie ma takiej funkcji oCGame__UpdateStatus_X pod 7093113 takie info

20
Skrypty / Ikarus (Pakiet skryptów)
« dnia: 2011-06-07, 18:43 »
Nie wiem po co ci hookengine jak ty focuscolor nie hookujesz

Z tym dostack to nie jestem pewny co to za błąd, mi w każdym razie się tak nie dzieje
Ta funkcja jest może trochę chaotyczne napisana, ale nie wiem co może być przyczyną.

Strony: [1] 2
Do góry