[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
  • Gibt es eigentlich gute Tutorials um den Umgang mit MySQL in SA-MP bzw. PAWN zu erlernen?
    Ich finde nur steinalte aus 2009, bei welchen irgendwie nur noch ein Bruchteil der Befehle funktioniert.

    [jTuT] MySQL R41-4 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)

  • Gibt es eigentlich gute Tutorials um den Umgang mit MySQL in SA-MP bzw. PAWN zu erlernen?

    Naja wirklich gute nicht, aber es reichen ja die basics:


    https://forum.sa-mp.com/showthread.php?t=647850


    https://forum.sa-mp.com/showthread.php?t=337810


    [jTuT] MySQL R41-4 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)

    ast2ufdyxkb1.png


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

  • Du liest ja die Position ab aber da wo er hin guckt nicht.


    benutz GetPlayerFacingAngel und GetPlayerPos

  • Hallo!


    Folgendes Problem:



    ocmd:setskin(playerid, params[])
    {
    new userid, skinnumber,string[128], string2[128];
    if (sscanf(params, "ui", userid, skinnumber))return SendClientMessage(playerid, ROT, "Befehl: /setskin [SpielerID] [Skin ID]");
    if(skinnumber < 0 || skinnumber > 311) return SendClientMessage(playerid, ROT, "Diese Skin ID gibt es nicht.");
    if (!(0 <= skinnumber <= 311))return SendClientMessage(playerid, ROT, "Der Skin kann nur zwischen 0 und 311 sein");
    {
    SetPlayerSkin(userid, skinnumber);
    skinnumber = GetPlayerSkin(playerid);
    userid = SpielerDaten[playerid][pName];
    format(string, sizeof(string),"Du hast %s den Skin %d gesetzt", userid,skinnumber);
    SendClientMessage(playerid, ROT, string);
    format(string2, sizeof(string2),"Der Skin %d wurde dir von %s gesetzt", skinnumber,SpielerDaten[playerid][pName]);
    SendClientMessage(playerid, ROT, string2);
    }
    return 1;
    }


    Ich möchte User xy den Skin yz geben, jedoch bekomm ich den dann. Ich möchte eben das der User die Nachricht bekomt das ich ihm nen Skin gesetzt habe, aber er bekommt diese nicht sodnern ich. wa ist da falsch?


    Was muss ich machen damit der gesetzte Skin beim Tod nicht verschwindet?


    MfG

  • 1. Du kannst nicht userid erst zu einem Integer und dann zu einem String machen. Erstelle dafür eine neue Variable.
    2. Zeile 14 muss playerid zu userid geändert werden.


    Um es dir bisschen einfacher zu machen:
    playerid ist IMMER deine eigene ID.
    userid ist IMMER die ID vom anderen Spieler.
    (bei dem Befehl)

    • format(string2, sizeof(string2),"Der Skin %d wurde dir von %s gesetzt", skinnumber,SpielerDaten[playerid][pName]);
    • SendClientMessage(playerid, ROT, string2);

    zu

    • format(string2, sizeof(string2),"Der Skin %d wurde dir von %s gesetzt", skinnumber,SpielerDaten[playerid][pName]);
    • SendClientMessage(userid, ROT, string2);
  • @Allrounder18

    ocmd:setskin(playerid, params[])
    {
    new pID, skinID,string[128];
    if (sscanf(params, "ui", pID, skinID))return SendClientMessage(playerid, ROT, "Befehl: /setskin [SpielerID] [Skin ID]");
    if(skinID < 0 || skinID > 311) return SendClientMessage(playerid, ROT, "Diese Skin ID gibt es nicht.");
    if (!(0 <= skinID <= 311))return SendClientMessage(playerid, ROT, "Der Skin kann nur zwischen 0 und 311 sein");
    {
    SetPlayerSkin(pID, skinID);
    format(string, sizeof(string),"Du hast %s den Skin %d gesetzt", SpielerDaten[pID][pName], skinID);
    SendClientMessage(playerid, ROT, string);
    format(string, sizeof(string),"Der Skin %d wurde dir von %s gesetzt", skinID,SpielerDaten[playerid][pName]);
    SendClientMessage(pID, ROT, string);
    }
    return 1;
    }


    //Handy

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

  • Zeig uns mal den Code wo die Accounts erstellt werden.


  • public OnUserRegister(playerid)
    {
    SpielerDaten[playerid][p_id] = cache_insert_id();
    SpielerDaten[playerid][pEingeloggt] = true;
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
    return 1;
    }


    Meinst du das?

  • Das sieht bei mr so aus.



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 1)
    {



    if(!response) return Kick(playerid);



    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REG1, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%e', MD5('%e'))", SpielerDaten[playerid][pName], inputtext);



    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    return 1;
    }
    /*if(dialogid == 2)
    {
    if(response==1)//Männlich
    {
    SpielerDaten[playerid][pGeschlecht] = 1;
    SpielerDaten[playerid][pSkin] = 178;
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_MSGBOX,"Registration","Männlich","Weiblich");
    }
    else if(response==0)//Weiblich
    {
    SpielerDaten[playerid][pGeschlecht] = 2;
    SpielerDaten[playerid][pSkin] = 93;
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_MSGBOX,""#HTML_WEISS""#SERVERNAME" | Account erstellen 4/5","Männlich","Weiblich");
    }
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO accounts (Skin) VALUES ('%d'))", SpielerDaten[playerid][pSkin], inputtext);



    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    return 1;
    }*/

  • Du hast die gesamte Skinauswahl ausgeklammert. Wieso wunderst du dich dann das der Skin nicht gesetzt wird? @Allrounder18
    Sobald du ein Geschlecht auswehlst wird direkt der passende Ski gesetzt. Du hast es ausgeklammert und lässt es soweit ich das sehen kann nirgendwo aufrufen.

  • Hallo! Leider bin ich nun am verzweifeln.
    Bin gerade damit fertig geworden meinen Gamemode auf MySQL umzustellen.
    Als letzten Schritt wollte ich noch das YSI Include von oben streichen, jedoch kommen dann unendliche Errors, obwohl ich alle Reste davon im Script entfernt habe.
    Wenn ich das Include nicht streiche kommen keine Probleme.
    Hat jemand evtl. einen Tipp?


    Hier das Script


    https://pastebin.com/by9bGD6u


    Und die Fehler wenn ich das Include entferne