Loop & IsPlayerInRange problem
#1

(Bad English i know =D)!

Hi all,
i have 2 problems,
the loop and isplayerinrangeofpoint works not right...

This is my command:

PHP код:
if(strcmp(cmd,"/kaufen",true)==0)
{
    for(new 
0sizeof(HausInfo); h++)
    {
        if(!
IsPlayerInRangeOfPoint(playerid3.0HausInfo[h][eX], HausInfo[h][eY], HausInfo[h][eZ]))return SendClientMessage(playerid,FARBE_WEIЯ,"Du stehst an keinem Haus!");
        {
            if(
SpielerInfo[playerid][pHaus] == 0)
            {
                if(
GetPlayerMoney(playerid) < HausInfo[h][Preis])return 1;
                new 
Name[MAX_PLAYER_NAME];
                
GetPlayerName(playeridNameMAX_PLAYER_NAME);
                
GivePlayerMoney(playerid, - HausInfo[h][Preis]);
                
strmid(HausInfo[h][Besitzer], Name0strlen(Name), 24);
                
HausInfo[h][Vergeben] = 1;
                
SpielerInfo[playerid][pHaus] = 1;
                
SpielerInfo[playerid][pId] = h+1;
                
WennSpielerUpdatet(playerid);
                
Kauf(playerid);
                
SendClientMessage(playerid,FARBE_WEIЯ,"Du hast dir ein Haus gekauft, die befehle kannst du unter /hh sehen!");
                return 
1;
            }
            else
            {
                
SendClientMessage(playerid,FARBE_WEIЯ,"Du hast bereits ein Haus, dieses musst du verkaufen!");
                return 
1;
            }
        }
    }
    return 
1;

i have three houses, and /kaufen worked only one house, the other two is always the else of IsPlayerInRangeOfPoint !

this is my house.cfg

PHP код:
eX0=1642.3235,
eY0=-2204.3228,
eZ0=13.5469,
aX0=0.0000
aY0
=0.0000
aZ0
=0.0000
Preis0
=1000
Besitzer0
=Staat
Vergeben0
=0
Id0
=1
//-----------------
eX1=1685.7727,
eY1=-2204.3157,
eZ1=13.5469,
aX1=0.0000
aY1
=0.0000
aZ1
=0.0000
Preis1
=2000
Besitzer1
=Staat
Vergeben1
=0
Id1
=2
//-----------------
eX2=1730.1548,
eY2=-2204.2449,
eZ2=13.5469,
aX2=0.0000
aY2
=0.0000
aZ2
=0.0000
Preis2
=3000
Besitzer2
=Staat
Vergeben2
=0
Id2
=
what is wrong?
i hope anywhere can help me, I do not know what to do
Reply
#2

pawn Код:
if(strcmp(cmd,"/kaufen",true)==0)
{
    for(new h = 0; h < sizeof(HausInfo); h++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 3.0, HausInfo[h][eX], HausInfo[h][eY], HausInfo[h][eZ]))
        {
            if(SpielerInfo[playerid][pHaus] == 0)
            {
                if(GetPlayerMoney(playerid) < HausInfo[h][Preis])return 1;
                new Name[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
                GivePlayerMoney(playerid, - HausInfo[h][Preis]);
                strmid(HausInfo[h][Besitzer], Name, 0, strlen(Name), 24);
                HausInfo[h][Vergeben] = 1;
                SpielerInfo[playerid][pHaus] = 1;
                SpielerInfo[playerid][pId] = h+1;
                WennSpielerUpdatet(playerid);
                Kauf(playerid);
                SendClientMessage(playerid,FARBE_WEIЯ,"Du hast dir ein Haus gekauft, die befehle kannst du unter /hh sehen!");
                return 1;
            }
            else
            {
                SendClientMessage(playerid,FARBE_WEIЯ,"Du hast bereits ein Haus, dieses musst du verkaufen!");
                return 1;
            }
        }
    }
    return 1;
}
Reply
#3

thx for answer,
but i need the else for isplayerinrangeofpoint if the player dont @point
Reply
#4

A loop will be messed up when using else for positions or anything else in loops, just copy this.

pawn Код:
stock IsPlayerNearAnyHouse(playerid) {
     for(h = 0; h < sizeof(HausInfo); h ++ ) {
          if(IsPlayerInRangeOfPoint(playerid, 3.0, HausInfo[h][eX], HausInfo[h][eY], HausInfo[h][eZ])) return i;
     }
     return 0;
}

if(strcmp(cmd,"/kaufen",true)==0)
{
            new h = IsPlayerNearAnyHouse(playerid);
            if(!h) return GameTextForPlayer(playerid, "You're not near a house", 3000, 5);
            if(SpielerInfo[playerid][pHaus] == 0)
            {
                if(GetPlayerMoney(playerid) < HausInfo[h][Preis])return 1;
                new Name[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
                GivePlayerMoney(playerid, - HausInfo[h][Preis]);
                strmid(HausInfo[h][Besitzer], Name, 0, strlen(Name), 24);
                HausInfo[h][Vergeben] = 1;
                SpielerInfo[playerid][pHaus] = 1;
                SpielerInfo[playerid][pId] = h+1;
                WennSpielerUpdatet(playerid);
                Kauf(playerid);
                SendClientMessage(playerid,FARBE_WEIЯ,"Du hast dir ein Haus gekauft, die befehle kannst du unter /hh sehen!");
                return 1;
            }
            else
            {
                SendClientMessage(playerid,FARBE_WEIЯ,"Du hast bereits ein Haus, dieses musst du verkaufen!");
                return 1;
            }
            return 1;
}
Reply
#5

Ok thx for fast answer, but in the stock is a error,

PHP код:
stock IsPlayerNearAnyHouse(playerid)
{
    for(
0sizeof(HausInfo); ++ ) // Here
    
{
        if(
IsPlayerInRangeOfPoint(playerid3.0HausInfo[h][eX], HausInfo[h][eY], HausInfo[h][eZ])) return i;
    }
     return 
0;

PHP код:
C:\Users\Schnacke\Desktop\LSR SM\gamemodes\LSR-Selfmade.pwn(131) : error 017undefined symbol "h"
C:\Users\Schnacke\Desktop\LSR SM\gamemodes\LSR-Selfmade.pwn(131) : warning 205redundant codeconstant expression is zero
C
:\Users\Schnacke\Desktop\LSR SM\gamemodes\LSR-Selfmade.pwn(131) : error 017undefined symbol "h"
C:\Users\Schnacke\Desktop\LSR SM\gamemodes\LSR-Selfmade.pwn(131) : warning 215expression has no effect
C
:\Users\Schnacke\Desktop\LSR SM\gamemodes\LSR-Selfmade.pwn(131) : error 001expected token")"but found ";"
C:\Users\Schnacke\Desktop\LSR SM\gamemodes\LSR-Selfmade.pwn(131) : fatal error 107too many error messages on one line 
but why after the for (not new but directly h ?
Reply
#6

PHP код:
stock IsPlayerNearAnyHouse(playerid)
{
    for(new 
0sizeof(HausInfo); h++ ) // Here
    
{
        if(
IsPlayerInRangeOfPoint(playerid3.0HausInfo[h][eX], HausInfo[h][eY], HausInfo[h][eZ])) return i;
    }
     return 
0;

Reply
#7

1 error @ stock,
return i; = i = undefined
so i muЯt change i with h ??
Reply
#8

Quote:
Originally Posted by Schnacke
Посмотреть сообщение
1 error @ stock,
return i; = i = undefined
so i muЯt change i with h ??
PHP код:
return h
Reply
#9

OMG big thxxxxx'z
its work perfekt,
the guys @german samp forum dont have ideas, i asked several days ago in the German forum and I could not help, in English after a few minutes + works even all that I find genuine great of you =) thank you very much
Reply
#10

sry for double post,
i've got one more question.

Now i work on my /verkaufen (sellhouse) cmd and have question is this right or wrong...
PHP код:
if(strcmp(cmd,"/verkaufen",true)==0)
    {
        new 
IsPlayerIdTheHouseId(playerid);
           if(!
v) return GameTextForPlayer(playerid"Die Hausid ist eine andere als deine"30005);
           {
               if(
SpielerInfo[playerid][pHaus] == 1)
               {
                
GivePlayerMoney(playeridHausInfo[v][Preis]/2);
                
strmid(HausInfo[v][Besitzer], "Staat"0strlen("Staat"), 24);
                
HausInfo[v][Vergeben] = 0;
                
SendClientMessage(playeridFARBE_WEIЯ,"Du hast dein Haus erfolgreich verkauft!");
                
SpielerInfo[playerid][pId] = 1000;
                
SpielerInfo[playerid][pHaus] = 0;
                
Verkauf(playerid);
                return 
1;
             }
             else
            {
                
SendClientMessage(playerid,FARBE_WEIЯ,"Du hast kein Haus!");
                return 
1;
            }
        }
    } 
PHP код:
stock IsPlayerIdTheHouseId(playerid)
{
    for(new 
0sizeof(HausInfo); h++ )
    {
        if(
SpielerInfo[playerid][pId] == HausInfo[h][Id]) return h;
    }
    return 
0;

i ask because after all if query is true, nothing happens
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)