Hey, habe hier einen Bug.
Habe ein Gangzonen System.
Die Sache ist: Wenn ich in einer Zone bin, und 30Meter und näher von dem Checkpoint in der Zone entfernt bin, soll er angezeigt werden.
Doch wenn ich in eine Zone gehe, wird nur Debug 1 und 2 ausgeführt, als bei ROT, "Debug"); das Goldene ist erstmal nicht wichtig.
NUR bei der Ersten Zone die bei "Gebiete" eingetragen ist, werden alle Debug's ausgeführt, bei allen anderen, wenn ich da in die Zone gehe, passiert nichts.
ABER sie werden erstellt, also ich sehe sie auf der Map.
enum gebiet//Dies leitet eine genauere Beschreibung für einen Array ein.
{
gOwner,//Hier wird die Fraktionsid gespeichert, der das Gebiet im moment gehört
Float:gMinX,//MinX - Koordinate für die Gangzone
Float:gMinY,//MinY
Float:gMaxX,//MaxX
Float:gMaxY,//MaxY
Float:gCheckX,//CheckX
Float:gCheckY,//CheckY
Float:gCheckZ,//CheckZ
gOn,//Ob der Gangfight läuft
gStatus,//Wieviel Prozent erobert
gStand1,//Der Score für das Owner Team
gStand2,//Score für die Angreifer
gAngreifer//Hier wird die Fraktionsid gespeichert
};
new Gebiete[][gebiet] = {//Erstellt eine Variable mit der Anzahl der Gebiete in der ersten [] angegeben und in der zweiten wird das Enum von oben eingefügt. (Dient zur genaueren Beschreibnung)
{5,35.15625,2421.875,458.984375,2609.375,413.8684,2537.2888,19.1484,0,0,0,0,0},//Hier werden dann die Zonen erstellt, eigentlich alles auf 0 lassen, außer die Koordinaten...
{5,93.75,1330.078125,289.0625,1490.234375,221.0299,1421.0905,10.5859,0,0,0,0,0},//Zone
{5,-58.59375,1320.3125,52.734375,1421.875,-10.8091,1393.6879,9.1719,0,0,0,0,0},//Caravans
{5,-412.109375,1500.0,-257.8125,1626.953125,-298.5329,1538.5736,75.5625,0,0,0,0,0},//Big Ear
{5,-732.421875,914.0625,-650.390625,980.46875,-688.6170,938.4021,13.6328,0,0,0,0,0},//GRP Haus
{5,-482.421875,2179.6875,-341.796875,2279.296875,-427.8325,2232.1704,42.4297,0,0,0,0,0},//Kleines Dorf
{5,-621.09375,2541.015625,-509.765625,2644.53125,-551.7822,2593.9885,53.9348,0,0,0,0,0},//Fire Department
{5,-810.546875,2740.234375,-730.46875,2783.203125,-778.9518,2745.5300,45.6877,0,0,0,0,0},//Motel
{5,1025.390625,2894.53125,1085.9375,2992.1875,1048.8763,2908.3472,47.8231,0,0,0,0,0},//Oil Rafinery
{5,-914.0625,1400.390625,-718.75,1623.046875,-731.2035,1546.0305,38.9973,0,0,0,0,0},//Kleine Stadt
{5,-56.6406250000005,2333.984375,0.0,2384.765625,-24.1189,2346.4600,24.1347,0,0,0,0,0},//3 Häuser Stadt
{5,56.640625,1769.53125,369.140625,2115.234375,247.4024,1858.8533,14.0840,0,0,0,0,0}//Area 51
/*{0,,,0,0,0,0,0},
{0,,,0,0,0,0,0}*/
};
stock IsPlayerInGebietT(playerid)//Funktion bennen mit den jeweiligen Variablen oder auch Parameter genannt.
{
SendClientMessageToAll(ROT, "Debug 1");
for(new i; i<sizeof(Gebiete); i++)//Damit wieder nach allen Zonen geschaut wird.
{
SendClientMessageToAll(ROT, "Debug 2");
new Float:GetX,Float:GetY,Float:GetZ;//Neue Float Variablen erstellen, damit wir dort die Positionen des Spielers speichern können
GetPlayerPos(playerid,GetX,GetY,GetZ);//Die Position des Spielers in den oben genannten Variablen speichern.
//if(IsPlayerInRangeOfPoint(playerid, 5.0, Gebiete[i][gCheckX], Gebiete[i][gCheckY], Gebiete[i][gCheckZ]))
if(Gebiete[i][gMinX] < GetX && Gebiete[i][gMaxX] > GetX && Gebiete[i][gMinY] < GetY && Gebiete[i][gMaxY] > GetY)//Hier wird abgefragt ob die Spielerkooridnanten in dem Bereich der Gangzone sind.
{
SendClientMessageToAll(ROT, "Debug 3");
return i;//Hier wird die Gebietsid returned
}
return -1;//Wenn der nirgendwo drin ist wird halt -1 returned damit wir einen unterschied haben
}
return -1;//Siehe oben
}
forward IsPlayerInNaehe(playerid);//Funktion bennen mit den jeweiligen Variablen oder auch Parameter genannt.
public IsPlayerInNaehe(playerid)//Funktion bennen mit den jeweiligen Variablen oder auch Parameter genannt.
{
SendClientMessageToAll(COLOR_GOLD, "Debug 1");
for(new i;i<sizeof(Gebiete);i++)//Damit wieder nach allen Zonen geschaut wird.
{
if(IsPlayerInGebietT(playerid) > -1)
{
SendClientMessageToAll(COLOR_GOLD, "Debug 2");
new Float:GetX,Float:GetY,Float:GetZ;//Neue Float Variablen erstellen, damit wir dort die Positionen des Spielers speichern können
GetPlayerPos(playerid,GetX,GetY,GetZ);//Die Position des Spielers in den oben genannten Variablen speichern.
SendClientMessageToAll(COLOR_GOLD, "Debug 3");
if(IsPlayerInRangeOfPoint(playerid, 30.0, Gebiete[i][gCheckX], Gebiete[i][gCheckY], Gebiete[i][gCheckZ]))
//if(Gebiete[i][gMinX] < GetX && Gebiete[i][gMaxX] > GetX && Gebiete[i][gMinY] < GetY && Gebiete[i][gMaxY] > GetY)//Hier wird abgefragt ob die Spielerkooridnanten in dem Bereich der Gangzone sind.
{
SendClientMessageToAll(COLOR_GOLD, "Debug 4");
SetPlayerCheckpoint(playerid, Gebiete[i][gCheckX], Gebiete[i][gCheckY], Gebiete[i][gCheckZ], 2.0);
}
else
{
SendClientMessageToAll(COLOR_GOLD, "Debug 5");
/*if(IsPlayerInGebiet(playerid))
{
if(!IsPlayerInRangeOfPoint(playerid, 30.0, Gebiete[i][gCheckX], Gebiete[i][gCheckY], Gebiete[i][gCheckZ]))
{*/
DisablePlayerCheckpoint(playerid);
//}
//}
}
}
return -1;//Wenn der nirgendwo drin ist wird halt -1 returned damit wir einen unterschied haben
}
return -1;//Siehe oben
}
Hoffe ihr könnt mir dabei helfen.
MfG
Me