IsPlayerInRangeOfPoint

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
  • Hallo,


    ich habe hier ein Paar Tankstellen und wollte machen das man nur da tanken kann..aber wie füge ich alle 19 da ein ? ich weiß nur wie es mit einem geht..



    if(strcmp(cmdtext, "/tanken", true) == 0)
    {
    if(!IsPlayerInRangeOfPoint(playerid,15,1930.3215,-1776.1310,13.5469))return SendClientMessage(playerid,ROT,"Hier kannst du nicht tanken!");
    if (GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,ROT,"Du bist in keinem Fahrzeug (oder kein Fahrer).");
    new car = GetPlayerVehicleID(playerid);
    if (TanktGerade[car]) return SendClientMessage(playerid,ROT,"Du tankst schon!");
    else if (Motor[car] == true) return SendClientMessage(playerid,ROT,"Du musst vor dem Tanken den Motor ausschalten.");
    new ZuTanken = 100-Tank[car];
    new preis = ZuTanken * BENZINPREIS;
    if (GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, -preis);
    SendClientMessage(playerid,ROT, "Tanken wird gestartet.");
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,0);
    TanktGerade[car] = true;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
    return 1;
    }


    Wie bekomme ich das hin das da mehre IsPlayerInRangeOfPoint sind ? also das dann in game die Meldung kommt "Du bist an keiner Tankestelle!"


    Hier mal die Coords:



    1930.3215,-1776.1310,13.5469 // Alhambra Petrol Station
    997.5215,-921.0881,42.1797 // Burger Shot North Petrol Station
    -79.5565,-1169.7639,2.1629 // RS Haul Petrol Station
    660.7679,-573.5139,16.3359 // Dillimore Petrol Station
    1382.7303,464.6540,20.2040 // Montgomery Petrol Station
    -2232.0854,-2557.9436,31.9219 // Angel Pine Petrol Station
    -1623.9540,-2693.8535,48.7427 // Whetstone Petrol Station
    -2032.1000,161.4818,29.0461 // Doherty Petrol Station
    -1675.8939,431.8836,7.1797 // Easter Basin Petrol Station
    -2418.7725,970.0265,45.2969 // Juniper Hill Petrol Station
    -1465.5171,1872.7550,32.6328 // Tierra Robada Petrol Station
    -1266.0439,2715.7612,50.2663 // El Quebrados Petrol Station
    637.8962,1684.6371,6.9922 // Bone Country Petrol Station
    60.6089,1225.8971,18.8654 // Fort Carson Petrol Station
    2117.4829,898.0604,11.1797 // Come a lot Petrol Station
    2637.2520,1128.6094,11.1797 // xxx Petrol Station
    1600.0146,2220.7227,11.0625 // Redsands West Petrol Station
    2189.4131,2469.6494,11.2422 // Emerald Petrol Station
    2150.9675,2735.3318,11.1763 // Spinybed Petrol Station

  • du könntest sie mit #define definieren oder einfach hinter den coordinaten ein || für oder machen. Das ganze sieht dann ungefähr so aus:
    if(!IsPlayerInRangeOfPoint(playerid,15,X,Y,Z || 15,X,Y,Z ))return SendClientMessage(playerid,ROT,"Hier kannst du nicht tanken!");
    das geht dann so weiter

  • Man könnte das doch auch so machen, oder irre ich mich da?

    enum tank
    {
    1930.3215,-1776.1310,13.5469 // Alhambra Petrol Station
    997.5215,-921.0881,42.1797 // Burger Shot North Petrol Station
    -79.5565,-1169.7639,2.1629 // RS Haul Petrol Station
    660.7679,-573.5139,16.3359 // Dillimore Petrol Station
    1382.7303,464.6540,20.2040 // Montgomery Petrol Station
    -2232.0854,-2557.9436,31.9219 // Angel Pine Petrol Station
    -1623.9540,-2693.8535,48.7427 // Whetstone Petrol Station
    -2032.1000,161.4818,29.0461 // Doherty Petrol Station
    -1675.8939,431.8836,7.1797 // Easter Basin Petrol Station
    -2418.7725,970.0265,45.2969 // Juniper Hill Petrol Station
    -1465.5171,1872.7550,32.6328 // Tierra Robada Petrol Station
    -1266.0439,2715.7612,50.2663 // El Quebrados Petrol Station
    637.8962,1684.6371,6.9922 // Bone Country Petrol Station
    60.6089,1225.8971,18.8654 // Fort Carson Petrol Station
    2117.4829,898.0604,11.1797 // Come a lot Petrol Station
    2637.2520,1128.6094,11.1797 // xxx Petrol Station
    1600.0146,2220.7227,11.0625 // Redsands West Petrol Station
    2189.4131,2469.6494,11.2422 // Emerald Petrol Station
    2150.9675,2735.3318,11.1763 // Spinybed Petrol Station


    };


    Dann bei dem Befehl die Abfrage:
    if(IsPlayerInRangeOfPoint(playerid,3,tank))

    Liebe Grüße


    Marcel

  • Falsch:


    if(!IsPlayerInRangeOfPoint(playerid,15,X,Y,Z || 15,X,Y,Z ))return SendClientMessage(playerid,ROT,"Hier kannst du nicht tanken!");


    Richtig:
    if(!IsPlayerInRangeOfPoint(playerid,r,x,y,z) || !IsPlayerInRangeOfPoint(playerid, r,x,y,z))

    Wer ist der Mensch hinter der Uniform? Ist euch das bekannt?
    Es ist der selbe der noch eben in Zivil neben euch stand.
    Warum wird er gehasst und so selten respektiert?
    Warum ist er derjenige der seinen Hals für euch riskiert?
    Trägt der Bulle eine Weste, das hat er früher nie gemacht,
    die Zeiten haben sich geändert und jeder Dienst ist ein Kampf!
    Warum gibt’s das SEK und warum sind sie so brutal?
    Und wieso hat wieder einer mit seinem Leben bezahlt?

  • Wo muss man das einfügen ? ^^

  • Unter "new's"

    Mit "new" mein ich z.B new bsnenter;


    MfG

  • Wenn ich das einfüge kommt das dabei raus:


    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(127) : error 001: expected token: "-identifier-", but found "-rational value-"
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(146) : error 010: invalid function or declaration
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1155) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1155) : warning 202: number of arguments does not match definition
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1155) : warning 202: number of arguments does not match definition
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1155) : error 001: expected token: ")", but found "return"

  • new Float:Tankstelle[MAX_TANKSTELLEN][3] =
    {
    {1930.3215,-1776.1310,13.5469}, // Tanke1Stand1
    {997.5215,-921.0881,42.1797}, // Tanke1Stand2
    {-79.5565,-1169.7639,2.1629}, // Tanke2Stelle1
    {660.7679,-573.5139,16.3359}, // Tanke2Stelle2
    {1382.7303,464.6540,20.2040}, // Tanke3Stelle2
    {-2232.0854,-2557.9436,31.9219}, // Tanke3Stelle1
    {-1623.9540,-2693.8535,48.7427}, // Tanke4Stelle1
    {-2032.1000,161.4818,29.0461},// Tanke4Stelle2
    {-1675.8939,431.8836,7.1797},
    {-2418.7725,970.0265,45.2969},
    {-1465.5171,1872.7550,32.6328},
    {-1266.0439,2715.7612,50.2663},
    {637.8962,1684.6371,6.9922},
    {60.6089,1225.8971,18.8654},
    {2117.4829,898.0604,11.1797},
    {2637.2520,1128.6094,11.1797},
    {1600.0146,2220.7227,11.0625},
    {2189.4131,2469.6494,11.2422},
    {2150.9675,2735.3318,11.1763}, // hier ist Error..
    };


    Ich seh da irgendwie nicht durch ...


    zumindest bei dem Befehl:



    {
    for(new id; id < MAX_TANKSTELLEN; id++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, Tankstelle[id][0], Tankstelle[id][1], Tankstelle[id][2]))
    {
    }
    }

  • new Float:Tankstelle[MAX_TANKSTELLEN][3] =
    {
    {1930.3215,-1776.1310,13.5469}, // Tanke1Stand1
    {997.5215,-921.0881,42.1797}, // Tanke1Stand2
    {-79.5565,-1169.7639,2.1629}, // Tanke2Stelle1
    {660.7679,-573.5139,16.3359}, // Tanke2Stelle2
    {1382.7303,464.6540,20.2040}, // Tanke3Stelle2
    {-2232.0854,-2557.9436,31.9219}, // Tanke3Stelle1
    {-1623.9540,-2693.8535,48.7427}, // Tanke4Stelle1
    {-2032.1000,161.4818,29.0461},// Tanke4Stelle2
    {-1675.8939,431.8836,7.1797},
    {-2418.7725,970.0265,45.2969},
    {-1465.5171,1872.7550,32.6328},
    {-1266.0439,2715.7612,50.2663},
    {637.8962,1684.6371,6.9922},
    {60.6089,1225.8971,18.8654},
    {2117.4829,898.0604,11.1797},
    {2637.2520,1128.6094,11.1797},
    {1600.0146,2220.7227,11.0625},
    {2189.4131,2469.6494,11.2422},
    {2150.9675,2735.3318,11.1763}
    };

  • Ok, Keine Errors, Keine Warnings..aber in Game tut sich nix man kann überral tanken :(


    Habs so eingefügt:


    if(strcmp(cmdtext, "/tanken", true) == 0) // Tank System
    {
    for(new id; id < MAX_TANKSTELLEN; id++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, Tankstelle[id][0], Tankstelle[id][1], Tankstelle[id][2])) return SendClientMessage(playerid,ROT,"Du bist nicht an einer Tankstelle!");
    {
    }
    }
    if (GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,ROT,"Du bist in keinem Fahrzeug (oder kein Fahrer).");
    new car = GetPlayerVehicleID(playerid);
    if (TanktGerade[car]) return SendClientMessage(playerid,ROT,"Du tankst schon!");
    else if (Motor[car] == true) return SendClientMessage(playerid,ROT,"Du musst vor dem Tanken den Motor ausschalten.");
    new ZuTanken = 100-Tank[car];
    new preis = ZuTanken * BENZINPREIS;
    if (GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, -preis);
    SendClientMessage(playerid,ROT, "Tanken wird gestartet.");
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,0);
    TanktGerade[car] = true;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
    return 1;
    }


    Könnte mir das einer erklären oder per TV machen ? :D Danke im Vorraus ^^

  • if(IsPlayerInRangeOfPoint(playerid, 4.0, Tankstelle[id][0], Tankstelle[id][1], Tankstelle[id][2])) return SendClientMessage(playerid,ROT,"Du bist nicht an einer Tankstelle!");
    {


    Hö?
    Du kannst doch nicht sagen, wenn der Spieler an einer Tankstelle ist, das er dann eine SCM bekommt. :p
    Verneine die Abfrage, dann müsste es gehen ;)

  • Oder einfach

    if(strcmp(cmdtext, "/tanken", true) == 0) // Tank System
    {
    for(new id; id < MAX_TANKSTELLEN; id++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, Tankstelle[id][0], Tankstelle[id][1], Tankstelle[id][2])) return SendClientMessage(playerid,ROT,"Du bist nicht an einer Tankstelle!");
    {
    if (GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid,ROT,"Du bist in keinem Fahrzeug (oder kein Fahrer).");
    new car = GetPlayerVehicleID(playerid);
    if (TanktGerade[car]) return SendClientMessage(playerid,ROT,"Du tankst schon!");
    else if (Motor[car] == true) return SendClientMessage(playerid,ROT,"Du musst vor dem Tanken den Motor ausschalten.");
    new ZuTanken = 100-Tank[car];
    new preis = ZuTanken * BENZINPREIS;
    if (GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid, -preis);
    SendClientMessage(playerid,ROT, "Tanken wird gestartet.");
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,0);
    TanktGerade[car] = true;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
    }
    }
    return 1;
    }

  • @
    iMax. so hatte ich es doch ^^



    Jetzt steht da immer ich bin an keiner Tankstelle..wenn ich mich nicht irre muss hier doch bei 19 Tankstellen dann 18 rein oder ?? also ansttt die 3..


    new Float:Tankstelle[MAX_TANKSTELLEN][3] =




    Und bei


    if(!IsPlayerInRangeOfPoint(playerid,15.0, Tankstelle[id][0], Tankstelle[id][1], Tankstelle[id][2]))



    muss ich das doch auch bis 18 fortführen oder ??


    sorry :D aber ich hab noch nie mit Enum gearbeitet ^^