[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
  • Kurze frage:



    Wen ich das erste Taxi nehme Funktioniert es.
    Nutze ich das Taxi hinter mir Funktioniert es nicht mehr wird er nicht mehr angezeigt.


    Nutze ich das Fahrzeug Vor mir wieder Funktioniert es wieder ?
    Verstehe ich nicht so ganz :/

  • Hallo :) Meine Altersabfrage ist fehlerhaft.



    if (dialogid==DIALOG_ALTER)
    {
    new string[128];
    if(response)
    {
    new query[128];
    if(strlen(inputtext) > 2 || strlen(inputtext) < 2)
    {
    SendClientMessage(playerid,Kaminrot,"SERVER: Das glaube ich nicht.");
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Dein Alter","Wie alt bist du?","Weiter","Kick");
    }
    else
    {
    format(string,sizeof(string),"Du bist also %s Jahre alt.",inputtext);
    SendClientMessage(playerid,Gelb,string);
    format(query,sizeof(query),"UPDATE user SET alter='%i' WHERE id='%i'",inputtext,sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    }
    }
    else
    {
    format(string,sizeof(string),"[KICKED] %s hat die Registration abgebrochen.",getPlayerName(playerid));
    SendClientMessageToAll(Blutrot,string);
    Kick(playerid);
    }
    }


    Errorcode aus der mysql_log.txt:

    Code
    [18:17:03] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'alter='49' WHERE id='16'' at line 1


    Könnte mir bitte jemand weiterhelfen?

  • UPDATE user SET alter='%i' WHERE id='%i'

    Musst du so schreiben:



    SQL
    UPDATE user SET `alter`='%i' WHERE id='%i'

    Das liegt daran, dass ALTER ein SQL Keyword ist :)





    Kurze frage:

    Wo setzt du das denn...was genau willst du denn machen..bisschen mehr Kontext bitte ^^

    ast2ufdyxkb1.png


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

  • @Kaliber


    Wen er sein Preis ausgewählt hat wird das alles gesetzt.


  • Ahh okay, dann ist dein Befehl falsch, schreib den so:



    Da kamste durcheinander mit den Schleifen und Indizes :D

    ast2ufdyxkb1.png


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

  • Hallo!


    Was muss ich machen, um dem Spieler einen beliebigen Geldbetrag geben zu können?



    ocmd@2:geldgeben,givemoney(playerid,params[])
    {
    {
    new geld,pID,string[128],string2[128];
    if(sscanf(params,"ui", pID, geld))return SendClientMessage(playerid,GRAU,"/givemoney [Name/ID] [Betrag]");
    {
    GivePlayerMoney(pID, -1);
    // format(string,sizeof(string),"AdmCMD: %s hat %s %i Euro gegeben!",SpielerDaten[pID][pName],SpielerDaten[playerid][pName],geld);
    format(string, sizeof(string),"AdmCMD: %s hat %s %d$ gegeben!", SpielerDaten[playerid][pName], SpielerDaten[pID][pName], geld);
    SendClientMessage(playerid, ROT,string);
    format(string2, sizeof(string2),"Du hast von %s %d$ bekommen!",SpielerDaten[playerid][pName], geld);
    SendClientMessage(pID,ROT,string2);
    }
    }
    return 1;
    }


    MfG

  • um dem Spieler einen beliebigen Geldbetrag geben zu können?

    Wenn du:


    GivePlayerMoney(pID, geld);


    schreibst, dann macht der Code das doch.


    Wenn es dem eigenen Spieler abgezogen werden soll:


    GivePlayerMoney(playerid, -geld);


    PS: Solltest dann natürlich prüfen, ob der Spieler genug Geld auf der Hand hat ^^

    ast2ufdyxkb1.png


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

  • Wie speicher ich das jetzt in der MYSQL DB?

    Da müsste es noch eine Spieler Variable geben, wie SpielerInfo[playerid][pGeld] oder sowas.


    Das musst du natürlich in den Befehl auch noch einbauen, z.B. so:



    SpielerInfo[pID][pGeld] += geld;
    SpielerInfo[playerid][pGeld] -= geld;


    //Und dann eben die Variablen speichern

    ast2ufdyxkb1.png


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

  • Dies Funktion habe ich.


    stock SaveUserStats(playerid){ if(!SpielerDaten[playerid][pEingeloggt]) return 1; Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE accounts SET Level = '%d', Geld = '%d', Skin = '%d' WHERE id = '%d'", SpielerDaten[playerid][pLevel],SpielerDaten[playerid][pGeld],SpielerDaten[playerid][pSkin],SpielerDaten[playerid][p_id]); /*mysql_format(handle, query, sizeof(query), "UPDATE users SET Admin = '%d' WHERE id = '%d'", PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]);*/ Das Query wird abgesendet mysql_pquery(handle, query); return 1;}


    Was muss ich machen, damit das Geld beim geben n der DB gespiechert wird?
    Momentan wirds nur nach relog gespeichert.


    Edit: Habs gelöst


  • Hey, Kurze frage der befehl funktioniert nur wen ich Fische gefangen habe?
    Warum. -> Kann man bei Fisch wen keine Vorhanden sind das da steht "Nicht Vorhanden"?

  • Warum. -> Kann man bei Fisch wen keine Vorhanden sind das da steht "Nicht Vorhanden"?

    Meinst du so? :D

    ast2ufdyxkb1.png


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

  • Und wen er garkeine hat steht oben Fische und als zweiter das der Befehl nicht exestiert :/?

    Dann erwähne diesen Fehler doch :D


    Das liegt wohl daran, dass da ein falscher index ist.


    Lade mal crashdetect + zeig mal wie du das Array deklariert hast ^^

    ast2ufdyxkb1.png


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

  • Ja habe ich gerade gemacht. der wollte nicht laden :D



    17:49:11] [debug] Run time error 4: "Array index out of bounds"
    [17:49:11] [debug] Attempted to read/write array element at negative index -1
    [17:49:11] [debug] AMX backtrace:
    [17:49:11] [debug] #0 0002c91c in public ocmd_fishes (playerid=0, 50056372) at C:\Users\Desktop\Reallife\Reallife Script\gamemodes\German.pwn:3640
    [17:49:11] [debug] #1 native CallLocalFunction () in samp7002_6691
    [17:49:11] [debug] #2 000008ec in public OnPlayerCommandText (playerid=0, cmdtext[]=@02fbcc94 "/fishes") at C:\Users\Desktop\Reallife\Reallife Script\gamemodes\German\pawno\include\ocmd.inc:78


  • Oki, schreibe es so:


    ast2ufdyxkb1.png


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