IsPlayerInRangeOfPoint(id,eigene Koordinaten) wie?

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 Leute,
    ich habe ein Problem mit dieser Funktion. Ich will das man in einen Haus Mats/Drogen ablegen kann und auch nur in den Haus wo man sie abgelegt hat diese wieder aufnehmen kann. Ich habe bei den Befehl zum ablegen...


    GetPlayerPos(playerid, dposX, dposY, dposZ);

    ...gesetzt damit die Position genommen wird. Dann habe ich diese definiert damit das auch abgespeichert werden kann mit...

    new Float:dposX,Float:dposY,Float:dposZ;
    PlayerInfo[playerid][pDx] = dposX;
    PlayerInfo[playerid][pDy] = dposY;
    PlayerInfo[playerid][pDz] = dposZ;

    ...und dann bei dem Befehl zum aufnehmen gesetzt das der Spieler an diesen Punkt sein muss

    if(IsPlayerInRangeOfPoint(playerid,10, PlayerInfo[playerid][pDx],PlayerInfo[playerid][pDy],PlayerInfo[playerid][pDz]))
    {
    (Verschieden Funktionen die ohne IsPlayerInRangeOfPoint funktionierten nur das man seine Drogen/Mats in jeden Haus abholen konnte)
    }
    else
    {

    SendClientMessage(playerid,0xFF0000FF,"Hier hast du nichts versteckt");
    }
    Das ganze habe ich von der Funktion abgeguckt bei der ein Spieler stirbt und wiederbelebt werden kann per Befehl.
    Wenn ich jetzt aber die Drogen/Mats aufnehmen will kommt Ingame "Hier hast du nichts versteckt".


    Ich bin schon seid Ewigkeiten dabei und bekomme es einfach nicht hin. Kann mir jemadn sagen wo der Fehler liegt?


    Damit man sich das ganze genau angucken kann hier nochmal der ganze Befehl:

    if(strcmp(cmdtext, "/dverstecken10" , true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new location = PlayerInfo[playerid][pLocal];
    for(new i = 0; i < sizeof(HouseInfo); i++)
    {
    if(location < 255)
    {
    if(PlayerInfo[playerid][pDrugs] > 9)
    {
    PlayerInfo[playerid][pDrugs] -= 10;
    PlayerInfo[playerid][Versteck] += 10;
    SendClientMessage(playerid,0xFF0000FF,"10 Gramm versteckt");
    GetPlayerPos(playerid, dposX, dposY, dposZ);
    }
    }
    }
    }
    }
    if(strcmp(cmdtext, "/dnehmen10" , true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new location = PlayerInfo[playerid][pLocal];
    if(IsPlayerInRangeOfPoint(playerid,10, PlayerInfo[playerid][pDx],PlayerInfo[playerid][pDy],PlayerInfo[playerid][pDz]))
    {
    if(location < 255)
    {
    if(PlayerInfo[playerid][Versteck] > 9)
    {
    PlayerInfo[playerid][pDrugs] += 10;
    PlayerInfo[playerid][Versteck] -= 10;
    SendClientMessage(playerid,0xFF0000FF,"10 Gramm genommen");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Hier hast du nichts versteckt");
    }
    }
    }

    2 Mal editiert, zuletzt von Carlson.Bared () aus folgendem Grund: Erweiterung

  • GetPlayerPos(playerid, dposX, dposY, dposZ);
    zu
    GetPlayerPos(playerid, PlayerInfo[playerid][pDx], PlayerInfo[playerid][pDy], PlayerInfo[playerid][pDz]);

  • So habe ich das jetzt gemacht und ich hoffe es wird klappenn. Dir danke schonmal für dien Hilfe.

    new Float:dposX,Float:dposY,Float:dposZ;
    PlayerInfo[playerid][pDx] = dposX;
    PlayerInfo[playerid][pDy] = dposY;
    PlayerInfo[playerid][pDz] = dposZ;
    if(strcmp(cmdtext, "/dverstecken10" , true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new location = PlayerInfo[playerid][pLocal];
    for(new i = 0; i < sizeof(HouseInfo); i++)
    {
    if(location < 255)
    {
    if(PlayerInfo[playerid][pDrugs] > 9)
    {
    PlayerInfo[playerid][pDrugs] -= 10;
    PlayerInfo[playerid][Versteck] += 10;
    SendClientMessage(playerid,0xFF0000FF,"1000 Gramm versteckt");
    GetPlayerPos(playerid, PlayerInfo[playerid][pDx], PlayerInfo[playerid][pDy], PlayerInfo[playerid][pDz]);
    }
    }
    }
    }
    }
    if(strcmp(cmdtext, "/dnehmen10" , true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new location = PlayerInfo[playerid][pLocal];
    if(IsPlayerInRangeOfPoint(playerid,10, PlayerInfo[playerid][pDx],PlayerInfo[playerid][pDy],PlayerInfo[playerid][pDz]))
    {
    if(location < 255)
    {
    if(PlayerInfo[playerid][Versteck] > 9)
    {
    PlayerInfo[playerid][pDrugs] += 10;
    PlayerInfo[playerid][Versteck] -= 10;
    SendClientMessage(playerid,0xFF0000FF,"10 Gramm genommen");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Hier hast du nichts versteckt");
    }
    }
    }

  • Wenn du new Float:dposX,Float:dposY,Float:dposZ;PlayerInfo[playerid][pDx] = dposX;
    PlayerInfo[playerid][pDy] = dposY;
    PlayerInfo[playerid][pDz] = dposZ; machst dann würde es ja auf keinen Fall klappen



    Dann wenn du die PlayerPos nicht berechnest es die enum auf

    Code
    0.000000, -0.000000 , 0.000000

    füllen würde ,



    Was beteudet das das nicht die PP ist.



    Also am besten:



    new Float:dposX,Float:dposY,Float:dposZ;GetPlayerPos( playerid , dposX , dposY , dposZ ) ;PlayerInfo[playerid][pDx] = dposX;
    PlayerInfo[playerid][pDy] = dposY;
    PlayerInfo[playerid][pDz] = dposZ;




    So wärde es richtig aber auch nicht die beste variante.



    Mach doch einfach wenn du abfragen willst ob er an einer bestimmnten position ist ein:



    if ( IsPlayerInRangeOfPoint ( playerid , Umkreis , POSX , POSY , POSX )) {}


    Um diese Position von ingame rauszulesen , gehe in deinen GTA ordner ...
    Klicke auf "samp_debug" und klicke auf iwa mit launch debug dann startet der debug modus ,



    Du kannst folgende commands nutzen , /v /vsel /save Kommentar(nicht notwenig würde ich aber machen.



    Dann klickst auf "Computer/Arbeitsplatzt" (Win xp + weitere)



    Dann auf "Dukomente"



    Dann auf "GTA SAN ANDREAS USER FILES"



    Dann auf "savedposition"



    Anschliesen kopierst du dir die "POSX", "POSY" , "POSZ"



    Ich hoffe ich konnte helfen



    MFG



    PAWN

  • Danke das du helfen wolltest aber ich glaube du hast nicht ganz verstanden. Ich weiß durchaus wie man /save Savepositions und x,y,z rausholt und dann einfügt. Es geht hierbei dadrum das mit dem ersten der Befehle hier eine Position gespeichert wird und dann muss man wenn man den zweiten Befehl macht im Umkreis sein, damit man Drogen in seinen Haus lagern kann und auch nur wieder in seinen Haus abholen kann. Ich kann unmöglich für jeden Spieler sien Haus definieren und einen Savepoint ins Script setzen sie sollen es selber tun können. Also nochmal kurz damit auch du es verstehst. Ingame soll eine Position gespeichert werden für den einzelnden Spieler und später soll sie abgefragt werden. Und das was du vörschlagst siehst du wenn du mal oben guckst hatte ich davor und damit hat es auch nicht geklappt. Trotzdem danke das du meni Thread überflogen hast und versucht hast zu helfen.

  • Danke das du helfen wolltest aber ich glaube du hast nicht ganz verstanden. Ich weiß durchaus wie man /save Savepositions und x,y,z rausholt und dann einfügt. Es geht hierbei dadrum das mit dem ersten der Befehle hier eine Position gespeichert wird und dann muss man wenn man den zweiten Befehl macht im Umkreis sein, damit man Drogen in seinen Haus lagern kann und auch nur wieder in seinen Haus abholen kann. Ich kann unmöglich für jeden Spieler sien Haus definieren und einen Savepoint ins Script setzen sie sollen es selber tun können. Also nochmal kurz damit auch du es verstehst. Ingame soll eine Position gespeichert werden für den einzelnden Spieler und später soll sie abgefragt werden. Und das was du vörschlagst siehst du wenn du mal oben guckst hatte ich davor und damit hat es auch nicht geklappt. Trotzdem danke das du meni Thread überflogen hast und versucht hast zu helfen.


    öhm du möchtest du du zum beispiel /pos eingibtst und dann wenn man /poss eingibt muss man in einem z.B 5 Radius sein wo man /pos eingegeben hat??


    Das ist jetzzt verständflich für mich .


    Mach es so:


    new Float:x,Float:y,Float:z,POSX[MAX_PLAYERS],POSY[MAX_PLAYERS],POSZ[MAX_PLAYERS];


    if(strcmp(cmdtext , "/pos", true ) == 0)
    {
    GetPlayerPos(x,y,z);
    POSX[playerid] = x;
    POSY[playerid] = y;
    POSZ[playerid] = z;
    }


    if(strcmp(cmdtext, "/poss", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,umkreis,POSX[playerid],POSY[playerid],POSZ[playerid]))
    {
    //Inhalt
    }
    else {
    //Inhalt
    }
    }


    So sollte es gehen


    MFG


    PAWN

  • Danke dir, hoffentlich wird das jetzt klappen.

    new Float:x,Float:y,Float:z,DPOSX[MAX_PLAYERS],DPOSY[MAX_PLAYERS],DPOSZ[MAX_PLAYERS];
    PlayerInfo[playerid][pDx] = DPOSX;
    PlayerInfo[playerid][pDy] = DPOSY;
    PlayerInfo[playerid][pDz] = DPOSZ;
    DPOSX[playerid] = x;
    DPOSY[playerid] = y;
    DPOSZ[playerid] = z;
    if(strcmp(cmdtext, "/dverstecken10" , true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new i = 0; i < sizeof(HouseInfo); i++)
    {
    new location = PlayerInfo[playerid][pLocal];
    if(location < 255)
    {
    if(PlayerInfo[playerid][pDrugs] > 9)
    {
    PlayerInfo[playerid][pDrugs] -= 10;
    PlayerInfo[playerid][Versteck] += 10;
    SendClientMessage(playerid,0xFF0000FF,"10 Gramm versteckt");
    GetPlayerPos(x,y,z);
    POSX[playerid] = x;
    POSY[playerid] = y;
    POSZ[playerid] = z;
    }
    }
    }
    }
    }
    if(strcmp(cmdtext, "/dnehmen10" , true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new location = PlayerInfo[playerid][pLocal];
    if(IsPlayerInRangeOfPoint(playerid,10,POSX[playerid],POSY[playerid],POSZ[playerid]))
    {
    if(location < 255)
    {
    if(PlayerInfo[playerid][Versteck] > 9)
    {
    PlayerInfo[playerid][pDrugs] += 10;
    PlayerInfo[playerid][Versteck] -= 10;
    SendClientMessage(playerid,0xFF0000FF,"10 Gramm genommen");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Hier hast du nichts versteckt");
    }
    }
    }



  • Also mit dem Drugs verstekcen im haus ka da ich noch kein haus system gemacht habe aber das mit den positionen hast du richtig eingefügt

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Das mit dem Haus ist nur das mit location damit man diese Befehle nur in einen Haus machen kann wie bei /heal mehr ist das nicht.
    Wäre es nicht so wichtig hätte ich das sein gelassen aber nur so kann man sein eigenes Ganghaus für seine eigenene Gang aufbaun auf unseren Server.
    Hänge da schon locker 6 Stunden dran und hab hier und hab da rumprobiert. Ich find das echt klasse das du und andere hier mir helfen denn es ist wirklich sehr wichtig für uns.

  • Das mit dem Haus ist nur das mit location damit man diese Befehle nur in einen Haus machen kann wie bei /heal mehr ist das nicht.
    Wäre es nicht so wichtig hätte ich das sein gelassen aber nur so kann man sein eigenes Ganghaus für seine eigenene Gang aufbaun auf unseren Server.
    Hänge da schon locker 6 Stunden dran und hab hier und hab da rumprobiert. Ich find das echt klasse das du und andere hier mir helfen denn es ist wirklich sehr wichtig für uns.



    Geht es nun ?


  • new Float:dx,Float:dy,Float:dz,DPOSX[MAX_PLAYERS],DPOSY[MAX_PLAYERS],DPOSZ[MAX_PLAYERS];
    PlayerInfo[playerid][pDx] = DPOSX;
    PlayerInfo[playerid][pDy] = DPOSY;
    PlayerInfo[playerid][pDz] = DPOSZ;
    DPOSX[playerid] = dx;
    DPOSY[playerid] = dy;
    DPOSZ[playerid] = dz;
    if(strcmp(cmdtext, "/dverstecken10" , true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new i = 0; i < sizeof(HouseInfo); i++)
    {
    new location = PlayerInfo[playerid][pLocal];
    if(location < 255)
    {
    if(PlayerInfo[playerid][pDrugs] > 9)
    {
    PlayerInfo[playerid][pDrugs] -= 10;
    PlayerInfo[playerid][Versteck] += 10;
    SendClientMessage(playerid,0xFF0000FF,"10 Gramm versteckt");
    SendClientMessage(playerid,0xFF0000FF,"10 Gramm versteckt");
    GetPlayerPos(dx,dy,dz);
    POSX[playerid] = dx;
    POSY[playerid] = dy;
    POSZ[playerid] = dz;
    }
    }
    }
    }
    }
    if(strcmp(cmdtext, "/dnehmen10" , true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new location = PlayerInfo[playerid][pLocal];
    if(IsPlayerInRangeOfPoint(playerid,10,DPOSX[playerid],DPOSY[playerid],DPOSZ[playerid]))
    {
    if(location < 255)
    {
    if(PlayerInfo[playerid][Versteck] > 9)
    {
    PlayerInfo[playerid][pDrugs] += 10;
    PlayerInfo[playerid][Versteck] -= 10;
    SendClientMessage(playerid,0xFF0000FF,"10 Gramm genommen");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Hier hast du nichts versteckt");
    }
    }
    }

    Das sind die Errors:
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20869) : error 006: must be assigned to an array
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20870) : error 006: must be assigned to an array
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20871) : error 006: must be assigned to an array
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20872) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20873) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20874) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20890) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20890) : warning 202: number of arguments does not match definition
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20891) : error 017: undefined symbol "POSX"
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20891) : warning 215: expression has no effect
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20891) : error 001: expected token: ";", but found "]"
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20891) : error 029: invalid expression, assumed zero
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20891) : fatal error 107: too many error messages on one line

  • C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(48) : error 010: invalid function or declaration
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20891) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20891) : warning 202: number of arguments does not match definition
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20892) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20893) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20894) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20916) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20916) : warning 202: number of arguments does not match definition
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20917) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20918) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20919) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20940) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20940) : warning 202: number of arguments does not match definition
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20941) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20942) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(20943) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(57566) : warning 219: local variable "dx" shadows a variable at a preceding level
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(57566) : warning 219: local variable "dy" shadows a variable at a preceding level
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(57566) : warning 219: local variable "dz" shadows a variable at a preceding level
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(57576) : warning 219: local variable "dx" shadows a variable at a preceding level
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(57576) : warning 219: local variable "dy" shadows a variable at a preceding level
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(57576) : warning 219: local variable "dz" shadows a variable at a preceding level
    C:\Dokumente und Einstellungen\jan\Eigene Dateien\GTA San Andreas User Files\gamemodes\GSRR(6).pwn(57952) : warning 225: unreachable code
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Habs nach oben gemacht. Auf unseren Server war ein PAWN und der hat sich benommen wie ein Kleinkind das warst nicht du oder?


  • Zeig mir zeile 6!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen