[SAMMELTHREAD] Kleine Scripting Fragen

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Ich werde dir keinen Code präsentieren.
    Aber ein paar Hilfen kann ich dir geben:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    // Wird aufgerufen, sobald etwas mit einem Dialog passiert. ( Buttons, listitems..)
    // Hier musst du die DialogID abfragen. Geht mit "if & else" oder mit "switch & case".

    if(dialogid == DEIN_DIALOG /* Name oder ID, ist egal */ )
    {
    if(!response)
    {
    // Solltest du auf den letzten Button geklickt haben, wird dieser Codeblock aufgerufen.
    // Da du aber möchtest, dass das Ganze beim ersten Button geschieht,
    // kannst du das auch so schreiben:
    // if(!response)return 1;
    // Das bewirkt, dass, wenn man auf den letzten Button klickt, nichts weiter gemacht wird. Der Dialog wird einfach geschlossen.

    // Dann kannst du mit "CreateVehicle(462, x, y, z, r, c1 , c2, d);" weiterarbeiten.
    }
    }
    }


  • Kriege 3 Errors:


    (18152) : error 017: undefined symbol "dialogid"
    (18157) : error 017: undefined symbol "dialogid"
    (18159) : error 017: undefined symbol "response"



    Hier der Abschnitt:


    if(strcmp(cmd, "/roller", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,1241.1827,-1728.8977,13.5768))
    {
    if(UnrentRoller[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_RROLLER,DIALOG_STYLE_MSGBOX, "{00FFA0}Roller Mieten","{FEFEFE}Möchtest du einen Roller für {FF4600}40${FEFEFE} mieten ?","Mieten","Nein");
    }
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    // Wird aufgerufen, sobald etwas mit einem Dialog passiert. ( Buttons, listitems..)
    // Hier musst du die DialogID abfragen. Geht mit "if & else" oder mit "switch & case".


    if(dialogid == 1 //Name oder ID ist egal )
    {
    if(!response)return 1;
    {
    // Solltest du auf den letzten Button geklickt haben, wird dieser Codeblock aufgerufen.
    // Da du aber möchtest, dass das Ganze beim ersten Button geschieht,
    // kannst du das auch so schreiben:
    // if(!response)return 1;
    // Das bewirkt, dass, wenn man auf den letzten Button klickt, nichts weiter gemacht wird. Der Dialog wird einfach geschlossen.


    // Dann kannst du mit "CreateVehicle(462, x, y, z, r, c1 , c2, d);" weiterarbeiten.
    CreateVehicle(462, 1243.5552, -1707.7450, 12.9824, 82.2873, 3, 3, 300);
    }
    }
    }
    }
    return 1;
    }

  • Da hab' ich mich falsch ausgedrückt.


    "public OnDialogResponse" sollst du nicht mit in deinen Command kopieren. Das gibt es bereits in deinem Script.
    Lösch den Teil such nach diesem Callback. Da kannst du das dann einfügen. ( Das ab Zeile 9 )

  • "public OnDialogResponse" sollst du nicht mit in deinen Command kopieren. Das gibt es bereits in deinem Script.
    Lösch den Teil such nach diesem Callback. Da kannst du das dann einfügen. ( Das ab Zeile 9 )


    Jetzt 4 Errors:


    C:\Documents and Settings\Denýs\Desktop\hypercam\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\LoS.pwn(18152) : error 029: invalid expression, assumed zero
    C:\Documents and Settings\Denýs\Desktop\hypercam\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\LoS.pwn(18152) : error 017: undefined symbol "dialogid"
    C:\Documents and Settings\Denýs\Desktop\hypercam\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\LoS.pwn(18152) : error 029: invalid expression, assumed zero
    C:\Documents and Settings\Denýs\Desktop\hypercam\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\LoS.pwn(18152) : fatal error 107: too many error messages on one line


    Script:


    if(strcmp(cmd, "/roller", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,1241.1827,-1728.8977,13.5768))
    {
    if(UnrentRoller[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_RROLLER,DIALOG_STYLE_MSGBOX, "{00FFA0}Roller Mieten","{FEFEFE}Möchtest du einen Roller für {FF4600}40${FEFEFE} mieten ?","Mieten","Nein");
    }
    Function OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    // Wird aufgerufen, sobald etwas mit einem Dialog passiert. ( Buttons, listitems..)
    // Hier musst du die DialogID abfragen. Geht mit "if & else" oder mit "switch & case".


    if(dialogid == 1 //Name oder ID ist egal )
    {
    if(!response)return 1;
    {
    // Solltest du auf den letzten Button geklickt haben, wird dieser Codeblock aufgerufen.
    // Da du aber möchtest, dass das Ganze beim ersten Button geschieht,
    // kannst du das auch so schreiben:
    // if(!response)return 1;
    // Das bewirkt, dass, wenn man auf den letzten Button klickt, nichts weiter gemacht wird. Der Dialog wird einfach geschlossen.


    // Dann kannst du mit "CreateVehicle(462, x, y, z, r, c1 , c2, d);" weiterarbeiten.
    CreateVehicle(462, 1243.5552, -1707.7450, 12.9824, 82.2873, 3, 3, 300);
    }
    }
    }
    }
    return 1;
    }

  • Du hast trotzdem nicht gemacht, was ich dir geschrieben habe.


    Lösche den kompletten Teil ab "Function OnDialog.." ( Zeile 9 - 28 )
    Diesen Teil ( ohne "public OnDialog.. " !! ) fügst du nun unter "OnDialogResponse" ein. Dieses Callback wurde bereits standardmäßig erstellt. Such es einfach.

  • Lösche den kompletten Teil ab "Function OnDialog.." ( Zeile 9 - 28 )
    Diesen Teil ( ohne "public OnDialog.. " !! ) fügst du nun unter "OnDialogResponse" ein. Dieses Callback wurde bereits standardmäßig erstellt. Such es einfach.


    Ok habs aber hab noch ein Error:


    C:\Documents and Settings\Denýs\Desktop\hypercam\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\LoS.pwn(46237) : error 029: invalid expression, assumed zero


    Zeile 46237ist nur das hier: {

  • Bisschen mehr Code wäre gut. Paar Zeilen drüber und drunter.


    SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Fahrzeug.");
    return 1;
    }


    }
    }
    if(dialogid == DIALOG_RROLLER //Name oder ID ist egal )
    {
    if(!response)return 1;
    {
    CreateVehicle(462, 1243.5552, -1707.7450, 12.9824, 82.2873, 3, 3, 300);
    }
    }
    if(dialogid == DIALOG_AUTOREPARIEREN)
    {


    Bei der Zeile 8 ist der Error drinnen

    Einmal editiert, zuletzt von Dr.House ()


  • Mehr transparents zu der Community!
    Aber bitte künftig: Transparenz und nicht Transparents

  • Könnte jemand mir dabei helfen:


    C:\Documents and Settings\Denýs\Desktop\hypercam\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\LoS.pwn(46237) : error 029: invalid expression, assumed zero


    Zeilen:


    SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Fahrzeug.");
    return 1;
    }


    }
    }
    if(dialogid == DIALOG_RROLLER //Name oder ID ist egal )<--- Die Klammer wird ausgesperrt. Also muss du die Klammer vor dem // machen..
    { //Zeile 46237
    if(!response)return 1;
    {
    CreateVehicle(462, 1243.5552, -1707.7450, 12.9824, 82.2873, 3, 3, 300);
    }
    }
    if(dialogid == DIALOG_AUTOREPARIEREN)
    {

  • Hi, ich bin gerade dabei einen delveh Befehl zu machen, funktioniert auch, aber ich will die Cars dann noch aus der DB löschen.
    Dazu erstmal eine kleine Frage:
    cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,f1,f2,-1);
    wird in der id_x is dann die VehicleID gespeichert?


    Und ist die Vehicleid die ID die In Game bei /dl angezeigt wird?

  • Jetzt hänge ich garade bei was.
    ocmd:delveh(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, ROT, "Du musst in einem Fahrzeug sitzen!");


    mysql_query("DELETE FROM cars WHERE ???='%i'",
    DestroyVehicle(GetPlayerVehicleID(playerid));
    return 1;
    }


    in der Datenbank habe ich eine ID gespeichert, die Für jedes Fahrzeug beim 1 mal erstellen gesetzt wird und einfach immer hochgezählt wird.
    Dann noch Besitzer, Kooridnaten und Farbe.


    Ist es jetzt überhaupt möglich abzufragen welches Auto ich rauslöschen will?
    Ich will es ja auch so machen, dass man auch Fahrzeuge der anderen löschen kann.



    Hätte jetzt versucht mit der id_x zu arbeiten, also der vehicleid, die ja beim Connecten wenn das Car erstellt wird gesetzt wird.. Aber keine Ahnung wie ich abfragen soll
    um welches Auto es sich in der DB handelt..

  • http://wiki.sa-mp.com/wiki/MySQL/R33#cache_get_row_int
    Bzw
    http://wiki.sa-mp.com/wiki/MyS…che_get_field_content_int


    @Kontrax:
    Mache eine Schleife durch alle deine so erstellten Fahrzeuge (id_x) und frage ab, ob das gleich GetPlayerVehicleID ist. Wenn ja, dann ist das i der Schleife der Index, damit kannst du dann auf die Datenbank zugreifen, mit WHERE id = %d
    Wobei das id eben der Datenbank ID entspricht.