Befehle crasht Server || Andere Frage dazu

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
  • Hi all wieder ich ^^,


    Hab mir was vom GF abgeguckt und dann ist das entstanden


    dcmd_ausschenken(playerid, params[])
    {
    new id, drink;
    new x_drink[256];
    x_drink = strtok(params, drink);
    if (!sscanf(params, "ds", id, drink)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Usage: /auschenken [ID] [Getränk]");
    else if (!strlen(x_drink)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Tippe /drinkliste um die Getränke aufzulisten.");
    else if (!IsPlayerConnected(id)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Invalid ID");
    else if (PInfo[playerid][Job] != 8) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Du bist kein Angestellter");
    else if (IsPlayerConnected(id))
    {
    if(strcmp(x_drink,"Vodka",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s schenkt %s einen Glas %s aus!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euer Glas %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Bier",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s schenkt %s einen Glas %s aus",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euer Glas %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Schnapps",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s schenkt %s einen Glas %s aus!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euer Glas %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Koktail",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s schenkt %s einen Glas %s aus!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euere %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Orangensaft",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s schenkt %s einen Glas %s aus!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euer Glas %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Cola",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s schenkt %s einen Glas %s aus!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euer Glas %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Wasser",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s schenkt %s einen Glas %s aus!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euer Glas %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Wein",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s gibt %s eine Flasche %s!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euere Flasche %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Champagne",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s gibt %s eine Flasche %s!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euere Flasche %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    }
    return 1;
    }


    0 erros/warnings
    Doch wenn ich zB /ausschenken 1 Vodka mache crasht mein server und startet wieder neu, hätte jemand ne Idee woran das liegen kann ?


    MfG Sn1p3r


    SIEHE LAST POST


    Photoshop CS4 User

    4 Mal editiert, zuletzt von [GS]Sn1p3r ()

  • Sorry mein Fehler, lags daran ?! <<-- ne ^^ habs getestet :)


    format(tmp,256,"[Pinky's Bar] %s schenkt %s einen Glas %sat ein Kopfgeld von %d$ auf %s gesetzt!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)


    war so weil ich mein format von /kopfgeld als Vorlage benutzt habe ;)


    Photoshop CS4 User

    Einmal editiert, zuletzt von [GS]Sn1p3r ()

  • Würde sagen der Fehler liegt an einer etwas anderen Stelle.
    dcmd_ausschenken(playerid, params[])
    {
    new
    id,
    x_drink[128];
    if (!sscanf(params, "ds", id, x_drink)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Usage: /auschenken [ID] [Getränk]");
    //else if (!strlen(x_drink)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Tippe /drinkliste um die Getränke aufzulisten.");
    else if (!IsPlayerConnected(id)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Invalid ID");
    else if (PInfo[playerid][Job] != 8) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Du bist kein Angestellter");
    else if (IsPlayerConnected(id))
    {
    //[...]

    Überall wo jetzt noch im format(...) "drink" steht muss "x_drink" her.Du hast "drink" nämlich als Integer deklariert,soll aber in sscanf schon ein String sein (Crash müsste hier liegen).So auch im format(...).Wir wissen ja das '%s' ein String ist,also musst du auch ein String "übergeben".

  • Ehm sry hab nicht ganz verstanden, bin halt kein richtiger Deutscher sondern Franzose ^^
    Könntest du mir das bitte einfach erklären :s ?!


    EDIT : Oder doch ^^ "drink" einfach in x_drink umwandeln ?!


    SUPER ECHT DANKE GOLDKILLER :thumbup: :thumbup: :thumbup:


    EDIT : Wie kann ich machen das wenn der Typ /ausschenken ID [falsches Getränk] eingibt er ne fehler meldung bekommt halt : SendClientMessage(playerid, 0xFF0000FF, "[INFO] Tippe /drinkliste um die Getränke aufzulisten.");
    hab gesehen Gold Killer hat diese Zeile Weggemacht. ( else if (!strlen(x_drink)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Tippe /drinkliste um die Getränke aufzulisten.");


    Photoshop CS4 User

    2 Mal editiert, zuletzt von [GS]Sn1p3r ()

  • Zitat

    Ehm sry hab nicht ganz verstanden, bin halt kein richtiger Deutscher sondern Franzose ^^


    Na wer hätte das gedacht :thumbup:
    Zu deiner neuen Frage.
    Ich bin mir nich sicher,es könnte allerdings funktionieren indem du das hier nutzt:
    if (!sscanf(params, "dz", id, x_drink)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Usage: /auschenken [ID] [Getränk]");

    Anstatt "ds" müsstest du "dz" nehmen.'z' bedeutet in dem Fall es muss kein String als 2 Parameter angegeben werden,sondern kann.
    Noch genauer erklären möcht ich das nicht,das würde sonst zu lang werden,sscanf ist nämlich ein riesen Funktion.
    Dann könntest du es so nutzten:
    dcmd_ausschenken(playerid, params[])
    {
    new
    id,
    x_drink[128];
    if (!sscanf(params, "dz", id, x_drink)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Usage: /auschenken [ID] [Getränk]");
    else if (!strlen(x_drink)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Tippe /drinkliste um die Getränke aufzulisten.");
    else if (!IsPlayerConnected(id)) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Invalid ID");
    else if (PInfo[playerid][Job] != 8) SendClientMessage(playerid, 0xFF0000FF, "[INFO] Du bist kein Angestellter");
    else if (IsPlayerConnected(id))
    {
    //[...]
    Es gibt aber einen Nachteil,den wirst beim testen relativ schnell finden.


    //Edit:

    Zitat

    EDIT : Wie kann ich machen das wenn der Typ /ausschenken ID [falsches Getränk] eingibt er ne fehler meldung bekommt halt :


    //[...]
    else if(strcmp(x_drink,"Wein",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s gibt %s eine Flasche %s!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euere Flasche %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else if(strcmp(x_drink,"Champagne",true) == 0)
    {
    new tmp[256], tmp2[256];
    format(tmp,256,"[Pinky's Bar] %s gibt %s eine Flasche %s!",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessageForTeam(3,COLOR_BLUE,tmp); //TO CORRECT TEAM :)
    format(tmp2,256,"[Pinky's Bar] Hier ist euere Flasche %s Sir",PlayerName(playerid),PlayerName(id), drink);
    SendClientMessage(id,0x00FF00FF,tmp2);
    }
    else {
    SendClientMessage(playerid, 0xFF0000FF, "[INFO] Tippe /drinkliste um die Getränke aufzulisten.");
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von Goldkiller ()