AescoEdits

Mod

Apr 14th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.84 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <vault>
  5. #include <hamsandwich>
  6. #include <fvault>
  7.  
  8. #pragma tabsize 0
  9.  
  10. #define is_valid_player(%1) (1 <= %1 <= 32)
  11.  
  12. new knife_model[33];
  13.  
  14. new const g_VAULTNAME[] = "UnqE# Knifes";
  15. new const VERSION[] = "1.2"
  16. new const AUTHOR[] = "Aesco"
  17.  
  18.  
  19. new iLevel[33];
  20. new iXp[33];
  21.  
  22. new knife_on;
  23.  
  24. new MaxLevel;
  25. new StartedLevel;
  26.  
  27. new cvar_KillXp;
  28. new cvar_HsXp;
  29. new cvar_KnifeXp;
  30.  
  31. new Forward_spawn;
  32. new Forward_levelup;
  33. new ForwardReturn;
  34.  
  35. new const g_KnifeNames[][32] =
  36. {
  37. "Obican Knife",
  38. "Alien Knife",
  39. "Dagger",
  40. "Dark Knife",
  41. "Transparent Knife",
  42. "Katara",
  43. "Special",
  44. "Ice Blade",
  45. "Gold Axe",
  46. "Katana",
  47. "Daedric",
  48. "Starwars Knife",
  49. "Wolverine Claws",
  50. "Blaze Axe",
  51. "Artic Daedric",
  52. "Tracker Knife",
  53. "Flip Knife",
  54. "Golden Sickle",
  55. "Saber",
  56. "Guitar",
  57. "Black & White",
  58. "Candy",
  59. "Tactical Knife",
  60. "Snake Knife",
  61. "Skulls Knife",
  62. "Combat Knife",
  63. "Combat Axe",
  64. "Xmas Hammer",
  65. "Xmas Axe",
  66. "Xmas Combat",
  67. "Xmas Snowman",
  68. "Xmas Katanas",
  69. "VIP Duals",
  70. "VIP Butterfly",
  71. "VIP Theif",
  72. "VIP UnqE#",
  73. "VIP Katanas",
  74. "VIP Fish"
  75. };
  76.  
  77. new const g_KnifevModels[][256] =
  78. {
  79. "models/v_knife.mdl",
  80. "models/Knifes/v_knife_alien.mdl",
  81. "models/Knifes/v_knife_ellium.mdl",
  82. "models/Knifes/v_knife_dark.mdl",
  83. "models/Knifes/v_knife_transparent.mdl",
  84. "models/Knifes/v_knife_genuine.mdl",
  85. "models/Knifes/v_knife_hunt.mdl",
  86. "models/Knifes/v_knife_shadow.mdl",
  87. "models/Knifes/v_knife_slaughterer.mdl",
  88. "models/Knifes/v_knife_katana.mdl",
  89. "models/Knifes/v_daedric.mdl",
  90. "models/Knifes/v_knife_lightsaber.mdl",
  91. "models/Knifes/v_knife_wolverine.mdl",
  92. "models/Knifes/v_knife_proton.mdl",
  93. "models/Knifes/v_dedric.mdl",
  94. "models/Knifes/v_tracker.mdl",
  95. "models/Knifes/v_csgo.mdl",
  96. "models/Knifes/v_sickle.mdl",
  97. "models/Knifes/v_saber.mdl",
  98. "models/Knifes/v_guitar.mdl",
  99. "models/Knifes/v_bnw.mdl",
  100. "models/Knifes/v_candy.mdl",
  101. "models/Knifes/v_tactical.mdl",
  102. "models/Knifes/v_snake.mdl",
  103. "models/Knifes/v_skull.mdl",
  104. "models/Knifes/v_combat.mdl",
  105. "models/Knifes/v_hammer.mdl",
  106. "models/Knifes/v_xhammer.mdl",
  107. "models/Knifes/v_xaxe.mdl",
  108. "models/Knifes/v_xcombat.mdl",
  109. "models/Knifes/v_xsnow.mdl",
  110. "models/Knifes/v_xkatanas.mdl",
  111. "models/KnifesVIP/v_dual.mdl",
  112. "models/KnifesVIP/v_but.mdl",
  113. "models/KnifesVIP/v_krv.mdl",
  114. "models/KnifesVIP/v_emac.mdl",
  115. "models/KnifesVIP/v_katana.mdl",
  116. "models/KnifesVIP/v_fish.mdl"
  117. }
  118.  
  119. native register_maxlevels( maxlevel = 200, started_xp_level = 100 );
  120. native get_user_level( index );
  121. native get_user_xp( index );
  122.  
  123. public plugin_init() {
  124.  
  125. register_plugin(g_VAULTNAME, VERSION, AUTHOR);
  126. register_cvar("knife_skins", VERSION, FCVAR_SERVER); // Find Servers on Game-Monitor
  127. set_cvar_string("knife_skins", VERSION); // Find Servers on Game-Monitor
  128.  
  129. // register max levels 13 is the top level, 100 is the started level xp.
  130. register_maxlevels( 200, 100 );
  131.  
  132. //Admin commands
  133.  
  134. register_concmd("give_xp" ,"givexp",ADMIN_CFG,"Usage <nick> <Add xp to a player>")
  135. register_concmd("take_xp", "takexp",ADMIN_CFG,"Usage <nick> <Remove xp from a player>")
  136.  
  137. //Clcmd's
  138.  
  139. knife_on = register_cvar( "knife_skins", "1" );
  140.  
  141. register_clcmd("say","HandleSay");
  142. register_clcmd("say_team","HandleSay")
  143. register_clcmd("say /knife", "KnifeSkinsMenu");
  144. register_clcmd("say /knifes", "KnifeSkinsMenu");
  145. register_clcmd("say /knive", "KnifeSkinsMenu");
  146. register_clcmd("say /knives", "KnifeSkinsMenu");
  147. register_clcmd("say /level", "PlayerLevelsMenu");
  148. register_clcmd("say /levels", "PlayerLevelsMenu");
  149.  
  150. //Event's
  151.  
  152. register_event("CurWeapon","CurWeapon","be","1=1");
  153. register_event( "DeathMsg", "EventDeathMsg", "a" );
  154.  
  155. //Cvar's
  156.  
  157. cvar_KillXp = register_cvar( "kill_xp", "5" );
  158. cvar_HsXp = register_cvar( "hs_xp", "2" );
  159. cvar_KnifeXp = register_cvar( "knife_xp", "3" );
  160.  
  161. //Ham's
  162.  
  163. RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawn", 1 );
  164. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  165.  
  166. //Forward's
  167.  
  168. Forward_levelup = CreateMultiForward( "forward_client_levelup", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL );
  169. Forward_spawn = CreateMultiForward( "forward_client_spawn", ET_IGNORE, FP_CELL , FP_CELL, FP_CELL );
  170.  
  171. //set_task(15.0, "Knifemessage", 0, _, _, "b")
  172. //set_task(35.0, "Levelmessage", 0, _, _, "b")
  173. }
  174.  
  175. public plugin_precache() {
  176.  
  177. precache_model("models/v_knife.mdl")
  178. precache_model("models/Knifes/v_knife_alien.mdl")
  179. precache_model("models/Knifes/v_knife_ellium.mdl")
  180. precache_model("models/Knifes/v_knife_dark.mdl")
  181. precache_model("models/Knifes/v_knife_transparent.mdl")
  182. precache_model("models/Knifes/v_knife_genuine.mdl")
  183. precache_model("models/Knifes/v_knife_hunt.mdl")
  184. precache_model("models/Knifes/v_knife_shadow.mdl")
  185. precache_model("models/Knifes/v_knife_slaughterer.mdl")
  186. precache_model("models/Knifes/v_knife_katana.mdl")
  187. precache_model("models/Knifes/v_daedric.mdl")
  188. precache_model("models/Knifes/v_knife_lightsaber.mdl")
  189. precache_model("models/Knifes/v_knife_wolverine.mdl")
  190. precache_model("models/Knifes/v_knife_proton.mdl")
  191. precache_model("models/Knifes/v_dedric.mdl")
  192. precache_model("models/Knifes/v_tracker.mdl")
  193. precache_model("models/Knifes/v_csgo.mdl")
  194. precache_model("models/Knifes/v_sickle.mdl")
  195. precache_model("models/Knifes/v_saber.mdl")
  196. precache_model("models/Knifes/v_guitar.mdl")
  197. precache_model("models/Knifes/v_bnw.mdl")
  198. precache_model("models/Knifes/v_candy.mdl")
  199. precache_model("models/Knifes/v_tactical.mdl")
  200. precache_model("models/Knifes/v_snake.mdl")
  201. precache_model("models/Knifes/v_skull.mdl")
  202. precache_model("models/Knifes/v_combat.mdl")
  203. precache_model("models/Knifes/v_hammer.mdl")
  204. precache_model("models/KnifesVIP/v_dual.mdl")
  205. precache_model("models/KnifesVIP/v_krv.mdl")
  206. precache_model("models/KnifesVIP/v_katana.mdl")
  207. precache_model("models/KnifesVIP/v_but.mdl")
  208. precache_model("models/KnifesVIP/v_emac.mdl")
  209. precache_model("models/KnifesVIP/v_fish.mdl")
  210. precache_model("models/Knifes/v_xhammer.mdl")
  211. precache_model("models/Knifes/v_xcombat.mdl")
  212. precache_model("models/Knifes/v_xkatanas.mdl")
  213. precache_model("models/Knifes/v_xsnow.mdl")
  214. precache_model("models/Knifes/v_xaxe.mdl")
  215. }
  216.  
  217. public plugin_natives( )
  218. {
  219. //Native's
  220.  
  221. register_library( "Knife-Skins" );
  222.  
  223. register_native( "register_maxlevels", "_register_maxlevels" );
  224. register_native( "get_user_level", "_get_user_level" );
  225. register_native( "set_user_level", "_set_user_level" );
  226. register_native( "get_user_xp", "_get_user_xp" );
  227. register_native( "set_user_xp", "_set_user_xp" );
  228. }
  229.  
  230. public _register_maxlevels( plugin, params )
  231. {
  232. if( MaxLevel != 0 && StartedLevel != 0 )
  233. {
  234. return;
  235. }
  236. else
  237. {
  238. MaxLevel = get_param( 1 );
  239. StartedLevel = get_param( 2 );
  240. }
  241. }
  242.  
  243. public _get_user_level( plugin, params )
  244. {
  245. return iLevel[ get_param( 1 ) ];
  246. }
  247.  
  248. public _set_user_level( plugin, params )
  249. {
  250. iLevel[ get_param( 1 ) ] = max( get_param( 2 ), MaxLevel );
  251.  
  252. FlsahLevelUp( get_param( 1 ) );
  253.  
  254. SaveData( get_param( 1 ) );
  255.  
  256. LoadData( get_param( 1 ) );
  257. }
  258.  
  259. public _get_user_xp( plugin, params )
  260. {
  261. return iXp[ get_param( 1 ) ];
  262. }
  263.  
  264. public _set_user_xp( plugin, params )
  265. {
  266. iXp[ get_param( 1 ) ] = get_param( 2 );
  267.  
  268. CheckLevel( get_param( 1 ) );
  269.  
  270. SaveData( get_param( 1 ) );
  271.  
  272. LoadData( get_param( 1 ) );
  273. }
  274.  
  275. public CheckLevel( id )
  276. {
  277. if( iLevel[id] == MaxLevel )
  278. {
  279. return;
  280. }
  281. else
  282. {
  283. new level = iLevel[id] > 0 ? iLevel[id] : 1;
  284.  
  285. new xp = level * StartedLevel;
  286.  
  287. if( iLevel[id] > 0 )
  288. {
  289. xp += ( xp * 4 / 2 );
  290. }
  291.  
  292. while( iXp[id] >= xp )
  293. {
  294. iLevel[id]++;
  295.  
  296. ColorChat(id,"^4Cestitamo!^1 dobili ste unapredjenje! sada ste^4 LEVEL^1: ^3%i^1.", iLevel[id]);
  297. ColorChat(0,"^3%s^1 je sada ^4 LEVEL^3 %i^1!",get_player_name(id), iLevel[id]);
  298.  
  299. FlsahLevelUp(id);
  300.  
  301. ExecuteForward( Forward_levelup, ForwardReturn, id, iLevel[id], iXp[id] );
  302.  
  303. SaveData( id );
  304.  
  305. CheckLevel( id );
  306.  
  307. break;
  308. }
  309. }
  310. }
  311.  
  312. public FlsahLevelUp( id )
  313. {
  314. message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), { 0, 0, 0}, id );
  315. write_short( 1 << 10 );
  316. write_short( 1 << 10 );
  317. write_short( 0 );
  318. write_byte( 0 );
  319. write_byte( 255 );
  320. write_byte( 215 );
  321. write_byte( 100 );
  322. message_end( );
  323. }
  324.  
  325.  
  326. public HandleSay(id){
  327.  
  328. if (get_pcvar_num(knife_on) == 0)
  329. {
  330. ColorChat(id, "Mod je ugasen.");
  331. return PLUGIN_HANDLED;
  332. }
  333.  
  334. new iMsg[200], iArgs[4][60];
  335. new level = iLevel[id] > 0 ? iLevel[id] : 1;
  336.  
  337. new xp = level * StartedLevel;
  338.  
  339. if( iLevel[id] > 0 )
  340. {
  341. xp += ( xp * 4 / 2 );
  342. }
  343.  
  344. read_argv(1,iMsg ,sizeof iMsg - 1);
  345. parse(iMsg,iArgs[0],charsmax(iArgs[]),iArgs[1],charsmax(iArgs[]),iArgs[2],charsmax(iArgs[]),iArgs[3],charsmax(iArgs[]));
  346.  
  347. if (equali(iArgs[0],"/level") || equali(iArgs[0],"/lvl") || equali(iArgs[0],"/xp"))
  348. {
  349. new player = cmd_target(id,iArgs[1],CMDTARGET_NO_BOTS);
  350.  
  351. if (!player)
  352. {
  353. ColorChat( id, "^4LEVEL^1:^3 %i^4 |^1XP^4:^3 %i^1/^3%i^1.", iLevel[id], iXp[id], xp );
  354. }
  355. }
  356.  
  357. return 0;
  358. }
  359.  
  360. public EventDeathMsg(id)
  361. {
  362. if (get_pcvar_num(knife_on) == 0)
  363. return PLUGIN_HANDLED;
  364.  
  365. new killer = read_data( 1 );
  366. new victim = read_data( 2 );
  367.  
  368. if( killer == victim || ! is_user_connected( killer ) || ! is_user_connected( victim ) )
  369. {
  370. return PLUGIN_HANDLED;
  371. //return;
  372. }
  373.  
  374. new XpAmount = get_pcvar_num( cvar_KillXp );
  375.  
  376. if( read_data( 3 ) )
  377. {
  378. XpAmount += get_pcvar_num( cvar_HsXp );
  379. }
  380.  
  381. static sWeapon[ 26 ];
  382.  
  383. read_data( 4, sWeapon, sizeof( sWeapon ) - 1 );
  384.  
  385.  
  386. if( equal( sWeapon, "knife" ) )
  387. {
  388. XpAmount += get_pcvar_num( cvar_KnifeXp );
  389. }
  390.  
  391. iXp[ killer ] += XpAmount;
  392.  
  393. CheckLevel( killer );
  394.  
  395. SaveData( killer );
  396.  
  397. ColorChat( killer, "Dobio si^3 %i^1 XP.", XpAmount );
  398.  
  399. return PLUGIN_HANDLED;
  400. }
  401.  
  402. public FwdPlayerSpawn( id )
  403. {
  404. ExecuteForward( Forward_spawn, ForwardReturn, id, iLevel[id], iXp[id] );
  405. }
  406.  
  407. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  408. {
  409. if( get_pcvar_num( knife_on ) == 0 )
  410. return HAM_IGNORED;
  411.  
  412. if( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_KNIFE )
  413. {
  414. SetHamParamFloat(4, damage + knife_model[attacker]);
  415.  
  416. return HAM_HANDLED;
  417. }
  418.  
  419. return HAM_IGNORED;
  420. }
  421.  
  422. public KnifeSkinsMenu(id) {
  423.  
  424. if (get_pcvar_num(knife_on) == 0)
  425. {
  426. ColorChat(id, "The mod has been disabale.");
  427. return PLUGIN_HANDLED;
  428. }
  429.  
  430. new szItem[256], szAlien[50], szDagger[50], szDark[50], szTransparent[50],
  431. szKatara[50], szSpecial[50], szIce[50], szGold[50], szKatana[50],
  432. szDaedric[50], szStarwars[50], szWolverine[50], szBlaze[50], szArtic[50],
  433. szTracker[50], szFlip[50], szGolden[50], szSaber[50], szGuitar[50],
  434. szBlack[50], szCandy[50], szTactical[50], szSnake[50], szSkulls[50], szCombat[50], szHammer[50],
  435. szXhammer[50], szXaxe[50], szXcombat[50], szXsnowman[50], szXkatanas[50], szVduals[50], szVbutterfly[50], szVtheif[50], szVeclipse[50], szVkatanas[50],
  436. szVfish[50];
  437.  
  438. new level = iLevel[id] > 0 ? iLevel[id] : 1;
  439.  
  440. new xp = level * StartedLevel;
  441.  
  442. if( iLevel[id] > 0 )
  443. {
  444. xp += ( xp * 4 / 2 );
  445. }
  446.  
  447. formatex(szItem, charsmax(szItem), "\w[ \r%s \w] \yKnives Menu \rv%s^n\yTvoj Level: \r%d \w- \yTvoj XP: \r%d\w/\r%d\w.^n\yPage:\r", g_VAULTNAME, VERSION,iLevel[id],iXp[id], xp);
  448. formatex(szAlien, charsmax(szAlien),"%s", iLevel[id] >= 1 ? "\wAlien Knife [\yUNLOCKED\w]" : "\dAlien Knife [\rLEVEL 1 \d]");
  449. formatex(szDagger, charsmax(szDagger),"%s", iLevel[id] >= 5 ? "\wDagger [\yUNLOCKED\w]" : "\dDagger [\rLEVEL 5 \d]");
  450. formatex(szDark, charsmax(szDark),"%s", iLevel[id] >= 10 ? "\wDark Knife [\yUNLOCKED\w]" : "\dDark Knife [\rLEVEL 10 \d]");
  451. formatex(szTransparent, charsmax(szTransparent),"%s", iLevel[id] >= 12 ? "\wTransparent Knife [\yUNLOCKED\w]" : "\dTransparent Knife [\rLEVEL 12 \d]");
  452. formatex(szKatara, charsmax(szKatara),"%s", iLevel[id] >= 15 ? "\wKatara [\yUNLOCKED\w]" : "\dKatara [\rLEVEL 15 \d]");
  453. formatex(szSpecial, charsmax(szSpecial),"%s", iLevel[id] >= 20 ? "\wSpecial Knife [\yUNLOCKED\w]" : "\dSpecial Knife [\rLEVEL 20 \d]");
  454. formatex(szIce, charsmax(szIce),"%s", iLevel[id] >= 23 ? "\wIce Blade [\yUNLOCKED\w]" : "\dIce Blade [\rLEVEL 23 \d]");
  455. formatex(szGold, charsmax(szGold),"%s", iLevel[id] >= 27 ? "\wGold Axe [\yUNLOCKED\w]" : "\dGold Axe [\rLEVEL 27 \d]");
  456. formatex(szKatana, charsmax(szKatana),"%s", iLevel[id] >= 32 ? "\wKatana [\yUNLOCKED\w]" : "\dKatana [\rLEVEL 32 \d]");
  457. formatex(szDaedric, charsmax(szDaedric),"%s", iLevel[id] >= 40 ? "\wDaedric [\yUNLOCKED\w]" : "\dDaedric [\rLEVEL 40 \d]");
  458. formatex(szStarwars, charsmax(szStarwars),"%s", iLevel[id] >= 43 ? "\wStarwars Knife [\yUNLOCKED\w]" : "\dStarwars Knife [\rLEVEL 43 \d]");
  459. formatex(szWolverine, charsmax(szWolverine),"%s", iLevel[id] >= 45 ? "\wWolverine's Claws [\yUNLOCKED\w]" : "\dWolverine's Claws [\rLEVEL 45 \d]");
  460. formatex(szBlaze, charsmax(szBlaze),"%s", iLevel[id] >= 50 ? "\wBlaze Axe [\yUNLOCKED\w]" : "\dBlaze Axe [\rLEVEL 50 \d]");
  461. formatex(szArtic, charsmax(szArtic),"%s", iLevel[id] >= 55 ? "\wArtic Daedric [\yUNLOCKED\w]" : "\dArtic Daedric [\rLEVEL 55 \d]");
  462. formatex(szTracker, charsmax(szTracker),"%s", iLevel[id] >= 60 ? "\wTracker Knife [\yUNLOCKED\w]" : "\dTracker Knife [\rLEVEL 60 \d]");
  463. formatex(szFlip, charsmax(szFlip),"%s", iLevel[id] >= 65 ? "\wFlip Knife [\yUNLOCKED\w]" : "\dFlip Knife [\rLEVEL 65 \d]");
  464. formatex(szGolden, charsmax(szGolden),"%s", iLevel[id] >= 70 ? "\wGolden Sickle [\yUNLOCKED\w]" : "\dGolden Sickle [\rLEVEL 70 \d]");
  465. formatex(szSaber, charsmax(szSaber),"%s", iLevel[id] >= 73 ? "\wSaber [\yUNLOCKED\w]" : "\dSaber [\rLEVEL 73 \d]");
  466. formatex(szGuitar, charsmax(szGuitar),"%s", iLevel[id] >= 80 ? "\wGuitar [\yUNLOCKED\w]" : "\dGuitar [\rLEVEL 80 \d]");
  467. formatex(szBlack, charsmax(szBlack),"%s", iLevel[id] >= 85 ? "\wBlack & White [\yUNLOCKED\w]" : "\dBlack & White [\rLEVEL 85 \d]");
  468. formatex(szCandy, charsmax(szCandy),"%s", iLevel[id] >= 90 ? "\wCandy [\yUNLOCKED\w]" : "\dCandy [\rLEVEL 90 \d]");
  469. formatex(szTactical, charsmax(szTactical),"%s", iLevel[id] > 96 ? "\wTactical Knife [\yUNLOCKED\w]" : "\dTactical Knife[\rLEVEL 96 \d]");
  470. formatex(szSnake, charsmax(szSnake),"%s", iLevel[id] >= 103 ? "\wSnake Knife [\yUNLOCKED\w]" : "\dSnake Knife [\rLEVEL 103 \d]");
  471. formatex(szSkulls, charsmax(szSkulls),"%s", iLevel[id] >= 110 ? "\wSkulls Knife [\yUNLOCKED\w]" : "\dSkulls Knife [\rLEVEL 110 \d]");
  472. formatex(szCombat, charsmax(szCombat),"%s", iLevel[id] >= 115 ? "\wCombat Knife [\yUNLOCKED\w]" : "\dCombat Knife [\rLEVEL 115 \d]");
  473. formatex(szHammer, charsmax(szHammer),"%s", iLevel[id] >= 125 ? "\wCombat Axe [\yUNLOCKED\w]" : "\dHammer [\rLEVEL 125 \d]");
  474. formatex(szXhammer, charsmax(szXhammer),"%s", iLevel[id] >= 150 ? "\wXmas Hammer [\yWinter Edition\w]" : "\dXmas Hammer [\rLEVEL 150\d]");
  475. formatex(szXaxe, charsmax(szXaxe),"%s", iLevel[id] >= 170 ? "\wXmas Axe [\yWinter Edition\w]" : "\dXmas Axe [\rLEVEL 170\d]");
  476. formatex(szXcombat, charsmax(szXcombat),"%s", iLevel[id] >= 190 ? "\wXmas Combat [\yWinter Edition\w]" : "\dXmas Combat [\rLEVEL 190\d]");
  477. formatex(szXsnowman, charsmax(szXsnowman),"%s", iLevel[id] >= 195 ? "\wXmas Snowman [\yWinter Edition\w]" : "\dXmas Snowman [\rLEVEL 195\d]");
  478. formatex(szXkatanas, charsmax(szXkatanas),"%s", iLevel[id] >= 200 ? "\wXmas Katanas [\yWinter Edition\w]" : "\dXmas Katanas [\rLEVEL 200\d]");
  479. formatex(szVduals, charsmax(szVduals),"%s", iLevel[id] >= 999 ? "\wVIP Duals [\yVIP\w]" : "\dVIP Duals [\rVIP\d]");
  480. formatex(szVbutterfly, charsmax(szVbutterfly),"%s", iLevel[id] >= 999 ? "\wVIP Butterfly [\yVIP\w]" : "\dVIP Butterfly [\rVIP\d]");
  481. formatex(szVtheif, charsmax(szVtheif),"%s", iLevel[id] >= 999 ? "\wVIP Theif [\yVIP\w]" : "\dVIP Theif [\rVIP\d]");
  482. formatex(szVeclipse, charsmax(szVeclipse),"%s", iLevel[id] >= 999 ? "\wVIP UnqE# [\yVIP\w]" : "\dVIP UnqE# [\rVIP\d]");
  483. formatex(szVkatanas, charsmax(szVkatanas),"%s", iLevel[id] >= 999 ? "\wVIP Katanas [\yVIP\w]" : "\dVIP Katanas [\rVIP\d]");
  484. formatex(szVfish, charsmax(szVfish),"%s", iLevel[id] >= 999 ? "\wVIP Fish [\yVIP\w]" : "\dVIP Fish [\rVIP\d]");
  485.  
  486.  
  487.  
  488. new menu = menu_create( szItem, "KnifeSkinsMenu_Handler" );
  489. menu_additem(menu, "\wObican Knife [\yUNLOCKED\w]", "", 0 );
  490. menu_additem(menu, szAlien, "", iLevel[id] >= 1 ? 0 : 1);
  491. menu_additem(menu, szDagger, "", iLevel[id] >= 5 ? 0 : 1);
  492. menu_additem(menu, szDark, "", iLevel[id] >= 10 ? 0 : 1);
  493. menu_additem(menu, szTransparent, "", iLevel[id] >= 12 ? 0 : 1);
  494. menu_additem(menu, szKatara, "", iLevel[id] >= 15 ? 0 : 1);
  495. menu_additem(menu, szSpecial, "", iLevel[id] >= 20 ? 0 : 1);
  496. menu_additem(menu, szIce, "", iLevel[id] >= 23 ? 0 : 1);
  497. menu_additem(menu, szGold, "", iLevel[id] >= 27 ? 0 : 1);
  498. menu_additem(menu, szKatana, "", iLevel[id] >= 27 ? 0 : 1);
  499. menu_additem(menu, szDaedric, "", iLevel[id] >= 40 ? 0 : 1);
  500. menu_additem(menu, szStarwars, "", iLevel[id] >= 43 ? 0 : 1);
  501. menu_additem(menu, szWolverine, "", iLevel[id] >= 45 ? 0 : 1);
  502. menu_additem(menu, szBlaze, "", iLevel[id] >= 50 ? 0 : 1);
  503. menu_additem(menu, szArtic, "", iLevel[id] >= 55 ? 0 : 1);
  504. menu_additem(menu, szTracker, "", iLevel[id] >= 60 ? 0 : 1);
  505. menu_additem(menu, szFlip, "", iLevel[id] >= 65 ? 0 : 1);
  506. menu_additem(menu, szGolden, "", iLevel[id] >= 70 ? 0 : 1);
  507. menu_additem(menu, szSaber, "", iLevel[id] >= 73 ? 0 : 1);
  508. menu_additem(menu, szGuitar, "", iLevel[id] >= 80 ? 0 : 1);
  509. menu_additem(menu, szBlack, "", iLevel[id] >= 85 ? 0 : 1);
  510. menu_additem(menu, szCandy, "", iLevel[id] >= 90 ? 0 : 1);
  511. menu_additem(menu, szTactical, "", iLevel[id] >= 96 ? 0 : 1);
  512. menu_additem(menu, szSnake, "", iLevel[id] >= 103 ? 0 : 1);
  513. menu_additem(menu, szSkulls, "", iLevel[id] >= 110 ? 0 : 1);
  514. menu_additem(menu, szCombat, "", iLevel[id] >= 115 ? 0 : 1);
  515. menu_additem(menu, szHammer, "", iLevel[id] >= 125 ? 0 : 1);
  516. menu_additem(menu, szXhammer, "", iLevel[id] >= 150 ? 0 : 1);
  517. menu_additem(menu, szXaxe, "", iLevel[id] >= 170 ? 0 : 1);
  518. menu_additem(menu, szXcombat, "", iLevel[id] >= 190 ? 0 : 1);
  519. menu_additem(menu, szXsnowman, "", iLevel[id] >= 195 ? 0 : 1);
  520. menu_additem(menu, szXkatanas, "", iLevel[id] >= 200 ? 0 : 1);
  521. menu_additem(menu, szVduals, "", iLevel[id] >= 999 ? 0 : 1);
  522. menu_additem(menu, szVbutterfly, "", iLevel[id] >= 999 ? 0 : 1);
  523. menu_additem(menu, szVtheif, "", iLevel[id] >= 999 ? 0 : 1);
  524. menu_additem(menu, szVeclipse, "", iLevel[id] >= 999 ? 0 : 1);
  525. menu_additem(menu, szVkatanas, "", iLevel[id] >= 999 ? 0 : 1);
  526. menu_additem(menu, szVfish, "", iLevel[id] >= 999 ? 0 : 1);
  527. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
  528. menu_display(id, menu, 0 );
  529.  
  530. return PLUGIN_HANDLED;
  531. }
  532.  
  533. public KnifeSkinsMenu_Handler(id, menu, item)
  534. {
  535. if(item == MENU_EXIT)
  536. {
  537. menu_destroy(menu)
  538. return PLUGIN_HANDLED
  539. }
  540.  
  541. SetKnife(id, item);
  542. ColorChat(id, "Noz koji si izabrao je: ^4%s^1.", g_KnifeNames[item]);
  543.  
  544. SaveData(id);
  545. return PLUGIN_HANDLED;
  546. }
  547.  
  548. public SetKnife(id, item) {
  549.  
  550. knife_model[id] = item
  551.  
  552. new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
  553. if ( Weapon != CSW_KNIFE )
  554. return PLUGIN_HANDLED
  555.  
  556. new vModel[56],pModel[56]
  557.  
  558. if (get_pcvar_num(knife_on) == 0)
  559. {
  560. format(vModel,55,"models/v_knife.mdl")
  561. return PLUGIN_HANDLED;
  562. }
  563.  
  564. format(vModel,55, g_KnifevModels[item])
  565. format(pModel,55,"models/p_knife.mdl")
  566. entity_set_string(id, EV_SZ_viewmodel, vModel)
  567. entity_set_string(id, EV_SZ_weaponmodel, pModel)
  568.  
  569. return PLUGIN_HANDLED;
  570. }
  571.  
  572. public PlayerLevelsMenu(id)
  573. {
  574. if (get_pcvar_num(knife_on) == 0)
  575. {
  576. ColorChat(id, "Mod je ugasen.");
  577. return PLUGIN_HANDLED;
  578. }
  579.  
  580. new some[256], menu;
  581.  
  582. static players[32],szTemp[10],pnum;
  583. get_players(players,pnum,"ch");
  584.  
  585. formatex(some,255,"\w[ \r%s \w] \yLeveli igraca:\r", g_VAULTNAME);
  586.  
  587. menu = menu_create(some,"PlayerLevelsMenu_Handler");
  588.  
  589. for (new i; i < pnum; i++)
  590. {
  591. new level = iLevel[players[i]] > 0 ? iLevel[players[i]] : 1;
  592.  
  593. new xp = level * StartedLevel;
  594.  
  595. if( iLevel[players[i]] > 0 )
  596. {
  597. xp += ( xp * 4 / 2 );
  598. }
  599.  
  600. formatex(some,256,"%s \y(Level: \r%i\y) \w- \y(XP: \r%i\w/\r%i\y)",get_player_name(players[i]), iLevel[players[i]], iXp[players[i]], xp);
  601. num_to_str(players[i],szTemp,charsmax(szTemp));
  602. menu_additem(menu, some, szTemp);
  603. }
  604.  
  605. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
  606. menu_display(id, menu);
  607.  
  608. return PLUGIN_HANDLED;
  609. }
  610.  
  611. public PlayerLevelsMenu_Handler(id,menu, item){
  612. if (item == MENU_EXIT)
  613. {
  614. menu_destroy(menu);
  615. return;
  616. }
  617.  
  618. new data[6] ,szName[64],access,callback;
  619.  
  620. menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
  621.  
  622. new player = str_to_num(data);
  623.  
  624. new level = iLevel[player] > 0 ? iLevel[player] : 1;
  625.  
  626. new xp = level * StartedLevel;
  627.  
  628. if( iLevel[player] > 0 )
  629. {
  630. xp += ( xp * 4 / 2 );
  631. }
  632.  
  633. ColorChat(id,"^3%sov ^4LEVEL ^1je: ^3%i ^1sa ^3%i^1/^3%i ^4XP^1.",get_player_name(player), iLevel[player], iXp[player], xp);
  634. PlayerLevelsMenu(id);
  635. }
  636.  
  637. public CurWeapon(id)
  638. {
  639. // Set Knife Model
  640. SetKnife(id, knife_model[id])
  641. }
  642.  
  643. public givexp(id) {
  644. if (get_pcvar_num(knife_on) == 0)
  645. {
  646. ColorChat(id, "Mod je ugasen.");
  647. return PLUGIN_HANDLED;
  648. }
  649.  
  650. if( get_user_flags( id ) & ADMIN_RCON ) {
  651.  
  652. new PlayerToGive[32], XP[32]
  653. read_argv(1,PlayerToGive,31)
  654. read_argv(2,XP, 31)
  655. new Player = cmd_target(id,PlayerToGive,9)
  656.  
  657. if(!Player) {
  658.  
  659. return PLUGIN_HANDLED
  660.  
  661. }
  662.  
  663. new XPtoGive = str_to_num(XP)
  664. new name[32],owner[32]
  665. get_user_name(id,owner,31)
  666. get_user_name(Player,name,31)
  667. ColorChat(0,"^4ADMIN^3 %s^1 je dao ^4 %s^3 %s^1 XP.", owner,name,XP );
  668. iXp[Player]+= XPtoGive
  669. CheckLevel(Player);
  670. SaveData(id)
  671.  
  672. }
  673.  
  674. else {
  675.  
  676. client_print(id,print_console,"You have no acces to that command")
  677.  
  678. return PLUGIN_HANDLED
  679. }
  680.  
  681. return PLUGIN_HANDLED;
  682. }
  683.  
  684. public takexp(id) {
  685. if (get_pcvar_num(knife_on) == 0)
  686. {
  687. ColorChat(id, "Mod je ugasen.");
  688. return PLUGIN_HANDLED;
  689. }
  690.  
  691. if(get_user_flags(id) & ADMIN_RCON ) {
  692.  
  693.  
  694. new PlayerToTake[32], XP[32]
  695. read_argv(1,PlayerToTake,31 )
  696. read_argv(2,XP,31 )
  697. new Player = cmd_target(id,PlayerToTake,9)
  698.  
  699. if(!Player) {
  700.  
  701. return PLUGIN_HANDLED
  702.  
  703. }
  704.  
  705. new XPtoTake = str_to_num(XP)
  706. new name[32],owner[32]
  707. get_user_name(id,owner,31)
  708. get_user_name(Player,name,31)
  709. ColorChat(0,"^4ADMIN^3 %s^1 je uzeo^4 %s^3 %s^1 XP.", owner,name,XP );
  710. iXp[ Player ]-=XPtoTake
  711. CheckLevel(Player);
  712. SaveData(id)
  713.  
  714. }
  715.  
  716. else {
  717.  
  718. client_print(id,print_console,"You have no acces to that command.")
  719.  
  720. return PLUGIN_HANDLED
  721.  
  722. }
  723.  
  724. return PLUGIN_HANDLED;
  725. }
  726.  
  727. public client_disconnect(id) {
  728.  
  729. if(task_exists(id)){
  730. remove_task(id)
  731. }
  732. SaveData(id);
  733. }
  734.  
  735.  
  736. //public Knifemessage(id) {
  737. //
  738. // if (get_pcvar_num(knife_on) == 0)
  739. // return PLUGIN_HANDLED;
  740. //
  741. // ColorChat(0, "Type ^3/knife ^1in chat to open the ^4Knife Skins Menu^1.");
  742. // ColorChat(0, "This server is running ^4%s ^3v%s^1 by ^4%s^1.",g_VAULTNAME, VERSION, AUTHOR)
  743. // return PLUGIN_HANDLED;
  744. //}
  745. //
  746. //public Levelmessage(id) {
  747. //
  748. // if (get_pcvar_num(knife_on) == 0)
  749. // return PLUGIN_HANDLED;
  750. //
  751. // ColorChat(0,"To see other ^4Players Level ^1type ^3/level ^1in chat.");
  752. // return PLUGIN_HANDLED;
  753. //}
  754. //
  755. public client_putinserver(id) LoadData(id);
  756.  
  757. public SaveData(id){
  758.  
  759. new authid[32]
  760. get_user_authid(id, authid, 31)
  761.  
  762. new vaultkey[64]
  763. new vaultdata[64]
  764.  
  765. format(vaultkey, 63, "KNIFEMOD_%s", authid)
  766. format(vaultdata, 63, "%d", knife_model[id])
  767. set_vaultdata(vaultkey, vaultdata)
  768.  
  769. new data[ 16 ];
  770.  
  771. get_user_authid( id, authid, sizeof( authid ) - 1 );
  772.  
  773. formatex( data, sizeof( data ) - 1, "%d %d", iLevel[id], iXp[id] );
  774.  
  775. fvault_set_data(g_VAULTNAME, authid, data );
  776.  
  777. return;
  778.  
  779.  
  780. }
  781.  
  782. public LoadData(id){
  783.  
  784. new authid[32]
  785. get_user_authid(id,authid,31)
  786.  
  787. new vaultkey[64], vaultdata[64]
  788.  
  789. format(vaultkey, 63, "KNIFEMOD_%s", authid)
  790. get_vaultdata(vaultkey, vaultdata, 63)
  791. knife_model[id] = str_to_num(vaultdata)
  792.  
  793. new data[ 16 ], szLevel[ 8 ], szXp[ 8 ];
  794.  
  795. get_user_authid( id, authid, sizeof( authid ) - 1 );
  796.  
  797. if( fvault_get_data(g_VAULTNAME, authid, data, sizeof( data ) - 1 ) )
  798. {
  799. strbreak( data, szLevel, sizeof( szLevel ) - 1, szXp, sizeof( szXp ) - 1 );
  800.  
  801. iLevel[id] = str_to_num( szLevel );
  802. iXp[id] = str_to_num( szXp );
  803.  
  804. return;
  805. }
  806. else
  807. {
  808. iLevel[id] = 0;
  809. iXp[id] = 0;
  810.  
  811. return;
  812. }
  813. }
  814.  
  815. stock get_player_name(id){
  816. static szName[32];
  817. get_user_name(id,szName,31);
  818. return szName;
  819. }
  820.  
  821. stock ColorChat( const id, const string[ ], { Float, Sql, Resul, _ } : ... )
  822. {
  823. new msg[ 191 ], players[ 32 ], count = 1;
  824.  
  825. static len;
  826. len = formatex( msg, charsmax( msg ), "^x04[^x01 UnqE# Knife^x04 ]^x01 " );
  827. vformat( msg[ len ], charsmax( msg ) - len, string, 3 );
  828.  
  829. if( id )
  830. players[ 0 ] = id;
  831. else
  832. get_players( players,count,"ch" );
  833.  
  834. for( new i = 0; i < count; i++ )
  835. {
  836. if( is_user_connected( players[i] ) )
  837. {
  838. message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _ , players[ i ] );
  839. write_byte( players[ i ] );
  840. write_string( msg );
  841. message_end( );
  842. }
  843. }
  844. }
Add Comment
Please, Sign In to add comment