[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
  • @BlackAce:
    Ich möchte einfach dialoge weiter strukturieren um nicht unendliche dialogids zu nutzen.
    So hatte ich mir das vorgestellt.

    ShowPlayerDialog(playerid,DIALOG_BAUM,DIALOG_STYLE_MSGBOX,"Baum","Testdialog 1","Weiter","Abbrechen",1);
    ShowPlayerDialog(playerid,DIALOG_BAUM,DIALOG_STYLE_MSGBOX,"Baum","Testdialog 2","Weiter","Abbrechen",2);
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[],select)
    {
    switch(dialogid)
    {
    case DIALOG_BAUM:
    {
    if(response)
    {
    switch(select)
    {
    case 1:return SendClientMessage(playerid,-1,"Testdialog 1");
    case 2:return SendClientMessage(playerid,-1,"Testdialog 2");
    }
    }
    }
    }
    return 1;
    }

  • Slash™:
    Dann nutz nen Nativ hook, da packst du einfach SetPVar rein
    dann gehst du zum Callback und hookst das und machst GetPVar.


    Dann verweist du zurück auf das Callback mit dem neuen Parameter und schon kannst du das überall nutzen :thumbup:


    [ SCRIPTING ] Includes richtig erstellen | Hooking ganz einfach

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Das ist mir klar, ist ja nur zum testen :)
    Hab es jetzt mal soweit wie ichs verstanden habe, kommt aber immer noch das die parameter nicht korrekt sind.


    Spoiler anzeigen


    forward _OnDialogResponse(playerid, dialogid, response, listitem, inputtext[],selects);
    #if defined _ALS_OnDialogResponse
    #undef OnDialogResponse
    #else
    #define _ALS_OnDialogResponse
    #endif
    #define OnDialogResponse _OnDialogResponse

    Spoiler anzeigen
    native __ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[],select);
    stock _ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[],select)
    {
    __ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[],select);
    return 1;
    }
    #if defined _ALS_ShowPlayerDialog
    #undef ShowPlayerDialog
    #else
    #define _ALS_ShowPlayerDialog
    #endif
    #define ShowPlayerDialog _ShowPlayerDialog

  • kommt aber immer noch das die parameter nicht korrekt sind.


    So ist es besser:


    Spoiler anzeigen
    forward Hooked_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[],select);
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
    return CallLocalFunction("Hooked_OnDialogResponse","ddddsd",playerid, dialogid, response, listitem,inputtext,0); //0=select
    }
    #if defined _ALS_OnDialogResponse
    #undef OnPlayerConnect
    #else
    #define _ALS_OnDialogResponse
    #endif
    #define OnDialogResponse Hooked_OnDialogResponse

    Spoiler anzeigen
    native Hooked__ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])=ShowPlayerDialog;

    Spoiler anzeigen
    stock Hooked_ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]) {
    return CallLocalFunction("Hooked__ShowPlayerDialog","dddssss",playerid,dialogid,style,caption,info,button1,button2);
    }
    #if defined _ALS_ShowPlayerDialog
    #undef ShowPlayerDialog
    #else
    #define _ALS_ShowPlayerDialog
    #endif
    #define ShowPlayerDialog Hooked_ShowPlayerDialog


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()


  • Wäre es möglich RemoveBuildingForPlayer in einer Include zu schreiben?
    Hab da einiges an Code, will es aber nicht in meinen Hauptgamemode tun.


    Stichwort: Filterscript

    Bewahre mich vor dem naiven Glauben, es müsse im Leben alles glatt gehen. Schenke mir die nüchterne Erkenntnis, dass Schwierigkeiten, Niederlagen, Misserfolge, Rückschläge eine selbstverständliche Zugabe zum Leben sind, durch die wir wachsen und reifen.
    _______________________________________________________________________________________________________________



    Antoine de Saint-Exupéry

  • Ich wenn du es schon gelöst hast, vielleicht hilft es ja auch anderen ;D

    Wie müsste sowas aussehen? Hab mich nie damit beschäftigt, so wirklich.


    Also im Prinzip gibt es 2 Möglichkeiten.


    1. Hook eine Funktion (bspw. OnPlayerConnect)
    2. Erstell einfach eine Funktion die du einfach aufrufen kannst.


    mMn ist die 2. Möglichkeit wesentlich besser, einfach darum, weil OnPlayerConnect gerne Probleme bereitet, wenn es um Übermittlung von Daten in einem langen Zeitraum geht.
    Zu dem kann man die Funktion dann aufrufen wenn man sie auch wirklich braucht, schont also auch den PC des Users wenn es um die Verarbeitung der ankommenden Daten geht.


    Allgemein sollte man Dinge nur dann erstellen wenn sie benötigt werden (Streamerprinzip)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Warum entdekce ich keinen fehler trotzdem errors?:
    D:\Users\Admin\Desktop\gg.pwn(14536) : error 029: invalid expression, assumed zero
    D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
    D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
    D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
    D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
    D:\Users\Admin\Desktop\gg.pwn(14536) : warning 215: expression has no effect
    D:\Users\Admin\Desktop\gg.pwn(14536) : error 001: expected token: ";", but found ")"
    D:\Users\Admin\Desktop\gg.pwn(14536) : error 029: invalid expression, assumed zero
    D:\Users\Admin\Desktop\gg.pwn(14536) : fatal error 107: too many error messages on one line


    Zeile:
    if(PlayerInfo[i][pLevel] == 1 && PlayerInfo[i][pRespekt] == 4)
    {
    SendClientMessage(i, COLOR_LIGHTBLUE, "Info).");
    ShowPlayerDialog(i, DIALOG_gg, DIALOG_STYLE_MSGBOX, "Info", "Testn" ,"Annehmen", "Abbrechen");
    return 1;
    }


    #define DIALOG_gg


    if(dialogid == DIALOG_gg)
    {
    if(response == 0)
    {
    SendClientMessages(playerid, COLOR_LIGHTBLUE, "wf.");
    }
    if(response == 1)
    {
    SendClientMessages(playerid, COLOR_LIGHTBLUE, "few.");
    }
    } Danke im vorraus

  • #define DIALOG_gg
    Du musst dem Dialog auch einer Zahl zuweisen.
    Wenn du das nicht machen möchtest, kannst du das auch ganze einfach so machen:
    enum
    {
    DIALOG_gg
    };
    Bei weiteren musst du den vorherigen immer mit einem Komma von einander trennen, der letzte braucht allerdings kein Komma.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen