Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.36 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <engine >
  5. #include <fun>
  6. #include <fvault>
  7. #include <dhudmessage>
  8. #include <ColorChat>
  9.  
  10. #define maxlevels 25
  11.  
  12. #define PLUGIN "Patente Magnatas"
  13. #define VERSION "1.3"
  14. #define AUTHOR "Feeh SK' [CLAN MAGNATAS]"
  15.  
  16. //RANK-XP
  17. new const db_save[] = "magnatas_xp_rank"
  18.  
  19. new level[33], xp[33], message[192], g_status_sync
  20. new sayText, teamInfo, maxPlayers, g_AdminListen, g_AdminListenFlag
  21. new strName[191], strText[191], alive[11], cvars[3], g_name[32]
  22. new give[33],iTarget[33]
  23.  
  24. new const xp_num[maxlevels+1] = { 0, 50, 130, 220, 300, 450, 600, 850, 1200, 1800, 2300, 2700, 3500, 4500, 5500, 6500, 7500, 8000, 9500, 10000, 16000, 20000, 25000, 30000, 50000 }
  25.  
  26. new const g_szTag[][] = {
  27. "",
  28. "DONO",
  29. "GIRL",
  30. "VIP",
  31. "MASTER",
  32. "ADMIN",
  33. "SUPREMO"
  34. }
  35.  
  36. new const ranks_nomes[maxlevels][] =
  37. {
  38. "Novato",
  39. "Recruta",
  40. "Soldado",
  41. "SoldadoIII",
  42. "SoldadoII",
  43. "SoldadoI",
  44. "Soldado Raso",
  45. "Especialista",
  46. "Especialista Tecnico",
  47. "Patrulheiro",
  48. "Cabo",
  49. "Lider de Tiro",
  50. "Sargento",
  51. "Sargento de Apoio",
  52. "Sargento Mestre",
  53. "Sargento Maior",
  54. "Intendente",
  55. "Aspirante",
  56. "Gurreiro Das Trevas",
  57. "CAPITAO",
  58. "MAJOR",
  59. "TENENTE CORONEL",
  60. "CORONEL",
  61. "GENERAL",
  62. "MARECHAL"
  63. }
  64.  
  65. new cvar_xp_normal, cvar_xp_hs, cvar_xp_faca, cvar_xp_he, xp_salvar_tipo
  66. new SOUND_RANK [] = "mgtrank/promotion_rank.wav";
  67.  
  68. public plugin_init()
  69. {
  70. register_plugin(PLUGIN, VERSION, AUTHOR);
  71.  
  72. g_AdminListen = register_cvar("amx_listen", "1")
  73. g_AdminListenFlag = register_cvar("amx_listen_flag", "c")
  74.  
  75. // Cvars do sistema de pontos
  76. xp_salvar_tipo = register_cvar("pontos_salvar_tipo", "3") // 1 - IP || 2 - Nick || 3 - SteamID e sXe Mode
  77. cvar_xp_normal = register_cvar("xp_matar_normal", "1")
  78. cvar_xp_hs = register_cvar("xp_matar_hs", "4")
  79. cvar_xp_faca = register_cvar("xp_matar_faca", "10")
  80. cvar_xp_he = register_cvar("xp_matar_he", "8")
  81.  
  82.  
  83. register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
  84. register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")
  85. register_clcmd("say", "hook_say")
  86. register_clcmd("say_team", "hook_teamsay")
  87. register_say("patente", "xpmenu")
  88. register_say("level", "xpmenu")
  89. register_say("xp", "xpmenu")
  90.  
  91. register_concmd("quantia_xp", "cmdTyped", ADMIN_RCON);
  92.  
  93. sayText = get_user_msgid("SayText")
  94. teamInfo = get_user_msgid("TeamInfo")
  95. maxPlayers = get_maxplayers()
  96. g_status_sync = CreateHudSyncObj()
  97.  
  98. register_message(sayText, "avoid_duplicated")
  99. register_event("DeathMsg", "event_deathmsg", "a", "1");
  100.  
  101. set_task(1.0, "hud_status", 0, _, _, "b")
  102.  
  103. }
  104.  
  105. public cmdCheckLevel(id)
  106. {
  107. new iMenu = menu_create("\yMAGNATAS \d- \wEscolha o jogador\r:", "checklevel_menu_handler")
  108.  
  109. new iPlayers[32], iNum, iTarget;
  110. new UserName[34], szTempID[10];
  111. get_players(iPlayers, iNum);
  112. for(new i; i < iNum; i++)
  113. {
  114. iTarget = iPlayers[i];
  115. if(!is_user_connected(iTarget))
  116. continue;
  117. get_user_name(iTarget, UserName, sizeof UserName - 1);
  118. num_to_str(iTarget, szTempID, charsmax(szTempID));
  119. menu_additem(iMenu, UserName, szTempID);
  120. }
  121. menu_setprop(iMenu, MPROP_NEXTNAME, "Proximo");
  122. menu_setprop(iMenu, MPROP_BACKNAME, "Voltar");
  123. menu_setprop(iMenu, MPROP_EXITNAME, "Sair");
  124. menu_display(id, iMenu, 0);
  125. }
  126.  
  127. public checklevel_menu_handler(id, iMenu, Item)
  128. {
  129. if(Item == MENU_EXIT)
  130. {
  131. menu_destroy(iMenu);
  132. return PLUGIN_HANDLED;
  133. }
  134. new iData[6], iName[64];
  135. new access, callback;
  136. menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);
  137. new target = str_to_num(iData);
  138. if(!is_user_connected(target))
  139. {
  140. ColorChat(id, GREEN, "^x04|MAGNATAS|^x01 O jogador que escolheu nao esta no servidor")
  141. menu_destroy(iMenu);
  142. cmdCheckLevel(id);
  143. return PLUGIN_HANDLED;
  144. }
  145.  
  146. menu_destroy(iMenu);
  147. new szText[256], player_name[32];
  148. get_user_name(target, player_name, 31);
  149. if(maxlevels == level[target]+1)
  150. formatex(szText, charsmax(szText), "<html><head></head><body><br/>Nome: %s<br/>XP: %d/%d<br/>Level: %d/%d<br/>Patente: %s<br/>", player_name, xp[target], level[target]+1, maxlevels, ranks_nomes[level[target]]);
  151. else
  152. formatex(szText, charsmax(szText), "<html><head></head><body><br/>Nome: %s<br/>XP: %d/%d<br/>Level: %d/%d<br/>Patente: %s<br/>Prox Patente: %s</body></html>", player_name, xp[target], xp_num[level[target]+1], level[target]+1, maxlevels, ranks_nomes[level[target]], ranks_nomes[level[target]+1]);
  153. show_motd(id, szText, "|MAGNATAS| Sistema de Level");
  154. cmdCheckLevel(id);
  155. return PLUGIN_HANDLED;
  156. }
  157.  
  158. /*----------------------------------------------------------------------------------------------------------------
  159. -HUD DO JOGO
  160. ----------------------------------------------------------------------------------------------------------------*/
  161. public hud_status(id)
  162. {
  163. if(!is_user_alive(id) || !is_user_connected(id) )
  164. return;
  165.  
  166. if(level[id] >= maxlevels)
  167. {
  168. static r, g, b; r = random_num(0, 255), g = random_num(0, 255), b = random_num(0, 255);
  169. set_hudmessage(r, g, b, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
  170. show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_nomes[level[id]], xp[id], xp[id])
  171. }
  172. else
  173. {
  174. set_hudmessage(255, 255, 255, 0.80, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -1)
  175. show_hudmessage(id,"» Level: %d/%d^n» Rank: %s^n» XP: %d/%d", level[id], maxlevels, ranks_nomes[level[id]], xp[id], xp_num[level[id]])
  176. }
  177. }
  178.  
  179. /*----------------------------------------------------------------------------------------------------------------
  180. -doar xp
  181. ----------------------------------------------------------------------------------------------------------------*/
  182. public xpmenu(id)
  183. {
  184. new name[500]
  185.  
  186. formatex(name, 499, "\r|\dMAGNATAS\r| \wMenu Rank/Patente/XP^n^n\wXP\d: \r%d \y- \wPatente\d: \r%s \y- \wLevel\d: \r%d ^n\wNecessario\d: \r%d \wde XP para ser\d: \r%s", xp[id], ranks_nomes[level[id]], level[id]+1, xp_num[level[id]+1], ranks_nomes[level[id]+1])
  187.  
  188. new menu = menu_create(name, "menuplayer")
  189.  
  190. menu_additem(menu, "Doar Xp", "1")
  191. menu_additem(menu, "Ver level/Rank/Patente de um Jogador", "2")
  192.  
  193. menu_setprop(menu, MPROP_EXITNAME, "Sair")
  194.  
  195. menu_display(id, menu)
  196.  
  197. return PLUGIN_HANDLED
  198. }
  199.  
  200. public menuplayer(id, menu, item)
  201. {
  202. if(item == MENU_EXIT)
  203. return PLUGIN_HANDLED
  204.  
  205. switch(item)
  206. {
  207. case 0:
  208. {
  209. donoxp(id)
  210. }
  211.  
  212. case 1:
  213. {
  214. cmdCheckLevel(id)
  215. }
  216.  
  217. }
  218.  
  219. return PLUGIN_HANDLED
  220. }
  221.  
  222. /*----------------------------------------------------------------------------------------------------------------
  223. -DOAR XP
  224. ----------------------------------------------------------------------------------------------------------------*/
  225. public donoxp(id)
  226. {
  227. new iMenu = menu_create("|MAGNATAS| \wEscolha o jogador que deseja doar/tirar XP", "rankmenu_menu_handler")
  228.  
  229. if(!(get_user_flags(id) & ADMIN_LEVEL_A))
  230. {
  231. ColorChat(id, GREEN, "^4|MAGNATAS| ^1Voce nao tem acesso a esse comando!")
  232. client_cmd(id, "spk buttons/button2.wav")
  233. return PLUGIN_HANDLED;
  234. }
  235. menu_additem(iMenu, "Doar XP", "1");
  236. menu_additem(iMenu, "Tirar XP", "2");
  237. menu_setprop(iMenu, MPROP_EXITNAME, "Sair");
  238. menu_display(id, iMenu, 0);
  239. return PLUGIN_HANDLED;
  240. }
  241.  
  242. public rankmenu_menu_handler(id, iMenu, Item)
  243. {
  244. if(Item == MENU_EXIT)
  245. {
  246. menu_destroy(iMenu);
  247. return PLUGIN_HANDLED;
  248. }
  249. new iData[6], iName[64];
  250. new access, callback;
  251. menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);
  252. give[id] = str_to_num(iData);
  253. GiveTakeMenu(id);
  254. return PLUGIN_HANDLED;
  255. }
  256.  
  257. public GiveTakeMenu(id)
  258. {
  259. static szText[64]
  260. formatex(szText, 63, "%s XP", give[id] == 1 ? "Doar" : "Tirar")
  261. new iMenu = menu_create(szText, "givetake_menu_handler")
  262.  
  263. new iPlayers[32], iNum, iTarget;
  264. new UserName[34], szTempID[10];
  265. get_players(iPlayers, iNum);
  266. for(new i; i < iNum; i++)
  267. {
  268. iTarget = iPlayers[i];
  269. if(!is_user_connected(iTarget))
  270. continue;
  271. get_user_name(iTarget, UserName, sizeof UserName - 1);
  272. num_to_str(iTarget, szTempID, charsmax(szTempID));
  273. menu_additem(iMenu, UserName, szTempID);
  274. }
  275. menu_setprop(iMenu, MPROP_NEXTNAME, "Proximo");
  276. menu_setprop(iMenu, MPROP_BACKNAME, "Voltar");
  277. menu_setprop(iMenu, MPROP_EXITNAME, "Sair");
  278. menu_display(id, iMenu, 0);
  279. }
  280.  
  281. public givetake_menu_handler(id, iMenu, Item)
  282. {
  283. if(Item == MENU_EXIT)
  284. {
  285. menu_destroy(iMenu);
  286. return PLUGIN_HANDLED;
  287. }
  288.  
  289. new iData[6], iName[64];
  290. new access, callback;
  291. menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);
  292. iTarget[id] = str_to_num(iData);
  293. if(!is_user_connected(iTarget[id]))
  294. {
  295. iTarget[id] = 0
  296. ColorChat(id, GREEN, "|MAGNATAS|^x01 O jogador que escolheu nao esta no servidor.")
  297. return PLUGIN_HANDLED;
  298. }
  299. menu_destroy(iMenu);
  300. client_cmd(id, "messagemode quantia_xp");
  301. return PLUGIN_HANDLED;
  302. }
  303.  
  304. public cmdTyped(id, rank, cid)
  305. {
  306. if(!cmd_access(id, rank, cid, 1))
  307. return PLUGIN_HANDLED;
  308.  
  309. if(!iTarget[id] || give[id] <= 0)
  310. return PLUGIN_HANDLED;
  311. if(!is_user_connected(iTarget[id]))
  312. {
  313. ColorChat(id, GREEN, "^x04|MAGNATAS|^x01 O jogador que escolheu nao esta no servidor.")
  314. return PLUGIN_HANDLED;
  315. }
  316.  
  317. new amount[30]; read_args(amount, charsmax(amount)); remove_quotes(amount)
  318. new ammount = str_to_num(amount)
  319. new szNum = str_to_num(amount)
  320. new szName[32], PlayerName[32];
  321. get_user_name(id, szName, 31)
  322. get_user_name(iTarget[id], PlayerName, 31)
  323. if(give[id] == 1)
  324. {
  325. if(xp[id] >= ammount)
  326. {
  327. ColorChat(id,GREEN,"^x04|MAGNATAS| ^1Vc nao tem XP Suficiente")
  328. return PLUGIN_HANDLED
  329. }
  330. if (szNum <= 0)
  331. {
  332. set_dhudmessage(255, 0, 0, 0.02, 0.17, 2, 0.3, 2.0, 0.07, 0.07)
  333. show_dhudmessage(id, "Quantia invalida.")
  334. ColorChat(id,GREEN, "^x04|MAGNATAS| ^1Quantia Invalida.")
  335.  
  336. return PLUGIN_HANDLED
  337. }
  338. ColorChat(0, GREEN, "^4|MAGNATAS| ^1Admin ^x03%s ^1deu ^x04%d ^x01xp para ^x03%s^x01.", szName, ammount, PlayerName)
  339. }
  340. new currentlevel = 0;
  341. while(currentlevel < (maxlevels - 1))
  342. {
  343. if(xp[iTarget[id]] >= xp_num[currentlevel + 1])
  344. ++currentlevel;
  345. else
  346. break;
  347. }
  348. level[iTarget[id]] = currentlevel;
  349. iTarget[id] = 0;
  350. GiveTakeMenu(id);
  351. Save( id );
  352. return PLUGIN_HANDLED;
  353. }
  354.  
  355. public client_authorized( id )
  356. {
  357. Load( id );
  358. }
  359.  
  360. public client_disconnect( id )
  361. {
  362. Save( id );
  363. }
  364.  
  365. public client_putinserver(id)
  366. {
  367. new currentlevel = 0;
  368. while(currentlevel < (maxlevels - 1))
  369. {
  370. if(xp[id] >= xp_num[currentlevel + 1])
  371. ++currentlevel;
  372. else
  373. break;
  374. }
  375. level[id] = currentlevel;
  376. }
  377.  
  378. /*----------------------------------------------------------------------------------------------------------------
  379. -CARREGAR DADOS
  380. ----------------------------------------------------------------------------------------------------------------*/
  381. public Load(id)
  382. {
  383. new auth[40], data[50], x1[10], x2[10]
  384.  
  385. switch(get_pcvar_num(xp_salvar_tipo))
  386. {
  387. case 1: get_user_ip(id, auth, charsmax(auth), 1)
  388. case 2: get_user_name(id, auth, charsmax(auth))
  389. case 3: get_user_authid(id, auth, charsmax(auth))
  390. }
  391.  
  392. fvault_get_data(db_save, auth, data, charsmax(data))
  393. parse(data, x1, charsmax(x1), x2, charsmax(x2))
  394.  
  395. level[id] = str_to_num(x1)
  396. xp[id] = str_to_num(x2)
  397.  
  398. check_level(id, 0)
  399. }
  400.  
  401. /*----------------------------------------------------------------------------------------------------------------
  402. -SALVAR PONTOS
  403. ----------------------------------------------------------------------------------------------------------------*/
  404. public Save(id)
  405. {
  406. if(!is_user_connected(id)) return PLUGIN_HANDLED;
  407.  
  408. new auth[40], data[50]
  409.  
  410. switch(get_pcvar_num(xp_salvar_tipo))
  411. {
  412. case 1: get_user_ip(id, auth, charsmax(auth), 1)
  413. case 2: get_user_name(id, auth, charsmax(auth))
  414. case 3: get_user_authid(id, auth, charsmax(auth))
  415. }
  416.  
  417. formatex(data, charsmax(data), "%d %d", level[id], xp[id])
  418.  
  419. fvault_pset_data(db_save, auth, data)
  420.  
  421. return PLUGIN_HANDLED;
  422. }
  423.  
  424. public avoid_duplicated(msgId, msgDest, receiver)
  425. return PLUGIN_HANDLED;
  426.  
  427. /*----------------------------------------------------------------------------------------------------------------
  428. -PATENTE NO SAY
  429. ----------------------------------------------------------------------------------------------------------------*/
  430. public hook_say(id)
  431. {
  432. read_args(message, 191)
  433. remove_quotes(message)
  434.  
  435. if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, ""))
  436. return PLUGIN_CONTINUE
  437.  
  438. get_user_name(id, g_name, charsmax(g_name))
  439.  
  440. new isAlive
  441. new admin = 0, iFlags = get_user_flags(id)
  442. if(iFlags & ADMIN_LEVEL_A) admin = 1 //dono
  443. else if(iFlags & ADMIN_LEVEL_B) admin = 2 //girl
  444. else if(iFlags & ADMIN_LEVEL_C) admin = 3 //vip
  445. else if(iFlags & ADMIN_LEVEL_D) admin = 4 //master
  446. else if(iFlags & ADMIN_LEVEL_G) admin= 5 //admin
  447. else if(iFlags & ADMIN_LEVEL_F) admin = 8 //supremo
  448.  
  449.  
  450. if(is_user_alive(id))
  451. {
  452. isAlive = 1
  453. alive = "^x01"
  454. }
  455. else
  456. {
  457. isAlive = 0
  458. alive = "^x01*MORTO* "
  459. }
  460.  
  461. static color[10]
  462. if(admin)
  463. {
  464. get_user_team(id, color, 9)
  465. format(strName, 191, "%s^x04[%s] ^x01[^x04%s^x01] ^x03%s", alive, g_szTag[admin], ranks_nomes[level[id]], g_name)
  466. format(strText, 191, "^x04%s", message)
  467. }
  468. else
  469. {
  470. get_user_name(id, g_name, 32)
  471. get_user_team(id, color, 9)
  472. format(strName, 191, "%s^x01[^x04%s^x01] ^x03%s", alive, ranks_nomes[level[id]], g_name)
  473. format(strText, 191, "%s", message)
  474. }
  475.  
  476. format(message, 191, "%s^x01: %s", strName, strText)
  477.  
  478. sendMessage(color, isAlive)// Sends the colored message
  479. return PLUGIN_CONTINUE;
  480. }
  481.  
  482. public hook_teamsay(id)
  483. {
  484. read_args(message, 191)
  485. remove_quotes(message)
  486.  
  487. if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, "")) // Ignores Admin Hud Messages, Admin Slash commands
  488. return PLUGIN_CONTINUE
  489.  
  490. new playerTeam = get_user_team(id)
  491. new playerTeamName[19]
  492.  
  493. switch(playerTeam) // Team names which appear on team-only messages
  494. {
  495. case 1: copy(playerTeamName, 3, "TRs")
  496. case 2: copy(playerTeamName, 3, "CTs")
  497. default: copy(playerTeamName, 9, "Spectador")
  498. }
  499.  
  500. get_user_name(id, g_name, charsmax(g_name))
  501. new isAlive
  502. new admin = 0, iFlags = get_user_flags(id)
  503. if(iFlags & ADMIN_LEVEL_A) admin = 1 //dono
  504. else if(iFlags & ADMIN_LEVEL_B) admin = 2 //girl
  505. else if(iFlags & ADMIN_LEVEL_C) admin = 3 //vip
  506. else if(iFlags & ADMIN_LEVEL_D) admin = 4 //master
  507. else if(iFlags & ADMIN_LEVEL_G) admin= 5 //admin
  508. else if(iFlags & ADMIN_LEVEL_F) admin = 8 //supremo
  509.  
  510. if(is_user_alive(id))
  511. {
  512. isAlive = 1
  513. alive = "^x01"
  514. }
  515. else
  516. {
  517. isAlive = 0
  518. alive = "^x01*MORTO* "
  519. }
  520.  
  521. static color[10]
  522. if(admin)
  523. {
  524. get_user_team(id, color, 9)
  525. format(strName, 191, "%s(%s) ^x04[%s] ^x01[^x04%s^x01] ^x03%s", alive, playerTeamName, g_szTag[admin], ranks_nomes[level[id]], g_name)
  526. format(strText, 191, "^x04%s", message)
  527. }
  528. else
  529. {
  530. get_user_name(id, g_name, 32)
  531. get_user_team(id, color, 9);
  532. format(strName, 191, "%s(%s) ^x01[^x04%s^x01] ^x03%s", alive, playerTeamName, ranks_nomes[level[id]], g_name)
  533. format(strText, 191, "%s", message)
  534. }
  535.  
  536. format(message, 191, "%s^x01: %s", strName, strText)
  537. sendTeamMessage(color, isAlive, playerTeam)
  538. return PLUGIN_CONTINUE
  539. }
  540.  
  541. public sendMessage(color[], alive)
  542. {
  543. new teamName[10]
  544.  
  545. for(new player = 1; player < maxPlayers; player++)
  546. {
  547. if(!is_user_connected(player))
  548. continue
  549.  
  550. get_pcvar_string(g_AdminListenFlag, cvars, charsmax(cvars))
  551. if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(cvars))
  552. {
  553. get_user_team(player, teamName, 9)// Stores user's team name to change back after sending the message
  554. changeTeamInfo(player, color)// Changes user's team according to color choosen
  555. writeMessage(player, message)// Writes the message on player's chat
  556. changeTeamInfo(player, teamName)// Changes user's team back to original
  557. }
  558. }
  559. }
  560.  
  561. public sendTeamMessage(color[], alive, playerTeam)
  562. {
  563. new teamName[10]
  564.  
  565. for(new player = 1; player < maxPlayers; player++)
  566. {
  567. if(!is_user_connected(player))
  568. continue
  569.  
  570. get_pcvar_string(g_AdminListenFlag, cvars, charsmax(cvars))
  571. if(get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(cvars))
  572. {
  573. if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(cvars))
  574. {
  575. get_user_team(player, teamName, 9)// Stores user's team name to change back after sending the message
  576. changeTeamInfo(player, color)// Changes user's team according to color choosen
  577. writeMessage(player, message)// Writes the message on player's chat
  578. changeTeamInfo(player, teamName)// Changes user's team back to original
  579. }
  580. }
  581. }
  582. }
  583.  
  584.  
  585. public changeTeamInfo(player, team[])
  586. {
  587. message_begin(MSG_ONE, teamInfo, _, player)// Tells to to modify teamInfo(Which is responsable for which time player is)
  588. write_byte(player)// Write byte needed
  589. write_string(team)// Changes player's team
  590. message_end()// Also Needed
  591. }
  592.  
  593.  
  594. public writeMessage(player, message[])
  595. {
  596. message_begin(MSG_ONE, sayText, {0, 0, 0}, player)// Tells to modify sayText(Which is responsable for writing colored messages)
  597. write_byte(player)// Write byte needed
  598. write_string(message)// Effectively write the message, finally, afterall
  599. message_end()// Needed as always
  600. }
  601.  
  602. /*----------------------------------------------------------------------------------------------------------------
  603. -CHECAR O LEVEL OU ADD++
  604. ----------------------------------------------------------------------------------------------------------------*/
  605. public check_level(id, sound)
  606. {
  607. if(!is_user_connected(id)) return PLUGIN_HANDLED;
  608.  
  609. new g_nome[32]; get_user_name(id, g_nome, 31)
  610.  
  611. if(level[id] == maxlevels)
  612. {
  613. while(xp[id] >= xp_num[level[id]])
  614. {
  615. ColorChat(0, GREEN, "^4%s ^1atingiu o level maximo. ^3Level maximo:^4 20^1.", g_name, level[id])
  616. return PLUGIN_HANDLED
  617. }
  618.  
  619. }
  620.  
  621. //Bugs
  622. if(level[id] == maxlevels && xp[id] > xp_num[level[id]-1])
  623. {
  624. xp[id] = xp_num[level[id]-1]
  625. Save(id)
  626. }
  627.  
  628. return PLUGIN_HANDLED
  629. }
  630.  
  631. /*----------------------------------------------------------------------------------------------------------------
  632. -EVENTO PARA ADD XP
  633. ----------------------------------------------------------------------------------------------------------------*/
  634. public event_deathmsg()
  635. {
  636. new id = read_data(1)
  637. new victim = read_data(2)
  638. new headshot = read_data(3)
  639.  
  640. if(victim != id && (is_user_connected(id) && is_user_connected(victim)))
  641. {
  642. new xp_add
  643.  
  644. if(!headshot)
  645. xp_add = get_pcvar_num(cvar_xp_normal)
  646. else
  647. xp_add = get_pcvar_num(cvar_xp_hs)
  648.  
  649. if(1 <= id <= maxPlayers)
  650. {
  651. new weapon = get_user_weapon(id)
  652.  
  653. if(weapon == CSW_KNIFE)
  654. xp_add = get_pcvar_num(cvar_xp_faca)
  655.  
  656. if(weapon == CSW_HEGRENADE)
  657. xp_add = get_pcvar_num(cvar_xp_he)
  658. }
  659. xp[id] += xp_add
  660.  
  661. set_dhudmessage(0, 255, 0, 0.03, 0.65, 2, 0.3, 2.0, 0.07, 0.07, false)
  662. show_dhudmessage(id, "+%d XP", xp_add)
  663.  
  664. if(level[id] < maxlevels-1)
  665. {
  666. if(xp[id] >= xp_num[level[id]+1])
  667. {
  668. level[id]++
  669.  
  670. static g_name[32]; get_user_name(id, g_name, 31)
  671.  
  672. client_cmd(0,"spk %s",SOUND_RANK)
  673. ColorChat(0, GREEN, "^4|MAGNATAS| ^3%s ^1Subiu de patente. ^3Agora eh: ^4%s.", g_name, ranks_nomes[level[id]])
  674. }
  675.  
  676. check_level(id, 0)
  677. Save(id)
  678. }
  679. }
  680. }
  681.  
  682. /*------------------------------------------------------------------------------------------
  683. -REGISTRA COMANDOS DE SAY E SAYTEAM
  684. --------------------------------------------------------------------------------------------*/
  685. stock register_say(szSay[], szFunction[])
  686. {
  687. new szTemp[64]
  688. formatex(szTemp, 63 , "say /%s", szSay)
  689. register_clcmd(szTemp, szFunction)
  690.  
  691. formatex(szTemp, 63 , "say .%s", szSay)
  692. register_clcmd(szTemp, szFunction)
  693.  
  694. formatex( szTemp, 63 , "say_team /%s", szSay)
  695. register_clcmd(szTemp, szFunction )
  696.  
  697. formatex( szTemp, 63 , "say_team .%s", szSay)
  698. register_clcmd(szTemp, szFunction)
  699. }
  700.  
  701. /*----------------------------------------------------------------------------------------------------------------
  702. -MOSTRAR XP AO MIRAR NA PESSOA
  703. ----------------------------------------------------------------------------------------------------------------*/
  704.  
  705. public showStatus(id)
  706. {
  707. if(!is_user_bot(id) && is_user_connected(id))
  708. {
  709. new name[32], pid = read_data(2)
  710.  
  711. get_user_name(pid, name, 31)
  712. new color1 = 0, color2 = 0
  713.  
  714. new xxx = get_user_team(id)
  715. new xxx2 = get_user_team(pid)
  716.  
  717. new team1 = xxx == 1, team2 = xxx2 == 1
  718.  
  719. if (team2 == 1)
  720. color1 = 255
  721. else
  722. color2 = 255
  723.  
  724. if (team1 == team2) // friend
  725. {
  726. set_hudmessage(color1, 50, color2, -1.0, 0.85, 1, 0.01, 3.0, 0.01, 0.01, -1)
  727. ShowSyncHudMsg(id, g_status_sync, "Nome: %s^nRank: %s^nLevel: %d^nXP: %d/%d", name, ranks_nomes[level[pid]], level[pid]+1, xp[pid], xp_num[level[pid]+1])
  728. }
  729. }
  730. }
  731.  
  732. public hideStatus(id)
  733. {
  734. ClearSyncHud(id, g_status_sync)
  735. }
  736.  
  737. public plugin_precache()
  738. {
  739. precache_sound(SOUND_RANK)
  740.  
  741.  
  742. return PLUGIN_CONTINUE
  743. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement