Advertisement
Guest User

CSPro

a guest
Jun 25th, 2008
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 24.48 KB | None | 0 0
  1. /*
  2. CSPr - CoordSaver Pro Edition
  3. Copyright (c) 2008 by Rafelder
  4. You are not allowed to edit the script!
  5. */
  6.  
  7. #include <a_samp>
  8.  
  9. new SaveMode;
  10. new SaveFile[32];
  11. new StrVar[256];
  12.  
  13. new Menu: SelectMenu;
  14.  
  15. #define COLOR_BAD 0xC10000FF
  16. #define COLOR_GOOD 0xFAD029FF
  17.  
  18. #define MIN_SAVEMODES 1
  19. #define MAX_SAVEMODES 9
  20.  
  21. stock WriteFileFormat[265];
  22. #define WriteIntoFileEx(%1,%2); format(WriteFileFormat,265,%1,%2);WriteIntoFile(WriteFileFormat);SendClientMessageToAdmins(COLOR_GOOD, WriteFileFormat);
  23. #define WriteIntoFileExWithoutMsg(%1,%2); format(WriteFileFormat,265,%1,%2);WriteIntoFile(WriteFileFormat);
  24.  
  25. new respawn_delay = 0;
  26. new Cartype = 0;
  27. new Pickuptype = 0;
  28.  
  29. new Cartypestring[][] = {"CreateVehicle", "AddStaticVehicle", "AddStaticVehicleEx"};
  30. new Pickuptypestring[][] = {"CreatePickup", "AddStaticPickup"};
  31.  
  32. new Files[][] = {   "player_coords.txt", "car_coords.txt", "pickup_coords.txt",
  33.                     "xplode_coords.txt","playercp_coords.txt", "racecp_coords.txt",
  34.                     "blank_coords.txt", "mapicon_coords.txt", "teleports_coords.txt"};
  35.  
  36.  
  37. new aVehicleNames[212][] = {
  38.     {"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},
  39.     {"Dumper"},{"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},
  40.     {"Pony"},{"Mule"},{"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},
  41.     {"Washington"},{"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},
  42.     {"Securicar"},{"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},
  43.     {"Previon"},{"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
  44.     {"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},{"Speeder"},
  45.     {"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},{"Skimmer"},
  46.     {"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},{"Sanchez"},
  47.     {"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},{"Rustler"},{"ZR-350"},
  48.     {"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},{"Baggage"},{"Dozer"},
  49.     {"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},{"Jetmax"},{"Hotring"},
  50.     {"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},{"Mesa"},{"RC Goblin"},
  51.     {"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},{"Super GT"},{"Elegant"},
  52.     {"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},{"Tanker"},{"Roadtrain"},
  53.     {"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},{"NRG-500"},{"HPV1000"},
  54.     {"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},{"Willard"},{"Forklift"},
  55.     {"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},{"Blade"},{"Freight"},{"Streak"},
  56.     {"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},{"Firetruck LA"},{"Hustler"},{"Intruder"},
  57.     {"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},{"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},
  58.     {"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},{"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},
  59.     {"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},{"Bandito"},{"Freight Flat"},{"Streak Carriage"},
  60.     {"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},{"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},
  61.     {"Stafford"},{"BF-400"},{"Newsvan"},{"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},
  62.     {"Club"},{"Freight Carriage"},{"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},
  63.     {"Police Car (SFPD)"},{"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},
  64.     {"Phoenix"},{"shitGlendale"},{"shitSadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},
  65.     {"Boxville"},{"Farm Plow"},{"Utility Trailer"}
  66. };
  67. //------------------------------------------------------------------------------
  68. //=====FILTERSCRIPT=============================================================
  69. //------------------------------------------------------------------------------
  70. public OnFilterScriptInit()
  71. {
  72.     print("\n--------------------------------------");
  73.     print(" Coords-Saver by Rafelder");
  74.     print("--------------------------------------\n");
  75.     SendClientMessageToAdmins(COLOR_GOOD, "Tipe '/savehelp' to see the help menu.");
  76.     SendClientMessageToAdmins(COLOR_GOOD, "Coords-Saver loaded. Tipe '/savemode [1-9]' to select your savemode.");
  77.     SendClientMessageToAdmins(COLOR_GOOD, "You also can use '/savemodemenu' to select the savemode in the menu.");
  78.  
  79.     SelectMenu = Menu:CreateMenu("~w~Savemode Select", 1, 200, 150, 300);
  80.     SetMenuColumnHeader(SelectMenu, 0, "Select your savemode.");
  81.     AddMenuItem(SelectMenu, 0, " Playerclasses");
  82.     AddMenuItem(SelectMenu, 0, " Vehicles");
  83.     AddMenuItem(SelectMenu, 0, " Pickups");
  84.     AddMenuItem(SelectMenu, 0, " Explosion");
  85.     AddMenuItem(SelectMenu, 0, " PlayerCheckpoint");
  86.     AddMenuItem(SelectMenu, 0, " RaceCheckpoint");
  87.     AddMenuItem(SelectMenu, 0, " BlankCoords");
  88.     AddMenuItem(SelectMenu, 0, " Mapicon");
  89.     AddMenuItem(SelectMenu, 0, " TeleportCommand");
  90.     AddMenuItem(SelectMenu, 0, "=> Exit Menu");
  91.     return 1;
  92. }
  93.  
  94. public OnFilterScriptExit()
  95. {
  96.     SendClientMessageToAdmins(COLOR_GOOD, "Coords-Saver unloaded.");
  97.     new Menu:CheckMenu;
  98.     for(new i=0; i<MAX_PLAYERS; i++)
  99.     {
  100.         if(IsPlayerConnected(i))
  101.         {
  102.             CheckMenu = GetPlayerMenu(i);
  103.             if(CheckMenu == SelectMenu)
  104.             {
  105.                 HideMenuForPlayer(SelectMenu, i);
  106.                 TogglePlayerControllable(i, 1);
  107.             }
  108.         }
  109.     }
  110.     return 1;
  111. }
  112. //------------------------------------------------------------------------------
  113. //=====CMDS+TEXT================================================================
  114. //------------------------------------------------------------------------------
  115. public OnPlayerCommandText(playerid, cmdtext[])
  116. {
  117.     new cmd[256], idx;
  118.     cmd = strtok(cmdtext, idx);
  119.    
  120.     //Savehelp
  121.     if(!strcmp(cmd, "/savehelp", true))
  122.     {
  123.         SendClientMessage(playerid, COLOR_GOOD, ">> Save commands <<");
  124.         SendClientMessage(playerid, COLOR_GOOD, "Tipe '/savemode [1-9]' to change the savemode. (Also possible '/savemodemenu')");
  125.         SendClientMessage(playerid, COLOR_GOOD, "Tipe '/savepos' to save the coords in the actually savemodefile.");
  126.         SendClientMessage(playerid, COLOR_GOOD, "Tipe '/c [text]' to write something in the actually savemodefile.");
  127.         SendClientMessage(playerid, COLOR_GOOD, "Tipe '/del' to delete the last line in the actually savemodefile.");
  128.         SendClientMessage(playerid, COLOR_GOOD, ">> Settings commands <<");
  129.         SendClientMessage(playerid, COLOR_GOOD, "Tipe '/delay [seconds]' to change the respawn_delay in seconds (Vehicles).");
  130.         SendClientMessage(playerid, COLOR_GOOD, "Tipe '/vtype [AddStaticVehicle(Ex)/CreateVehicle]' to change the vehicletype.");
  131.         SendClientMessage(playerid, COLOR_GOOD, "Tipe '/ptype [AddStaticPickup/CreatePickup]' to change the pickuptype.");
  132.         SendClientMessage(playerid, COLOR_GOOD, "Tipe '/spawn [Modelid/Vehiclename]' to spawn a vehicle, '/setskin [Skinid]' to change your skin.");
  133.         return 1;
  134.     }
  135.    
  136.     //Savemode
  137.     if(!strcmp(cmd, "/savemode", true))
  138.     {
  139.         StrVar = strtok(cmdtext, idx);
  140.         if(!strlen(StrVar))
  141.         {
  142.             SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/savemode [1-9]'");
  143.             SendClientMessage(playerid, COLOR_BAD, "[1 = PlayerClass, 2 = Vehicle, 3 = Pickup, 4 = Explosion, 5 = PlayerCheckpoint,");
  144.             SendClientMessage(playerid, COLOR_BAD, "6 = RaceCheckpoint, 7 = Blank Coords, 8 = Mapicon, 9 = TeleportCMDS]");
  145.             return 1;
  146.         }
  147.         if((strval(StrVar) < MIN_SAVEMODES) || (strval(StrVar) > MAX_SAVEMODES))
  148.         {
  149.             SendClientMessage(playerid, COLOR_BAD, "[ERROR]: Savemode must between 1-9");
  150.             SendClientMessage(playerid, COLOR_BAD, "[1 = PlayerClass, 2 = Vehicle, 3 = Pickup, 4 = Explosion, 5 = PlayerCheckpoint,");
  151.             SendClientMessage(playerid, COLOR_BAD, "6 = RaceCheckpoint, 7 = Blank Coords, 8 = Mapicon, 9 = TeleportCMDS]");
  152.             return 1;
  153.         }
  154.         SaveMode = strval(StrVar);
  155.         format(StrVar, sizeof(StrVar), "Savemode %d activated.", SaveMode);
  156.         SendClientMessageToAdmins(COLOR_GOOD, StrVar);
  157.         SendClientMessageToAdmins(COLOR_GOOD, "[1 = PlayerClass, 2 = Vehicle, 3 = Pickup, 4 = Explosion, 5 = PlayerCheckpoint,");
  158.         SendClientMessageToAdmins(COLOR_GOOD, "6 = RaceCheckpoint, 7 = Blank Coords, 8 = Mapicon, 9 = TeleportCMDS]");
  159.         switch(SaveMode)
  160.         {
  161.             case 1..9: {
  162.                 format(SaveFile, sizeof(SaveFile), "%s", Files[SaveMode-1]);
  163.                 if(SaveMode == 2) SendClientMessage(playerid, COLOR_GOOD, "Change the respawn_delay: '/delay [seconds]'"), SendClientMessage(playerid, COLOR_GOOD, "Change the vehicle type: '/vtype [type]'");
  164.                 if(SaveMode == 3) SendClientMessage(playerid, COLOR_GOOD, "Change the pickup type: '/ptype [type]'");
  165.             }
  166.         }
  167.         return 1;
  168.     }
  169.    
  170.     //Savemodemenu
  171.     if(!strcmp(cmd, "/savemodemenu", true))
  172.     {
  173.         ShowMenuForPlayer(SelectMenu, playerid);
  174.         TogglePlayerControllable(playerid, 0);
  175.         return 1;
  176.     }
  177.    
  178.     //C
  179.     if(!strcmp(cmd, "/c", true))
  180.     {
  181.         if((!SaveMode) || (SaveMode < MIN_SAVEMODES) || (SaveMode > MAX_SAVEMODES)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: No '/savemode' activated!");
  182.         if(!strlen(cmdtext[3])) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/c [text]'");
  183.         WriteIntoFileEx("// %s", cmdtext[3]);
  184.         format(StrVar, sizeof(StrVar), "//%s", StrVar);
  185.         SendClientMessageToAdmins(COLOR_GOOD, StrVar);
  186.         return 1;
  187.     }
  188.    
  189.     //Del
  190.     if(!strcmp(cmd, "/del", true))
  191.     {
  192.         if((!SaveMode) || (SaveMode < MIN_SAVEMODES) || (SaveMode > MAX_SAVEMODES)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: No '/savemode' activated!");
  193.         switch(SaveMode)
  194.         {
  195.             case 1..8: DeleteLastLine(SaveFile), SendClientMessageToAdmins(COLOR_GOOD, "Last line deleted");
  196.             case 9:
  197.                 {
  198.                     for(new i=0; i<17; i++)
  199.                     {
  200.                         DeleteLastLine(SaveFile);
  201.                     }
  202.                     SendClientMessageToAdmins(COLOR_GOOD, "Last 17 lines deleted");
  203.                 }
  204.         }
  205.        
  206.         return 1;
  207.     }
  208.  
  209.     //Setskin
  210.     if(!strcmp(cmd, "/setskin", true))
  211.     {
  212.         StrVar = strtok(cmdtext, idx);
  213.         if (!strlen(StrVar)) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/setskin [Skinid]");
  214.         if ((strval(StrVar) < 0) || (strval(StrVar) > 299) || IsInvalidSkin(strval(StrVar))) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: Invalid Skinid");
  215.         SetPlayerSkin(playerid, strval(StrVar));
  216.         format(StrVar, sizeof(StrVar), "[SUCCESS]: Skin changed to skindid %d", GetPlayerSkin(playerid));
  217.         SendClientMessage(playerid, COLOR_GOOD, StrVar);
  218.         return 1;
  219.     }
  220.  
  221.     //Spawn
  222.     if(!strcmp(cmd, "/spawn", true))
  223.     {
  224.         new CarToSpawn, Car;
  225.         StrVar = strtok(cmdtext, idx);
  226.         if (!strlen(StrVar)) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/spawn [Modelid/Vehiclename]");
  227.         CarToSpawn = GetVehicleModelIDFromName(StrVar);
  228.         if(CarToSpawn == -1)
  229.         {
  230.             CarToSpawn = strval(StrVar);
  231.             if((CarToSpawn < 400) || (CarToSpawn > 611)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: Invalid Modelid/Vehiclename");
  232.         }
  233.         new Float:X, Float:Y, Float:Z, Float:A;
  234.         GetPlayerPos(playerid, X, Y, Z);
  235.         GetXYInFrontOfPlayer(playerid, X, Y, 5);
  236.         GetPlayerFacingAngle(playerid, A);
  237.         Car = CreateVehicle(CarToSpawn, X, Y, Z, A + 90.0, -1, -1, 120);
  238.         LinkVehicleToInterior(Car, GetPlayerInterior(playerid));
  239.         format(StrVar, sizeof(StrVar), "[SUCCESS]: Spawned a %s [Modelid: %d, Vehicleid: %d]", aVehicleNames[GetVehicleModel(Car)-400], GetVehicleModel(Car), Car);
  240.         SendClientMessage(playerid, COLOR_GOOD, StrVar);
  241.         return 1;
  242.     }
  243.    
  244.     //Delay
  245.     if(!strcmp(cmd, "/delay", true))
  246.     {
  247.         if(SaveMode != 2) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: '/savemode 2' isn't activated");
  248.         StrVar = strtok(cmdtext, idx);
  249.         if(!strlen(StrVar)) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/delay [seconds]'");
  250.         respawn_delay = strval(StrVar);
  251.         format(StrVar, sizeof(StrVar), "Repawn_delay changed to %d seconds.", strval(StrVar));
  252.         SendClientMessageToAdmins(COLOR_GOOD, StrVar);
  253.         return 1;
  254.     }
  255.    
  256.     //Vtype
  257.     if(!strcmp(cmd, "/vtype", true))
  258.     {
  259.         if(SaveMode != 2) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: '/savemode 2' isn't activated");
  260.         StrVar = strtok(cmdtext, idx);
  261.         if (!strlen(StrVar)) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/vtype [AddStaticVehicle(Ex)/CreateVehicle]'");
  262.         for(new i=0; i<=sizeof(Cartypestring); i++)
  263.         {
  264.             if(!strcmp(StrVar, Cartypestring[i], true))
  265.             {
  266.                 Cartype = i+1;
  267.                 format(StrVar, sizeof(StrVar), "Cartype changed to %s.", StrVar);
  268.                 SendClientMessageToAdmins(COLOR_GOOD, StrVar);
  269.                 return 1;
  270.             }
  271.             if(i == sizeof(Cartypestring)-1) SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/vtype [AddStaticVehicle(Ex)/CreateVehicle]'");
  272.         }
  273.         return 1;
  274.     }
  275.  
  276.     //Ptype
  277.     if(!strcmp(cmd, "/ptype", true))
  278.     {
  279.         if (SaveMode != 3) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: '/savemode 3' isn't activated");
  280.         StrVar = strtok(cmdtext, idx);
  281.         if (!strlen(StrVar)) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/ptype [AddStaticPickup/CreatePickup]'");
  282.         for(new i=0; i<sizeof(Pickuptypestring); i++)
  283.         {
  284.             if(!strcmp(StrVar, Pickuptypestring[i], true))
  285.             {
  286.                 Pickuptype = i+1;
  287.                 format(StrVar, sizeof(StrVar), "Pickuptype changed to %s.", StrVar);
  288.                 SendClientMessageToAdmins(COLOR_GOOD, StrVar);
  289.                 return 1;
  290.             }
  291.             if(i == sizeof(Pickuptypestring)-1) SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/ptype [AddStaticPickup/CreatePickup]'");
  292.         }
  293.         return 1;
  294.     }
  295.    
  296.     //Savepos
  297.     if(!strcmp(cmd, "/savepos", true))
  298.     {
  299.         if((!SaveMode) || (SaveMode < MIN_SAVEMODES) || (SaveMode > MAX_SAVEMODES)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: No '/savemode' activated!");
  300.         new Float:X, Float:Y, Float:Z, Float:A;
  301.         GetPlayerPos(playerid, X, Y, Z);
  302.         GetPlayerFacingAngle(playerid, A);
  303.         new string[256];
  304.         switch(SaveMode)
  305.         {
  306.             case 1:
  307.                 {
  308.                     if (IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: You have to be outside a vehicle!");
  309.                     new weapon1 = strval(strtok(cmdtext, idx));
  310.                     new ammu1 = strval(strtok(cmdtext, idx));
  311.                     new weapon2 = strval(strtok(cmdtext, idx));
  312.                     new ammu2 = strval(strtok(cmdtext, idx));
  313.                     new weapon3 = strval(strtok(cmdtext, idx));
  314.                     new ammu3 = strval(strtok(cmdtext, idx));
  315.                     if ((weapon1 < 0) || (weapon1 > 46) || (weapon2 < 0) || (weapon2 > 46) || (weapon2 < 0) || (weapon2 > 46)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: Invalid Weaponid. Usage weaponid 0-46.");
  316.                     if ((ammu1 < 0) || (ammu2 < 0) || (ammu3 <0)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: Invalid ammu. Use 0- unless ammu.");
  317.                     if (!weapon1 || !ammu1 || !weapon2 || !ammu2 || !weapon3 || !ammu3) SendClientMessage(playerid, COLOR_GOOD, "You also can use '/savepos [weapon1, ammu1, weapon2, ammu2, weapon3, ammu3]'");
  318.                     WriteIntoFileEx("AddPlayerClass(%d, %f, %f, %f, %f, %d, %d, %d, %d, %d, %d);", GetPlayerSkin(playerid), X, Y, Z, A, weapon1, ammu1, weapon2, ammu2, weapon3, ammu3);
  319.                     return 1;
  320.                 }
  321.             case 2:
  322.                 {
  323.                     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: You have to sit in a vehicle!");
  324.                     if (respawn_delay == 0) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: No '/delay' defined.");
  325.                     if (Cartype == 0) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: No '/vtype' defined.");
  326.                     new vehicleid = GetPlayerVehicleID(playerid);
  327.                     GetVehiclePos(vehicleid, X, Y, Z);
  328.                     GetVehicleZAngle(vehicleid, A);
  329.                     if(Cartype == 1 || Cartype == 3)
  330.                     {
  331.                         WriteIntoFileEx("%s(%d, %f, %f, %f, %f, -1, -1, %d);", Cartypestring[Cartype-1], GetVehicleModel(vehicleid), X, Y, Z, A, respawn_delay);
  332.                     }
  333.                     else
  334.                     {
  335.                         WriteIntoFileEx("%s(%d, %f, %f, %f, %f, -1, -1);", Cartypestring[Cartype-1], GetVehicleModel(vehicleid), X, Y, Z, A);
  336.                     }
  337.                     return 1;
  338.                 }
  339.             case 3:
  340.                 {
  341.                     if(Pickuptype == 0) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: No '/ptype' defined.");
  342.                     new modelid = strval(strtok(cmdtext,idx));
  343.                     new type = strval(strtok(cmdtext,idx));
  344.                     if (!modelid || !type) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/savepos [modelid][type]'");
  345.                     WriteIntoFileEx("%s(%d, %d, %f, %f, %f);", Pickuptypestring[Pickuptype-1], modelid, type, X, Y, Z);
  346.                     return 1;
  347.                 }
  348.             case 4:
  349.                 {
  350.                     new type = strval(strtok(cmdtext,idx));
  351.                     new radius = strval(strtok(cmdtext,idx));
  352.                     if (!type || !radius) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/savepos [type][radius]'");
  353.                     WriteIntoFileEx("CreateExplosion(%f, %f, %f, %d, %d);", X, Y, Z, type, radius);
  354.                     return 1;
  355.                 }
  356.             case 5:
  357.                 {
  358.                     new size = strval(strtok(cmdtext,idx));
  359.                     if(!size) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/savepos [size]'");
  360.                     WriteIntoFileEx("SetPlayerCheckpoint(playerid, %f, %f, %f, %d);", X, Y, Z, size);
  361.                     return 1;
  362.                 }
  363.             case 6:
  364.                 {
  365.                     new type = strval(strtok(cmdtext,idx));
  366.                     new size = strval(strtok(cmdtext,idx));
  367.                     if (!type || !size) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/savepos [type][size]'");
  368.                     WriteIntoFileEx("SetPlayerRaceCheckpoint(playerid, %d, %f, %f, %f, 0.0, 0.0, 0.0, %d);", type, X, Y, Z, size);
  369.                     return 1;
  370.                 }
  371.             case 7:
  372.                 {
  373.                     if(IsPlayerInAnyVehicle(playerid))
  374.                     {
  375.                         new vehicleid = GetPlayerVehicleID(playerid);
  376.                         GetVehiclePos(vehicleid, X, Y, Z);
  377.                         GetVehicleZAngle(vehicleid, A);
  378.                         WriteIntoFileEx("[Vehicle] [Coords: %f, %f, %f] [Angle: %f] [Interior: %d]", X, Y, Z, A, GetPlayerInterior(playerid));
  379.                     }
  380.                     else
  381.                     {
  382.                         WriteIntoFileEx("[Player] [Coords: %f, %f, %f] [Angle: %f] [Interior: %d]", X, Y, Z, A, GetPlayerInterior(playerid));
  383.                     }
  384.                     return 1;
  385.                 }
  386.             case 8:
  387.                 {
  388.                     new markertype = strval(strtok(cmdtext, idx));
  389.                     if (!markertype) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/savepos [Mapiconid]'");
  390.                     if ((markertype < 1) && (markertype > 63)) return SendClientMessage(playerid, COLOR_BAD, "[ERROR]: Invalid Mapiconid [1-63]");
  391.                     WriteIntoFileEx("SetPlayerMapIcon(playerid, \\*icnoid*\\, %f, %f, %f, %d, 0);", X, Y, Z, markertype);
  392.                     return 1;
  393.                 }
  394.             case 9:
  395.                 {
  396.                     new Float:Pos[2][4];
  397.                     new command[256], message[256];
  398.                     command = strtok(cmdtext, idx);
  399.                     message = strtok(cmdtext, idx);
  400.                     if ((!strlen(StrVar)) || (!strlen(message))) return SendClientMessage(playerid, COLOR_BAD, "[USAGE]: '/savepos [Command][Teleport message]'");
  401.                     if (IsPlayerInAnyVehicle(playerid))
  402.                     {
  403.                         GetVehiclePos(GetPlayerVehicleID(playerid), Pos[1][0], Pos[1][1], Pos[1][2]);
  404.                         GetVehicleZAngle(GetPlayerVehicleID(playerid), Pos[1][3]);
  405.                     }
  406.                     GetPlayerPos(playerid, Pos[0][0], Pos[0][1], Pos[0][2]);
  407.                     GetPlayerFacingAngle(playerid, Pos[0][3]);
  408.  
  409.                     WriteIntoFileExWithoutMsg("if(!strcmp(cmdtext, \"/%s\", true))", command);
  410.                     WriteIntoFile("{");
  411.                     WriteIntoFile("if(IsPlayerInAnyVehicle(playerid))");
  412.                     WriteIntoFile("{");
  413.                     WriteIntoFileExWithoutMsg("SetVehiclePos(GetPlayerVehicleID(playerid), %f, %f, %f);", Pos[IsPlayerInAnyVehicle(playerid)][0], Pos[IsPlayerInAnyVehicle(playerid)][1], Pos[IsPlayerInAnyVehicle(playerid)][2]);
  414.                     WriteIntoFileExWithoutMsg("SetVehicleZAngle(GetPlayerVehicleID(playerid), %f);", Pos[IsPlayerInAnyVehicle(playerid)][3]);
  415.                     WriteIntoFileExWithoutMsg("LinkVehicleToInterior(GetPlayerVehicleID(playerid), %d);", GetPlayerInterior(playerid));
  416.                     WriteIntoFile("}");
  417.                     WriteIntoFile("else");
  418.                     WriteIntoFile("{");
  419.                     WriteIntoFileExWithoutMsg("SetPlayerPos(playerid, %f, %f, %f);", Pos[0][0], Pos[0][1], Pos[0][2]);
  420.                     WriteIntoFileExWithoutMsg("SetPlayerFacingAngle(playerid, %f);", Pos[0][3]);
  421.                     WriteIntoFile("}");
  422.                     WriteIntoFileExWithoutMsg("SetPlayerInterior(playerid, %d);", GetPlayerInterior(playerid));
  423.                     WriteIntoFileExWithoutMsg("SendClientMessage(playerid, 0x000000FF, \"%s\");", cmdtext[9+strlen(command)]);
  424.                     WriteIntoFile("return 1;");
  425.                     WriteIntoFile("}");
  426.  
  427.                     format(string, sizeof(string), "Command \"/%s\" created with Teleportmessage \"%s\".", command, cmdtext[9+strlen(command)]);
  428.                     SendClientMessageToAdmins(COLOR_GOOD, string);
  429.                     return 1;
  430.                 }
  431.         }
  432.         return 1;
  433.     }
  434.     return 0;
  435. }
  436. //------------------------------------------------------------------------------
  437. //=====MENUS====================================================================
  438. //------------------------------------------------------------------------------
  439. public OnPlayerSelectedMenuRow(playerid, row)
  440. {
  441.     if(GetPlayerMenu(playerid) == SelectMenu)
  442.     {
  443.         TogglePlayerControllable(playerid, 0);
  444.         switch(row)
  445.         {
  446.             case 0..8: {
  447.                 format(SaveFile, sizeof(SaveFile), "%s", Files[row]);
  448.                 SaveMode = row+1;
  449.                 new string[256];
  450.                 format(string, 256, "Savemode %d activated.", SaveMode);
  451.                 SendClientMessageToAdmins(COLOR_GOOD, string);
  452.                 SendClientMessageToAdmins(COLOR_GOOD, "[1 = PlayerClass, 2 = Vehicle, 3 = Pickup, 4 = Explosion, 5 = PlayerCheckpoint,");
  453.                 SendClientMessageToAdmins(COLOR_GOOD, "6 = RaceCheckpoint, 7 = Blank Coords, 8 = Mapicon, 9 = TeleportCMDS]");
  454.                 if(row == 1) SendClientMessage(playerid, COLOR_GOOD, "Change the respawn_delay: '/delay [seconds]'"), SendClientMessage(playerid, COLOR_GOOD, "Change the vehicle type: '/vtype [type]'");
  455.                 if(row == 2) SendClientMessage(playerid, COLOR_GOOD, "Change the pickup type: '/ptype [type]'");
  456.             }
  457.             case 9: HideMenuForPlayer(SelectMenu, playerid);
  458.         }
  459.         TogglePlayerControllable(playerid, 1);
  460.     }
  461.     return 1;
  462. }
  463. public OnPlayerExitedMenu(playerid)
  464. {
  465.     TogglePlayerControllable(playerid, 1);
  466.     return 1;
  467. }
  468. //------------------------------------------------------------------------------
  469. //=====STRTOK===================================================================
  470. //------------------------------------------------------------------------------
  471. strtok(const string[], &index)
  472. {
  473.     new length = strlen(string);
  474.     while ((index < length) && (string[index] <= ' ')) {
  475.         index++;
  476.     }
  477.     new offset = index;
  478.     new result[20];
  479.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) {
  480.         result[index - offset] = string[index];
  481.         index++;
  482.     }
  483.     result[index - offset] = EOS;
  484.     return result;
  485. }
  486. //------------------------------------------------------------------------------
  487. //=====STOCK====================================================================
  488. //------------------------------------------------------------------------------
  489. stock PlayerName(playerid)
  490. {
  491.     new name[MAX_PLAYER_NAME];
  492.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  493.     return name;
  494. }
  495.  
  496. stock GetXYInFrontOfPlayer(playerid, &Float:X, &Float:Y, Float:distance)
  497. {
  498.     new Float:A;
  499.     GetPlayerPos(playerid, X, Y, A);
  500.     GetPlayerFacingAngle(playerid, A);
  501.     if (GetPlayerVehicleID(playerid)) {
  502.         GetVehicleZAngle(GetPlayerVehicleID(playerid), A);
  503.     }
  504.     X += (distance * floatsin(-A, degrees));
  505.     Y += (distance * floatcos(-A, degrees));
  506. }
  507.  
  508. stock GetVehicleModelIDFromName(vname[])
  509. {
  510.     for(new i=0; i<211; i++)
  511.     {
  512.         if(strfind(aVehicleNames[i], vname, true) != -1)
  513.         {
  514.             return i+400;
  515.         }
  516.     }
  517.     return -1;
  518. }
  519.  
  520. stock IsInvalidSkin(skinid)
  521. {
  522.     new InSkin[] = {0, 3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208,  273, 289};
  523.     for (new i=0; i<sizeof(InSkin); i++) if(skinid == InSkin[i]) return 1;
  524.     return 0;
  525. }
  526.  
  527. stock SendClientMessageToAdmins(color, message[])
  528. {
  529.     for(new i=0; i<MAX_PLAYERS; i++)
  530.     {
  531.         if(IsPlayerConnected(i) && IsPlayerAdmin(i))
  532.         {
  533.             SendClientMessage(i, color, message);
  534.         }
  535.     }
  536. }
  537.  
  538. stock WriteIntoFile(text[])
  539. {
  540.     new File:handle = fopen(SaveFile, io_append), string[256];
  541.     if(handle)
  542.     {
  543.         format(string, sizeof(string), "%s\r\n", text);
  544.         fwrite(handle, string);
  545.         fclose(handle);
  546.     }
  547. }
  548.  
  549. stock DeleteLastLine(file[])
  550. {
  551.     new File:handle = fopen(file, io_readwrite), string[256], string2[256];
  552.     if(handle)
  553.     {
  554.         new File:handle2 = fopen("tmp.txt", io_readwrite);
  555.         while (fread(handle, string))
  556.         {
  557.             if(string2[0]) fwrite(handle2, string2);
  558.             string2 = string;
  559.         }
  560.         fclose(handle);
  561.         fclose(handle2);
  562.         handle = fopen(file, io_write);
  563.         handle2 = fopen("tmp.txt", io_read);
  564.         while (fread(handle2, string))
  565.         {
  566.             fwrite(handle, string);
  567.         }
  568.         fclose(handle);
  569.         fclose(handle2);
  570.         fremove("tmp.txt");
  571.     }
  572. }
  573.  
  574.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement