Post by Abernethy on Jul 17, 2009 8:38:45 GMT 10
Player To Point
PlayerToPoint allows you to check if the player is in a certain distance from where you want them to be. This is measured in a circle, like a checkpoint, just it's invisible. We also use this due to the fact that the Pickups are bugged, & the server mixes them up. So to be sure they're in the correct pickup we use PlayerToPoint.
Lets get started.
First off, paste this code between;
#include <a_samp>
and
#if defined FILTERSCRIPT
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
After that. Paste this down somewhere else. Paste it at the bottom just to be sure you don't paste it under something.
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
Using PlayerToPoint
Okay, here is an example. If the player is in the checkpoint out the front of this building, & they type /enter. They will be teleported to the interior.
if (strcmp("/enter", cmdtext, true) == 0)
{
if (PlayerToPoint(2.00, playerid, -1754.1443,963.3481,24.8828))
{
SetPlayerPos(playerid, 2266.0293,1647.5515,1084.2344);
SetPlayerInterior(playerid, 1);
}
return 1;
}
The code "PlayerToPoint(3.00/*RADIUS*/, playerid, X, Y, Z))" is what we're looking at. Make sure you use it like this, don't get the radius & playerid mixed up like many do. Have fun using it.
Scripting errors ?
Post your replies here.