Advertisement
Guest User

Untitled

a guest
Oct 14th, 2011
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 15.25 KB | None | 0 0
  1. /*
  2.             *=======================================================================*
  3.         *                                                                               *
  4.     *                                                                                       *                                                                                          
  5. *               Basic 'TDM' created by Grant, just a learning curve, don't hate.                *
  6.     *                                                                                       *
  7.         *                                                                               *
  8.             *=======================================================================*
  9. */
  10. /*
  11. ============================================
  12.                 INCLUDES
  13. ============================================
  14. */
  15. #include <a_samp>
  16. #include <dini>
  17. #include <dudb>
  18. #include <sscanf2>
  19. #include <zcmd>
  20.  
  21. #pragma unused ret_memcpy
  22.  
  23. /*
  24. ============================================
  25.                 DEFINES
  26. ============================================
  27. */
  28.  
  29. #define COLOR_GREEN         0x33AA33AA
  30. #define COLOR_RED           0xAA3333AA
  31. #define COLOR_YELLOW        0xFFFF00AA
  32. #define COLOR_ORANGE        0xEE9911FF
  33. #define COLOR_WHITE         0xFFFFFFAA
  34. #define COLOR_BLUE          0x0000BBAA
  35. #define COLOR_LIGHTBLUE     0x33CCFFAA
  36.  
  37. #define DIALOG_REGISTER     0
  38. #define DIALOG_LOGIN        1
  39. #define GUN                 1001   
  40.  
  41. #define DEVELOPER   "Grantism"
  42. #define VERSION     "1.0.A"
  43.  
  44. /*
  45. ============================================
  46.                 ENUMS/PLAYER DATA
  47. ============================================
  48. */
  49.  
  50. new logged[MAX_PLAYERS];
  51. new ClassID[MAX_PLAYERS];
  52.  
  53.  
  54. enum pInfo
  55. {
  56.     AdminLevel,
  57.     VLevel,
  58.     cash,
  59.     score,
  60. }
  61. new PlayerInfo[MAX_PLAYERS][pInfo];
  62.  
  63. //forward SkipSpawn(playerid);  
  64.  
  65. /*
  66. ============================================
  67.                 STOCKS
  68. ============================================
  69. */
  70. stock LoadPlayer(playerid)
  71. {
  72.     new name[MAX_PLAYER_NAME];
  73.     new file[128];
  74.     GetPlayerName(playerid, name, sizeof(name));
  75.     format(file,sizeof(file),"/Users/%s.ini",name);
  76.     if(!fexist(file))
  77.     {
  78.     ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register", "Enter your desired password to register.", "Register", "");
  79.     logged[playerid] = 0;
  80.     }
  81.     if(fexist(file))
  82.     {
  83.     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Enter your password to login.", "Register", "");
  84.  
  85.     }
  86.     return 1;
  87.  
  88. }
  89.  
  90. stock SavePlayer(playerid)
  91. {
  92.     new file[128];
  93.     new name[MAX_PLAYER_NAME];
  94.     GetPlayerName(playerid, name, sizeof(name));
  95.     format(file,sizeof(file),"/Users/%s.ini",name);
  96.     if(dini_Exists(file))
  97.     {
  98.         dini_IntSet(file, "VLevel", PlayerInfo[playerid][VLevel]);
  99.         dini_IntSet(file, "score", PlayerInfo[playerid][score]);
  100.         dini_IntSet(file, "money", PlayerInfo[playerid][cash]);
  101.         dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][AdminLevel]);
  102.     }
  103.     logged[playerid] = 0;
  104. }
  105.  
  106. stock GetName(playerid)
  107. {
  108.     new Name[MAX_PLAYER_NAME];
  109.  
  110.     if(IsPlayerConnected(playerid))
  111.     {
  112.         GetPlayerName(playerid, Name, sizeof(Name));
  113.     }
  114.     else
  115.     {
  116.         Name = "Disconnected/Nothing";
  117.     }
  118.  
  119.     return Name;
  120. }
  121.  
  122. /*
  123. ============================================
  124.                 BEGIN SCRIPT
  125. ============================================
  126. */
  127. main()
  128. {
  129.     printf("================================================================================");
  130.     printf("                SCRIPT LOADING...");
  131.     printf("================================================================================");
  132.     printf("    TDM SCRIPT BY: %s, Has completed its loading period. ENJOY!", DEVELOPER);
  133.     printf("    TDM SCRIPT VERSION: %s.", VERSION);
  134.     printf("================================================================================");
  135.     printf("                SCRIPT LOADED!");
  136.     printf("================================================================================");
  137.    
  138.    
  139.  
  140. }
  141.  
  142. public OnGameModeInit()
  143. {
  144.     // Don't use these lines if it's a filterscript
  145.     SetGameModeText("TDM:1.0.a");
  146.     AddPlayerClass(294, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  147.     AddPlayerClass(166, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  148.     ShowPlayerMarkers(1);
  149.     ShowNameTags(1);
  150.     UsePlayerPedAnims();
  151.     EnableStuntBonusForAll(1);
  152.     return 1;
  153.    
  154. }
  155.  
  156. public OnGameModeExit()
  157. {
  158.     return 1;
  159. }
  160.  
  161.  
  162. public OnPlayerRequestClass(playerid, classid)
  163. {
  164.     if(logged[playerid] == 1)
  165.     {
  166.         SetPlayerPos(playerid,-1753.6743,885.2703,295.8750);
  167.         SetPlayerCameraPos(playerid,-1753.6849,892.0016,295.8750);
  168.         SetPlayerCameraLookAt(playerid,-1753.6743,885.2703,295.8750);
  169.         SetPlayerFacingAngle(playerid,0.6323);
  170.         //SetTimerEx("SkipSpawn",0,0,"i",playerid);
  171.         ClassID[playerid] = classid;
  172.         switch(classid)
  173.         {
  174.             case 0: GameTextForPlayer(playerid,"SKIN: 294",3000,4);
  175.             case 1: GameTextForPlayer(playerid,"SKIN: 166",3000,4);
  176.         }
  177.         return 1;
  178.     }
  179.     return 0;
  180. }  
  181.  
  182.  
  183. public OnPlayerConnect(playerid)
  184. {
  185.     LoadPlayer(playerid);
  186. }
  187.  
  188. public OnPlayerDisconnect(playerid, reason)
  189. {
  190.     SavePlayer(playerid);
  191.     return 1;
  192. }
  193.  
  194. public OnPlayerSpawn(playerid)
  195. {
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerDeath(playerid, killerid, reason)
  200. {
  201.     return 1;
  202. }
  203.  
  204. public OnVehicleSpawn(vehicleid)
  205. {
  206.     return 1;
  207. }
  208.  
  209. public OnVehicleDeath(vehicleid, killerid)
  210. {
  211.     return 1;
  212. }
  213.  
  214. public OnPlayerText(playerid, text[])
  215. {
  216.     return 1;
  217. }
  218.  
  219. public OnPlayerCommandText(playerid, cmdtext[])
  220. {
  221.     if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  222.     {
  223.         // Do something here
  224.         return 1;
  225.     }
  226.     return 0;
  227. }
  228.  
  229. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  230. {
  231.     return 1;
  232. }
  233.  
  234. public OnPlayerExitVehicle(playerid, vehicleid)
  235. {
  236.     return 1;
  237. }
  238.  
  239. public OnPlayerStateChange(playerid, newstate, oldstate)
  240. {
  241.     return 1;
  242. }
  243.  
  244. public OnPlayerEnterCheckpoint(playerid)
  245. {
  246.     return 1;
  247. }
  248.  
  249. public OnPlayerLeaveCheckpoint(playerid)
  250. {
  251.     return 1;
  252. }
  253.  
  254. public OnPlayerEnterRaceCheckpoint(playerid)
  255. {
  256.     return 1;
  257. }
  258.  
  259. public OnPlayerLeaveRaceCheckpoint(playerid)
  260. {
  261.     return 1;
  262. }
  263.  
  264. public OnRconCommand(cmd[])
  265. {
  266.     return 1;
  267. }
  268.  
  269. public OnPlayerRequestSpawn(playerid)
  270. {
  271.     return 1;
  272. }
  273.  
  274. public OnObjectMoved(objectid)
  275. {
  276.     return 1;
  277. }
  278.  
  279. public OnPlayerObjectMoved(playerid, objectid)
  280. {
  281.     return 1;
  282. }
  283.  
  284. public OnPlayerPickUpPickup(playerid, pickupid)
  285. {
  286.     return 1;
  287. }
  288.  
  289. public OnVehicleMod(playerid, vehicleid, componentid)
  290. {
  291.     return 1;
  292. }
  293.  
  294. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  295. {
  296.     return 1;
  297. }
  298.  
  299. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  300. {
  301.     return 1;
  302. }
  303.  
  304. public OnPlayerSelectedMenuRow(playerid, row)
  305. {
  306.     return 1;
  307. }
  308.  
  309. public OnPlayerExitedMenu(playerid)
  310. {
  311.     return 1;
  312. }
  313.  
  314. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  315. {
  316.     return 1;
  317. }
  318.  
  319. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  320. {
  321.     return 1;
  322. }
  323.  
  324. public OnRconLoginAttempt(ip[], password[], success)
  325. {
  326.     return 1;
  327. }
  328.  
  329. public OnPlayerUpdate(playerid)
  330. {
  331.     return 1;
  332. }
  333.  
  334. public OnPlayerStreamIn(playerid, forplayerid)
  335. {
  336.     return 1;
  337. }
  338.  
  339. public OnPlayerStreamOut(playerid, forplayerid)
  340. {
  341.     return 1;
  342. }
  343.  
  344. public OnVehicleStreamIn(vehicleid, forplayerid)
  345. {
  346.     return 1;
  347. }
  348.  
  349. public OnVehicleStreamOut(vehicleid, forplayerid)
  350. {
  351.     return 1;
  352. }
  353.  
  354. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  355. {
  356.     switch(dialogid)
  357.     {
  358.    
  359.     case    DIALOG_REGISTER:
  360.     {
  361.         new file[128], pname[MAX_PLAYER_NAME];
  362.         GetPlayerName(playerid, pname, sizeof(pname));
  363.         format(file, sizeof(file), "\\Users\\%s.ini", pname);
  364.         new size;
  365.         size = (strlen(inputtext));
  366.         if(size <= 4) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register", "Enter your desired password to register. Must be more the 4 characters.", "Register", "");
  367.         if(dini_Exists(file)) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Enter your password to login.", "Register", "");
  368.         dini_Create(file);
  369.         dini_IntSet(file, "hashPW", udb_hash(inputtext));
  370.         dini_Set(file, "password", inputtext);
  371.         dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][AdminLevel] = 0);
  372.         dini_IntSet(file, "VLevel", PlayerInfo[playerid][VLevel] = 0);
  373.         dini_IntSet(file, "score", PlayerInfo[playerid][score] = 0);
  374.         dini_IntSet(file, "money", PlayerInfo[playerid][cash] = 500);
  375.         new string[128];
  376.         format(string, 128, "You succesfully registered the username %s with password %s", pname, inputtext);
  377.         SendClientMessage(playerid, COLOR_YELLOW, string);
  378.         logged[playerid] = 1;
  379.         SendClientMessage(playerid, COLOR_YELLOW, "You have been automatically logged in!");
  380.     }
  381.     case    DIALOG_LOGIN:
  382.     {
  383.         new file[128];
  384.         new string[MAX_STRING], pname[MAX_PLAYER_NAME];
  385.         GetPlayerName(playerid, pname, sizeof(pname));
  386.         format(file, sizeof(file), "\\Users\\%s.ini", pname);
  387.         new size;
  388.         size = (strlen(inputtext));
  389.         if(size <= 4) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Invalid Password, Try again.", "Register", "");
  390.         if(!dini_Exists(file)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register", "Enter your desired password to register.", "Register", "");
  391.         if(logged[playerid]) return SendClientMessage(playerid, COLOR_RED, "ERROR: You are already logged in!");
  392.         new tmp;
  393.         tmp = dini_Int(file, "hashPW");
  394.         if(udb_hash(inputtext) != tmp)
  395.         {
  396.             format(string, 256, "You specified the wrong password for %s!", pname);
  397.             SendClientMessage(playerid, COLOR_RED, string);
  398.             ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Enter your password to login.", "Register", "");
  399.         }
  400.         else
  401.         {
  402.             logged[playerid] = 1;
  403.             PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel");
  404.             PlayerInfo[playerid][VLevel] = dini_Int(file, "VLevel");
  405.             SetPlayerScore(playerid, PlayerInfo[playerid][score]);
  406.             new lebel = PlayerInfo[playerid][AdminLevel];
  407.             new vlvl = PlayerInfo[playerid][VLevel];
  408.             GivePlayerMoney(playerid, dini_Int(file, "money")-GetPlayerMoney(playerid));
  409.             format(string, 256, "[Successfully logged in! (Admin level: %d, VIP Level: %i)!", lebel,vlvl);
  410.             SendClientMessage(playerid,COLOR_GREEN, string);
  411.             printf("%s (%i) logged in with password %s", pname, playerid, inputtext);
  412.         }
  413.    
  414.     }
  415.    
  416.     case    GUN:
  417.         {
  418.             switch(listitem)
  419.             {
  420.                 case 0:
  421.                 {
  422.                     GivePlayerWeapon(playerid, 4, 1);
  423.                     SendClientMessage(playerid, COLOR_YELLOW, "You have just recieved a knife!");
  424.                 }
  425.                 case 1:
  426.                 {
  427.                     GivePlayerWeapon(playerid, 9, 1);
  428.                     SendClientMessage(playerid, COLOR_YELLOW, "You have just recieved a Chainsaw!");
  429.                 }
  430.                 case 2:
  431.                 {
  432.                     GivePlayerWeapon(playerid, 24, 500);
  433.                     SendClientMessage(playerid, COLOR_YELLOW, "You have just recieved a Desert Eagle!");
  434.                 }
  435.                 case 3:
  436.                 {
  437.                     GivePlayerWeapon(playerid, 29, 500);
  438.                     SendClientMessage(playerid, COLOR_YELLOW, "You have just recieved a MP5!");
  439.                 }
  440.                 case 4:
  441.                 {
  442.                     GivePlayerWeapon(playerid, 31, 500);
  443.                     SendClientMessage(playerid, COLOR_YELLOW, "You have just recieved a m4!");
  444.                 }
  445.                 case 5:
  446.                 {
  447.                     GivePlayerWeapon(playerid, 34, 500);
  448.                     SendClientMessage(playerid, COLOR_YELLOW, "You have just recieved a Sniper Rifle!");
  449.                 }
  450.                 case 6:
  451.                 {
  452.                     GivePlayerWeapon(playerid, 37, 500);
  453.                     SendClientMessage(playerid, COLOR_YELLOW, "You have just recieved a Flamethrower!");
  454.                 }
  455.                 case 7:
  456.                 {
  457.                     if(PlayerInfo[playerid][VLevel] >= 2)
  458.                     {
  459.                         GivePlayerWeapon(playerid, 38, 10000);
  460.                         SendClientMessage(playerid, COLOR_GREEN, "Thank you for being a Donater, in return you have a MINIGUN!");
  461.                     }
  462.                     else if(PlayerInfo[playerid][VLevel] == 0)
  463.                     {
  464.                     SendClientMessage(playerid, COLOR_RED, "You aren't a donater! Feel free to donate though!");
  465.                     }
  466.                 }
  467.             }
  468.            
  469.            
  470.             return 1;
  471.         }
  472.     }
  473.     return 1;
  474. }
  475.  
  476. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  477. {
  478.     return 1;
  479. }
  480.  
  481. COMMAND:setadmin(playerid, params[])
  482. {
  483.     if(IsPlayerAdmin(playerid))
  484.     {
  485.         new userid, level;
  486.         new string[MAX_STRING];
  487.         if(!sscanf(params, "ui", userid, level))
  488.         {
  489.             PlayerInfo[userid][AdminLevel] = level;
  490.             SendClientMessage(playerid, COLOR_WHITE, "You have changed the admin level of this player");
  491.             format(string, sizeof(string), "Your admin level has been set to: %i", level);
  492.             SendClientMessage(userid, COLOR_GREEN, string);
  493.         }else{
  494.             SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /setadmin [userid] [level]");
  495.         }
  496.     }else{
  497.         SendClientMessage(playerid, COLOR_RED, "Error, you must be RCON admin for this!");
  498.     }
  499.     return 1;
  500. }
  501.  
  502. COMMAND:setvip(playerid, params[])
  503. {
  504.     if(PlayerInfo[playerid][AdminLevel] >= 3)
  505.     {
  506.         new userid, level;
  507.         new string[MAX_STRING];
  508.         if(!sscanf(params, "ui", userid, level))
  509.         {
  510.             PlayerInfo[userid][VLevel] = level;
  511.             SendClientMessage(playerid, COLOR_WHITE, "You have changed the VIP level of this player");
  512.             format(string, sizeof(string), "Your VIP level has been set to: %i", level);
  513.             SendClientMessage(userid, COLOR_GREEN, string);
  514.         }else{
  515.             SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /setvip [userid] [level]");
  516.         }
  517.     }else{
  518.         SendClientMessage(playerid, COLOR_RED, "Error, you can't execute this command!");
  519.     }
  520.     return 1;
  521. }
  522.  
  523.  
  524.  
  525. COMMAND:gunlist(playerid, params[])
  526. {
  527.     ShowPlayerDialog(playerid, GUN, DIALOG_STYLE_LIST, "Guns! By Grant!", "Knife\r\nChainsaw\r\nDesert Eagle\r\nMP5\r\nm4\r\nSniper\r\nFlamethrower", "SELECT", "");
  528.     return 1;
  529. }
  530.  
  531. CMD:a(playerid,params[]){
  532.     new string[128],message;
  533.     if(PlayerInfo[playerid][AdminLevel] < 1) return SendClientMessage(playerid,COLOR_RED,"You can't use this command!");
  534.     else if(sscanf(params,"s",message)) return SendClientMessage(playerid,COLOR_YELLOW,"Syntax: /a [message]");
  535.     else
  536.     for(new i = 0; i < MAX_PLAYERS; i++)
  537.     {
  538.        
  539.         if(PlayerInfo[i][AdminLevel] < 1) return 0;
  540.         format(string,sizeof(string),"[ADMIN:(%i)]%s: %s", PlayerInfo[i][AdminLevel], GetName(playerid),message);
  541.         SendClientMessage(i,COLOR_LIGHTBLUE,string);
  542.         return 1;
  543.     }
  544.     return 1;
  545. }
  546.  
  547. CMD:v(playerid,params[]){
  548.     new string[128],message;
  549.     if(PlayerInfo[playerid][VLevel] < 1) return SendClientMessage(playerid,COLOR_RED,"You can't use this command!");
  550.     else if(sscanf(params,"s",message)) return SendClientMessage(playerid,COLOR_YELLOW,"Syntax: /v [message]");
  551.     else
  552.     for(new i = 0; i < MAX_PLAYERS; i++)
  553.     {
  554.        
  555.         if(PlayerInfo[i][VLevel] < 1) return 0;
  556.         format(string,sizeof(string),"[VIP:(%i)]%s: %s", PlayerInfo[i][VLevel], GetName(playerid),message);
  557.         SendClientMessage(i,COLOR_ORANGE,string);
  558.         return 1;
  559.     }
  560.     return 1;
  561. }
  562. CMD:help(playerid,params[])
  563. {
  564.     SendClientMessage(playerid, COLOR_YELLOW, "/gunlist - shows a gun dialog /help - displays this information");
  565.     if(PlayerInfo[playerid][VLevel] >= 1)
  566.     {
  567.         SendClientMessage(playerid, COLOR_ORANGE, "/v [message] - for vip's only");
  568.     }
  569.     if(PlayerInfo[playerid][VLevel] >= 2)
  570.     {
  571.         SendClientMessage(playerid, COLOR_ORANGE, "/vipgunlist - gives you minigun rights!");
  572.     }
  573.     if(PlayerInfo[playerid][AdminLevel] >=1)
  574.     {
  575.         SendClientMessage(playerid, COLOR_LIGHTBLUE, "/a [message] - for admins only");
  576.     }
  577.     if(PlayerInfo[playerid][AdminLevel] >=3)
  578.     {
  579.         SendClientMessage(playerid, COLOR_LIGHTBLUE, "/setvip [userid] [level] - sets the vip level of a player admins only");
  580.         SendClientMessage(playerid, COLOR_LIGHTBLUE, "/setadmin [userid] [level] - sets the admin level, RCON ONLY");
  581.     }
  582.     return 1;
  583. }
  584.  
  585. CMD:vipgunlist(playerid,params[])
  586. {
  587.     if(PlayerInfo[playerid][VLevel] >= 2)
  588.     {
  589.         ShowPlayerDialog(playerid, GUN, DIALOG_STYLE_LIST, "Guns! By Grant!", "Knife\r\nChainsaw\r\nDesert Eagle\r\nMP5\r\nm4\r\nSniper\r\nFlamethrower\r\nMinigun", "SELECT", "");
  590.     }
  591.     if(PlayerInfo[playerid][VLevel] < 2)
  592.     {
  593.         SendClientMessage(playerid, COLOR_RED, "You don't have the correct VIP level for this");
  594.     }
  595.     return 1;
  596. }
  597.  
  598.  
  599.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement