Hallo Community
Ich habe momentan ein Problem mit meinen NoDm Zonen
sie werden so in einem Enum erstellt
#define NoDMCount 2
new NoDMZone[NoDMCount];
enum NoDMEnum
{
Float:nOLX, //OBEN LINKS
Float:nOLY, // OBEN LINKS
Float:nURX, //UNTEN RECHTS
Float:nURY, //UNTEN RECHTS
ndmName[128]
};
new NoDMZones[NoDMCount][NoDMEnum] = {
{1163.8538,-875.4206,1235.9896,-925.1810, "Burger Shot North"}, // BSN
{1131.4553,-1286.2200,1216.1123,-1390.4766,"Krankenhaus Los Santos"} // KHLS
};
OLX ist x Koordinate von oben links
OLY ist y von oben rechts
URX ist x von unten rechts
URY ist die y Koordinate von unten rechts
So nun werden sie bei ongamemodeinit erstellt
new nNoDmZone = 0;
for(; nNoDmZone < sizeof NoDMZones; nNoDmZone++) {
NoDMZone[nNoDmZone] = GangZoneCreate(NoDMZones[nNoDmZone][nOLX],NoDMZones[nNoDmZone][nOLY],NoDMZones[nNoDmZone][nURX],NoDMZones[nNoDmZone][nURY]);
}
und bei connect angezeigt
for(; nNoDmZone < sizeof NoDMZones; nNoDmZone++) {
GangZoneShowForPlayer(playerid, NoDMZone[nNoDmZone], 0xFEFEFEAA);
}
abfrage im Sekunden takt:
if(IstInNoDMZone(p) == 1) {
TextDrawShowForPlayer(p, NoDMText);
}
else {
TextDrawHideForPlayer(p, NoDMText);
}
und hier die Abfrage
stock IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
{
new Float:pX,Float:pY,Float:pZ;
if(!IsPlayerInAnyVehicle(playerid)) GetPlayerPos(playerid,pX,pY,pZ);
else GetVehiclePos(GetPlayerVehicleID(playerid),pX,pY,pZ);
if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return true;
else return false;
}
stock IstInNoDMZone(playerid)
{
new nNoDmZone = 0;
for(; nNoDmZone < sizeof NoDMZones; nNoDmZone++) {
if(IsPlayerInArea(playerid,NoDMZones[nNoDmZone][nOLX],NoDMZones[nNoDmZone][nOLY],NoDMZones[nNoDmZone][nURX],NoDMZones[nNoDmZone][nURY])) {
printf("Area %s", NoDMZones[nNoDmZone][ndmName]);
return 1;
}
}
return -1;
}
Wo liegt da bitte der Fehler? Aus meiner Perspektive hab ich alles richtig gemacht..