[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • 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.

  • Wenn ich auf dem Server connecte steht die ganze Zeit im Chat das ich keinen Tank habe


    Wenn ich z.b 15 Autos im Autohaus habe wäre das nicht viel unnötiger Code?

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • 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
  • Warum wird mein Objekt erst sichtbar wenn ich mich nach dem Erstellen bewege?
    Wenn ich stillstehe ist das Objekt nicht sichtbar. Erste wenn ich meinen Charakter bewege spawnt es unter mir.


    ocmd:barricade(playerid, params[]){
    if(IsPlayerAnAdmin(playerid, 3)){
    new Float:pos[4];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    GetPlayerFacingAngle(playerid, pos[3]);
    for(new i = 0; i < MAX_EVENT_BARRICADE; i++){
    if(eventBar[i][baractive] == 0){
    new str[32];
    format(str, sizeof(str), "Absperrung Nr. %i", i);
    eventBar[i][baractive] = 1;
    eventBar[i][barobject] = CreateDynamicObject(978, pos[0], pos[1], pos[2] - 0.5, 0.0, 0.0, pos[3], GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
    for(new j = 0; j < MAX_PLAYERS; j++){
    if(!IsPlayerAnAdmin(j, 3))continue;
    eventBar[i][barlabel] = CreateDynamic3DTextLabel(str, COLOR_TWHITE, pos[0], pos[1], pos[2], 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), j);
    }
    break;
    }
    }
    return 1;
    }else{
    SendClientMessage(playerid, COLOR_GRAY, notAdmin);
    }
    return SendClientMessage(playerid, COLOR_GRAY, "Absperrung konnte nicht erstellt werden.");
    }



    Benutze CreatDynamicObject vom streamer-Plugin.


    Ich vermute, dass es was mit dem streamer-Plugin zutun hat.

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

    Das macht ja so kein Sinn.
    Du versuchst ja SendClientMessage zu ersetzen und rufst es ja dann im Makro wieder auf :D


    Also du hast hier 2 Möglichkeiten:


    1. Du hookst es richtig und nutzt dann in der Funktion das Makro.


    2. Du nennst es einfach SCME oder so :) Willst ja eh nicht immer Parameter nutzen ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

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

  • 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. :/

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

    Ja, so geht das auch nicht.


    Also wenn du es wirklich über so n schläden Hook machen willst, dann haste da n richtiges gefummel mit den Argumenten.


    Gibt aufwändige Möglichkeiten, wie: http://forum.sa-mp.com/showpost.php?p=669874&postcount=3


    oder mit YSI etwas eleganter: http://forum.sa-mp.com/showpost.php?p=3366595&postcount=3


    da drum herum zu kommen, aber im Endeffekt ist es eigentlich nicht so das was du willst.


    Ich verstehe dein Problem mit der Umbenennung nicht?


    Wieso nennst du es nicht SCME, ist viel einfacher und schneller getippt und sauberer.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S