Guest User

zTeleports

a guest
Apr 24th, 2013
1,249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Script Title: zTeleports
  3. Scripter: zDivine aka Mercenary
  4. Script Date: 20130423
  5. Script Version: 1.0.0.0
  6. */
  7.  
  8. #define FILTERSCRIPT
  9.  
  10. #include <a_samp>
  11. #include <sscanf2>
  12. #include <zcmd>
  13. #include <YSI\y_colours>
  14.  
  15. #if defined FILTERSCRIPT
  16.  
  17. public OnFilterScriptInit()
  18. {
  19.     print("\n-------------------------------------------");
  20.     print(" zTeleports by zDivine successfully loaded.");
  21.     print("-------------------------------------------\n");
  22.     LoadTeleports();
  23.     print("\n----------------------------------------");
  24.     print("           All teleports loaded           ");
  25.     print("----------------------------------------\n");
  26.     return 1;
  27. }
  28.  
  29. public OnFilterScriptExit()
  30. {
  31.     SaveTeleports();
  32.     return 1;
  33. }
  34.  
  35. #endif
  36.  
  37. // Server Defines
  38. /* -------------------------------------------------------------------------------------------- */
  39. #define MAX_TELES           50
  40. // Maximum amount of teleports for the server.
  41. /* -------------------------------------------------------------------------------------------- */
  42. new PLAYER_TELEPORTING = 0;
  43. // Allow players to teleport to other players via OnPlayerClickPlayer(). (0 = false / 1 = true)
  44. /* -------------------------------------------------------------------------------------------- */
  45.  
  46. // Enums
  47. enum teleInfo
  48. {
  49.     tName[32],
  50.     Float: tX,
  51.     Float: tY,
  52.     Float: tZ,
  53.     Float: tA,
  54.     tVW,
  55.     tInt
  56. };
  57. new TeleInfo[MAX_TELES][teleInfo];
  58.  
  59. // Saving and Loading
  60. LoadTeleports()
  61. {
  62.     new string[128];
  63.     new File: file = fopen("teleports.cfg", io_read);
  64.     new idx;
  65.     while(idx < sizeof(TeleInfo) && fread(file, string))
  66.     {
  67.         sscanf(string, "p<|>s[32]ffffii",
  68.         TeleInfo[idx][tName],
  69.         TeleInfo[idx][tX],
  70.         TeleInfo[idx][tY],
  71.         TeleInfo[idx][tZ],
  72.         TeleInfo[idx][tA],
  73.         TeleInfo[idx][tVW],
  74.         TeleInfo[idx][tInt]);
  75.         ++idx;
  76.     }
  77.     return fclose(file);
  78. }
  79. SaveTeleports()
  80. {
  81.     new string[128];
  82.     new File: file = fopen("teleports.cfg", io_write);
  83.     for(new i = 0; i < MAX_TELES; i++)
  84.     {
  85.         format(string, sizeof(string), "%s|%f|%f|%f|%f|%d|%d\r\n",
  86.         TeleInfo[i][tName],
  87.         TeleInfo[i][tX],
  88.         TeleInfo[i][tY],
  89.         TeleInfo[i][tZ],
  90.         TeleInfo[i][tA],
  91.         TeleInfo[i][tVW],
  92.         TeleInfo[i][tInt]);
  93.         fwrite(file, string);
  94.     }
  95.     return fclose(file);
  96. }
  97.  
  98. // Stocks
  99. stock GetFreeTeleSlot()
  100. {
  101.     for(new i = 0; i < MAX_TELES; i++)
  102.     {
  103.         if(strlen(TeleInfo[i][tName]) == 0) return i;
  104.     }
  105.     return -1;
  106. }
  107.  
  108. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  109. {
  110.     if(PLAYER_TELEPORTING == 1)
  111.     {
  112.         new Float: x, Float: y, Float: z, string[128];
  113.         GetPlayerPos(clickedplayerid, x, y, z);
  114.         SetPlayerPos(playerid, x, y+1, z+0.3);
  115.         format(string, sizeof(string), "Teleported to %s", PlayerName(clickedplayerid));
  116.         SendClientMessage(playerid, X11_ORANGE, string);
  117.     }
  118.     return 1;
  119. }
  120. CMD:help(playerid, params[])
  121. {
  122.     if(IsPlayerAdmin(playerid))
  123.     {
  124.         SendClientMessage(playerid, X11_ORANGE, "RCON COMMMANDS: /createtele /telename /destroytele /telepos /togglept");
  125.     }
  126.     SendClientMessage(playerid, X11_WHITE, "COMMANDS: /teles /teleport");
  127.     return 1;
  128. }
  129. CMD:createtele(playerid, params[])
  130. {
  131.     if(IsPlayerAdmin(playerid))
  132.     {
  133.         new name[32], string[128];
  134.         new idx = GetFreeTeleSlot();
  135.         if(sscanf(params, "s[32]", name)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /createtele [name]");
  136.        
  137.         GetPlayerPos(playerid, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ]);
  138.         GetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
  139.         TeleInfo[idx][tVW] = GetPlayerVirtualWorld(playerid);
  140.         TeleInfo[idx][tInt] = GetPlayerInterior(playerid);
  141.         strmid(TeleInfo[idx][tName], name, 0, strlen(name), 32);
  142.         format(string, sizeof(string), "Teleport Created: [Name: %s | ID: %d | X: %.02f | Y: %.02f | Z: %.02f | A: %.02f | VW: %d | Int: %d]",
  143.         TeleInfo[idx][tName], idx, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ], TeleInfo[idx][tA], TeleInfo[idx][tVW], TeleInfo[idx][tInt]);
  144.         SendClientMessage(playerid, X11_ORANGE, string);
  145.         SaveTeleports();
  146.     }
  147.     else
  148.     {
  149.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  150.     }
  151.     return 1;
  152. }
  153. CMD:telename(playerid, params[])
  154. {
  155.     if(IsPlayerAdmin(playerid))
  156.     {
  157.         new idx, name[32], string[128];
  158.         if(sscanf(params, "ds[32]", idx, name)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /telename [teleid] [name]");
  159.        
  160.         if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
  161.        
  162.         new oldname[32];
  163.         strmid(oldname, TeleInfo[idx][tName], 0, strlen(TeleInfo[idx][tName]), 32);
  164.         strmid(TeleInfo[idx][tName], name, 0, strlen(name), 32);
  165.         format(string, sizeof(string), "Teleport Name Edited: [ID: %d | Previous Name: %s | New Name: %s]",
  166.         idx, oldname, TeleInfo[idx][tName]);
  167.         SendClientMessage(playerid, X11_ORANGE, string);
  168.         SaveTeleports();
  169.     }
  170.     else
  171.     {
  172.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  173.     }
  174.     return 1;
  175. }
  176. CMD:destroytele(playerid, params[])
  177. {
  178.     if(IsPlayerAdmin(playerid))
  179.     {
  180.         new idx, string[128];
  181.         if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /destroytele [teleid]");
  182.        
  183.         if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
  184.        
  185.         format(string, sizeof(string), "Teleport Destroyed: [ID: %d | Name: %s]",
  186.         idx, TeleInfo[idx][tName]);
  187.         SendClientMessage(playerid, X11_ORANGE, string);
  188.         strdel(TeleInfo[idx][tName], 0, strlen(TeleInfo[idx][tName]));
  189.         TeleInfo[idx][tX] = 0.0;
  190.         TeleInfo[idx][tY] = 0.0;
  191.         TeleInfo[idx][tZ] = 0.0;
  192.         TeleInfo[idx][tA] = 0.0;
  193.         TeleInfo[idx][tVW] = 0;
  194.         TeleInfo[idx][tInt] = 0;
  195.         SaveTeleports();
  196.     }
  197.     else
  198.     {
  199.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  200.     }
  201.     return 1;
  202. }
  203. CMD:telepos(playerid, params[])
  204. {
  205.     if(IsPlayerAdmin(playerid))
  206.     {
  207.         new idx, string[128];
  208.         if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /telepos [teleid]");
  209.        
  210.         if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
  211.        
  212.         GetPlayerPos(playerid, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ]);
  213.         GetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
  214.         TeleInfo[idx][tVW] = GetPlayerVirtualWorld(playerid);
  215.         TeleInfo[idx][tInt] = GetPlayerInterior(playerid);
  216.         format(string, sizeof(string), "Teleport Position Edited: [ID: %d | X: %.02f | Y: %.02f | Z: %.02f | A: %.02f | VW: %d | Int: %d]",
  217.         idx, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ], TeleInfo[idx][tA], TeleInfo[idx][tVW], TeleInfo[idx][tInt]);
  218.         SendClientMessage(playerid, X11_ORANGE, string);
  219.         SaveTeleports();
  220.     }
  221.     else
  222.     {
  223.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  224.     }
  225.     return 1;
  226. }
  227. CMD:teleport(playerid, params[])
  228. {
  229.     new idx, string[128];
  230.     if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /teleport [teleid]");
  231.    
  232.     if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
  233.  
  234.     SetPlayerPos(playerid, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ]);
  235.     SetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
  236.     SetPlayerVirtualWorld(playerid, TeleInfo[idx][tVW]);
  237.     SetPlayerInterior(playerid, TeleInfo[idx][tInt]);
  238.     format(string, sizeof(string), "Teleported to: %s [ID: %d | VW: %d | Int: %d]",
  239.     TeleInfo[idx][tName], idx, TeleInfo[idx][tVW], TeleInfo[idx][tInt]);
  240.     SendClientMessage(playerid, X11_ORANGE, string);
  241.     return 1;
  242. }
  243. CMD:teles(playerid, params[])
  244. {
  245.     new string[128];
  246.     SendClientMessage(playerid, X11_GREEN, "* Listing current teleports...");
  247.     for(new i = 0; i < MAX_TELES; i++)
  248.     {
  249.         if(strlen(TeleInfo[i][tName]) != 0)
  250.         {
  251.             format(string, sizeof(string), "Teleport %d: [Name: %s | VW: %d | Int: %d]",
  252.              i, TeleInfo[i][tName], TeleInfo[i][tVW], TeleInfo[i][tInt]);
  253.             SendClientMessage(playerid, X11_WHITE, string);
  254.         }
  255.     }
  256.     return 1;
  257. }
  258. CMD:togglept(playerid, params[])
  259. {
  260.     if(IsPlayerAdmin(playerid))
  261.     {
  262.         new string[128];
  263.         if(PLAYER_TELEPORTING == 0)
  264.         {
  265.             PLAYER_TELEPORTING = 1;
  266.             format(string, sizeof(string), "zTeleports: %s has enabled player teleporting.", PlayerName(playerid));
  267.             SendClientMessageToAll(X11_GREEN, string);
  268.         }
  269.         else
  270.         {
  271.             PLAYER_TELEPORTING = 0;
  272.             format(string, sizeof(string), "zTeleports: %s has disabled player teleporting.", PlayerName(playerid));
  273.             SendClientMessageToAll(X11_RED, string);
  274.         }
  275.     }
  276.     else
  277.     {
  278.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  279.     }
  280.     return 1;
  281. }
Advertisement
Add Comment
Please, Sign In to add comment