SA-MP Forums Archive
Проверка находиться ли игрок у капота - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Проверка находиться ли игрок у капота (/showthread.php?tid=447057)



Проверка находиться ли игрок у капота - Romz - 28.06.2013

Вот делаю так:
PHP код:
new Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
for(new 
1MAX_VEHICLESv++) {
    
GetPosBonnetVehicle(v,Pos[0],Pos[1],Pos[2]);
    if(
IsPlayerInRangeOfPoint(playerid,2.0,Pos[0],Pos[1],Pos[2])) {
        
SendClientMessage(playerid,COLOR_WHITE,"Игрок у капота!");
        break;
    }

Хочу сделать что бы если игрок НЕ у капота писало сообщение что вы должны быть рядом с капотом. Пытался сделать что то похожое на это:
PHP код:
new Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
for(new 
1MAX_VEHICLESv++) {
    
GetPosBonnetVehicle(v,Pos[0],Pos[1],Pos[2]);
    if(
IsPlayerInRangeOfPoint(playerid,2.0,Pos[0],Pos[1],Pos[2])) {
        
SendClientMessage(playerid,COLOR_WHITE,"Игрок у капота!");
        break;
    }
    else {
        
SendClientMessage(playerid,COLOR_WHITE,"Вы должны быть у капота.");
    }

Но так можно сказать не робит. Даже если я у машины буду мне будет выводиться сообщение до того момента пока не дойдет до ида машины возле которой я стою.

Подскажите как правильно в данной ситуации сделать что бы все работало.


Re: Проверка находиться ли игрок у капота - Stepashka - 28.06.2013

pawn Код:
...
if (IsNearHood(playerid)) {
    SendClientMessage(playerid,COLOR_WHITE,"Игрок у капота!");
} else {
    SendClientMessage(playerid,COLOR_WHITE,"Вы должны быть у капота.");
}
...


bool:IsNearHood(playerid) {
    for (new v = 1, Float:Pos[3]; v < MAX_VEHICLES; v++) {
        GetPosBonnetVehicle(v, Pos[0], Pos[1], Pos[2]);
        if (IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2])) {
            return true;
        }
    }
    return false;
}



Re: Проверка находиться ли игрок у капота - Romz - 28.06.2013

А как мне в этом коде узнать ид машины? Всмысле вот я хочу сделать так:
PHP код:
if (IsNearHood(playerid)) {
    
SendClientMessage(playerid,COLOR_WHITE,"Игрок у капота!");
SetVehicleHealth(Ид_машины,1000.0);
} else {
    
SendClientMessage(playerid,COLOR_WHITE,"Вы должны быть у капота.");




Re: Проверка находиться ли игрок у капота - White_116 - 28.06.2013

return true; замени на return v;


Re: Проверка находиться ли игрок у капота - Stepashka - 28.06.2013

Quote:
Originally Posted by White_116
Посмотреть сообщение
return true; замени на return v;
pawn Код:
IsNearHood(playerid) {
    for (new v = 1, Float:Pos[3]; v < MAX_VEHICLES; v++) {
        GetPosBonnetVehicle(v, Pos[0], Pos[1], Pos[2]);
        if (IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2])) {
            return v;
        }
    }
    return INVALID_VEHICLE_ID;
}



Re: Проверка находиться ли игрок у капота - Romz - 28.06.2013

Когда делаю это
PHP код:
return INVALID_VEHICLE_ID
Перестает работать.


Re: Проверка находиться ли игрок у капота - Stepashka - 29.06.2013

Самому подумать никак, 0 поставь?!