Advertisement
killerking

DWAR v1.1

Aug 4th, 2012
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.97 KB | None | 0 0
  1. /* ==============================
  2. * DWAR v1.1 *
  3. * Creater:Devil *
  4. * Category: Team Death Match *
  5. * Copyright(C) 2011-2012 *
  6. ===============================
  7.  
  8. ##################
  9. ## Bugs ##
  10. ##################
  11. *v1.0
  12. -Class Selection bug.
  13. ###################
  14. ## ChangeLog ##
  15. ###################
  16. *1.1
  17. - Added Admin Commands: /acmd, /setadmin, /kick, /ban.
  18. -Added maximum admin level to 5.
  19. -Class Selection bug fixed.
  20. *1.0
  21. - GameMode Release.
  22. - Added 4 gangs:Grove Street, Ballas, Vagos, Azetecas.
  23. - Added few cmds.
  24. - Added Login/Register System.
  25. - Added score system.
  26. - Added Player Data Saving System.
  27. ------------------------------------------------------
  28. ------------------------------------------------------'
  29. */
  30.  
  31.  
  32. #include <a_samp>
  33. #include <YSI\y_ini>
  34. #include <zcmd>
  35. #include <sscanf2>
  36.  
  37. native WP_Hash(buffer[],len,const str[]);
  38.  
  39. //==== SERVER FILES========
  40. #define SERVER_USER_FILES "/Users/%s.ini"
  41. #define LOGIN 5
  42. #define REGISTER 6
  43. #define Version "1.0"
  44. //==========================
  45. //==== COLOURS=============
  46. #define COLOR_WHITE 0xFFFFFFFF
  47. #define COLOR_GREEN 0x33AA33AA
  48. #define COLOR_RED 0xA10000AA
  49. #define COLOR_YELLOW 0xFFFF00AA
  50. #define COLOR_GREY 0xAFAFAFAA
  51. #define LIME 0x88AA62FF
  52. #define WHITE 0xFFFFFFAA
  53. #define RULE 0xFBDF89AA
  54. #define ORANGE 0xDB881AAA
  55. #define GOLD 0xB8860BAA
  56.  
  57. #define GREY 0xAFAFAFAA
  58. #define GREEN 0x9FFF00FF
  59. #define RED 0xA10000AA
  60. #define YELLOW 0xFFFF00AA
  61. #define WHITE 0xFFFFFFAA
  62. #define BLUE 0x0000BBAA
  63. //============================
  64. //===== GANGS =============
  65. #define TEAM_GROVE 1
  66. #define TEAM_BALLAS 2
  67. #define TEAM_VAGOS 3
  68. #define TEAM_AZETECAS 4
  69. //========================
  70. new TeamSkins[4][3] = {
  71. {105, 106, 107},//Grove Street
  72. {102,104,103},//Ballas
  73. {108,109,110},//VAGOS
  74. {114,115,116}//Azetecas
  75. };
  76.  
  77. enum PInfo
  78. {
  79. alevel,
  80. vlevel,
  81. kills,
  82. deaths,
  83. money,
  84. score,
  85. pass
  86. };
  87. new PlayerInfo[MAX_PLAYERS][PInfo];
  88. //===== SHOPS =============
  89. #define WEAPONS
  90. //=========================
  91. main()
  92. {
  93. print("\n----------------------------------");
  94. print(" DWAR v1.1 by Devil[]");
  95. print("----------------------------------\n");
  96. }
  97.  
  98.  
  99.  
  100. public OnGameModeInit()
  101. {
  102. SetGameModeText("DWAR v1.1");
  103.  
  104. //Grove Street
  105. AddPlayerClass(105, 2495.4626,-1687.1388,13.5157,359.6642, 4, 1, 23, 85, 27, 100);
  106. AddPlayerClass(106, 2495.4626,-1687.1388,13.5157,359.6642, 4, 1, 24, 85, 25, 100);
  107. AddPlayerClass(107, 2495.4626,-1687.1388,13.5157,359.6642, 4, 1, 24, 85, 29, 100);
  108. AddStaticVehicle(412,2498.3982,-1683.6530,13.4790,287.8601,16,1); // grocar1 Voodo
  109. AddStaticVehicle(451,2510.1709,-1670.5969,13.5032,346.5737,16,1); // grocar2 Turismo
  110. AddStaticVehicle(466,2472.7952,-1697.1896,13.6087,180.4140,16,1); // gro3 Glendale
  111. AddStaticVehicle(492,2443.0625,-1644.9572,13.5635,180.5405,16,1); // grocar4 GreenWood
  112. AddStaticVehicle(536,2469.0442,-1653.4147,13.4926,267.8338,16,1); // grocar5 Blade
  113. AddStaticVehicle(560,2485.8743,-1653.5474,13.4882,267.6175,16,1); // grovcar6 Sultan
  114. //Ballas
  115. AddPlayerClass(102, 1934.0304,-1122.1691,26.3168,180.4718, 4, 1, 23, 85, 27, 100);
  116. AddPlayerClass(103, 1934.0304,-1122.1691,26.3168,180.4718, 4, 1, 24, 85, 25, 100);
  117. AddPlayerClass(104, 1934.0304,-1122.1691,26.3168,180.4718, 4, 1, 24, 85, 29, 100);
  118. AddStaticVehicle(477,1938.7206,-1130.7858,25.4542,271.2517,148,1); // balcar1 ZR-350
  119. AddStaticVehicle(517,1947.2368,-1130.7203,25.6692,270.9459,148,1); // balcar2 Majestic
  120. AddStaticVehicle(518,1910.9399,-1119.3951,25.8749,181.8393,148,1); // balcar3 Buccaner
  121. AddStaticVehicle(536,1931.8234,-1140.6108,25.2823,273.1115,148,1); // balcar5 Blade
  122. AddStaticVehicle(560,1946.8193,-1140.5719,25.6580,269.6075,148,1); // baclcar6 Sultan
  123. //Vagos
  124. AddPlayerClass(108, 2230.7905,-1159.8066,25.8240,91.0087, 4, 1, 24, 85, 29, 100);
  125. AddPlayerClass(109, 2230.7905,-1159.8066,25.8240,91.0087, 4, 1, 24, 85, 25, 100);
  126. AddPlayerClass(104, 2230.7905,-1159.8066,25.8240,91.0087, 4, 1, 24, 85, 29, 100);
  127. AddStaticVehicle(467,2227.9126,-1170.1207,25.8273,272.5895,6,1); // vagcar 1 Ocenic
  128. AddStaticVehicle(474,2228.3176,-1173.4786,25.8213,272.6245,6,1); // vagcar2 Herms
  129. AddStaticVehicle(536,2228.5515,-1177.1879,25.8190,273.8722,6,1); // vag car3 Blade
  130. AddStaticVehicle(541,2227.1460,-1166.1656,25.8336,276.1591,6,1); // vagcar 4 Blade
  131. AddStaticVehicle(560,2217.3081,-1170.3677,25.8189,267.4512,6,1); // vagcar5 Sultan
  132. AddStaticVehicle(562,2216.3352,-1166.5425,25.8190,266.1354,6,1); // vagcar 6 Elegly
  133. //Azerecas
  134. AddPlayerClass(114, 1804.1315,-2124.2673,13.9424,1.8982, 4, 1, 24, 85, 29, 100);
  135. AddPlayerClass(115, 1804.1315,-2124.2673,13.9424,1.8982, 4, 1, 24, 85, 25, 100);
  136. AddPlayerClass(116, 1804.1315,-2124.2673,13.9424,1.8982, 4, 1, 24, 85, 29, 100);
  137. AddStaticVehicle(475,1793.3677,-2128.6050,13.6392,358.4607,147,1); // azecar1 Sabre
  138. AddStaticVehicle(506,1799.2717,-2107.4038,13.5457,270.7622,147,1); // azecar2 Super GT
  139. AddStaticVehicle(534,1771.8998,-2125.1848,13.6391,0.2481,147,1); // azecar3 Remington
  140. AddStaticVehicle(533,1773.1569,-2099.0420,13.6391,2.5929,147,1); // azecar4 Feltzer
  141. AddStaticVehicle(536,1780.0587,-2107.5459,13.5506,268.9003,147,1); // azecar5 Blade
  142. AddStaticVehicle(560,1761.8180,-2117.5664,13.5558,269.8384,147,1); // azcar6 Sultan
  143. return 1;
  144. }
  145.  
  146. public OnPlayerRequestClass(playerid, classid)
  147. {
  148. switch(classid)
  149. {
  150. case 0..2:
  151. {
  152. SetPlayerTeam(playerid, TEAM_GROVE);
  153. SetPlayerSkin(playerid, TeamSkins[0][classid]);
  154. GameTextForPlayer(playerid, "Grove", 1000, 3);
  155. SetPlayerPos(playerid, 2495.4626,-1687.1388,13.5157);
  156. SetPlayerCameraPos(playerid, 2495.3899,-1684.0034,13.4492);
  157. SetPlayerFacingAngle(playerid, 87.7342);
  158. SetPlayerCameraLookAt(playerid, 2495.4626,-1687.1388,13.5157);
  159. }
  160. case 3..5:
  161. {
  162. SetPlayerTeam(playerid, TEAM_BALLAS);
  163. SetPlayerSkin(playerid, TeamSkins[1][classid-3]);
  164. GameTextForPlayer(playerid, "Ballas", 1000, 3);
  165. SetPlayerPos(playerid, 1934.0304,-1122.1691,26.3168);
  166. SetPlayerCameraPos(playerid, 1934.1154,-1124.7775,25.6159);
  167. SetPlayerFacingAngle(playerid, 87.7342);
  168. SetPlayerCameraLookAt(playerid, 1934.0304,-1122.1691,26.3168);
  169. }
  170. case 6..7:
  171. {
  172. SetPlayerTeam(playerid, TEAM_VAGOS);
  173. SetPlayerSkin(playerid, TeamSkins[2][classid-3]);
  174. GameTextForPlayer(playerid, "Vagos", 1000, 3);
  175. SetPlayerPos(playerid, 2230.7905,-1159.8066,25.8240);
  176. SetPlayerCameraPos(playerid, 2229.9287,-1159.8279,25.8112);
  177. SetPlayerFacingAngle(playerid, 87.7342);
  178. SetPlayerCameraLookAt(playerid, 2230.7905,-1159.8066,25.8240);
  179. }
  180. case 8..10:
  181. {
  182. SetPlayerTeam(playerid, TEAM_AZETECAS);
  183. SetPlayerSkin(playerid, TeamSkins[3][classid-3]);
  184. GameTextForPlayer(playerid, "Azetecas", 1000, 3);
  185. SetPlayerPos(playerid, 1804.1315,-2124.2673,13.9424);
  186. SetPlayerCameraPos(playerid, 1804.0824,-2122.7837,13.5543);
  187. SetPlayerFacingAngle(playerid, 87.7342);
  188. SetPlayerCameraLookAt(playerid, 1804.1315,-2124.2673,13.9424);
  189. }
  190.  
  191. }
  192. return 1;
  193. }
  194.  
  195. forward loadaccount_user(playerid, name[], value[]);
  196.  
  197. public loadaccount_user(playerid, name[], value[])
  198. {
  199. INI_Int("AdminLevel", PlayerInfo[playerid][alevel]);
  200. INI_Int("VipLevel", PlayerInfo[playerid][vlevel]);
  201. INI_Int("Score", PlayerInfo[playerid][score]);
  202. INI_Int("Kills", PlayerInfo[playerid][kills]);
  203. INI_Int("Deaths", PlayerInfo[playerid][deaths]);
  204. INI_Int("Cash", PlayerInfo[playerid][money]);
  205. return 1;
  206. }
  207. public OnPlayerConnect(playerid)
  208. {
  209. SendClientMessage(playerid, BLUE, "=========== DWAR v1.1 ===========");
  210. SendClientMessage(playerid, BLUE, " Welcome DWar TDM!");
  211. SendClientMessage(playerid, BLUE, "Script programmed by Devil[]");
  212. SendClientMessage(playerid, BLUE, "ENJOY");
  213. SendClientMessage(playerid, BLUE, "=================================");
  214.  
  215. new name[MAX_PLAYER_NAME];
  216. GetPlayerName(playerid, name, sizeof(name));
  217. if(fexist(UserPath(playerid)))
  218. {
  219. INI_ParseFile(UserPath(playerid), "loadaccount_%s", .bExtra = true, .extra = playerid);
  220. ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_INPUT, "Login System", "Welcome back to DWAR v1.0.\nThe account is registered.\n Put your password to spawn.", "Login", "Quit");
  221. }
  222. else
  223. {
  224. ShowPlayerDialog(playerid, REGISTER, DIALOG_STYLE_INPUT, "Register System", "Welcome to DWAR v1.0.\nThe account is no registered.\n Register by your pass here.", "Register", "Quit");
  225. }
  226. return 1;
  227. }
  228.  
  229. public OnPlayerDisconnect(playerid, reason)
  230. {
  231. if(fexist(UserPath(playerid)))
  232. {
  233. new INI:file = INI_Open(UserPath(playerid));
  234. INI_SetTag(file, "Player Data");
  235. INI_WriteInt(file, "Admin Level", PlayerInfo[playerid][alevel]);
  236. INI_WriteInt(file, "Vip Level", PlayerInfo[playerid][vlevel]);
  237. INI_WriteInt(file, "Score", PlayerInfo[playerid][score]);
  238. INI_WriteInt(file, "Money", PlayerInfo[playerid][money]);
  239. INI_WriteInt(file, "Kills", PlayerInfo[playerid][kills]);
  240. INI_WriteInt(file, "Deaths", PlayerInfo[playerid][deaths]);
  241. INI_Close(file);
  242. return 1;
  243. }
  244. return 1;
  245. }
  246.  
  247. public OnPlayerSpawn(playerid)
  248. {
  249. GivePlayerMoney(playerid, 5000);
  250. return 1;
  251. }
  252.  
  253. public OnPlayerDeath(playerid, killerid, reason)
  254. {
  255. PlayerInfo[playerid][deaths]++;
  256. if(IsPlayerConnected(killerid) && killerid != playerid)
  257. PlayerInfo[killerid][kills]++;
  258. GivePlayerMoney(killerid, 500);
  259. return 1;
  260. }
  261.  
  262. public OnVehicleSpawn(vehicleid)
  263. {
  264. return 1;
  265. }
  266.  
  267. public OnVehicleDeath(vehicleid, killerid)
  268. {
  269. return 1;
  270. }
  271.  
  272. public OnPlayerText(playerid, text[])
  273. {
  274. return 1;
  275. }
  276. forward OnPlayerCommandPerformed(playerid, cmdtext[], success);
  277. public OnPlayerCommandPerformed(playerid, cmdtext[], success)
  278. {
  279. if(!success)
  280. {
  281. SendClientMessage(playerid, COLOR_RED, "[SYSTEM]:Invalid Command!");
  282. }
  283. return 1;
  284. }
  285. CMD:help(playerid, params[])
  286. {
  287. SendClientMessage(playerid, GREEN, "========= DWAR help ==========");
  288. SendClientMessage(playerid, GREEN, "You are playing DWAR Server by Devil[]");
  289. SendClientMessage(playerid, GREEN, "Use /cmds for commands");
  290. SendClientMessage(playerid, GREEN, "=================================");
  291. return 1;
  292. }
  293. CMD:cmds(playerid, params[])
  294. {
  295. SendClientMessage(playerid, RED, "============ DWAR COMMANDS ==============");
  296. SendClientMessage(playerid, RED, " /help, /heal, /armour, /kill");
  297. SendClientMessage(playerid, RED, "=========================================");
  298. return 1;
  299. }
  300. CMD:heal(playerid, params[])
  301. {
  302. new name[MAX_PLAYER_NAME], string[128];
  303. GetPlayerName(playerid, name, sizeof(name));
  304. format(string, sizeof(string), "[SYSTEM]:You have been healed.", name);
  305. GivePlayerMoney(playerid, -100);
  306. SetPlayerHealth(playerid, 100);
  307. SendClientMessage(playerid, COLOR_YELLOW, string);
  308. return 1;
  309. }
  310.  
  311. CMD:armour(playerid, params[])
  312. {
  313. new name[MAX_PLAYER_NAME], string[128];
  314. GetPlayerName(playerid, name, sizeof(name));
  315. format(string, sizeof(string), "[SYSTEM]:You gain armour.", name);
  316. SendClientMessage(playerid, COLOR_YELLOW, string);
  317. GivePlayerMoney(playerid, -100);
  318. SetPlayerArmour(playerid, 100);
  319.  
  320. }
  321.  
  322. CMD:kill(playerid, params[])
  323. {
  324. new name[MAX_PLAYER_NAME], string[128];
  325. GetPlayerName(playerid, name, sizeof(name));
  326. format(string, sizeof(string), "[SYSTEM]:%s has commited a sucide.", name);
  327. SendClientMessage(playerid, COLOR_RED, string);
  328. SetPlayerHealth(playerid, 0);
  329. return 1;
  330. }
  331.  
  332. //===== ADMIN SYSTEM ===============
  333. CMD:acmd(playerid, params[])
  334. {
  335. if(PlayerInfo[playerid][alevel] < 1) return SendClientMessage(playerid, COLOR_RED, "[SYSTEM]:You need to be an admin!");
  336. SendClientMessage(playerid, GREEN, "============||Admin Commands||==========");
  337. SendClientMessage(playerid, GREEN, " /setadmin, /kick, /ban");
  338. SendClientMessage(playerid, GREEN, "========================================");
  339. return 1;
  340. }
  341. CMD:setadmin(playerid, params[])
  342. {
  343. if(IsAdmin(playerid, 5))
  344. {
  345. new targetid, name[MAX_PLAYER_NAME], level;
  346. if(sscanf(params, "ui", targetid, level)) return SendClientMessage(playerid, RED, "[USAGE]:/setadmin [playerid][level]");
  347. if(level > 5) return SendClientMessage(playerid, RED, "[ERROR]:Maximum level is 5!");
  348. PlayerInfo[playerid][alevel] = level;
  349.  
  350. new playername[MAX_PLAYER_NAME];
  351.  
  352. GetPlayerName(playerid, playername, sizeof(playername));
  353. GetPlayerName(playerid, name, sizeof(name));
  354.  
  355. new string[128];
  356. format(string, sizeof(string), "[SYSTEM]:You have set %s level to %d.", playername, level);
  357. SendClientMessage(playerid, COLOR_GREEN, string);
  358. format(string, sizeof(string), "[SYSTEM]:Admin %s has set your level as %d admin.", name, level);
  359. SendClientMessage(targetid, COLOR_GREEN, string);
  360. }
  361. else return SendClientMessage(playerid, RED, "[SYSTEM]:You are not an admin to use this command.");
  362. return 1;
  363. }
  364.  
  365. CMD:kick(playerid, params[])
  366. {
  367. if(PlayerInfo[playerid][alevel] < 1) return SendClientMessage(playerid,COLOR_RED,".:: You are not authorized to use this command ::.");
  368. new targetid, reason[64], string[128];
  369. if(sscanf(params, "uz", targetid, reason)) return SendClientMessage(playerid, COLOR_RED, "[USAGE]:/kick <playerid> <reason>");
  370. if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_RED, "[ERROR]: Player not connected!");
  371. {
  372. new pTargetName[24], pName[24];
  373. GetPlayerName(playerid,pName,24);
  374. GetPlayerName(targetid,pTargetName,24);
  375. format(string, sizeof(string), "[SERVER]:Admin %s has kicked %s: %s", pName, pTargetName, reason);
  376. SendClientMessageToAll(COLOR_RED,string);
  377. Kick(targetid);
  378. }
  379. return 1;
  380. }
  381. CMD:ban(playerid, params[])
  382. {
  383. if(PlayerInfo[playerid][alevel] < 1) return SendClientMessage(playerid, COLOR_RED, "[SYSTEM]:You need to be an admin!");
  384. new targetid, reason[46], string[128];
  385. if(sscanf(params, "uz", targetid, reason)) return SendClientMessage(playerid, COLOR_RED, "[USAGE]: /ban <playerid> <reason>");
  386. if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_YELLOW, "[SYSTEM]:Invalid playerid!");
  387. {
  388. new targetname[24], name[24];
  389. GetPlayerName(playerid, name, 24);
  390. GetPlayerName(targetid, targetname, 24);
  391. format(string, sizeof(string), "[SYSTEM]:Admin %s has ban $s. Reason:%s.", name, targetname, reason);
  392. SendClientMessageToAll(COLOR_RED, string);
  393. format(string, sizeof(string), "[SYSTEM]:You have been banned by admin %s.Reason:%s.", name, reason);
  394. SendClientMessage(targetid, COLOR_RED, string);
  395. Ban(targetid);
  396. }
  397. return 1;
  398. }
  399. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  400. {
  401. if(dialogid == REGISTER)
  402. {
  403. if(!response) return Kick(playerid);
  404. if(response)
  405. {
  406. if(!strlen(inputtext))
  407. {
  408. ShowPlayerDialog(playerid, REGISTER, DIALOG_STYLE_INPUT, "Register System", "Welcome to DWAR v1.0.\nThe account is no registered.\n Register by your pass here.", "Register", "Quit");
  409. return 1;
  410. }
  411. new hashpass[129];
  412. WP_Hash(hashpass, sizeof(hashpass), inputtext);
  413. new INI:file = INI_Open(UserPath(playerid));
  414. INI_SetTag(file, "Player's Data");
  415. INI_WriteString(file, "Pass", hashpass);
  416. INI_WriteInt(file, "Admin Level", 0);
  417. INI_WriteInt(file, "Vip Level", 0);
  418. INI_WriteInt(file, "Score", 0);
  419. INI_WriteInt(file, "Money", 5000);
  420. INI_WriteInt(file, "Kills", 0);
  421. INI_WriteInt(file, "Deaths", 0);
  422. INI_Close(file);
  423. SendClientMessage(playerid, COLOR_YELLOW, "[SYSTEM]:You have been successfully registered.");
  424. } return 1;
  425. }
  426. if(dialogid == LOGIN)
  427. {
  428. if(!response) return Kick(playerid);
  429. if(response)
  430. {
  431. new hashpass[129];
  432. WP_Hash(hashpass, sizeof(hashpass), inputtext);
  433. if(!strcmp(hashpass, PlayerInfo[playerid][pass]))
  434. {
  435. new name[MAX_PLAYER_NAME], string[128];
  436. GetPlayerName(playerid, name, sizeof(name));
  437. format(string, sizeof(string), "[SYSTEM]:Welcome back %s.", name);
  438. INI_ParseFile(UserPath(playerid), "loadaccount_%s", .bExtra = true, .extra = playerid);
  439. SetPlayerScore(playerid, PlayerInfo[playerid][score]);
  440. GivePlayerMoney(playerid, PlayerInfo[playerid][money]);
  441. SendClientMessage(playerid, COLOR_YELLOW, string);
  442. }
  443. else
  444. {
  445. ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_INPUT, "Login System", "Welcome back to DWAR v1.0.\nThe account is registered.\n Put your password to spawn.", "Login", "Quit");
  446. return 1;
  447. }
  448. }
  449. }
  450. return 1;
  451. }
  452. stock IsAdmin(playerid, level)
  453. {
  454. if(PlayerInfo[playerid][alevel] >= level || IsPlayerAdmin(playerid)) return true;
  455. else return false;
  456. }
  457.  
  458. stock UserPath(playerid)
  459. {
  460. new name[MAX_PLAYER_NAME], string[128];
  461. GetPlayerName(playerid, name, sizeof(name));
  462. format(string, sizeof(string), SERVER_USER_FILES, name);
  463. return string;
  464. }
  465.  
  466. stock IsVip(playerid, level)
  467. {
  468. if(PlayerInfo[playerid][vlevel] >=level || IsPlayerVip(playerid)) return true;
  469. else return false;
  470. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement