Kód: #include <amxmodx> #include <amxmisc> #include <fun> #include <regex> #define MAX_PLAYERS 32 #define MAXINPUT 7 #define SANITARY "abcdefg" new bool:g_restart_attempt[MAX_PLAYERS + 1] new amx_show_activity //new hitbox_allow_knife //new hitbox_allow_he new hitbox_bit public plugin_init(){ register_plugin("Hitbox Manipulator", "1.00", "Migs Davis") register_event("ResetHUD", "event_hud_reset", "be") register_event("TextMsg", "event_restart_attempt", "a", "2=#Game_will_restart_in") register_clcmd("fullupdate", "clcmd_fullupdate") register_concmd("amx_hitbox", "admin_set_hitbox", ADMIN_KICK, "<0|a|b|c|d|e|f|g> - Set hitboxes. Letters equal the body part, can combine letters.") //hitbox_allow_knife = register_cvar("hitbox_allow_knife", "1") //hitbox_allow_he = register_cvar("hitbox_allow_he", "1") hitbox_bit = register_cvar("hitbox_bit", "255") amx_show_activity = get_cvar_pointer("amx_show_activity") } public clcmd_fullupdate() { return PLUGIN_HANDLED } public event_restart_attempt(){ new players[32], num get_players(players, num, "a") for ( new i; i < num; ++i ) g_restart_attempt[players[i]] = true } public event_hud_reset(id){ if (g_restart_attempt[id]) { g_restart_attempt[id] = false return } set_properties(id) } public set_properties(id){ set_user_hitzones(0, 0, get_pcvar_num(hitbox_bit)) } public admin_set_hitbox(id, level, cid){ new flags[MAXINPUT+1], name[32], error[128], result_code, bit = 1 if ( !cmd_access(id, level, cid, 2) ) return PLUGIN_HANDLED read_argv(1, flags, MAXINPUT) strtolower(flags) new Regex:re = regex_match(flags, "0", result_code, error, 127) if (re >= REGEX_OK) { //This if/else will detect strange syntax, even if it doesn't need to regex_free(re) if (flags[0] == '0') { if (flags[1] == '^0'){ bit = 0; } else { bit = 0; //they have a 0 followed by unnecessary characters } } else{ bit = 1 // there is a 0 mixed in with other characters } } else { new buf[2] = {0,0} for (new i = 0; i<MAXINPUT; i++){ buf[0] = flags[i]; re = regex_match(SANITARY, buf[0], result_code, error, 127) if (re >= REGEX_OK){ regex_free(re) } else { flags[i] = 0 //They have weird characters in here } } } if (bit) { new buf2[2] = {97,0} //97 = a. for (new j = 2; j <= 128; j*=2, buf2[0]++){ re = regex_match(flags, buf2, result_code, error, 127) if (re >= REGEX_OK){ regex_free(re) bit += j } } } if (bit == 1){ //They didn't type any valid flags at all } set_pcvar_num(hitbox_bit, bit) get_user_name(id, name, 31) switch ( get_pcvar_num(amx_show_activity) ){ case 2: client_print(0, print_chat, "[AMXX] ADMIN %s has manipulated the hitboxes!", name) case 1: client_print(0, print_chat, "[AMXX] ADMIN has manipulated the hitboxes!") } set_properties(0) log_amx("[AMXX] ADMIN %s: set hitboxes to %d", name, bit) return PLUGIN_HANDLED }
valaki segitene ebbe hogy ne csak fejest löjön hanem pl hsa kez stb ?:)
|