Errors bei /sellgun

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
  • Hei, ich habe folgendes problem, die waffe die er bei sscanf eingibt z.B. messer, katana etc soll überprüft werden und dann dazu die passendenmats angegeben werden
    Er zeigt mir an das z.B. "messer" undifenid ist, aber ich will nur rausfinden ob er bei sscanf "messer"eingegeben hat um zu wissen welche waffe er verkaufen will


    code:



    ocmd:sellgun(playerid, params[])
    {
    if(PlayerInfo[playerid][pLevel] < 5)return SendClientMessage(playerid, Rot, "Du kannst erst ab Level 5 Waffen verkaufen");
    if(PlayerInfo[playerid][pMats] == 0)return SendClientMessage(playerid, Rot, "Du hast kein Gras mit");
    new pID, preis, diewaffe[30], Float:x, Float:y, Float:z, string[128], stringg[128];
    if(sscanf(params,"usi",pID, diewaffe, preis))return SendClientMessage(playerid, Gruen, "Befehl: {FFFFFF}/sellgun [Name/ID] [Waffe] [Preis]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, Rot, "Dieser Spieler ist nicht Online");
    GetPlayerPos(pID, x, y, z);
    if(!IsPlayerInRangeOfPoint(playerid, 6, x, y, z))return SendClientMessage(playerid, Rot, "Du bist nicht in der nähe des Spielers");
    if(diewaffe == messer)||diewaffe == Messer)
    {
    if(PlayerInfo[playerid][pMats]< 8)
    {
    new nachricht[128];
    format(nachricht, sizeof nachricht, "Du besitzt %i Waffenmaterialien, du benötigst aber 8 Waffenmaterialien", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, Rot, nachricht);
    }
    SetPVarInt(pID, "graspreis", preis);
    SetPVarInt(pID, "derpreis", preis);
    SetPVarInt(pID, "waffe", diewaffe);
    SetPVarInt(pID,"givegunid",playerid);
    SetPVarInt(pID,"waffenmats",8);
    format(string, sizeof string,"Du hast dem Spieler %s eine %s für %i$ aneboten", PlayerInfo[pID][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, string);
    format(stringg, sizeof stringg,"Der Spieler %s hat dir eine %s für %i$ angeboten. Um den Deal anzunehmen gebe /accept [gun] ein.", PlayerInfo[playerid][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, stringg);
    return 1;
    }
    if(diewaffe == katana)||diewaffe == Katana)
    {
    if(PlayerInfo[playerid][pMats]< 8)
    {
    new nachricht[128];
    format(nachricht, sizeof nachricht, "Du besitzt %i Waffenmaterialien, du benötigst aber 8 Waffenmaterialien", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, Rot, nachricht);
    }
    SetPVarInt(pID, "graspreis", preis);
    SetPVarInt(pID, "derpreis", preis);
    SetPVarInt(pID, "waffe", diewaffe);
    SetPVarInt(pID,"givegunid",playerid);
    SetPVarInt(pID,"waffenmats",8);
    format(string, sizeof string,"Du hast dem Spieler %s eine %s für %i$ aneboten", PlayerInfo[pID][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, string);
    format(stringg, sizeof stringg,"Der Spieler %s hat dir eine %s für %i$ angeboten. Um den Deal anzunehmen gebe /accept [gun] ein.", PlayerInfo[playerid][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, stringg);
    return 1;
    }
    if(diewaffe == deagle)||diewaffe == Deagle)
    {
    if(PlayerInfo[playerid][pMats]< 25)
    {
    new nachricht[128];
    format(nachricht, sizeof nachricht, "Du besitzt %i Waffenmaterialien, du benötigst aber 25 Waffenmaterialien", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, Rot, nachricht);
    }
    SetPVarInt(pID, "graspreis", preis);
    SetPVarInt(pID, "derpreis", preis);
    SetPVarInt(pID, "waffe", diewaffe);
    SetPVarInt(pID,"givegunid",playerid);
    SetPVarInt(pID,"waffenmats",25);
    format(string, sizeof string,"Du hast dem Spieler %s eine %s für %i$ aneboten", PlayerInfo[pID][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, string);
    format(stringg, sizeof stringg,"Der Spieler %s hat dir eine %s für %i$ angeboten. Um den Deal anzunehmen gebe /accept [gun] ein.", PlayerInfo[playerid][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, stringg);
    return 1;
    }
    if(diewaffe == mp5)||diewaffe == MP5)
    {
    if(PlayerInfo[playerid][pMats]< 50)
    {
    new nachricht[128];
    format(nachricht, sizeof nachricht, "Du besitzt %i Waffenmaterialien, du benötigst aber 50 Waffenmaterialien", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, Rot, nachricht);
    }
    SetPVarInt(pID, "graspreis", preis);
    SetPVarInt(pID, "derpreis", preis);
    SetPVarInt(pID, "waffe", diewaffe);
    SetPVarInt(pID,"givegunid",playerid);
    SetPVarInt(pID,"waffenmats",50);
    format(string, sizeof string,"Du hast dem Spieler %s eine %s für %i$ aneboten", PlayerInfo[pID][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, string);
    format(stringg, sizeof stringg,"Der Spieler %s hat dir eine %s für %i$ angeboten. Um den Deal anzunehmen gebe /accept [gun] ein.", PlayerInfo[playerid][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, stringg);
    return 1;
    }
    if(diewaffe == shotgun)||diewaffe == Shotgun)
    {
    if(PlayerInfo[playerid][pMats]< 70)
    {
    new nachricht[128];
    format(nachricht, sizeof nachricht, "Du besitzt %i Waffenmaterialien, du benötigst aber 70 Waffenmaterialien", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, Rot, nachricht);
    }
    SetPVarInt(pID, "graspreis", preis);
    SetPVarInt(pID, "derpreis", preis);
    SetPVarInt(pID, "waffe", diewaffe);
    SetPVarInt(pID,"givegunid",playerid);
    SetPVarInt(pID,"waffenmats",70);
    format(string, sizeof string,"Du hast dem Spieler %s eine %s für %i$ aneboten", PlayerInfo[pID][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, string);
    format(stringg, sizeof stringg,"Der Spieler %s hat dir eine %s für %i$ angeboten. Um den Deal anzunehmen gebe /accept [gun] ein.", PlayerInfo[playerid][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, stringg);
    return 1;
    }
    if(diewaffe == rifle)||diewaffe == Rifle)
    {
    if(PlayerInfo[playerid][pMats]< 100)
    {
    new nachricht[128];
    format(nachricht, sizeof nachricht, "Du besitzt %i Waffenmaterialien, du benötigst aber 100 Waffenmaterialien", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, Rot, nachricht);
    }
    SetPVarInt(pID, "graspreis", preis);
    SetPVarInt(pID, "derpreis", preis);
    SetPVarInt(pID, "waffe", diewaffe);
    SetPVarInt(pID,"givegunid",playerid);
    SetPVarInt(pID,"waffenmats",100);
    format(string, sizeof string,"Du hast dem Spieler %s eine %s für %i$ aneboten", PlayerInfo[pID][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, string);
    format(stringg, sizeof stringg,"Der Spieler %s hat dir eine %s für %i$ angeboten. Um den Deal anzunehmen gebe /accept [gun] ein.", PlayerInfo[playerid][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, stringg);
    return 1;
    }
    if(diewaffe == AK47)||diewaffe == ak47||diewaffe == Ak47)
    {
    if(PlayerInfo[playerid][pMats]< 100)
    {
    new nachricht[128];
    format(nachricht, sizeof nachricht, "Du besitzt %i Waffenmaterialien, du benötigst aber 100 Waffenmaterialien", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, Rot, nachricht);
    }
    SetPVarInt(pID, "graspreis", preis);
    SetPVarInt(pID, "derpreis", preis);
    SetPVarInt(pID, "waffe", diewaffe);
    SetPVarInt(pID,"givegunid",playerid);
    SetPVarInt(pID,"waffenmats",100);
    format(string, sizeof string,"Du hast dem Spieler %s eine %s für %i$ aneboten", PlayerInfo[pID][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, string);
    format(stringg, sizeof stringg,"Der Spieler %s hat dir eine %s für %i$ angeboten. Um den Deal anzunehmen gebe /accept [gun] ein.", PlayerInfo[playerid][pName], diewaffe, preis);
    SendClientMessage(playerid, Hellblau, stringg);
    return 1;
    }
    return 1;
    }


  • Als Zusatz zu Jeffry:


    1. Wenn du Strings (Arrays mit Chars bei Pawn) vergleichen möchtest musst du strcmp (String Compare) benutzen. Das geht auch mit sscanf, ist aber meiner Meinung nach als würde man mit Kanonen auf Spatzen schießen.


    2. Wenn du Strings direkt in deinem Quellcode benutzen möchtest, musst du Anführungsstriche verwenden, sonst hält der Compiler messer bzw. Messer für eine Variable, welche nicht existiert. Also statt


    if(diewaffe == messer)||diewaffe == Messer)


    müsste es theoretisch:


    if(diewaffe == "messer")||diewaffe == "Messer")


    sein. Ist aber auch falsch. Hier gibt er dir aber einen Indexfehler.


    //Edit: Du hast übrigens bei allen if-Abfragen mit diewaffe eine Klammer zu viel nach der ersten Bedingung.