Brille anprobieren fehler..

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
  • Also ich wollte ein Befehl mit zcmd scripten, dass einen user in der Gardarobe halt sich per /brille testen [brillenid] sich die brillen anschauen kann... doch das problem ist, das der befehl nicht funktioniert.. kann da wer helfen pls?


    Hier der befehl:


    COMMAND:brille(playerid,params[])
    {
    new glasseid, skin, cmd[25];
    if(sscanf(params,"s[25]",cmd))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /brille [gardarobe/testen/kaufen/verlassen/zurueckgeben]");
    skin = GetPlayerSkin(playerid);
    if(IsPlayerInRangeOfPoint(playerid,40.0,203.64491272,-43.33317566,1001.40466309))
    {
    if(!strlen(cmd))
    {
    SendClientMessage(playerid, GRAU,"[BENUTZUNG]: /brille [Funktion]");
    SendClientMessage(playerid, WEISS, "Verfügbare Funktionen: gardarobe,testen, kaufen, verlassen,zurueckgeben");
    return 1;
    }
    if(strcmp(cmd,"gardarobe",true) == 0)
    {
    if(gardarobe[playerid] == 0)
    {
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, GRAU,"Hier kannst du Brillen testen. Mit (/brille verlassen) verlässt du das Testen.");
    SendClientMessage(playerid, GRAU,"und um die Brille zu kaufen benutze (/brille kaufen)");
    SetPlayerPos(playerid,215.6377,-41.4622,1002.0234);
    SetPlayerFacingAngle(playerid,9.8600);
    SetPlayerVirtualWorld(playerid,playerid+1);
    SetPlayerCameraPos(playerid, 215.1961,-40.4149,1002.9234);
    SetPlayerCameraLookAt(playerid, 215.6377,-41.4622,1002.8234);
    gardarobe[playerid] = 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid, GRAU,"Du bist schon in der Gardarobe.");
    }
    }
    if(strcmp(cmd,"testen",true) == 0)
    {
    if(gardarobe[playerid] == 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, GRAU, "[BENUTZUNG:] /brille [testen] [1-33]");
    new nummer;
    nummer = strval(cmd);
    if(!nummer || nummer > 33) return SendClientMessage(playerid, GRAU, "[BENUTZUNG]: /brille testen [1-33]");
    Brillenwahl[playerid] = nummer;
    if(nummer > 30) goto PutPoliceGlasses;
    else
    {
    nummer--;
    glasseid = CommonRed + nummer;
    SetPlayerHoldingObject(playerid, glasseid, 2, SkinOffSet[skin][0], SkinOffSet[skin][1], SkinOffSet[skin][2], SkinOffSet[skin][3], SkinOffSet[skin][4], SkinOffSet[skin][5]);
    return 1;
    }
    PutPoliceGlasses:
    glasseid = CopGlassesBlack + (nummer - 31);
    SetPlayerHoldingObject(playerid, glasseid, 2, SkinOffSet[skin][0], floatadd(SkinOffSet[skin][1], 0.004500), SkinOffSet[skin][2], SkinOffSet[skin][3], SkinOffSet[skin][4], SkinOffSet[skin][5]);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, GRAU,"Du bist noch nicht in der Gardarobe benutze /brille gardarobe !");
    }
    }
    else if(strcmp(cmd,"zurueckgeben",true) == 0)
    {
    if(Spieler[playerid][pBrille] >= 1)
    {
    SendClientMessage(playerid, GRAU,"Brille zurückgegeben!");
    SendClientMessage(playerid, GRAU,"Du hast für deine Brille 800$ bekommen!");
    GivePlayerMoney(playerid,800);
    SetCameraBehindPlayer(playerid);
    Spieler[playerid][pBrille] = 0;
    StopPlayerHoldingObject(playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, GRAU,"Du besitzt keine Brille!");
    }
    }
    else if(strcmp(cmd,"verlassen",true) == 0)
    {
    SetPlayerPos(playerid,203.64491272,-43.33317566,1001.40466309);
    SetPlayerVirtualWorld(playerid,0);
    SendClientMessage(playerid, GRAU,"Kauf abgebrochen!");
    StopPlayerHoldingObject(playerid);
    SetCameraBehindPlayer(playerid);
    Brillenwahl[playerid] = 0;
    gardarobe[playerid] = 0;
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    else if(strcmp(cmd,"kaufen",true) == 0)
    {
    if(Brillenwahl[playerid] >= 1)
    {
    if(GetPlayerMoney(playerid) >= 1200)
    {
    SetPlayerPos(playerid,203.64491272,-43.33317566,1001.40466309);
    SetPlayerVirtualWorld(playerid,0);
    SendClientMessage(playerid, GRAU,"Brille erfogreich gekauft!");
    SetCameraBehindPlayer(playerid);
    Spieler[playerid][pBrille] = Brillenwahl[playerid];
    Brillenwahl[playerid] = 0;
    gardarobe[playerid] = 0;
    TogglePlayerControllable(playerid, 1);
    GivePlayerMoney(playerid,-1200);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, GRAU, "Sie haben zuwenig Geld.(1200$)");
    }
    }
    else
    {
    SendClientMessage(playerid, GRAU, "Du hast dir noch keine Brille ausgesucht!");
    }
    }
    else
    {
    SendClientMessage(playerid, GRAU,"[BENUTZUNG]: /brille [Funktion]");
    SendClientMessage(playerid, WEISS, "Verfügbare Funktionen: testen, kaufen, verlassen,zurueckgeben");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,GRAU,"Du bist nicht im Brillenladen.");
    }
    return 1;
    }

  • WAs genau funktioniert denn nicht?


    Schreib bitte genauere Fehlerbeschreibungen
    Sonst müssen wir deinen kompletten code analysieren...


    Der befehl funktioniert nicht mit dem "testen" Also ich gebe zb /brille testen 3 ein aber es geschieht nichts...


    Also ich wollte vom normalen funktion zur zcmd umändern hier mal der normale code:
    if(strcmp(cmd, "/brille", true) == 0)
    {
    new glasseid, skin;
    skin = GetPlayerSkin(playerid);
    tmp = strtok(cmdtext, idx);
    if (IsPlayerInRangeOfPoint(playerid,40.0,203.64491272,-43.33317566,1001.40466309))
    {
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY,"[BENUTZUNG]: /brille [Funktion]");
    SendClientMessage(playerid, COLOR_WHITE, "Verfügbare Funktionen: gardarobe,testen, kaufen, verlassen,zurueckgeben");
    return 1;
    }
    if(strcmp(tmp,"gardarobe",true) == 0)
    {
    if(gardarobe[playerid] == 0)
    {
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, COLOR_GREY,"Hier kannst du Brillen testen. Mit (/brille verlassen) verlässt du das Testen.");
    SendClientMessage(playerid, COLOR_GREY,"und um die Brille zu kaufen benutze (/brille kaufen)");
    SetPlayerPos(playerid,215.6377,-41.4622,1002.0234);
    SetPlayerFacingAngle(playerid,9.8600);
    SetPlayerVirtualWorld(playerid,playerid+1);
    SetPlayerCameraPos(playerid, 215.1961,-40.4149,1002.9234);
    SetPlayerCameraLookAt(playerid, 215.6377,-41.4622,1002.8234);
    gardarobe[playerid] = 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Du bist schon in der Gardarobe.");
    }
    }
    if(strcmp(tmp,"testen",true) == 0)
    {
    if(gardarobe[playerid] == 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GREY, "[BENUTZUNG:] /brille [testen] [1-33]");
    new nummer;
    nummer = strval(tmp);
    if(!nummer || nummer > 33) return SendClientMessage(playerid, COLOR_GREY, "[BENUTZUNG]: /brille testen [1-33]");
    Brillenwahl[playerid] = nummer;
    if(nummer > 30) goto PutPoliceGlasses;
    else
    {
    nummer--;
    glasseid = CommonRed + nummer;
    SetPlayerHoldingObject(playerid, glasseid, 2, SkinOffSet[skin][0], SkinOffSet[skin][1], SkinOffSet[skin][2], SkinOffSet[skin][3], SkinOffSet[skin][4], SkinOffSet[skin][5]);
    return 1;
    }
    PutPoliceGlasses:
    glasseid = CopGlassesBlack + (nummer - 31);
    SetPlayerHoldingObject(playerid, glasseid, 2, SkinOffSet[skin][0], floatadd(SkinOffSet[skin][1], 0.004500), SkinOffSet[skin][2], SkinOffSet[skin][3], SkinOffSet[skin][4], SkinOffSet[skin][5]);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Du bist noch nicht in der Gardarobe benutze /brille gardarobe !");
    }
    }
    else if(strcmp(tmp,"zurueckgeben",true) == 0)
    {
    if(PlayerInfo[playerid][pBrille] >= 1)
    {
    SendClientMessage(playerid, COLOR_GREY,"Brille zurückgegeben!");
    SendClientMessage(playerid, COLOR_GREY,"Du hast für deine Brille 800$ bekommen!");
    GivePlayerMoney(playerid,800);
    SetCameraBehindPlayer(playerid);
    PlayerInfo[playerid][pBrille] = 0;
    StopPlayerHoldingObject(playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Du besitzt keine Brille!");
    }
    }
    else if(strcmp(tmp,"verlassen",true) == 0)
    {
    SetPlayerPos(playerid,203.64491272,-43.33317566,1001.40466309);
    SetPlayerVirtualWorld(playerid,0);
    SendClientMessage(playerid, COLOR_GREY,"Kauf abgebrochen!");
    StopPlayerHoldingObject(playerid);
    SetCameraBehindPlayer(playerid);
    Brillenwahl[playerid] = 0;
    gardarobe[playerid] = 0;
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    else if(strcmp(tmp,"kaufen",true) == 0)
    {
    if(Brillenwahl[playerid] >= 1)
    {
    if(GetPlayerMoney(playerid) >= 1200)
    {
    SetPlayerPos(playerid,203.64491272,-43.33317566,1001.40466309);
    SetPlayerVirtualWorld(playerid,0);
    SendClientMessage(playerid, COLOR_GREY,"Brille erfogreich gekauft!");
    SetCameraBehindPlayer(playerid);
    PlayerInfo[playerid][pBrille] = Brillenwahl[playerid];
    Brillenwahl[playerid] = 0;
    gardarobe[playerid] = 0;
    TogglePlayerControllable(playerid, 1);
    GivePlayerMoney(playerid,-1200);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Sie haben zuwenig Geld.(1200$)");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast dir noch keine Brille ausgesucht!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"[BENUTZUNG]: /brille [Funktion]");
    SendClientMessage(playerid, COLOR_WHITE, "Verfügbare Funktionen: testen, kaufen, verlassen,zurueckgeben");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du bist nicht im Brillenladen.");
    }
    return 1;
    }


    Und das in zcmd doch wenn ich es in zcmd umschreibe dann funktioniert der befehl nicht...

  • Achsooo


    Da ist deine sscanf Anweisung falsch.


    Mach aus
    if(sscanf(params,"s[25]",cmd))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /brille [gardarobe/testen/kaufen/verlassen/zurueckgeben]");
    if(sscanf(params,"s[25]I(0)",cmd, nummer))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /brille [gardarobe/testen/kaufen/verlassen/zurueckgeben]");


    Und entferne das hier
    new nummer;
    nummer = strval(cmd);


    Grund ist:
    Befehl /brille testen 1
    Dann liest er in die variable cmd "testen 1"
    Wenn du mit strval versuchst eine ID daraus zu machen wird es nicht nicht gelingen.
    Es wird zu random (was genau weiß ich nicht) sowas wie "8094718923"


    Und diese ID gibt es nicht


    Das große I in der sscanf Anweisung bedeutet, dass es ein optionaler Paramter ist und nicht eingegeben werden muss.

    ik bin der vito c: