amxbans/include/functions.inc.php wpisz w searchBox "STEAM_" i zamien miejsce ktore są stare/nie prawidlowe.
Gdyz zmieniales reunion(lub dproto) steamID generation, na początku pojawila się zamiast zera jedynka, czego w starym generation nie bylo nigdy, dlatego pokazuje ze zly format podajesz.
if(!preg_match("/^STEAM_0:(0|1):[0-9]{1,10}$/",$value))
>>> zamien na to >>>
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.
|
Dirr
Rejestracja: 18.04.2017Aktualnie: Nieaktywny
Poza forum Ostatnio: 08.03.2024 04:47
Statystyki
- Grupa: Użytkownik
- Całość postów: 60
- Odwiedzin: 3 258
- Tytuł: Pomocny
- Wiek: 30 lat
- Urodziny: Maj 26, 1993
-
Imię
Jakub
-
Płeć
Mężczyzna
-
Lokalizacja
Zawiercie
#766621 [ROZWIĄZANE] Jak dodać bana na stronie amxbans dla nonsteam ?
Napisane przez The.Scott w 05.05.2020 20:55
#765758 [ROZWIĄZANE] Zaokrąglenie w dół procent expa
Napisane przez Rivit w 09.04.2020 17:33
new proc = floatround((xp[id]) / float(xp_num[level[id]]) * 100.0, floatround_floor); show_hudmessage("[XP: %i/%i (%d)]", xp[id], xp[id], proc)
#764126 procentowy exp
Napisane przez Robiin w 17.01.2020 18:46
#758675 Problem z pluginem - statystyki na koniec rundy [Biohazard]
Napisane przez Toldi w 16.04.2019 20:27
Kod wyżej miał wyeliminować naliczanie samobójstw. Nadal nalicza?
@edit: Masz z użyciem DeathMsg. Nie wiem czy sie skompiluje bo nie mam biblioteki biohazard ale powinno.
#include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <biohazard> #include <colorchat> #define PLUGIN "Biohazard stats" #define VERSION "1.0" #define AUTHOR "Sn!ff3r" enum { kills = 0, infects } new stats[33][3] // 0 - zabojstwa, 1 - infekcje, 2 - damage new g_maxplayers public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Spawn, "player", "cl_spawn", 1) register_event("DeathMsg", "DeathMsg", "a") register_logevent("round_end", 2, "1=Round_End") g_maxplayers = get_maxplayers() } public cl_spawn(id) { stats[id][0] = stats[id][1] = 0 } public DeathMsg() { new attacker = read_data(1) // zabojca new victim = read_data(2) // ofiara if(attacker != victim) stats[attacker][kills]++; } public event_infect(victim, attacker) { stats[attacker][infects] ++ } public round_end() { for(new id = 1; id <= g_maxplayers; id++) { if(!is_user_connected(id)) continue ColorChat(id, GREEN, "~ Twoje statystyki: (zabojstw - ^3%d^4) (infekcji - ^3%d^4)", stats[id][kills],stats[id][infects]) } }
#756429 zamiana/podmiana/zmienna w pluginie!?
Napisane przez Robiin w 05.02.2019 13:28
#756093 Blad Pluginu
Napisane przez AwIlL^^ w 31.01.2019 12:54
#755567 kilka pluginów Odemnie dla Was
Napisane przez AwIlL^^ w 23.01.2019 16:32
#754682 Szukam Współwłaściciela do serwera ZM !
Napisane przez janofer w 31.12.2018 08:34
#740371 Przerobienie pluginu na flagi
Napisane przez d0naciak w 19.06.2017 18:42
Sprawdź, jeżeli posiada chociaż jedną z flag to wtedy będzie mógł, ale sprawdź:
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.
#include <amxmodx> #include <fakemeta> #include <hamsandwich> #include <weapon_models_api> #define PLUGIN "Weapon Skin System" #define VERSION "0.5.0-45" #define AUTHOR "Mistrick" #pragma semicolon 1 #define DEFAULT_SKIN_MENU #define MODEL_NOT_SET 0 #define is_valid_pev(%0) (pev_valid(%0) == 2) #define get_weapon_skin(%0) pev(%0, pev_iuser4) #define set_weapon_skin(%0,%1) set_pev(%0, pev_iuser4, %1) const XO_CBASEPLAYER = 5; const XO_CBASEPLAYERWEAPON = 4; const m_pPlayer = 41; const m_pNext = 42; const m_iId = 43; const m_pActiveItem = 373; const m_rgpPlayerItems_CBasePlayer = 367; enum _:SkinInfo { WeaponID, SkinName[32], ModelV, ModelP, ModelW[64] }; new const FILE_MODELS[] = "weapon_skins.ini"; new Array:g_aWeaponSkins; new g_LoadedWeapons; new g_iWeaponSkinsCount; new g_iPlayerSkins[33][32]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); #if defined DEFAULT_SKIN_MENU register_clcmd("say /skins", "Command_ChangeSkin"); register_clcmd("say /skinreset", "Command_ResetSkin"); #endif // DEFAULT_SKIN_MENU } public plugin_precache() { new file_path[128]; get_localinfo("amxx_configsdir", file_path, charsmax(file_path)); format(file_path, charsmax(file_path), "%s/%s", file_path, FILE_MODELS); new file = fopen(file_path, "rt"); if(!file) { set_fail_state("File not found!"); } g_aWeaponSkins = ArrayCreate(SkinInfo, 1); // forward wss_loaded_skin(index, weaponid, name[]); new fwd = CreateMultiForward("wss_loaded_skin", ET_IGNORE, FP_CELL, FP_CELL, FP_STRING); new buffer[256], weapon_name[32], skin_name[32], model_v[64], model_p[64], model_w[64]; new weaponid, skin_info[SkinInfo]; new ret; while(!feof(file)) { fgets(file, buffer, charsmax(buffer)); if(!buffer[0] || buffer[0] == ';') continue; parse(buffer, weapon_name, charsmax(weapon_name), skin_name, charsmax(skin_name), model_v, charsmax(model_v), model_p, charsmax(model_p), model_w, charsmax(model_w)); weaponid = get_weapon_csw(weapon_name); if(!weaponid) continue; skin_info[WeaponID] = weaponid; g_LoadedWeapons |= (1 << weaponid); if(model_v[0] && file_exists(model_v)) { skin_info[ModelV] = engfunc(EngFunc_AllocString, model_v); precache_model(model_v); } if(model_p[0] && file_exists(model_p)) { skin_info[ModelP] = engfunc(EngFunc_AllocString, model_p); precache_model(model_p); } if(model_w[0] && file_exists(model_w)) { copy(skin_info[ModelW], charsmax(skin_info[ModelW]), model_w); precache_model(model_w); } copy(skin_info[SkinName], charsmax(skin_info[SkinName]), skin_name); ExecuteForward(fwd, ret, g_iWeaponSkinsCount + 1, weaponid, skin_name); ArrayPushArray(g_aWeaponSkins, skin_info); g_iWeaponSkinsCount++; skin_info[ModelV] = MODEL_NOT_SET; skin_info[ModelP] = MODEL_NOT_SET; skin_info[ModelW] = MODEL_NOT_SET; } fclose(file); if(!g_iWeaponSkinsCount) { ArrayDestroy(g_aWeaponSkins); set_fail_state("File is empty!"); } } public plugin_natives() { register_library("weapon_skin_system"); register_native("wss_get_weapon_skin_index", "native_get_weapon_skin_index"); register_native("wss_get_skin_name", "native_get_skin_name"); register_native("wss_set_user_skin", "native_set_user_skin"); } // native wss_get_weapon_skin_index(weapon); public native_get_weapon_skin_index(plugin, params) { enum { arg_weapon = 1 }; new weapon = get_param(arg_weapon); return get_weapon_skin(weapon); } // native wss_get_skin_name(skin, name[], len); public native_get_skin_name(plugin, params) { enum { arg_skin = 1, arg_name, arg_len }; new skin = get_param(arg_skin); if(skin < 1 || skin > g_iWeaponSkinsCount) { log_error(AMX_ERR_NATIVE, "[WSS] Get skin name: wrong skin index! index %d", skin); return 0; } new skin_info[SkinInfo]; ArrayGetArray(g_aWeaponSkins, skin - 1, skin_info); set_string(arg_name, skin_info[SkinName], get_param(arg_len)); return 1; } // native wss_set_user_skin(id, weaponid, skin_index); public native_set_user_skin(plugin, params) { enum { arg_id = 1, arg_weaponid, arg_skin_index }; new id = get_param(arg_id); new weaponid = get_param(arg_weaponid); new skin_index = get_param(arg_skin_index); if(id < 1 || id > 32) { log_error(AMX_ERR_NATIVE, "[WSS] Set user skin: wrong player index! index %d", id); return 0; } if(!weaponid) { arrayset(g_iPlayerSkins[id], 0, sizeof(g_iPlayerSkins[])); return 1; } g_iPlayerSkins[id][weaponid] = skin_index; return 1; } public client_connect(id) { arrayset(g_iPlayerSkins[id], 0, sizeof(g_iPlayerSkins[])); } #if defined DEFAULT_SKIN_MENU public Command_ChangeSkin(id) { new flagi = get_user_flags(id); if(!(flagi & ADMIN_LEVEL_A) && !(flagi & ADMIN_LEVEL_D) && !(flagi & ADMIN_LEVEL_F)) { client_print(id, print_chat, "[WSS] Nie posiadasz uprawnien do tego!"); return PLUGIN_CONTINUE; } new menu = menu_create("Skin Menu", "SkinMenu_Handler"); new skin_info[SkinInfo]; for(new i; i < g_iWeaponSkinsCount; i++) { ArrayGetArray(g_aWeaponSkins, i, skin_info); menu_additem(menu, skin_info[SkinName]); } menu_display(id, menu); return PLUGIN_CONTINUE; } public SkinMenu_Handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new skin_info[SkinInfo]; ArrayGetArray(g_aWeaponSkins, item, skin_info); g_iPlayerSkins[id][skin_info[WeaponID]] = item + 1; new weapon, weaponid; new cur_weapon = get_pdata_cbase(id, m_pActiveItem, XO_CBASEPLAYER); #define MAX_ITEM_SLOTS 6 for(new i; i < MAX_ITEM_SLOTS; i++) { weapon = get_pdata_cbase(id, m_rgpPlayerItems_CBasePlayer + i, XO_CBASEPLAYER); while (is_valid_pev(weapon)) { weaponid = get_pdata_int(weapon, m_iId, XO_CBASEPLAYERWEAPON); if(weaponid == skin_info[WeaponID]) { set_weapon_skin(weapon, item + 1); if(weapon == cur_weapon) { if(skin_info[ModelV]) set_pev(id, pev_viewmodel, skin_info[ModelV]); if(skin_info[ModelP]) set_pev(id, pev_weaponmodel, skin_info[ModelP]); } // stop cycles i = 6; break; } weapon = get_pdata_cbase(weapon, m_pNext, XO_CBASEPLAYERWEAPON); } } menu_destroy(menu); return PLUGIN_HANDLED; } public Command_ResetSkin(id) { new flagi = get_user_flags(id); if(!(flagi & ADMIN_LEVEL_A) && !(flagi & ADMIN_LEVEL_D) && !(flagi & ADMIN_LEVEL_F)) { client_print(id, print_chat, "[WSS] Nie posiadasz uprawnien do tego!"); return PLUGIN_CONTINUE; } static weapons[][] = { "", "weapon_p228", "weapon_shield", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" }; new menu = menu_create("Skin Reset", "SkinReset_Handler"); for(new i = 1, num[2]; i < 32; i++) { if(g_LoadedWeapons & (1 << i) && g_iPlayerSkins[id][i]) { num[0] = i; menu_additem(menu, weapons[i], num); } } menu_display(id, menu); return PLUGIN_CONTINUE; } public SkinReset_Handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new info[2], buffer; menu_item_getinfo(menu, item, buffer, info, charsmax(info), .callback = buffer); new weaponid = info[0]; g_iPlayerSkins[id][weaponid] = 0; menu_destroy(menu); return PLUGIN_HANDLED; } #endif // DEFAULT_SKIN_MENU public cs_weapon_add_to_player(id, weapon, weaponid, type) { if(type == ADD_BY_ARMORY_ENTITY || type == ADD_BY_WEAPONBOX) return 0; if(get_weapon_skin(weapon)) return 0; if(g_iPlayerSkins[id][weaponid]) { set_weapon_skin(weapon, g_iPlayerSkins[id][weaponid]); } return 0; } public cs_weapon_deploy(id, weapon, weaponid) { new skin = get_weapon_skin(weapon); if(skin) { new skin_info[SkinInfo]; ArrayGetArray(g_aWeaponSkins, skin - 1, skin_info); if(skin_info[ModelV]) set_pev(id, pev_viewmodel, skin_info[ModelV]); if(skin_info[ModelP]) set_pev(id, pev_weaponmodel, skin_info[ModelP]); } } public cs_weapon_drop(id, weaponbox, weapon, weaponid) { new skin = get_weapon_skin(weapon); if(skin) { new skin_info[SkinInfo]; ArrayGetArray(g_aWeaponSkins, skin - 1, skin_info); engfunc(EngFunc_SetModel, weaponbox, skin_info[ModelW]); return 1; } return 0; } stock get_weapon_csw(weapon_name[]) { static weapons[][] = { "", "weapon_p228", "weapon_shield", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" }; for(new i = 1; i < sizeof(weapons); i++) { if(equali(weapon_name, weapons[i])) { return i; } } return 0; }
#739826 Problem zapis fragów nvault
Napisane przez _McHappy w 23.05.2017 02:13
ResetHUD... Ahh te chodzenie na łatwiznę - można i ładniej, i optymalniej
Kodu wejściowego nie optymalizowałem.
W razie pytań co do zasady działania - pisz.
Załączone pliki
-
SkinyTesty.sma 26,38 KB 29 Ilość pobrań
SkinyTesty.amxx
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Reputacja: Dirr
- Regulamin