Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Lorenc Pos
- *
- * Used for saving and gathering the saved
- * position of a player.
- *
- * May be useful for stunt servers
- *
- */
- #include <a_samp>
- #include <zcmd>
- /* ** Configuration ** */
- #define NULL 0
- #define SERVER_DATABASE "lorencPos.db"
- new DB:Database, Query[256], DBResult:Result; // Database CONFIG
- /* ** Colours ** */
- #define COLOR_RED 0xFF0000FF
- #define COLOR_YELLOW 0xFFFF00FF
- /* ** Player Data ** */
- enum PLAYER_DATA
- {
- Float: E_LAST_X,
- Float: E_LAST_Y,
- Float: E_LAST_Z,
- E_LAST_INT,
- E_LAST_VWORLD,
- bool:E_DISABLED,
- }
- new gPlayerData [MAX_PLAYERS][PLAYER_DATA];
- forward spawn__Delay(playerid);
- public OnFilterScriptInit()
- {
- print("\nLorencPos - Loading and Saving Position; For stunt servers :D\n");
- Database = db_open(SERVER_DATABASE);
- db_free_result(db_query(Database, "CREATE TABLE IF NOT EXISTS `USERS` (`NAME`, `X`, `Y`, `Z`, `INT`, `VWORLD`)"));
- return 1;
- }
- public OnFilterScriptExit()
- {
- db_close(Database);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- gPlayerData[playerid][E_DISABLED] = false;
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetTimerEx("spawn__Delay", 2000, false, "d", playerid);
- return 1;
- }
- public spawn__Delay(playerid)
- {
- if(gPlayerData[playerid][E_DISABLED] == false) return 1;
- format(Query, sizeof(Query), "SELECT * FROM `USERS` WHERE `NAME` = '%s'", ReturnPlayerName(playerid));
- Result = db_query(Database, Query);
- if(db_num_rows(Result))
- {
- new Field[20];
- db_get_field_assoc(Result, "X", Field, 20);
- gPlayerData[playerid][E_LAST_X] = floatstr(Field);
- db_get_field_assoc(Result, "Y", Field, 20);
- gPlayerData[playerid][E_LAST_Y] = floatstr(Field);
- db_get_field_assoc(Result, "Z", Field, 20);
- gPlayerData[playerid][E_LAST_Z] = floatstr(Field);
- db_get_field_assoc(Result, "INT", Field, 20);
- gPlayerData[playerid][E_LAST_INT] = strval(Field);
- db_get_field_assoc(Result, "VWORLD", Field, 20);
- gPlayerData[playerid][E_LAST_VWORLD] = strval(Field);
- SetPlayerPos(playerid, gPlayerData[playerid][E_LAST_X], gPlayerData[playerid][E_LAST_Y], gPlayerData[playerid][E_LAST_Z]);
- SetPlayerInterior(playerid, gPlayerData[playerid][E_LAST_INT]);
- SetPlayerVirtualWorld(playerid, gPlayerData[playerid][E_LAST_VWORLD]);
- SendLPOSMessage(playerid, "You have been set back to your last location!");
- }
- return 1;
- }
- CMD:pos(playerid, params[])
- {
- new Float:X, Float:Y, Float:Z, pInt = GetPlayerInterior(playerid), pWorld = GetPlayerVirtualWorld(playerid);
- GetPlayerPos(playerid, X, Y, Z);
- format(Query, sizeof(Query), "SELECT * FROM `USERS` WHERE `NAME` = '%s'", ReturnPlayerName(playerid));
- Result = db_query(Database, Query);
- if(isnull(params)) SendLPOSMessage(playerid, "USAGE: /pos [last/set/toggle]");
- else if(strmatch(params, "set"))
- {
- if(db_num_rows(Result))
- {
- format(Query, sizeof(Query), "UPDATE `USERS` SET X = '%f', Y = '%f', Z = '%f', INT = '%d', VWORLD = '%d' WHERE `NAME` = '%s'", X, Y, Z, pInt, pWorld, ReturnPlayerName(playerid));
- db_free_result(db_query(Database, Query));
- }
- else
- {
- format(Query, sizeof(Query), "INSERT INTO `USERS` (`NAME`, `X`, `Y`, `Z`, `INT`, `VWORLD`) VALUES('%s','%f','%f','%f','%d','%d')", ReturnPlayerName(playerid), X, Y, Z, pInt, pWorld);
- db_free_result(db_query(Database, Query));
- }
- gPlayerData[playerid][E_LAST_X] = X;
- gPlayerData[playerid][E_LAST_Y] = Y;
- gPlayerData[playerid][E_LAST_Z] = Z;
- gPlayerData[playerid][E_LAST_INT] = pInt;
- gPlayerData[playerid][E_LAST_VWORLD] = pWorld;
- SendLPOSMessage(playerid, "Location set!");
- }
- else if(strmatch(params, "last"))
- {
- if(db_num_rows(Result) && gPlayerData[playerid][E_LAST_X] != 0 && gPlayerData[playerid][E_LAST_Y] != 0)
- {
- SetPlayerPos(playerid, gPlayerData[playerid][E_LAST_X], gPlayerData[playerid][E_LAST_Y], gPlayerData[playerid][E_LAST_Z]);
- SetPlayerInterior(playerid, gPlayerData[playerid][E_LAST_INT]);
- SetPlayerVirtualWorld(playerid, gPlayerData[playerid][E_LAST_VWORLD]);
- } else SendLPOSMessage(playerid, "ERROR: Nothing had been created/set!");
- }
- else if(strmatch(params, "toggle"))
- {
- if(gPlayerData[playerid][E_DISABLED] == false) gPlayerData[playerid][E_DISABLED] = true, SendLPOSMessage(playerid, "Toggled");
- else gPlayerData[playerid][E_DISABLED] = false, SendLPOSMessage(playerid, "Un-Toggled");
- }
- else SendLPOSMessage(playerid, "USAGE: /pos [last/set/toggle]");
- return 1;
- }
- ///////////////////////////////////
- /// Functions ///
- //////////////////////////////////
- stock strmatch(const String1[], const String2[])
- {
- if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1))) {
- return true;
- }
- else {
- return false;
- }
- }
- stock ReturnPlayerName(playerid)
- {
- new pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pname, sizeof(pname));
- return pname;
- }
- stock SendLPOSMessage(playerid, const Message[])
- {
- new string[128];
- format(string, sizeof(string), "{0012E7}LorencPos: {FFFFFF}%s", Message);
- SendClientMessage(playerid, -1, string);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement