Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Wklejka p6y0wjfogj4o dodana przez d0naciak, 02.11.2012 08:02
zxcsdaf
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396.
#include <amxmodx> #include <amxmisc> #include <fakemeta> #define PLUG_NAME "HATS" #define PLUG_AUTH "SgtBane" #define PLUG_VERS "1.8" #define PLUG_TAG "HATS" #define PLUG_ADMIN ADMIN_RCON //Access flags required to give/remove hats #define PLUG_ADMINB ADMIN_CHAT //Access flags required to set personal hat if admin only is enabled #define OFFSET_GLOWSET 100 #define HAT_ALL 0 #define HAT_ADMIN 1 #define HAT_TERROR 2 #define HAT_COUNTER 3 #define menusize 220 #define maxTry 15 //Number of tries to get someone a non-admin random hat before giving up. #define modelpath "models/komandosi_jail/hats" stock fm_set_entity_visibility(index, visible = 1) set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW) new g_HatEnt[33] new CurrentHat[33] new CurrentMenu[33] new HatFile[64] new MenuPages, TotalHats #define MAX_HATS 64 new HATMDL[MAX_HATS][26] new HATNAME[MAX_HATS][26] new HATREST[MAX_HATS] new P_AdminOnly new P_AdminHats new P_RandomJoin new P_BotRandom new P_ForceHat new P_Glow public plugin_init() { register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH) register_logevent("event_roundstart", 2, "1=Round_Start") register_event("TeamInfo", "event_team_info", "a" ) register_concmd("amx_givehat", "Give_Hat", PLUG_ADMIN, "<nick> <mdl #>") register_concmd("amx_removehats", "Remove_Hat", PLUG_ADMIN, " - Removes hats from everyone.") register_menucmd(register_menuid("yHat Menu: [Page"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand") register_clcmd("say /hats", "ShowMenu", -1, "Shows Knife menu") register_clcmd("say /czapki", "ShowMenu", -1, "Shows Knife menu") P_AdminOnly = register_cvar("hat_adminonly", "0") //Only admins can use the menu P_AdminHats = register_cvar("hat_adminhats", "1") //Allow hats for admins only (if 0, hats specifically for admins can be used by anyone) P_RandomJoin = register_cvar("hat_random", "0") //Random hats for players as they join P_BotRandom = register_cvar("hat_bots", "0") //Random hats for bots as they join P_ForceHat = register_cvar("hat_force", "0") //Force a specific hat (if not 0) P_Glow = register_cvar("hat_glow", "0") //0=None,1=GlowWithPlayer,2=TeamColor } public ShowMenu(id) { if ((get_pcvar_num(P_AdminOnly) == 1 && get_user_flags(id) & PLUG_ADMIN) || (get_pcvar_num(P_AdminOnly) == 0 && get_pcvar_num(P_ForceHat) == 0)) { CurrentMenu[id] = 1 ShowHats(id) } else { client_print(id,print_chat,"[%s] Tylko administratorzy mogą obecnie korzystać z menu.",PLUG_TAG) } return PLUGIN_HANDLED } public ShowHats(id) { new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9) new szMenuBody[menusize + 1], WpnID new nLen = format(szMenuBody, menusize, "yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages) new MnuClr[3] // Get Hat Names And Add Them To The List for (new hatid=0; hatid < 8; hatid++) { WpnID = ((CurrentMenu[id] * 8) + hatid - 8) if (WpnID < TotalHats) { menucolor(id, WpnID, MnuClr) nLen += format(szMenuBody[nLen], menusize-nLen, "^nw%i.%s %s", hatid + 1, MnuClr, HATNAME[WpnID]) } } // Nastepna Strona And Poprzednia/Zamknij if (CurrentMenu[id] == MenuPages) { nLen += format(szMenuBody[nLen], menusize-nLen, "^n^nd9. Nastepna Strona") } else { nLen += format(szMenuBody[nLen], menusize-nLen, "^n^nw9. Nastepna Strona") } if (CurrentMenu[id] > 1) { nLen += format(szMenuBody[nLen], menusize-nLen, "^nw0. Poprzednia Strona") } else { nLen += format(szMenuBody[nLen], menusize-nLen, "^nw0. Zamknij") } show_menu(id, keys, szMenuBody, -1) return PLUGIN_HANDLED } public MenuCommand(id, key) { switch(key) { case 8: //9 - [Nastepna Strona] { if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++ ShowHats(id) return PLUGIN_HANDLED } case 9: //0 - [Zamknij] { CurrentMenu[id]-- if (CurrentMenu[id] > 0) ShowHats(id) return PLUGIN_HANDLED } default: { new HatID = ((CurrentMenu[id] * 8) + key - 8) if (HatID < TotalHats) { if ((get_pcvar_num(P_AdminHats) == 0 && HATREST[HatID] == HAT_ADMIN) || (get_pcvar_num(P_AdminHats) == 1 && HATREST[HatID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) || HATREST[HatID] == HAT_ALL || (HATREST[HatID] == get_user_team(id) + 1)) { Set_Hat(id,HatID,id) } else { if (HATREST[HatID] == HAT_TERROR && get_user_team(id) == 2) { client_print(id,print_chat,"[%s] Ta czapka jest aktualnie ustawiona jako czapka dla Wiezniow.",PLUG_TAG) } else if (HATREST[HatID] == HAT_COUNTER && get_user_team(id) == 1) { client_print(id,print_chat,"[%s] Ta czapka jest aktualnie ustawiona jako czapka dla Klawiszy.",PLUG_TAG) } else { client_print(id,print_chat,"[%s] Ta czapka jest aktualnie ustawiony tylko dla Adminow.",PLUG_TAG) } } } } } return PLUGIN_HANDLED } public plugin_precache() { new cfgDir[32] get_configsdir(cfgDir,31) formatex(HatFile,63,"%s/HatList.ini",cfgDir) command_load() new tmpfile [101] for (new i = 1; i < TotalHats; ++i) { format(tmpfile, 100, "%s/%s", modelpath, HATMDL[i]) if (file_exists (tmpfile)) { precache_model(tmpfile) server_print("[%s] Precached %s", PLUG_TAG, HATMDL[i]) } else { server_print("[%s] Failed to precache %s", PLUG_TAG, tmpfile) } } } public client_putinserver(id) { if (get_pcvar_num(P_ForceHat) == 1) { new forceID = get_pcvar_num(P_ForceHat) if (forceID <= TotalHats - 1) { forcehat(id, forceID) } else { set_pcvar_num(P_ForceHat, 0) } } else if (get_pcvar_num(P_RandomJoin) == 1 || (get_pcvar_num(P_BotRandom) == 1 && is_user_bot(id))) { if (get_pcvar_num(P_ForceHat) == 0) Random_Hat(id) } return PLUGIN_CONTINUE } public event_team_info() { if (get_pcvar_num(P_ForceHat) != 0) return new id = read_data(1) if (HATREST[CurrentHat[id]] == HAT_ALL) return if (HATREST[CurrentHat[id]] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) return new team[3] read_data(2, team, 2) switch(team[0]) { case 'C': { if (HATREST[CurrentHat[id]] != HAT_COUNTER) Random_Hat(id) } case 'T': { if (HATREST[CurrentHat[id]] != HAT_TERROR) Random_Hat(id) } case 'S': { Set_Hat(id, 0, 0) } } return } public event_roundstart() { new forceID = get_pcvar_num(P_ForceHat) for (new i = 0; i < get_maxplayers(); ++i) { if (is_user_connected(i) && g_HatEnt[i] > 0) { if (forceID != 0) { forcehat(i, forceID) } glowhat(i) } } return PLUGIN_CONTINUE } public Give_Hat(id, req_flag) { if( !(get_user_flags(id) & req_flag) ) return PLUGIN_HANDLED new smodelnum[5], name[32] read_argv(1,name,31) read_argv(2,smodelnum,4) new player = cmd_target(id,name,2) if (!player) { client_print(id,print_chat,"[%s] Gracz o takiej nazwie nie istnieje.",PLUG_TAG) return PLUGIN_HANDLED } new imodelnum = (str_to_num(smodelnum)) if (imodelnum > MAX_HATS) return PLUGIN_HANDLED Set_Hat(player,imodelnum,id) return PLUGIN_CONTINUE } public Remove_Hat(id, req_flag) { if( !(get_user_flags(id) & req_flag) ) return PLUGIN_HANDLED for (new i = 0; i < get_maxplayers(); ++i) { if (is_user_connected(i) && g_HatEnt[i] > 0) { Set_Hat(id, 0, 0) } } client_print(id,print_chat,"[%s] Usunieto czapki wszystkim.",PLUG_TAG) return PLUGIN_CONTINUE } public Random_Hat(id) { new bool:foundrnd = false, cntTry = 0, randID = random_num (1, TotalHats - 1) while (cntTry < maxTry && foundrnd == false) { randID = random_num (1, TotalHats - 1) cntTry += 1 if (HATREST[randID] == HAT_ALL) foundrnd = true if (HATREST[randID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) foundrnd = true if ((get_user_team(id) != 0) && HATREST[CurrentHat[id]] == get_user_team(id) + 1) foundrnd = true } if (foundrnd == true) { //If a valid random hat is found, apply it. Set_Hat(id, randID , 0) } else { //Otherwise, don't use any hat. Set_Hat(id, 0, 0) } return PLUGIN_CONTINUE } public Set_Hat(player, imodelnum, targeter) { new name[32] new tmpfile[101] format(tmpfile, 100, "%s/%s", modelpath, HATMDL[imodelnum]) get_user_name(player, name, 31) if (imodelnum == 0) { if(g_HatEnt[player] > 0) { fm_set_entity_visibility(g_HatEnt[player], 0) } if (targeter != 0) { client_print(targeter, print_chat, "[%s] Zdjales czapke %s",PLUG_TAG,name) } } else if (file_exists(tmpfile)) { if(g_HatEnt[player] < 1) { g_HatEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) if(g_HatEnt[player] > 0) { set_pev(g_HatEnt[player], pev_movetype, MOVETYPE_FOLLOW) set_pev(g_HatEnt[player], pev_aiment, player) set_pev(g_HatEnt[player], pev_rendermode, kRenderNormal) engfunc(EngFunc_SetModel, g_HatEnt[player], tmpfile) } } else { if(pev_valid(g_HatEnt[player])) { engfunc(EngFunc_SetModel, g_HatEnt[player], tmpfile) } } glowhat(player) CurrentHat[player] = imodelnum if (targeter != 0) { client_print(targeter, print_chat, "[%s] Czapke %s zalozyl %s",PLUG_TAG,HATNAME[imodelnum],name) } } } public command_load() { if(file_exists(HatFile)) { HATMDL[0] = "" HATNAME[0] = "None" TotalHats = 1 new TempCrapA[2] new sfLineData[128] new file = fopen(HatFile,"rt") while(file && !feof(file)) { fgets(file,sfLineData,127) // Skip Comment ; // and Empty Lines if (sfLineData[0] == ';' || strlen(sfLineData) < 1 || (sfLineData[0] == '/' && sfLineData[1] == '/')) continue // BREAK IT UP! parse(sfLineData, HATMDL[TotalHats], 25, HATNAME[TotalHats], 25, TempCrapA, 1) if (TempCrapA[0] == 'A' || TempCrapA[0] == '1') { HATREST[TotalHats] = HAT_ADMIN } else if (TempCrapA[0] == 'T' || TempCrapA[0] == '2') { HATREST[TotalHats] = HAT_TERROR } else if (TempCrapA[0] == 'C' || TempCrapA[0] == '3') { HATREST[TotalHats] = HAT_COUNTER } else { HATREST[TotalHats] = HAT_ALL } TotalHats += 1 if(TotalHats >= MAX_HATS) { server_print("[%s] Osiagnieto limit czapek",PLUG_TAG) break } } if(file) fclose(file) } MenuPages = floatround((TotalHats / 8.0), floatround_ceil) server_print("[%s] Loaded %i hats, and Generated %i pages",PLUG_TAG,TotalHats,MenuPages) } menucolor(id, ItemID, MnuClr[3]) { //If its the hat they currently have on if (ItemID == CurrentHat[id]) { MnuClr = "d" return } if (HATREST[ItemID] != HAT_ALL) { //If its an AdminHat&They are NOT an admin if (HATREST[ItemID] == HAT_ADMIN && get_pcvar_num(P_AdminHats) == 1) { if (get_user_flags(id) & PLUG_ADMINB) { MnuClr = "y" } else { MnuClr = "r" } //If this is a hat set for there team or not } else if (HATREST[ItemID] != get_user_team(id) + 1) { MnuClr = "r" } else { MnuClr = "y" } } else { MnuClr = "w" } return } glowhat(id) { if (!pev_valid(g_HatEnt[id])) return if (get_pcvar_num(P_Glow) != 0) { //If Glowing Hats Are Enabled set_pev(g_HatEnt[id], pev_renderfx, kRenderFxGlowShell) if (get_pcvar_num(P_Glow) == 2) { //If Not Team Specific, Use Player Glow On Hat new Float:curcolors[3], Float:curamt pev(id, pev_rendercolor, curcolors) pev(id, pev_renderamt, curamt) set_pev(g_HatEnt[id], pev_rendercolor, curcolors) set_pev(g_HatEnt[id], pev_renderamt, curamt) } else { //If Team Specific, Red=T, Blue=CT if (get_user_team(id) == 1) { set_pev(g_HatEnt[id], pev_rendercolor, {200.0, 0.0, 0.0}) } else if (get_user_team(id) == 2) { set_pev(g_HatEnt[id], pev_rendercolor, {0.0, 0.0, 200.0}) } set_pev(g_HatEnt[id], pev_renderamt, 50.0) } } else { set_pev(g_HatEnt[id], pev_renderfx, kRenderFxNone) set_pev(g_HatEnt[id], pev_renderamt, 0.0) } fm_set_entity_visibility(g_HatEnt[id], 1) return } forcehat(id, forceID) { if (forceID == 0) forceID = get_pcvar_num(P_ForceHat) if (forceID != 0) { if (forceID <= TotalHats - 1) { if (forceID != CurrentHat[id]) Set_Hat(id, forceID, 0) } else { set_pcvar_num(P_ForceHat, 0) } } }
Dodanych wklejek: 11179
Powered By (Pav32) Pastebin © 2011