SHOW:
|
|
- or go back to the newest paste.
| 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) |
| 107 | + | |
| 108 | public OnPlayerClickPlayer(playerid, clickedplayerid, source) | |
| 109 | - | new pname[MAX_PLAYER_NAME]; |
| 109 | + | |
| 110 | - | GetPlayerName(playerid, pname, sizeof(pname)); |
| 110 | + | |
| 111 | - | return pname; |
| 111 | + | |
| 112 | new Float: x, Float: y, Float: z, string[128]; | |
| 113 | GetPlayerPos(clickedplayerid, x, y, z); | |
| 114 | - | public OnPlayerConnect(playerid) |
| 114 | + | |
| 115 | format(string, sizeof(string), "Teleported to %s", PlayerName(clickedplayerid)); | |
| 116 | SendClientMessage(playerid, X11_ORANGE, string); | |
| 117 | } | |
| 118 | return 1; | |
| 119 | - | public OnPlayerDisconnect(playerid, reason) |
| 119 | + | |
| 120 | CMD:help(playerid, params[]) | |
| 121 | {
| |
| 122 | if(IsPlayerAdmin(playerid)) | |
| 123 | {
| |
| 124 | - | public OnPlayerSpawn(playerid) |
| 124 | + | |
| 125 | } | |
| 126 | SendClientMessage(playerid, X11_WHITE, "COMMANDS: /teles /teleport"); | |
| 127 | return 1; | |
| 128 | } | |
| 129 | - | public OnPlayerDeath(playerid, killerid, reason) |
| 129 | + | |
| 130 | {
| |
| 131 | if(IsPlayerAdmin(playerid)) | |
| 132 | {
| |
| 133 | new name[32], string[128]; | |
| 134 | - | public OnVehicleSpawn(vehicleid) |
| 134 | + | |
| 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 | - | public OnVehicleDeath(vehicleid, killerid) |
| 139 | + | |
| 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 | - | public OnPlayerText(playerid, text[]) |
| 144 | + | |
| 145 | SaveTeleports(); | |
| 146 | } | |
| 147 | else | |
| 148 | {
| |
| 149 | - | public OnPlayerCommandText(playerid, cmdtext[]) |
| 149 | + | |
| 150 | } | |
| 151 | - | if (strcmp("/mycommand", cmdtext, true, 10) == 0)
|
| 151 | + | |
| 152 | } | |
| 153 | - | // Do something here |
| 153 | + | |
| 154 | - | return 1; |
| 154 | + | |
| 155 | if(IsPlayerAdmin(playerid)) | |
| 156 | - | return 0; |
| 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 | - | public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) |
| 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 | - | public OnPlayerExitVehicle(playerid, vehicleid) |
| 164 | + | |
| 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 | - | public OnPlayerStateChange(playerid, newstate, oldstate) |
| 169 | + | |
| 170 | else | |
| 171 | {
| |
| 172 | SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command."); | |
| 173 | } | |
| 174 | - | public OnPlayerEnterCheckpoint(playerid) |
| 174 | + | |
| 175 | } | |
| 176 | CMD:destroytele(playerid, params[]) | |
| 177 | {
| |
| 178 | if(IsPlayerAdmin(playerid)) | |
| 179 | - | public OnPlayerLeaveCheckpoint(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 | - | public OnPlayerEnterRaceCheckpoint(playerid) |
| 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 | - | public OnPlayerLeaveRaceCheckpoint(playerid) |
| 189 | + | |
| 190 | TeleInfo[idx][tY] = 0.0; | |
| 191 | TeleInfo[idx][tZ] = 0.0; | |
| 192 | TeleInfo[idx][tA] = 0.0; | |
| 193 | TeleInfo[idx][tVW] = 0; | |
| 194 | - | public OnRconCommand(cmd[]) |
| 194 | + | |
| 195 | SaveTeleports(); | |
| 196 | } | |
| 197 | else | |
| 198 | {
| |
| 199 | - | public OnPlayerRequestSpawn(playerid) |
| 199 | + | |
| 200 | } | |
| 201 | return 1; | |
| 202 | } | |
| 203 | CMD:telepos(playerid, params[]) | |
| 204 | - | public OnObjectMoved(objectid) |
| 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 | - | public OnPlayerObjectMoved(playerid, objectid) |
| 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 | - | public OnPlayerPickUpPickup(playerid, pickupid) |
| 214 | + | |
| 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 | - | public OnVehicleMod(playerid, vehicleid, componentid) |
| 219 | + | |
| 220 | } | |
| 221 | else | |
| 222 | {
| |
| 223 | SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command."); | |
| 224 | - | public OnVehiclePaintjob(playerid, vehicleid, paintjobid) |
| 224 | + | |
| 225 | return 1; | |
| 226 | } | |
| 227 | CMD:teleport(playerid, params[]) | |
| 228 | {
| |
| 229 | - | public OnVehicleRespray(playerid, vehicleid, color1, color2) |
| 229 | + | |
| 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 | - | public OnPlayerSelectedMenuRow(playerid, row) |
| 234 | + | |
| 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 | - | public OnPlayerExitedMenu(playerid) |
| 239 | + | |
| 240 | SendClientMessage(playerid, X11_ORANGE, string); | |
| 241 | return 1; | |
| 242 | } | |
| 243 | CMD:teles(playerid, params[]) | |
| 244 | - | public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) |
| 244 | + | |
| 245 | new string[128]; | |
| 246 | SendClientMessage(playerid, X11_GREEN, "* Listing current teleports..."); | |
| 247 | for(new i = 0; i < MAX_TELES; i++) | |
| 248 | {
| |
| 249 | - | public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) |
| 249 | + | |
| 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 | - | public OnRconLoginAttempt(ip[], password[], success) |
| 254 | + | |
| 255 | } | |
| 256 | return 1; | |
| 257 | } | |
| 258 | CMD:togglept(playerid, params[]) | |
| 259 | - | public OnPlayerUpdate(playerid) |
| 259 | + | |
| 260 | if(IsPlayerAdmin(playerid)) | |
| 261 | {
| |
| 262 | new string[128]; | |
| 263 | if(PLAYER_TELEPORTING == 0) | |
| 264 | - | public OnPlayerStreamIn(playerid, forplayerid) |
| 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 | - | public OnPlayerStreamOut(playerid, forplayerid) |
| 269 | + | |
| 270 | {
| |
| 271 | PLAYER_TELEPORTING = 0; | |
| 272 | format(string, sizeof(string), "zTeleports: %s has disabled player teleporting.", PlayerName(playerid)); | |
| 273 | SendClientMessageToAll(X11_RED, string); | |
| 274 | - | public OnVehicleStreamIn(vehicleid, forplayerid) |
| 274 | + | |
| 275 | } | |
| 276 | else | |
| 277 | {
| |
| 278 | SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command."); | |
| 279 | - | public OnVehicleStreamOut(vehicleid, forplayerid) |
| 279 | + | |
| 280 | return 1; | |
| 281 | } |