Üdv.
Szerintem a téma neve elárul mindent, ez a legközelebbi játékost lekérdezi!
Kell hozzá a foreach fügvénykönyvtár
#include <foreach>
persze elöbb le is kell tölteni innen:http://forum.sa-mp.com/showthread.php?t=92679
kód:
stock ClosestPlayer(p1){
new Float:dis,Float:dis2,playerid;
playerid = -1;
dis = 99999.99;
foreach(Player,x){
dis2 = GetDistanceToPlayer(p1,x);
if (dis2 < dis && dis2 != -1.00)
{
dis = dis2;
playerid = x;
}
}
return playerid;
}
stock Float:GetDistanceToPlayer(playerid,playerid2) {
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if (!IsPlayerConnected(playerid) || !IsPlayerConnected(playerid2)) {
return -1.00;
}
GetPlayerPos(playerid,x1,y1,z1);
GetPlayerPos(playerid2,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
Ha pedig betettük ezt az fs-be vagy gm-be és a legközelebbi játékossal akarunk valamit akkor érdemes abba a fügvénybe ezt a kódot használni:
new player = ClosestPlayer(playerid);
és akkor a definícióknál amit csináljon a legközelebbi játékos oda a
palyerid
helyett ezt irjuk:
player
GetDistanceToPlayer függvény is hiányzik.
Nekem ez foreach-al nemment jól, nemtom mér. ( FS-be )
Én így oldanám meg:
forward ClosestPlayer(p1);
public ClosestPlayer(p1)
{
new
Float:dis = 99999.99,
Float:dis2,
Float:MyPos[6],
playerid = INVALID_PLAYER_ID;
foreach(Player, x)
{
GetPlayerPos(playerid, MyPos[0], MyPos[1], MyPos[2]);
GetPlayerPos(x, MyPos[3], MyPos[4], MyPos[5]);
dis2 = GetDistance(MyPos[0], MyPos[1], MyPos[2], MyPos[3], MyPos[4], MyPos[5]);
if (dis2 < dis && dis2 != -1.00)
{
dis = dis2;
playerid = x;
}
}
return playerid;
}
GetDistance kell hozzá.
#define GetDistance(%1,%2,%3,%4,%5,%6) floatadd(floatadd(floatsqroot(floatpower(floatsub(%1, %4), 2)), floatsqroot(floatpower(floatsub(%2, %5), 2))), floatsqroot(floatpower(floatsub(%3, %6), 2)))
[/code
GetDistanceToPlayer függvény is hiányzik.
Nekem ez foreach-al nemment jól, nemtom mér. ( FS-be )
#define FILTERSCRIPT
#include <foreach>
Ez is kell :)
GetDistanceToPlayer függvény is hiányzik.
Nekem ez foreach-al nemment jól, nemtom mér. ( FS-be )
#define FILTERSCRIPT
#include <foreach>
Ez is kell :)
[/quote]
Tudom, benne is volt :D