IsPlayerInArea Problem

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,


    ich arbeite gerade am Hochseefischer System und hab nur ein Problem, nämlich möchte ich, dass der Spieler aus der Area entfernen muss um zu Fischen. Aber
    es klappt irgendwie nicht. Ich kann immer noch in der "verbotenen" Area fischen :/



    if(strcmp(cmd, "/netz", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    if(PlayerInfo[playerid][pJob] == 30)
    {
    if(fischfuhr[playerid] == 1)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 453)
    {
    if(PlayerFisch[playerid] <= 240)
    {
    if(PlayerNetz[playerid] < 5)
    {
    if(IsPlayerInArea(playerid,3523.2300,-3714.8372,-3410.9109,3412.9407))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich nicht auf dem Meer.");
    return 1;
    }
    else if(!IsPlayerInArea(playerid,3523.2300,-3714.8372,-3410.9109,3412.9407))
    {
    new Float:x,Float:y,Float:z,str[100];
    if(PlayerNetz[playerid] == 0)
    {
    FreezePlayer(playerid);
    SetTimerEx("Fischer",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx1[playerid] = x;
    fy1[playerid] = y;
    fz1[playerid] = z;
    format(str,sizeof(str),"Du lässt das erste Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 1;
    }
    else if(PlayerNetz[playerid] == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,500.0,fx1[playerid],fy1[playerid],fz1[playerid]))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich noch zu nah am ersten Netz. (min. 500m)");
    return 1;
    }
    FreezePlayer(playerid);
    SetTimerEx("Fischer",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx2[playerid] = x;
    fy2[playerid] = y;
    fz2[playerid] = z;
    format(str,sizeof(str),"Du lässt das zweite Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 2;
    }
    else if(PlayerNetz[playerid] == 2)
    {
    if(IsPlayerInRangeOfPoint(playerid,500.0,fx2[playerid],fy2[playerid],fz2[playerid]))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich noch zu nah am zweiten Netz. (min. 500m)");
    return 1;
    }
    FreezePlayer(playerid);
    SetTimerEx("Fischer",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx3[playerid] = x;
    fy3[playerid] = y;
    fz3[playerid] = z;
    format(str,sizeof(str),"Du lässt das dritte Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 3;
    }
    else if(PlayerNetz[playerid] == 3)
    {
    if(IsPlayerInRangeOfPoint(playerid,500.0,fx3[playerid],fy3[playerid],fz3[playerid]))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich noch zu nah am dritten Netz. (min. 500m)");
    return 1;
    }
    FreezePlayer(playerid);
    SetTimerEx("Fischer",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx4[playerid] = x;
    fy4[playerid] = y;
    fz4[playerid] = z;
    format(str,sizeof(str),"Du lässt das vierte Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 4;
    }
    else if(PlayerNetz[playerid] == 4)
    {
    if(IsPlayerInRangeOfPoint(playerid,500.0,fx4[playerid],fy4[playerid],fz4[playerid]))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich noch zu nah am vierten Netz. (min. 500m)");
    return 1;
    }
    FreezePlayer(playerid);
    SetTimerEx("Fischer3",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx5[playerid] = x;
    fy5[playerid] = y;
    fz5[playerid] = z;
    format(str,sizeof(str),"Du lässt das fünfte Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 5;
    }
    }
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Du hast bereits alle Netze ins Wasser gelassen. Sammel sie nun ein.");
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Die Kapazität deines Bootes wurde erreicht. Bringe die Fische zum Hafen.");
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich nicht in einem Fischerboot. Die Base findest du unter /base.");
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Du bist nicht als Hochseefischer im Dienst.");
    }
    else SendClientMessage(playerid,COLOR_RED,"Du besitzt nicht die benötigten Rechte dafür!");
    return 1;
    }



    Hoffe auf Hilfe :)


    MfG

  • Versuch das mal so.
    Ich habe jetzt bei jeder IsPlayerInArea und/oder IsPlayerInRangeOfPoint Abfrage das "!" hinzugefügt bzw. entfernt.


    Spoiler anzeigen
    if(strcmp(cmd, "/netz", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    if(PlayerInfo[playerid][pJob] == 30)
    {
    if(fischfuhr[playerid] == 1)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 453)
    {
    if(PlayerFisch[playerid] <= 240)
    {
    if(PlayerNetz[playerid] < 5)
    {
    if(!IsPlayerInArea(playerid,3523.2300,-3714.8372,-3410.9109,3412.9407))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich nicht auf dem Meer.");
    return 1;
    }
    else if(IsPlayerInArea(playerid,3523.2300,-3714.8372,-3410.9109,3412.9407))
    {
    new Float:x,Float:y,Float:z,str[100];
    if(PlayerNetz[playerid] == 0)
    {
    FreezePlayer(playerid);
    SetTimerEx("Fischer",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx1[playerid] = x;
    fy1[playerid] = y;
    fz1[playerid] = z;
    format(str,sizeof(str),"Du lässt das erste Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 1;
    }
    else if(PlayerNetz[playerid] == 1)
    {
    if(!IsPlayerInRangeOfPoint(playerid,500.0,fx1[playerid],fy1[playerid],fz1[playerid]))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich noch zu nah am ersten Netz. (min. 500m)");
    return 1;
    }
    FreezePlayer(playerid);
    SetTimerEx("Fischer",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx2[playerid] = x;
    fy2[playerid] = y;
    fz2[playerid] = z;
    format(str,sizeof(str),"Du lässt das zweite Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 2;
    }
    else if(PlayerNetz[playerid] == 2)
    {
    if(!IsPlayerInRangeOfPoint(playerid,500.0,fx2[playerid],fy2[playerid],fz2[playerid]))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich noch zu nah am zweiten Netz. (min. 500m)");
    return 1;
    }
    FreezePlayer(playerid);
    SetTimerEx("Fischer",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx3[playerid] = x;
    fy3[playerid] = y;
    fz3[playerid] = z;
    format(str,sizeof(str),"Du lässt das dritte Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 3;
    }
    else if(PlayerNetz[playerid] == 3)
    {
    if(!IsPlayerInRangeOfPoint(playerid,500.0,fx3[playerid],fy3[playerid],fz3[playerid]))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich noch zu nah am dritten Netz. (min. 500m)");
    return 1;
    }
    FreezePlayer(playerid);
    SetTimerEx("Fischer",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx4[playerid] = x;
    fy4[playerid] = y;
    fz4[playerid] = z;
    format(str,sizeof(str),"Du lässt das vierte Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 4;
    }
    else if(PlayerNetz[playerid] == 4)
    {
    if(!IsPlayerInRangeOfPoint(playerid,500.0,fx4[playerid],fy4[playerid],fz4[playerid]))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich noch zu nah am vierten Netz. (min. 500m)");
    return 1;
    }
    FreezePlayer(playerid);
    SetTimerEx("Fischer3",15000,false,"i",playerid);
    GetPlayerPos(playerid,x,y,z);
    fx5[playerid] = x;
    fy5[playerid] = y;
    fz5[playerid] = z;
    format(str,sizeof(str),"Du lässt das fünfte Netz an folgenden Koordinaten aus: %.3f,%.3f",x,y);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    PlayerNetz[playerid] = 5;
    }
    }
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Du hast bereits alle Netze ins Wasser gelassen. Sammel sie nun ein.");
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Die Kapazität deines Bootes wurde erreicht. Bringe die Fische zum Hafen.");
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Du befindest dich nicht in einem Fischerboot. Die Base findest du unter /base.");
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Du bist nicht als Hochseefischer im Dienst.");
    }
    else SendClientMessage(playerid,COLOR_RED,"Du besitzt nicht die benötigten Rechte dafür!");
    return 1;
    }