Beiträge von malE

    Dem Log nach wurde erneut ocmd aufgerufen, für den Befehl. Prüfe das bitte nochmal.
    ocmdOnPlayerCommandText

    Ah, stimmt das wollte ich auch noch kommentieren! Liegt es vielleicht daran, weil sich ocmd zwischen OnPlayerCommandText klemmt? Weil der ocmd Befehl ist auf jeden Fall auskommentiert.

    Die Meldung kam in dem Fall dann vom Debug Modus.


    Tritt der Fehler denn nur bei dem Befehl auf, oder auch bei anderen Befehlen?
    Hast du mal versucht, den Befehl als "strcmp" Befehl anzulegen, und den ocmd Befehl zu entfernen, klappt es dann?

    Andere Befehle funktionieren einwandfrei. /inventory funktioniert allerdings auch nicht als "strcmp". ?(

    Code
    [debug] Run time error 5: "Invalid memory access"
    [debug] AMX backtrace:
    [debug] #0 0000d858 in public ocmdOnPlayerCommandText (0, 339204) from script.amx
    [debug] #1 native CallLocalFunction () from samp-server.exe
    [debug] #2 00000458 in public OnPlayerCommandText (0, 339160) from script.amx

    Geht die Meldung im Compiler denn weg? Falls nein, hast du eine "pawn.cfg" im pawno Ordner für den Debug Modus drin? Wenn ja, entferne diese bitte mal und versuche es dann nochmal

    Danke! Das Problem lag tatsächlich daran, aber warum?
    Allerdings bleibt der gleiche Fehler, wenn ich meinen Befehl aufrufe.

    Hast du irgendwelche Warnungen im Compiler stehen, oder eine Meldung bezüglich Stack/Heap Size

    Code
    Header size:           4028 bytes
    Code size:            71924 bytes
    Data size:           339288 bytes
    Stack/heap size:      80000 bytes; estimated max. usage: unknown, due to recursion
    Total requirements:  495240 bytes


    Entferne auch mal das str[256], aus dem Befehl, das ist ungenutzt, eine Warnung müsste daher mindestens da sein.

    Gleicher Fehler.

    Warum wird beim Aufrufen des Befehls, ein "Run time error" ausgelöst?


    Code
    [debug] Run time error 5: "Invalid memory access"
    [debug] AMX backtrace:
    [debug] #0 00009960 in public ocmd_inventory (playerid=0, params[]=@00052d84 " ") at ...\sampserver\pawno\include\modules\inventory\invInventory.inc:63
    [debug] #1 native CallLocalFunction () from samp-server.exe
    [debug] #2 000004c8 in public OnPlayerCommandText (playerid=0, cmdtext[]=@00052d58 "/inventory") at ...\sampserver\pawno\include\includes\ocmd.inc:78


    [pwn=60]
    ocmd:inventory(playerid, params[]) {
    new str[256], frmt[496];
    for(new i=0; i < MAX_PLAYER_ITEMS; i++) {
    if(Items[i][itemBesitzerID] != PlayerAccount[playerid][playerDBID])continue;


    format(frmt, sizeof(frmt), "%s%d. Item: %s (%d) | Amount: %d | Total Weight: %0.2f\n", frmt, i+1, /*Items[i][itemName]*/getItemName(Items[i][itemID]), Items[i][itemID], Items[i][itemAmount], (ItemList[Items[i][itemID]][itemlWeight]*Items[i][itemAmount]));
    }
    if(!strlen(frmt))return SendClientMessage(playerid, -1, "Es befinden sich keine Items in deinem Inventar.");
    return SendClientMessage(playerid, -1, frmt);
    }
    [/pwn]

    Hier, schau dir das mal an, das wäre eine Möglichkeit:


    Includes richtig erstellen | Hooking ganz einfach


    Und in deinem Makro musst du dann in dem do __SendClientMessage verwenden



    native __SendClientMessage(playerid, color, const message[]) = SendClientMessage;


    stock _SendClientMessage(playerid, color, const message[], _args[])
    {
    if(!strlen(_args))return __SendClientMessage(playerid, color, message);
    new str[256];
    format(str, sizeof(str), string, _args);
    return __SendClientMessage(playerid, color, str);
    }
    #if defined _ALS_SendClientMessage
    #undef SendClientMessage
    #else
    #define _ALS_SendClientMessage
    #endif
    #define SendClientMessage _SendClientMessage

    Ich weiß nicht, ob ich mich gerade blöd anstelle, aber so funktioniert es auch nicht. :/

    Muss zu geben, hooken ist nicht ganz meins, obwohl es bestimmt sehr einfach ist. ^^
    Wie hooke ich in dem Fall denn richtig ?

    Warum stürzt mein Compiler bei den Zeilen ab? Kann man Makros nicht hooken?

    Code
    #define SendClientMessageEx(%0, %1, %2, %3) do { new _str[144]; format(_str, sizeof(_str), %2, %3); SendClientMessage(%0, %1, _str); }
    
    
    #if defined _ALS_SendClientMessage
    	#undef SendClientMessage
    #else
    	#define _ALS_SendClientMessage
    #endif
    #define SendClientMessage SendClientMessageEx

    Wäre es eine Option, die Datei in korrekter Codierung mit Notepad++ zu speichern und dann mit VSC zu kompilieren?
    Oder eine neue Datei mit der pawno.exe anzulegen, und diese dann mit VSC zu bearbeiten?

    VSC übernimmt anscheinend die Codierung gar nicht, trotz Umstellung aller Dateien in Notepad++. Schade...
    Zweiterer Vorschlag funktioniert ebenfalls nicht.