[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
  • Möchte jetzt ein Befehl erstellen womit sich ein Dialog öffnet mit dem Typ DIALOG_STYLE_LIST, und dann wenn man eine Sache angeklickt hat, sich halt ein Fenster öffnet wo eine Beschreibung von mir ist.
    Kann mir das mal einer vor machen?Meiner sieht zZ so aus:



    if(strcmp("/items",cmdtext, true,10) == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Items Help", "Bloodbag\nMedkit\nBandage", "Explain", "Back");


    Mit freundlichen Grüßen
    JustMe.77 8)

  • if(strcmp("/items",cmdtext, true) == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Items Help", "Bloodbag\nMedkit\nBandage", "Explain", "Back");
    return 1;
    }


    OnDialogResponse:
    if(dialogid == DIALOG_ITEMS)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    case 1: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    case 2: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    }
    }
    return 1;
    }

  • ocmd:createcode(playerid)
    {
    new code[20];
    format(code, 20, "%04d-%04d-%04d-%04d", random(10000), random(10000), random(10000), random(10000));
    SendClientMessage(playerid,ROT,"Gutscheincode : %s",code);


    }


    Wie kann ich das im Dini Speichern und dann auch was zuweisen also z.B Geld.

  • ocmd:createcode(playerid, params[])
    {
    new code[40], str[145];
    format(code, sizeof(code), "%04d-%04d-%04d-%04d", random(10000), random(10000), random(10000), random(10000));
    format(str, sizeof(str), "Gutscheincode : %s",code);
    SendClientMessage(playerid,ROT,str);
    format(code, sizeof(code), "/codes/%s.txt", code);
    dini_Create(code);
    dini_IntSet(code, "Geld", 1000);
    return 1;
    }


    Nicht vergessen den Ordner "codes" in den scriptfiles zu erstellen.

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()

  • Jeffry: mein Freund, ich hätte da noch eine Frage zu meinem Item Befehl, wo sich ein Dialog öffnet.


    Zurzeit habe ich folgenden Befehl:


    /items, Dialog öffnet sich, Sachen sind aufgelistet und wenn ich drauf klicke öffnet sich eine Beschreibung.


    Nur, ich möchte das so haben: /items, "Oberbegriffe" öffnen sich "also z.B Medizin, Tools etc" und danach kommen die einzelnen Sachen, und wenn ich dadrauf klicke kommen die Beschreibungen.


    Was muss ich noch umändern bzw hinzufügen?


    Danke :love:


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Nach gleichem Prinzip:
    if(dialogid == DIALOG_ITEMS)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS_UNTER1, DIALOG_STYLE_LIST, "Obst", "Apfel\nBirne", "Ok", "Ende");
    case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS_UNTER2, DIALOG_STYLE_LIST, "Gemüse", "Tomate\nGurke", "Ok", "Ende");
    case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS_UNTER3, DIALOG_STYLE_LIST, "Baum", "Fichte\nBuche", "Ok", "Ende");
    }
    }
    return 1;
    }


    if(dialogid == DIALOG_ITEMS_UNTER1)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    case 1: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    case 2: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    }
    }
    return 1;
    }


    if(dialogid === DIALOG_ITEMS_UNTER2)
    {
    //...
    }

  • So mein liebster Jeffry, ich habe da auch nochmal eine kleine Frage an dich. Jemand anderen scheint es hier ja nicht zu geben. :P


    Ich will über ein Dialog die eindeutige Teamspeak-ID abspeichern. Die Dialogfunktion läuft wunderbar. Leider habe ich nun ein Problem mit der Variable, worin er die ID speichern soll. So sieht es momentan aus:


    enum SpielerDaten
    {
    pTID[128],
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
    if(dialogid == DIALOG_TID){
    if(response){
    if(strlen(inputtext) == 28){
    SetPVarString(playerid, inputtext, SpielerInfo[playerid][pTID]);
    //SpielerInfo[playerid][pTID] = inputtext; // Habs auch schon so versucht, da schmeißt er mir aber einen do-not-match error aus.
    new string[128];
    format(string, 128, "[Info] Deine Teamspeak-ID wurde erfolgreich in '%s' geändert.", SpielerInfo[playerid][pTID]); // Hier gibt er mir nur eine "-1" aus.
    //format(string, 128, "[Info] Deine Teamspeak-ID wurde erfolgreich in '%s' geändert.", inputtext); // So wird die ID wunderbar ausgegeben
    SendClientMessage(playerid, COLOR_GREY, string);
    }else{
    SendClientMessage(playerid, COLOR_GREY, "[Info] Die Teamspeak-ID ist ungültig. Bitte versuche es erneut oder wende dich an den Support.");
    }
    }
    }
    }
    Das Problem liegt bestimmt am SetPVarString, der die Variable nicht abspeichert. Hast Du eine Idee? Ich danke dir für deine tolle Hilfe! Finde ich echt klasse wie aktiv Du dich hier kümmerst. :thumbup:

    Trancebase, Dreamweaver und ab geht die Uzi.

  • public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
    if(dialogid == DIALOG_TID){
    if(response){
    if(strlen(inputtext) == 28){
    format(SpielerInfo[playerid][pTID], 128, inputtext);
    new string[145];
    format(string, 145, "[Info] Deine Teamspeak-ID wurde erfolgreich in '%s' geändert.", SpielerInfo[playerid][pTID]);
    SendClientMessage(playerid, COLOR_GREY, string);
    }else{
    SendClientMessage(playerid, COLOR_GREY, "[Info] Die Teamspeak-ID ist ungültig. Bitte versuche es erneut oder wende dich an den Support.");
    }
    }
    }
    }


    format ist das Zauberwort. ;)