Error 047

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
  • Hey Leute,
    ich habe folgendes Problem:
    Ich habe mir einen Waffenspawner gebastelt, der die Waffen auch nach Waffenname spawnen soll.
    Leider gibt mir mein Compiler immer eine Fehlermeldung aus:
    (1695) : error 047: array sizes do not match, or destination array is too small


    hier ist der Code dazu:
    new WeaponName[][]=
    {
    "","Schlagring", "Golfschläger", "Schlagstock", "Messer", "Baseballschläger",
    "Schaufel", "Billardstock", "Katana", "Kettensäge", "Dildo", "Vibrator A",
    "Vibrator B", "Vibrator C", "Blumen", "Krückstock", "Granate", "Tränengas",
    "Molotov", "", "", "", "Pistol", "SDPistol", "Deagle", "Schrotflinte",
    "A-Schrotflinte", "C-Schrotflinte", "SMG", "MP5", "AK47", "M4", "Tec9", "CRifle",
    "SRifle", "Raketenwerfer", "HS-Raketenwerfer", "Flammenwerfer", "Minigun",
    "Kofferbomben", "Zünder", "Pfefferspray", "Feuerlöscher", "Kamera",
    "Nachtsichtgerät", "Wärmebildgerät", "Fallschirm"
    };
    dcmd_giveweapon(playerid,params[])
    {
    new pID;
    new waffe[50];
    new wID;
    new Ammo;
    if(sscanf(params, "usd", pID, waffe, Ammo))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutzung: /giveweapon [Playerid] [Waffen-ID] [Munition]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    if(SpielerInfo[playerid][alvl]<3)
    {
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin Level 3!");
    }
    else
    {
    new aname[MAX_PLAYER_NAME], string2[256];
    if(IsNumeric(waffe))
    {
    wID=strval(waffe);
    }
    if(!IsNumeric(waffe))
    {
    new nameid;
    for(; nameid < sizeof(WeaponName); nameid++)
    {
    if(strlen(WeaponName[nameid]))
    if(strcmp(waffe, WeaponName[nameid], true) == 0)
    {
    wID=nameid;
    break;
    }
    }
    if(wID == -1) return SendClientMessage(playerid, 0xFFFFFFFF, "Ungültiger Waffenname!");
    }
    new waffe2[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    waffe2 = WeaponName[wID];//DIE FEHLERZEILE
    format(string2, sizeof(string2), "[AdmCmd] Du hast von %s eine %s mit %d Munition bekommen.", aname, waffe2, Ammo);
    SendClientMessage(pID, COLOR_RED, string2);
    GivePlayerWeapon(pID, wID, Ammo);
    }
    return 1;
    }


    Was mache ich falsch? Das muss irgendwas mit den Arrays zu tun haben...


    K3nNy

  • Bitte schau dir nun folgenden genauer an, da ich grad bissl müde dazu bin dir dies zu erklären :P


    dcmd_giveweapon(playerid,params[])
    {
    new pID, waffe[32], wID = -1, Ammo, waffe2[32], aname[MAX_PLAYER_NAME], string2[128], nameid = 0;
    if(sscanf(params, "usd", pID, waffe, Ammo)) return SendClientMessage(playerid,COLOR_RED,"Benutzung: /giveweapon [Playerid] [Waffen-ID] [Munition]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    if(SpielerInfo[playerid][alvl] < 3) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin Level 3!");
    if(IsNumeric(waffe))
    {
    if(strval(waffe) < 1 || strval(waffe) > 46) return return SendClientMessage(playerid,COLOR_RED,"WaffenID nicht kleiner als 1 oder höher als 46!");
    wID=strval(waffe);
    format(waffe2, 32, WeaponName[strval(waffe)]);
    }
    else if(!IsNumeric(waffe))
    {
    for(; nameid < sizeof(WeaponName); nameid++)
    {
    if(strlen(WeaponName[nameid]) && strcmp(waffe, WeaponName[nameid], true) == 0)
    {
    wID=nameid;
    format(waffe2, 32, waffe);
    break;
    }
    }
    if(wID == -1) return SendClientMessage(playerid, 0xFFFFFFFF, "Ungültiger Waffenname!");
    }
    GetPlayerName(playerid, aname, sizeof(aname));
    format(string2, sizeof(string2), "[AdmCmd] Du hast von %s eine %s mit %d Munition bekommen.", aname, waffe2, Ammo);
    SendClientMessage(pID, COLOR_RED, string2);
    GivePlayerWeapon(pID, wID, Ammo);
    return 1;
    }


    Achja zu deiner Frage vom letzten Post warum 2 von solchen [ ] Klammern dort sein sollen. Da die erste Klammer wenn kein Wert angegeben ist zählt wieviele WaffenNamen eingetragen wurden sind mit " ", und so weiter und die andere Klammer zählt wieviel der höchste String beträgt, also steht für den String, wie zB bei deinem Befehl der string waffe2 und Co

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!