Guest User

zTeleports

a guest
Apr 24th, 2013
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.13 KB | None | 0 0
  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. stock PlayerName(playerid)
  108. {
  109.     new pname[MAX_PLAYER_NAME];
  110.     GetPlayerName(playerid, pname, sizeof(pname));
  111.     return pname;
  112. }
  113.  
  114. public OnPlayerConnect(playerid)
  115. {
  116.     return 1;
  117. }
  118.  
  119. public OnPlayerDisconnect(playerid, reason)
  120. {
  121.     return 1;
  122. }
  123.  
  124. public OnPlayerSpawn(playerid)
  125. {
  126.     return 1;
  127. }
  128.  
  129. public OnPlayerDeath(playerid, killerid, reason)
  130. {
  131.     return 1;
  132. }
  133.  
  134. public OnVehicleSpawn(vehicleid)
  135. {
  136.     return 1;
  137. }
  138.  
  139. public OnVehicleDeath(vehicleid, killerid)
  140. {
  141.     return 1;
  142. }
  143.  
  144. public OnPlayerText(playerid, text[])
  145. {
  146.     return 1;
  147. }
  148.  
  149. public OnPlayerCommandText(playerid, cmdtext[])
  150. {
  151.     if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  152.     {
  153.         // Do something here
  154.         return 1;
  155.     }
  156.     return 0;
  157. }
  158.  
  159. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  160. {
  161.     return 1;
  162. }
  163.  
  164. public OnPlayerExitVehicle(playerid, vehicleid)
  165. {
  166.     return 1;
  167. }
  168.  
  169. public OnPlayerStateChange(playerid, newstate, oldstate)
  170. {
  171.     return 1;
  172. }
  173.  
  174. public OnPlayerEnterCheckpoint(playerid)
  175. {
  176.     return 1;
  177. }
  178.  
  179. public OnPlayerLeaveCheckpoint(playerid)
  180. {
  181.     return 1;
  182. }
  183.  
  184. public OnPlayerEnterRaceCheckpoint(playerid)
  185. {
  186.     return 1;
  187. }
  188.  
  189. public OnPlayerLeaveRaceCheckpoint(playerid)
  190. {
  191.     return 1;
  192. }
  193.  
  194. public OnRconCommand(cmd[])
  195. {
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerRequestSpawn(playerid)
  200. {
  201.     return 1;
  202. }
  203.  
  204. public OnObjectMoved(objectid)
  205. {
  206.     return 1;
  207. }
  208.  
  209. public OnPlayerObjectMoved(playerid, objectid)
  210. {
  211.     return 1;
  212. }
  213.  
  214. public OnPlayerPickUpPickup(playerid, pickupid)
  215. {
  216.     return 1;
  217. }
  218.  
  219. public OnVehicleMod(playerid, vehicleid, componentid)
  220. {
  221.     return 1;
  222. }
  223.  
  224. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  225. {
  226.     return 1;
  227. }
  228.  
  229. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  230. {
  231.     return 1;
  232. }
  233.  
  234. public OnPlayerSelectedMenuRow(playerid, row)
  235. {
  236.     return 1;
  237. }
  238.  
  239. public OnPlayerExitedMenu(playerid)
  240. {
  241.     return 1;
  242. }
  243.  
  244. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  245. {
  246.     return 1;
  247. }
  248.  
  249. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  250. {
  251.     return 1;
  252. }
  253.  
  254. public OnRconLoginAttempt(ip[], password[], success)
  255. {
  256.     return 1;
  257. }
  258.  
  259. public OnPlayerUpdate(playerid)
  260. {
  261.     return 1;
  262. }
  263.  
  264. public OnPlayerStreamIn(playerid, forplayerid)
  265. {
  266.     return 1;
  267. }
  268.  
  269. public OnPlayerStreamOut(playerid, forplayerid)
  270. {
  271.     return 1;
  272. }
  273.  
  274. public OnVehicleStreamIn(vehicleid, forplayerid)
  275. {
  276.     return 1;
  277. }
  278.  
  279. public OnVehicleStreamOut(vehicleid, forplayerid)
  280. {
  281.     return 1;
  282. }
  283.  
  284. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  285. {
  286.     return 1;
  287. }
  288.  
  289. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  290. {
  291.     if(PLAYER_TELEPORTING == 1)
  292.     {
  293.         new Float: x, Float: y, Float: z, string[128];
  294.         GetPlayerPos(clickedplayerid, x, y, z);
  295.         SetPlayerPos(playerid, x, y+1, z+0.3);
  296.         format(string, sizeof(string), "Teleported to %s", PlayerName(clickedplayerid));
  297.         SendClientMessage(playerid, X11_ORANGE, string);
  298.     }
  299.     return 1;
  300. }
  301. CMD:help(playerid, params[])
  302. {
  303.     if(IsPlayerAdmin(playerid))
  304.     {
  305.         SendClientMessage(playerid, X11_ORANGE, "RCON COMMMANDS: /createtele /telename /destroytele /telepos /togglept");
  306.     }
  307.     SendClientMessage(playerid, X11_WHITE, "COMMANDS: /teles /teleport");
  308.     return 1;
  309. }
  310. CMD:createtele(playerid, params[])
  311. {
  312.     if(IsPlayerAdmin(playerid))
  313.     {
  314.         new name[32], string[128];
  315.         new idx = GetFreeTeleSlot();
  316.         if(sscanf(params, "s[32]", name)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /createtele [name]");
  317.        
  318.         GetPlayerPos(playerid, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ]);
  319.         GetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
  320.         TeleInfo[idx][tVW] = GetPlayerVirtualWorld(playerid);
  321.         TeleInfo[idx][tInt] = GetPlayerInterior(playerid);
  322.         strmid(TeleInfo[idx][tName], name, 0, strlen(name), 32);
  323.         format(string, sizeof(string), "Teleport Created: [Name: %s | ID: %d | X: %.02f | Y: %.02f | Z: %.02f | A: %.02f | VW: %d | Int: %d]",
  324.         TeleInfo[idx][tName], idx, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ], TeleInfo[idx][tA], TeleInfo[idx][tVW], TeleInfo[idx][tInt]);
  325.         SendClientMessage(playerid, X11_ORANGE, string);
  326.         SaveTeleports();
  327.     }
  328.     else
  329.     {
  330.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  331.     }
  332.     return 1;
  333. }
  334. CMD:telename(playerid, params[])
  335. {
  336.     if(IsPlayerAdmin(playerid))
  337.     {
  338.         new idx, name[32], string[128];
  339.         if(sscanf(params, "ds[32]", idx, name)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /telename [teleid] [name]");
  340.        
  341.         if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
  342.        
  343.         new oldname[32];
  344.         strmid(oldname, TeleInfo[idx][tName], 0, strlen(TeleInfo[idx][tName]), 32);
  345.         strmid(TeleInfo[idx][tName], name, 0, strlen(name), 32);
  346.         format(string, sizeof(string), "Teleport Name Edited: [ID: %d | Previous Name: %s | New Name: %s]",
  347.         idx, oldname, TeleInfo[idx][tName]);
  348.         SendClientMessage(playerid, X11_ORANGE, string);
  349.         SaveTeleports();
  350.     }
  351.     else
  352.     {
  353.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  354.     }
  355.     return 1;
  356. }
  357. CMD:destroytele(playerid, params[])
  358. {
  359.     if(IsPlayerAdmin(playerid))
  360.     {
  361.         new idx, string[128];
  362.         if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /destroytele [teleid]");
  363.        
  364.         if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
  365.        
  366.         format(string, sizeof(string), "Teleport Destroyed: [ID: %d | Name: %s]",
  367.         idx, TeleInfo[idx][tName]);
  368.         SendClientMessage(playerid, X11_ORANGE, string);
  369.         strdel(TeleInfo[idx][tName], 0, strlen(TeleInfo[idx][tName]));
  370.         TeleInfo[idx][tX] = 0.0;
  371.         TeleInfo[idx][tY] = 0.0;
  372.         TeleInfo[idx][tZ] = 0.0;
  373.         TeleInfo[idx][tA] = 0.0;
  374.         TeleInfo[idx][tVW] = 0;
  375.         TeleInfo[idx][tInt] = 0;
  376.         SaveTeleports();
  377.     }
  378.     else
  379.     {
  380.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  381.     }
  382.     return 1;
  383. }
  384. CMD:telepos(playerid, params[])
  385. {
  386.     if(IsPlayerAdmin(playerid))
  387.     {
  388.         new idx, string[128];
  389.         if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /telepos [teleid]");
  390.        
  391.         if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
  392.        
  393.         GetPlayerPos(playerid, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ]);
  394.         GetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
  395.         TeleInfo[idx][tVW] = GetPlayerVirtualWorld(playerid);
  396.         TeleInfo[idx][tInt] = GetPlayerInterior(playerid);
  397.         format(string, sizeof(string), "Teleport Position Edited: [ID: %d | X: %.02f | Y: %.02f | Z: %.02f | A: %.02f | VW: %d | Int: %d]",
  398.         idx, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ], TeleInfo[idx][tA], TeleInfo[idx][tVW], TeleInfo[idx][tInt]);
  399.         SendClientMessage(playerid, X11_ORANGE, string);
  400.         SaveTeleports();
  401.     }
  402.     else
  403.     {
  404.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  405.     }
  406.     return 1;
  407. }
  408. CMD:teleport(playerid, params[])
  409. {
  410.     new idx, string[128];
  411.     if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /teleport [teleid]");
  412.    
  413.     if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
  414.  
  415.     SetPlayerPos(playerid, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ]);
  416.     SetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
  417.     SetPlayerVirtualWorld(playerid, TeleInfo[idx][tVW]);
  418.     SetPlayerInterior(playerid, TeleInfo[idx][tInt]);
  419.     format(string, sizeof(string), "Teleported to: %s [ID: %d | VW: %d | Int: %d]",
  420.     TeleInfo[idx][tName], idx, TeleInfo[idx][tVW], TeleInfo[idx][tInt]);
  421.     SendClientMessage(playerid, X11_ORANGE, string);
  422.     return 1;
  423. }
  424. CMD:teles(playerid, params[])
  425. {
  426.     new string[128];
  427.     SendClientMessage(playerid, X11_GREEN, "* Listing current teleports...");
  428.     for(new i = 0; i < MAX_TELES; i++)
  429.     {
  430.         if(strlen(TeleInfo[i][tName]) != 0)
  431.         {
  432.             format(string, sizeof(string), "Teleport %d: [Name: %s | VW: %d | Int: %d]",
  433.              i, TeleInfo[i][tName], TeleInfo[i][tVW], TeleInfo[i][tInt]);
  434.             SendClientMessage(playerid, X11_WHITE, string);
  435.         }
  436.     }
  437.     return 1;
  438. }
  439. CMD:togglept(playerid, params[])
  440. {
  441.     if(IsPlayerAdmin(playerid))
  442.     {
  443.         new string[128];
  444.         if(PLAYER_TELEPORTING == 0)
  445.         {
  446.             PLAYER_TELEPORTING = 1;
  447.             format(string, sizeof(string), "zTeleports: %s has enabled player teleporting.", PlayerName(playerid));
  448.             SendClientMessageToAll(X11_GREEN, string);
  449.         }
  450.         else
  451.         {
  452.             PLAYER_TELEPORTING = 0;
  453.             format(string, sizeof(string), "zTeleports: %s has disabled player teleporting.", PlayerName(playerid));
  454.             SendClientMessageToAll(X11_RED, string);
  455.         }
  456.     }
  457.     else
  458.     {
  459.         SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
  460.     }
  461.     return 1;
  462. }
Advertisement
Add Comment
Please, Sign In to add comment