Hallo
Ich habe einen Command von Strcmp in DCMD umgeschrieben und nun habe ich ein kleines Problem. Ich kann mit einer Nummer ein 3er Koordinatenpaar aus einem Arrey auswählen und diese abspeichern. Ich will also die Zahl die man eingibt ins Arrey eingeben:
C:\Users\Simon\Desktop\dudalus232.pwn(8944) : error 032: array index out of bounds (variable "Typen")
C:\Users\Simon\Desktop\dudalus232.pwn(8945) : error 032: array index out of bounds (variable "Typen")
C:\Users\Simon\Desktop\dudalus232.pwn(8946) : error 032: array index out of bounds (variable "Typen")
C:\Users\Simon\Desktop\dudalus232.pwn(8947) : error 032: array index out of bounds (variable "Typen")
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
new Typen[][haus_typ] =
{
{1,223.043991,1289.259888,1082.199951}, //Schlecht
{2,225.756989,1240.000000,1082.149902}, //Schlecht
{3,235.508994,1189.169897,1080.339966}, //Gut
{7,225.630997,1022.479980,1084.069946} //Sehr Gut
};
dcmd_chaus(playerid,params[])
{
new spielzeit, vworld;
if(sscanf(params, "dddd",kosten,spielzeit,haus,vworld)) SendClientMessage(playerid, COLOR_WHITE,"Verwendung: /chaus [Kosten] [Spielzeit in h] [Haus] [Virtual World]");
else if(!IsPlayerAdmin(playerid)) return 1;
else if(spielzeit < 0) return SendClientMessage(playerid,COLOR_GREY,"Die Spielzeit muss minimal bei 0 Stunden liegen!");
else
{
new string[256];
new Float:nowPos[3];
new slotid = initHSlot();
new fullid = (slotid==-1) ? (_cache_haus) : (slotid);
GetPlayerPos(playerid,nowPos[0],nowPos[1],nowPos[2]);
HausDaten[fullid][ax] = nowPos[0];
HausDaten[fullid][ay] = nowPos[1];
HausDaten[fullid][az] = nowPos[2];
HausDaten[fullid][play_time] = spielzeit;
HausDaten[fullid][kosten] = kosten;
HausDaten[fullid][interior] = Typen[haus][interior];
HausDaten[fullid][ix] = Typen[haus][haus_x];
HausDaten[fullid][iy] = Typen[haus][haus_y];
HausDaten[fullid][iz] = Typen[haus][haus_z];
HausDaten[fullid][virtual_world] = vworld;
HausDaten[fullid][verschlossen] = 1;
HausDaten[fullid][nicht_zum_kauf] = 0;
strmid(HausDaten[fullid][Besitzer],"Keiner",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
HausDaten[fullid][pickid] = CreatePickup(1273,1,nowPos[0],nowPos[1],nowPos[2],0);
format(string,sizeof string,"Besitzer : Keiner\nScore : %d\nKosten : %d$",spielzeit,kosten);
HausDaten[fullid][lbl_haus] = Create3DTextLabel(string,0x00FF00FF,nowPos[0],nowPos[1],nowPos[2],10.0,0,0);
HausDaten[fullid][icon_id] = bCreateMapIcon(nowPos[0],nowPos[1],_,31,0);
if(slotid==-1)_cache_haus++;
SaveHCache();
}
return 1;
}
Ich habe jedoch noch eine andere Frage:
Wenn ich mit sscanf und ohne else if Schleifen und am Ende mit einer else Schleife arbeite, kommt bei jedem Commands den ich eingebe die sscanf-Zeile. Wie kann ich da sumgehen, damit ich die else-if Schleifen und logischerweise auch das else nicht benutzen muss ?
MfG dUDA