[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
  • Das gleiche Problem hatte ich heute auch. Ich habe diese Fehler ausgebessert, also die komischen Zeichen in den Umlauten umgeschrieben und neu kompiliert.

  • Guten Mittag,
    Ich habe gerade eine kurze frage undzwar in dem script das ich benutze spawnd der Befehl /rc alle fahrzeuge aber ich möchte das der Befehl /rc nur bestimmte Fahrzeuge spawn also /rc [Fahrzeug ID] (Nicht vehicle ID wie z.B. /veh 411 0 0 sondern die Car id auf dem Server) Könnt ihr mir vlt den Code umändern bzw den umgeänderten code schicken?


    if(strcmp(cmd,"/rc",true) == 0)
    {
    if(SpielerInfo[playerid][pAdmin] >= 4)
    {
    SCMTA(COLOR_LIGHTRED,"Ein Admin Respawnt alle ungenutzten Fahrzeuge!");
    for(new v=0; v<MAX_VEHICLES; v++)
    {
    if(GetVehicleDriver(v) == -1)
    {
    SetVehicleToRespawn(v);
    }
    }
    }
    else SCM(playerid,COLOR_RED,"Du hast keine Rechte dazu!");
    return 1;
    }
    Könnt ihr es so schreiben das wenn der Admin /rc macht das kommt /rc [Car ID] und dann genau das auto mit der ID wieder spawnd?


    Danke schonmal MFG

  • if(strcmp(cmd,"/rv",true) == 0)
    {
    if(SpielerInfo[playerid][pAdmin] < 4) return SCM(playerid,COLOR_RED,"Du hast keine Rechte dazu!");
    new vid;
    if(!sscanf(cmdtext[4], "i", vid)) return SCM(playerid,COLOR_RED,"Benutzen: /rv [VehicleID]"); //Splitten; Sofern du die Funktion IsNumeric eingebunden hast, kannst du auch die nutzen.
    SetVehicleToRespawn(vid);
    return SCM(playerid,color_ka,"Du hast das Auto respawnt!");
    }

  • if(strcmp(cmd,"/rc",true) == 0)
    {
    new vID;
    if(sscanf(cmdtext,"d",vID))return SCM(playerid, Rot, "Benutzung:{FFFFFF} /rc [AutoID]");
    if(SpielerInfo[playerid][pAdmin] < 4)return SCM(playerid,COLOR_RED,"Du hast keine Rechte dazu!");
    if(GetVehicleDriver(vID) != -1)return SCM(playerid,COLOR_RED,"Auto ist in Benutzung. Du kannst es nicht respawnen!");
    SetVehicleToRespawn(vID);
    return 1;
    }


    //Ungetestet ;)

  • Guten Mittag,
    stehe vor ein kleines Problem.
    Ich weiß nicht, wie ich das Auto in die Datenbank abspeichern soll.
    ocmd:gpark(playerid,params[]){
    if(!Spieler[playerid][GruppenLeader])return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist kein GruppenLeader!");
    for(new i;i<sizeof hInfo;i++){
    if(hInfo[i][ownerid] != Spieler[playerid][GruppenID])continue;
    if(!IsPlayerInArea(playerid,hInfo[i][westx],hInfo[i][southy],hInfo[i][eastx],hInfo[i][northy]))continue;
    }
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist in keinem Fahrzeug!");
    if(!GetPlayerVehicleSeat(playerid))return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist nicht der Fahrer des Fahrzeuges!");
    new Float:Pos[4];
    GetVehiclePos(GetPlayerVehicleID(playerid),Pos[0],Pos[1],Pos[2]),GetVehicleZAngle(GetPlayerVehicleID(playerid),Pos[3]);
    for(new i;i<sizeof cInfo;i++){

    }
    format(query,200,"UPDATE gruppencars SET x='%f',y='%f',z='%f',r='%f' WHERE idd='%i",
    Pos[0],Pos[1],Pos[2],Pos[3],cInfo[
    return 1;
    }


    Soweit bin ich gerade, scheitere dennoch bei WHERE.
    enum GruppenCarEnum{
    id_x,//Keine feste ID
    idd,//Wird in DB abgespeichert
    gowner,
    Float:cx,
    Float:cy,
    Float:cz,
    Float:cr,
    model,
    kennzeichen[20]
    };


    Datenbank-Ausschnitt:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hey @MrApocalypse:,
    nehm das von H4rd_B4se:


    if(strcmp(cmd,"/rc",true) == 0)
    {
    new vID;
    if(sscanf(cmdtext,"d",vID))return SCM(playerid, Rot, "Benutzung:{FFFFFF} /rc [AutoID]");
    if(SpielerInfo[playerid][pAdmin] < 4)return SCM(playerid,COLOR_RED,"Du hast keine Rechte dazu!");
    if(GetVehicleDriver(vID) != -1)return SCM(playerid,COLOR_RED,"Auto ist in Benutzung. Du kannst es nicht respawnen!");
    SetVehicleToRespawn(vID);
    return 1;
    }

  • aber was meinst du mit splitten;


    "Splitten" nennt man, wenn man zwei Strings teilt.
    Das kannste mit verschiedenen Funktionen machen, die geschrieben wurden.
    http://wiki.sa-mp.com/wiki/Code_Snippets
    Und halt auch sscanf.


    L.G.


    PermanenT: Vielleicht liege ich ja falsch, habe mich mal informiert :whistling:.

    Zitat

    Those commands wont work correctly! Not only are specifying the wrong length to the strcmp function (10 for both, which neither equal 10!), but your passing the entire cmdtext string to sscanf, which includes the original command.


    Q: http://forum.sa-mp.com/showthread.php?t=310815

  • heyhooo:
    Okay, danke wusste ich nicht.
    Arbeite hauptsächlich mit ZCMD,OCMD o. DCMD also mit den ganzen Command Include's


    @MrApocalypse:
    Wo ich dir auch zu raten würde.
    Das du vielleicht auf OCMD umsteigst sprich deine neueren Befehle schon in OCMD verfasst.
    Da es die Nutzung von sscanf einfacher macht und diese glaube ich auch schneller sind als deine jetzige Variante.


    Das Include OCMD

  • Hey,
    hab ein Problem mit MD5, das Spackt wie immer nur rum.
    Ich hab Versucht ein Login zu machen, wo man den Gehahsten Wert aus der DB liest und man sich einloggen kann.
    Leider happerts am Einloggen. Er nimmt das Passwort nicht an:
    if(!strcmp(MD5_Hash(inputtext), mysql_ReturnPasswort(SpielerName(playerid)), true))
    {
    SetPVarInt(playerid,"logged",1);
    LoadPlayer(playerid);
    SpawnPlayer(playerid);
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid,D_LOGIN,DIALOG_STYLE_PASSWORD,"Login","FEHLER: PASSWORT EINGEBEN !","Login","Abbrechen");
    return 1;
    }

  • Lass es dir doch mal ausgeben:
    printf("MD5: %s", MD5_Hash(inputtext));
    printf("Input: %s", inputtext);
    printf("MySQL: %s", mysql_ReturnPasswort(SpielerName(playerid)));


    Vor die strcmp-Abfrage einfügen.


    Hast du das Passwort auch richtig in der Datenbank gespeichert, nicht dass du dich da vertippt hast, soll ja vorkommen.


  • if(!strcmp(MD5_Hash(inputtext), MD5_Hash(mysql_ReturnPasswort(SpielerName(playerid))), true))

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