Recovered from the archived server. This was never posted on the forum, so there is no thread behind it and no author post to quote — the attribution below comes from the plugin's own register_plugin() call where it has one.
timebomb
by Unknown · 2005-02-01
recovered from the server
From the first post
Decompiled source reconstructed
timebomb.amxx was published compiled only. This Pawn was recovered from the
bytecode with Lysis — 1499 lines. Strings, cvars and the plugin registration
survive; local variable names do not. It is an approximation, not the author's file.
// Decompiled from timebomb.amxx by Lysis.n// This is RECONSTRUCTED source, not the author's original: withoutn// debug symbols the variable names are lost and control flow isn// rebuilt from bytecode. Treat it as a readable approximation.nnnew g_vare5c = 1;nnew g_vare64;nnew g_varc = 15;nnew g_var8 = 40;nnew g_var888;nnew g_var2d8;nnew g_var894;nnew g_var890;nnew g_var88c;nnew g_vare60 = 1;nnew g_var89c;nnew g_var898;nnew g_var0 = 450;nnew g_var4 = 700;nnew g_varc2c;nnew g_varc30;nnew g_varc3c;nnew g_varc40;nnew g_varc44;nnew g_varc48;nnew g_varc34;nnew g_varc38;npublic HandleSay(_arg0)n{n new var1 = 0;n read_args(var1, 192);n remove_quotes(var1);n if (HandleSay2(_arg0, var1))n {n return 1;n }n return 0;n}nnpublic HandleSay2(_arg0, _arg1)n{n new var2;n var2 = get_gametime();n new var1;n if (equal(_arg1, "kamik", 5) || equal(_arg1, "kamak", 5))n {n if (g_vare5c == 0)n {n client_print(_arg0, "", "[AMXX] : Admin has disabled the ability to kamikaze.");n return 1;n }n if (is_user_alive(_arg0) == 0)n {n client_print(_arg0, "", "[AMXX] : You cannot become a bomb, you are already dead.");n return 1;n }n if (g_vare64 == 1)n {n client_print(_arg0, "", "[AMXX] : Its too early in the round to become a bomb.");n return 1;n }n if (0 < 3280[_arg0])n {n client_print(_arg0, "", "[AMXX] : You are the bomb already.");n return 1;n }n if (2472[_arg0] == 1)n {n client_print(_arg0, "", "[AMXX] : You are a spy, spys cannot become kamikazes.");n return 1;n }n new var3;n var3 = get_maxplayers() + 1;n new var4 = 1;n while (var4 < var3)n {n if (3412[var4] == 1)n {n client_print(_arg0, "", "[AMXX] : Wait your turn, someone else is the kamikazi.");n return 1;n }n var4++;n }n if (sub_2fc(3148[_arg0], var2))n {n client_print(_arg0, "", "[AMXX] : You were just a bomb a short while ago, give someone else a chance.");n return 1;n }n 2340[_arg0] = 0;n 3412[_arg0] = 1;n 3280[_arg0] = g_varc;n 3148[_arg0] = sub_174(var2, g_var8);n new var5 = 0;n get_user_name(_arg0, var5, 32);n sub_b0cc(_arg0);n client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n client_print(g_var0, "", "[AMXX] : %s has become a human timebomb, run for cover!!!", var5);n return 0;n }n return 0;n}nnpublic admin_timebomb(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 2))n {n return 1;n }n new var1 = 0;n read_argv(1, var1, 32);n new var2;n var2 = sub_bd0(_arg0, var1, 1);n if (!var2)n {n return 1;n }n if (is_user_alive(var2) == 0)n {n console_print(_arg0, "[AMXX] The player is dead and cannot be bombed");n return 1;n }n if (0 < 3280[var2])n {n console_print(_arg0, "[AMXX] : That player is already a bomb");n return 1;n }n 2340[var2] = 0;n 3280[var2] = g_varc;n new var3 = 0;n get_user_name(var2, var3, 32);n client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n client_print(g_var0, "", "[AMXX] : %s has become a human timebomb, run for cover!!!", var3);n new var4 = 0;n new var5 = 0;n new var6 = 0;n get_user_authid(var2, var5, 16);n get_user_authid(_arg0, var4, 16);n get_user_name(_arg0, var6, 32);n sub_b0cc(var2);n log_amx(""%s<%d><%s><>" timebomb "%s<%d><%s><>"", var6, get_user_userid(_arg0), var4, var3, get_user_userid(var2), var5);n console_print(_arg0, "[AMXX] Client "%s" bombed", var3);n client_print(g_var0, "", "[AMXX] Admin: %s has bombed %s", var6, var3);n return 1;n}nnpublic admin_votebomb(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 2))n {n return 1;n }n new var3;n var3 = get_cvar_float("amx_last_voting");n if (sub_2fc(var3, get_gametime()))n {n console_print(_arg0, "There is already one voting...");n return 1;n }n new var1;n if (var3 && sub_2fc(floatadd(var3, get_cvar_float("amx_vote_delay")), get_gametime()))n {n console_print(_arg0, "Voting not allowed at this time");n return 1;n }n new var4 = 0;n get_cvar_string("amx_vote_inprogress", var4, 32);n if (equal(var4, 13592, 1))n {n new var5 = 0;n read_argv(1, var5, 32);n new var6;n var6 = sub_bd0(_arg0, var5, 1);n if (!var6)n {n return 1;n }n new var7 = 0;n new var8 = 0;n get_user_name(var6, var5, 32);n if (is_user_alive(var6) == 0)n {n client_print(_arg0, 2, "[AMXX] %s is dead and cannot be voted a bomb.", var5);n return 1;n }n format(var7, 256, "yShould we blow up %s?wnn1. Yesn2. No", var5);n num_to_str(var6, 1640/* ERROR unknown load Constant */ + 1640, 32);n var8 = 3;n new var9 = 0;n new var10 = 0;n get_user_authid(_arg0, var9, 16);n get_user_name(_arg0, var10, 32);n log_amx(""%s<%d><%s><>" vote bomb (target "%s")", var10, get_user_userid(_arg0), var9, var5);n new var11;n var11 = floatadd(1073741824, get_cvar_float("amx_vote_time"));n set_cvar_float("amx_last_voting", floatadd(get_gametime(), var11));n g_var888 = get_cvar_float("amx_votetimebomb_ratio");n copy(1128, 128, "bomb %s");n new var12 = 0;n while (var12 < 33)n {n 732[var12][1] = 0;n var12++;n }n g_var2d8 += 1;n set_cvar_string("amx_vote_inprogress", 14432);n ejl_vault("WRITE", "CURRENT_VOTE", "TIMEBOMB");n g_var894 = 1;n g_var890 = 0;n new var13 = 0;n new var14;n var14 = get_maxplayers() + 1;n new var15 = 1;n while (var15 < var14)n {n get_user_team(var15, var13, 33);n new var2;n if (equali(var13, "UNAS", g_var4) || equali(var13, "SPEC", g_var4) || get_user_time(var15, g_var0) != 0)n {n show_menu(var15, var8, var7, floatround(var11, g_var0), {0});n g_var890 += 1;n }n var15++;n }n set_task(var11, "check_votes", g_var0, {0}, g_var0, {0}, g_var0);n g_var88c = 0;n client_print(_arg0, 2, "[AMXX] Voting has started...");n new var16 = 0;n while (var16 < 4)n {n 2168[var16] = 0;n var16++;n }n }n elsen {n client_print(_arg0, 2, "[AMXX] Voting not allowed yet.");n }n return 1;n}nnpublic amx_tb_credit(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (2 > read_argc())n {n new var2 = 0;n if (g_vare60 == 1)n {n copy(var2, g_var4, "ON");n }n elsen {n copy(var2, g_var4, "OFF");n }n console_print(_arg0, "[AMXX] Usage: amx_timebomb_credit < on | off > Currently: %s", var2);n return 1;n }n new var3 = 0;n read_argv(1, var3, 10);n new var1;n if (equal(var3, "on", 2) || equal(var3, 6104, 1))n {n g_vare60 = 1;n console_print(_arg0, "[AMXX] Kamikaze frag credit is now ON");n client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze frag credit mode ON");n }n elsen {n g_vare60 = 0;n console_print(_arg0, "[AMXX] Kamikaze frag credit is now OFF");n client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze frag credit mode OFF");n }n new var4 = 0;n new var5 = 0;n get_user_authid(_arg0, var4, 16);n get_user_name(_arg0, var5, 32);n log_amx(""%s<%d><%s><>" kamikazi_frag_cr %s", var5, get_user_userid(_arg0), var4, var3);n return 1;n}nnpublic amx_tb_credit_d(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_vare60 == 0)n {n ejl_vault("WRITE", "Kamikazi_FragCredit", "off");n console_print(_arg0, "[AMXX] Kamikaze frag credit: OFF is now the default.");n }n elsen {n ejl_vault("WRITE", "Kamikazi_FragCredit", "on");n console_print(_arg0, "[AMXX] Kamikaze frag credit: ON is now the default.");n }n new var1 = 0;n new var2 = 0;n get_user_authid(_arg0, var1, 16);n get_user_name(_arg0, var2, 32);n log_amx(""%s<%d><%s><>" kamikazi_frag_cr_d", var2, get_user_userid(_arg0), var1);n return 1;n}nnpublic amx_tfc_by(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (2 > read_argc())n {n new var2 = 0;n if (g_var89c == 1)n {n copy(var2, g_var4, "ON");n }n elsen {n copy(var2, g_var4, "OFF");n }n console_print(_arg0, "[AMXX] Usage: amx_timebomb_tfc_b < on | off > Currently: %s", var2);n return 1;n }n new var3 = 0;n read_argv(1, var3, 10);n new var1;n if (equal(var3, "on", 2) || equal(var3, 8104, 1))n {n g_var89c = 1;n console_print(_arg0, "[AMXX] TFC timebomb bystander damage ON");n client_print(g_var0, "", "[AMXX] Admin has turned TFC timebomb bystander damage ON");n }n elsen {n g_var89c = 0;n console_print(_arg0, "[AMXX] TFC timebomb bystander damage is now OFF");n client_print(g_var0, "", "[AMXX] Admin has turned TFC timebomb bystander damage OFF");n }n new var4 = 0;n new var5 = 0;n get_user_authid(_arg0, var4, 16);n get_user_name(_arg0, var5, 32);n log_amx(""%s<%d><%s><>" tfc_bystander %s", var5, get_user_userid(_arg0), var4, var3);n return 1;n}nnpublic amx_tfc_by_d(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_var89c == 0)n {n ejl_vault("WRITE", "TFC_Kamikazi_b", "off");n console_print(_arg0, "[AMXX] TFC timebomb bystander damage: OFF is now the default.");n }n elsen {n ejl_vault("WRITE", "TFC_Kamikazi_b", "on");n console_print(_arg0, "[AMXX] TFC timebomb bystander damage: ON is now the default.");n }n new var1 = 0;n new var2 = 0;n get_user_authid(_arg0, var1, 16);n get_user_name(_arg0, var2, 32);n log_amx(""%s<%d><%s><>" tfc_bystander_d", var2, get_user_userid(_arg0), var1);n return 1;n}nnpublic amx_timebombs(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_var898 == 1)n {n console_print(_arg0, "[AMXX] Kamikaze ON/OFF is locked. No change can be made unless you do amx_timebombs_lock");n return 1;n }n if (2 > read_argc())n {n new var2 = 0;n if (g_vare5c == 1)n {n copy(var2, g_var4, "ON");n }n elsen {n copy(var2, g_var4, "OFF");n }n console_print(_arg0, "[AMXX] Usage: amx_timebombs < on | off > Currently: %s", var2);n return 1;n }n new var3 = 0;n read_argv(1, var3, 10);n new var1;n if (equal(var3, "on", 2) || equal(var3, 4420, 1))n {n g_vare5c = 1;n console_print(_arg0, "[AMXX] Kamikaze mode is now ON");n client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze mode ON");n }n elsen {n g_vare5c = 0;n console_print(_arg0, "[AMXX] Kamikaze mode is now OFF");n client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze mode OFF");n }n new var4 = 0;n new var5 = 0;n get_user_authid(_arg0, var4, 16);n get_user_name(_arg0, var5, 32);n log_amx(""%s<%d><%s><>" timebombs_mode %s", var5, get_user_userid(_arg0), var4, var3);n return 1;n}nnpublic amx_timebombs_d(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_vare5c == 0)n {n ejl_vault("WRITE", "Timebombs", "off");n console_print(_arg0, "[AMXX] Kamikaze mode OFF is now the default.");n }n elsen {n ejl_vault("WRITE", "Timebombs", "on");n console_print(_arg0, "[AMXX] Kamikaze mode ON is now the default.");n }n new var1 = 0;n new var2 = 0;n get_user_authid(_arg0, var1, 16);n get_user_name(_arg0, var2, 32);n log_amx(""%s<%d><%s><>" timebombs_mode_d", var2, get_user_userid(_arg0), var1);n return 1;n}nnpublic blowem_up(_arg0)n{n if (_arg0 == 100)n {n new var8;n var8 = get_maxplayers() + 1;n new var9 = 1;n while (var9 < var8)n {n new var1;n if (3280[var9] > 0 || 3412[var9] == 1)n {n 3412[var9] = 0;n 3280[var9] = 0;n new var10 = 0;n get_user_name(var9, var10, 32);n set_hudmessage(200, 255, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n show_hudmessage(g_var0, "%s has exploded.", var10);n new var11 = 0;n get_user_origin(var9, var11, g_var0);n var11 + 8/* ERROR unknown load Binary */ = var11 + 8/* ERROR unknown load Binary */ - 26;n user_kill(var9, 1);n sub_1840(var11, var9);n 3544[var9] = 1;n }n var9++;n }n }n elsen {n if (0 < 3280[_arg0])n {n new var12 = 0;n new var13 = 0;n new var14 = 0;n new var15 = 0;n get_user_name(_arg0, var15, 31);n set_hudmessage(200, 255, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n show_hudmessage(g_var0, "%s has exploded.", var15);n new var16 = 0;n get_user_origin(_arg0, var16, g_var0);n new var17;n var17 = get_maxplayers() + 1;n new var18 = 1;n while (var18 < var17)n {n if (cvar_exists("mp_friendlyfire"))n {n new var19;n var19 = get_cvar_num("mp_friendlyfire");n new var3;n if (var19 != 0 && (var19 == 1 && get_cvar_num("amx_kamikaze_obeyffcvar") == 0))n {n if (get_user_team(_arg0, {0}, g_var0) != get_user_team(var18, {0}, g_var0))n {n new var4;n if (is_user_alive(var18) == 1 && _arg0 != var18)n {n get_user_origin(var18, var14, g_var0);n if (g_var0 > get_distance(var16, var14))n {n sub_a2b8(var18, _arg0, 1, var14, 0);n }n if (g_var4 > get_distance(var16, var14))n {n sub_a2b8(var18, _arg0, 0, var14, 0);n }n }n }n }n elsen {n new var5;n if (is_user_alive(var18) == 1 && _arg0 != var18)n {n get_user_origin(var18, var14, g_var0);n if (get_user_team(_arg0, {0}, g_var0) == get_user_team(var18, {0}, g_var0))n {n if (g_var0 > get_distance(var16, var14))n {n if (!g_vare64)n {n sub_a2b8(var18, _arg0, 1, var14, 1);n }n }n elsen {n if (g_var4 > get_distance(var16, var14))n {n if (!g_vare64)n {n sub_a2b8(var18, _arg0, 0, var14, 1);n }n }n }n }n if (g_var0 > get_distance(var16, var14))n {n sub_a2b8(var18, _arg0, 1, var14, 0);n }n if (g_var4 > get_distance(var16, var14))n {n sub_a2b8(var18, _arg0, 0, var14, 0);n }n }n }n }n elsen {n new var6;n if (is_user_alive(var18) == 1 && _arg0 != var18)n {n get_user_origin(var18, var14, g_var0);n if (g_var0 > get_distance(var16, var14))n {n sub_a2b8(var18, _arg0, 1, var14, 0);n }n if (g_var4 > get_distance(var16, var14))n {n sub_a2b8(var18, _arg0, 0, var14, 0);n }n }n }n var18++;n }n 3280[_arg0] = 0;n 3412[_arg0] = 0;n client_print(_arg0, "", "[AMXX] : Sorry, the bomb killed you.");n user_kill(_arg0, 1);n message_begin(1, g_varc2c, 19608, _arg0);n write_short(2048);n write_short(2048);n write_short(4096);n write_byte(250);n write_byte(250);n write_byte(250);n write_byte(255);n message_end();n new var7;n if (g_vare60 == 1 && 2340[_arg0] > 0)n {n client_print(_arg0, "", "[AMXX] : Your kamikazi attempt was a success: You made %d KILLS.", 2340[_arg0]);n }n var16 + 8/* ERROR unknown load Binary */ = var16 + 8/* ERROR unknown load Binary */ - 26;n sub_1840(var16, _arg0);n get_players(var12, var13, 19888, 19896);n new var20 = 0;n while (var20 < var13)n {n message_begin(1, g_varc30, 19900, var12[var20]);n write_short(16384);n write_short(16384);n write_short(16384);n message_end();n var20++;n }n message_begin(g_var0, 23, 19912, _arg0);n write_byte(107);n write_coord(var16);n write_coord(var16 + 4/* ERROR unknown load Binary */);n write_coord(var16 + 8/* ERROR unknown load Binary */);n write_coord("");n write_short(g_varc3c);n write_short(25);n write_byte(100);n message_end();n 3544[_arg0] = 1;n set_user_rendering(_arg0, g_var0, g_var0, g_var0, g_var0, 5, g_var0);n }n }n return 0;n}nnpublic check_votes()n{n set_cvar_string("amx_vote_inprogress", 10572);n ejl_vault("WRITE", "CURRENT_VOTE", "NULL");n g_var894 = 0;n new var2 = 0;n while (var2 < 33)n {n 732[var2][1] = 0;n var2++;n }n if (g_var88c == 1)n {n g_var88c = 0;n client_print(g_var0, "", "[AMXX] Voting sucessfully stopped.");n return 1;n }n new var3 = 0;n new var4 = 0;n new var5 = 0;n while (var5 < 4)n {n if (var4 < 2168[var5])n {n var4 = 2168[var5];n var3 = var5;n }n var5++;n }n new var6;n var6 = g_var890;n new var7;n new var1;n if (var6)n {n var1 = floatdiv(float(2168[var3]), float(var6));n }n elsen {n var1 = 0;n }n var7 = var1;n if (sub_2fc(var7, g_var888))n {n new var8;n var8 = str_to_num(1640/* ERROR unknown load Constant */ + 1640);n new var9 = 0;n get_user_name(var8, var9, 32);n if (var3 == 0)n {n if (is_user_alive(var8) == 0)n {n client_print(g_var0, "", "[AMXX] %s is dead and cannot be turned into a bomb.", var9);n return 1;n }n 2340[var8] = 0;n 3280[var8] = g_varc;n sub_b0cc(var8);n client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n client_print(g_var0, "", "[AMXX] Voting successful. The result: %s has been turned into a timebomb by vote. (%d - %d of %d)", var9, 2168, 2168 + 4, g_var890);n }n elsen {n client_print(g_var0, "", "[AMXX] Voting result: %s will not become a timebomb. (%d - %d of %d)", var9, 2168, 2168 + 4, g_var890);n log_amx("World triggered "voting_success" (needed "%.2f") (ratio "%.2f") (result "bomb")", g_var888, var7);n }n }n elsen {n client_print(g_var0, "", "[AMXX] Bomb voting failed... Not enough for a clear majority (%d - %d of %d)", 2168, 2168 + 4, g_var890);n log_amx("World triggered "voting_failure" (needed "%.2f") (ratio "%.2f")", g_var888, var7);n }n return 1;n}nnpublic client_connect(_arg0)n{n 3148[_arg0] = 0;n 3280[_arg0] = 0;n 3412[_arg0] = 0;n 3544[_arg0] = 0;n 732[_arg0][1] = 0;n 2472[_arg0] = 0;n return 0;n}nnpublic client_disconnect(_arg0)n{n 3148[_arg0] = 0;n 3280[_arg0] = 0;n 3412[_arg0] = 0;n 3544[_arg0] = 0;n 732[_arg0][1] = 0;n 2472[_arg0] = 0;n return 0;n}nnpublic ejl_vault(_arg0, _arg1, _arg2)n{n new var2 = 0;n new var3 = 0;n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n new var9 = 0;n new var10 = 0;n sub_138c(var9, 64);n format(var10, 64, "%s/ejl_vault.ini", var9);n if (equal(_arg0, "READ", g_var0))n {n if (file_exists(var10) == 1)n {n copy(2604, 128, 27124);n while ((var4 = read_file(var10, var4, var2, 192, var3)) != 0)n {n parse(var2, var6, 64, var7, 128);n if (equal(var6, _arg1, g_var0))n {n copy(2604, 128, var7);n }n }n }n elsen {n write_file(var10, "**** Plugins use to store values -- immune to crashes and map changes ****", g_var0);n }n }n elsen {n if (equal(_arg0, "WRITE", g_var0))n {n if (file_exists(var10) == 1)n {n format(var8, 192, "%s %s", _arg1, _arg2);n while ((var4 = read_file(var10, var4, var2, 192, var3)) != 0)n {n parse(var2, var6, 64, var7, 128);n if (var5 == 0)n {n new var1;n if (equal(var2, 27476, g_var0) || equal(var6, _arg1, g_var0))n {n var5 = 1;n write_file(var10, var8, var4 + -1);n }n }n elsen {n if (equal(var6, _arg1, g_var0))n {n write_file(var10, 27480, var4 + -1);n }n }n }n if (var5 == 0)n {n write_file(var10, var8, -1);n }n }n }n }n return 0;n}nnpublic handle_botsayplugin()n{n new var1 = 0;n read_argv(1, var1, 7);n new var2;n var2 = str_to_num(var1);n new var3 = 0;n read_args(var3, 191);n new var4 = 0;n read_argv(2, var4, 7);n new var5;n var5 = str_to_num(var4);n if (is_user_bot(var5))n {n new var6 = 0;n new var7;n var7 = strlen(var3);n new var8;n var8 = contain(var3, ": ");n copy(var6, var7 - var8 + 5, var3[var8 + 5]);n if (HandleSay2(var5, var6))n {n server_cmd("botsayreturn %d 1", var2);n }n }n return 0;n}nnpublic lock_unlock(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_var898 == 1)n {n g_var898 = 0;n console_print(_arg0, "[AMXX] Kamikaze mode lock is OFF.");n }n elsen {n g_var898 = 1;n console_print(_arg0, "[AMXX] Kamikazi mode lock is ON.");n if (g_vare5c == 1)n {n console_print(_arg0, "[AMXX] You have locked kamikazi ON mode.");n }n console_print(_arg0, "[AMXX] You have locled Kamikazi OFF mode.");n }n return 1;n}nnpublic new_spawn(_arg0)n{n set_user_rendering(_arg0, g_var0, 255, 255, 255, g_var0, 16);n 3544[_arg0] = 0;n return 0;n}nnpublic plugin_init()n{n register_plugin(16, "3.1.2", "eisbein based of GIR");n register_cvar("amx_luds_kamikaze", "v3.1.2", g_var4, g_var0);n register_concmd("amx_timebombs", "amx_timebombs", 16, "<on |off> turns ability to kamikazi on and off");n register_concmd("amx_timebombs_default", "amx_timebombs_d", 2048, "sets the current kamikazi mode as default");n register_concmd("amx_timebomb_credit", "amx_tb_credit", 16, "<on |off> turns kamikazi frag credit on and off");n register_concmd("amx_timebomb_credit_default", "amx_tb_credit_d", 2048, "sets the current kamikazi frag credit mode as default");n register_concmd("amx_timebomb", "admin_timebomb", 16, "< player >");n register_concmd("amx_votetimebomb", "admin_votebomb", 33554432, "< part of nick >");n register_concmd("amx_timebombs_lock", "lock_unlock", 2048, "Locks/unlocks the current timebombs mode");n register_concmd("stopvote", "stopvote", 32, "stops vote in progress");n register_clcmd("say", "HandleSay", -1, {0});n register_concmd("say", "HandleSay", -1, {0});n register_event("ResetHUD", "roundend_cleanup", 24984, "2&#Game_C", "2&#Game_w");n register_srvcmd("botsay", "handle_botsayplugin", -1, {0});n register_cvar("amx_kamikaze_obeyffcvar", 25280, g_var0, g_var0);n register_cvar("amx_kamikaze_tkpunish1", 25380, g_var0, g_var0);n register_cvar("amx_kamikaze_tkpunish2", 25480, g_var0, g_var0);n set_cvar_string("amx_kamikaze_obeyffcvar", 25584);n set_cvar_string("amx_kamikaze_tkpunish1", 25684);n set_cvar_string("amx_kamikaze_tkpunish2", 25784);n register_cvar("amx_vote_inprogress", 25872, g_var0, g_var0);n register_cvar("amx_last_voting", 25944, g_var0, g_var0);n set_cvar_float("amx_last_voting", g_var0);n register_menucmd(register_menuid("Should we blow up ", g_var0), 15, "vote_count");n register_cvar("amx_votetimebomb_ratio", "0.51", g_var0, g_var0);n g_varc2c = get_user_msgid("ScreenFade");n g_varc30 = get_user_msgid("ScreenShake");n set_task(1065353216, "timebomb_timer", 765, 26400, g_var0, 26404, 9999);n ejl_vault("READ", "Timebombs", 26472);n if (equal(2604, "off", g_var0))n {n g_vare5c = 0;n }n elsen {n g_vare5c = 1;n }n ejl_vault("READ", "Kamikazi_FragCredit", 26592);n if (equal(2604, "off", g_var0))n {n g_vare60 = 0;n }n elsen {n g_vare60 = 1;n }n ejl_vault("READ", "TFC_Kamikazi_b", 26692);n if (equal(2604, "off", g_var0))n {n g_var89c = 0;n }n elsen {n g_var89c = 1;n }n ejl_vault("WRITE", "CURRENT_VOTE", "NULL");n set_task(1074580685, "set_kamik_rule", g_var0, {0}, g_var0, {0}, g_var0);n register_event("ResetHUD", "new_spawn", 26944, {0});n return 0;n}nnpublic plugin_log()n{n new var1;n var1 = read_logargc();n if (var1 == 2)n {n new var2 = 0;n read_logargv(1, var2, 31);n if (var2 + 24/* ERROR unknown load Binary */ == 83)n {n round_start();n }n }n elsen {n if (var1 == 3)n {n new var3 = 0;n read_logargv(1, var3, 31);n if (equal(var3, "changed role to", 15))n {n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n read_logargv(g_var0, var4, 63);n read_logargv(2, var8, 31);n new var9;n var9 = strlen(var4);n new var10;n var10 = var9;n new var11 = 0;n while (var11 < var9)n {n var10 += -1;n if (0 < var10)n {n if (var4[var10] == 60)n {n var7 += 1;n if (var7 == 2)n {n copy(var5, var11 - var6, var4[var10 + 1]);n }n if (var7 == 1)n {n var6 = var11 + 2;n }n }n }n var11++;n }n new var12;n var12 = find_player(21904, var5);n if (!var12)n {n return 0;n }n if (equali(var8, "Spy", g_var0))n {n 2472[var12] = 1;n }n elsen {n 2472[var12] = 0;n }n }n }n }n return 0;n}nnpublic plugin_precache()n{n g_varc40 = precache_model("sprites/smoke.spr");n g_varc44 = precache_model("sprites/white.spr");n g_varc48 = precache_model("sprites/explode1.spr");n g_varc34 = precache_model("sprites/glow01.spr");n g_varc38 = precache_model("models/mapmodels/g_dynamite.mdl");n g_varc3c = precache_model("models/hgibs.mdl");n precache_sound("buttons/blip2.wav");n return 0;n}nnpublic round_start()n{n new var1;n var1 = get_maxplayers() + 1;n new var2 = 1;n while (var2 < var1)n {n if (3544[var2] == 1)n {n set_user_rendering(var2, g_var0, 255, 255, 255, g_var0, 16);n 3544[var2] = 0;n }n var2++;n }n return 0;n}nnpublic roundend_cleanup()n{n blowem_up(100);n g_vare64 = 1;n set_task(1097859072, "roundstart_delay", g_var0, {0}, g_var0, {0}, g_var0);n return 0;n}nnpublic roundstart_delay()n{n g_vare64 = 0;n return 0;n}nnpublic set_kamik_rule()n{n new var1 = 0;n new var2 = 0;n new var3 = 0;n sub_138c(var2, 32);n get_mapname(var1, 33);n format(var3, 64, "%s/kamikazi.txt", var2);n if (file_exists(var3) == 1)n {n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n while ((var4 = read_file(var3, var4, var5, 128, _unused_temp_)) != 0)n {n parse(var5, var6, 32, var7, 2, var8, 2);n if (equali(var6, var1, g_var0))n {n if (equal(var7, 27020, 1))n {n g_vare5c = 1;n }n elsen {n g_vare5c = 0;n }n if (equal(var8, 27028, 1))n {n g_var898 = 1;n }n }n }n }n return 1;n}nnpublic stopvote(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_var894 == 1)n {n new var1 = 0;n get_user_name(_arg0, var1, 32);n g_var88c = 1;n client_print(_arg0, 2, "[AMXX] ADMIN !!! Ignore the unknown command message -- its ok");n client_print(g_var0, "", "[AMXX] %s has disabled the vote in progress.", var1);n }n return 0;n}nnpublic timebomb_timer()n{n new var3;n var3 = get_gametime();n new var4 = 100;n new var5;n var5 = get_maxplayers() + 1;n new var6 = 0;n var6 = 1;n while (var6 < var5)n {n new var1;n if (3280[var6] != 0 && 3280[var6] < var4)n {n var4 = var6;n }n new var2;n if (3412[var6] == 1 && sub_3bc(sub_174(sub_174(sub_174(3148[var6], g_var8), g_varc), 5), var3))n {n 3412[var6] = 0;n 3280[var6] = 0;n }n var6++;n }n var6 = 1;n while (var6 < var5)n {n if (0 < 3280[var6])n {n emit_sound(var6, "", "buttons/blip2.wav", 1065353216, 1061997773, g_var0, 100);n new var7 = 0;n get_user_origin(var6, var7, g_var0);n message_begin(g_var0, 23, 18808, var6);n write_byte(17);n write_coord(var7);n write_coord(var7 + 4/* ERROR unknown load Binary */);n write_coord(var7 + 8/* ERROR unknown load Binary */ + 20);n write_short(g_varc34);n write_byte(20);n write_byte(200);n message_end();n if (3280[var6] == 1)n {n blowem_up(var6);n }n elsen {n 3280[var6] -= 1;n if (var4 == var6)n {n new var8 = 0;n new var9 = 0;n get_user_name(var6, var8, 32);n get_user_team(var6, var9, 32);n if (equal(var9, 18820, 1))n {n set_hudmessage(200, g_var0, g_var0, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n }n elsen {n set_hudmessage(g_var0, 100, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n }n show_hudmessage(g_var0, "%s will explode in %d seconds.", var8, 3280[var6]);n if (3280[var6] == 11)n {n client_cmd(g_var0, "spk "fvox/remaining"");n }n if (11 > 3280[var6])n {n new var10 = 0;n num_to_word(3280[var6], var10, 48);n client_cmd(g_var0, "spk "fvox/%s"", var10);n }n }n if (is_user_alive(var6) == 0)n {n blowem_up(var6);n }n }n }n var6++;n }n return 0;n}nnpublic vote_count(_arg0, _arg1)n{n ejl_vault("READ", "CURRENT_VOTE", 12900);n if (equal(2604, "TIMEBOMB", g_var0))n {n new var1 = 0;n get_user_name(_arg0, var1, 32);n if (732[_arg0] != g_var2d8)n {n 732[_arg0] = g_var2d8;n if (!(sub_47c(get_cvar_float("amx_vote_answers"))))n {n client_print(g_var0, "", "[AMXX] %s voted for option # %d", var1, _arg1 + 1);n }n 2168[_arg1] += 1;n }n elsen {n 732[_arg0][1] += 1;n }n return 1;n }n return 0;n}nnsub_2fc(_arg0, _arg1)n{n return 0 < floatcmp(_arg0, _arg1);n}nnsub_174(_arg0, _arg1)n{n return floatadd(_arg0, float(_arg1));n}nnsub_b0cc(_arg0)n{n new var2;n var2 = g_varc * 10 + 20;n new var1;n if (var2 > 255 || var2 < 1)n {n var2 = 255;n }n message_begin(g_var0, 23, 21828, _arg0);n write_byte(124);n write_byte(_arg0);n write_coord(7);n write_short(g_varc38);n write_short(var2);n message_end();n return 0;n}nnsub_72c(_arg0, _arg1, _arg2, _arg3)n{n new var2 = 0;n new var1;n if (is_dedicated_server())n {n var1 = 0;n }n elsen {n var1 = 1;n }n if (var1 == _arg0)n {n var2 = 1;n }n elsen {n if (_arg1 == 16777216)n {n if (sub_64c(_arg0))n {n var2 = 1;n }n }n if (_arg1 & get_user_flags(_arg0, g_var0))n {n var2 = 1;n }n if (_arg1 == 0)n {n var2 = 1;n }n }n if (var2 == 0)n {n console_print(_arg0, "%L", _arg0, "NO_ACC_COM");n return 0;n }n if (_arg3 > read_argc())n {n new var3 = 0;n new var4 = 0;n get_concmd(_arg2, var3, 31, _unused_temp_, var4, 127, _arg1, -1);n console_print(_arg0, "%L: %s %s", _arg0, "USAGE", var3, var4);n return 0;n }n return 1;n}nnsub_bd0(_arg0, _arg1, _arg2)n{n new var4;n var4 = find_player("bl", _arg1);n if (var4)n {n if (find_player("blj", _arg1) != var4)n {n console_print(_arg0, "%L", _arg0, "MORE_CL_MATCHT");n return 0;n }n }n elsen {n new var1;n if ((var4 = find_player(388, _arg1)) == 0 && _arg1 == 35 && _arg1 + 4/* ERROR unknown load Binary */)n {n var4 = find_player(396, str_to_num(_arg1 + 4));n }n }n if (!var4)n {n console_print(_arg0, "%L", _arg0, "CL_NOT_FOUND");n return 0;n }n if (_arg2 & 1)n {n new var3;n if (get_user_flags(var4, g_var0) & 1 && _arg2 & 2)n {n new var5 = 0;n get_user_name(var4, var5, 31);n console_print(_arg0, "%L", _arg0, "CLIENT_IMM", var5);n return 0;n }n }n if (_arg2 & 4)n {n if (!is_user_alive(var4))n {n new var6 = 0;n get_user_name(var4, var6, 31);n console_print(_arg0, "%L", _arg0, "CANT_PERF_DEAD", var6);n return 0;n }n }n if (_arg2 & 8)n {n if (is_user_bot(var4))n {n new var7 = 0;n get_user_name(var4, var7, 31);n console_print(_arg0, "%L", _arg0, "CANT_PERF_BOT", var7);n return 0;n }n }n return var4;n}nnsub_1840(_arg0, _arg1)n{n message_begin(g_var0, 23, _arg0, g_var0);n write_byte(21);n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */ + 16);n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */ + 1936);n write_short(g_varc44);n write_byte(g_var0);n write_byte(g_var0);n write_byte("");n write_byte(20);n write_byte(g_var0);n write_byte(188);n write_byte("%L: %s %s");n write_byte(255);n write_byte(255);n write_byte(g_var0);n message_end();n message_begin(g_var0, 23, {0,0,0}, g_var0);n write_byte(g_varc);n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */);n write_byte(188);n write_byte(10);n message_end();n message_begin(g_var0, 23, _arg0, g_var0);n write_byte("");n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */);n write_short(g_varc48);n write_byte(65);n write_byte(10);n write_byte(g_var0);n message_end();n message_begin(g_var0, 23, 3700, _arg1);n write_byte(125);n write_byte(_arg1);n message_end();n message_begin(g_var0, 23, _arg0, g_var0);n write_byte(5);n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */);n write_short(g_varc40);n write_byte(20);n write_byte(10);n message_end();n return 0;n}nnsub_a2b8(_arg0, _arg1, _arg2, _arg3, _arg4)n{n new var3;n var3 = get_user_health(_arg0);n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n new var9 = 0;n get_user_team(_arg0, var5, 31);n get_user_name(_arg0, var9, 31);n get_user_authid(_arg0, var7, 31);n get_user_team(_arg1, var4, 31);n get_user_name(_arg1, var8, 31);n get_user_authid(_arg1, var6, 31);n new var1;n if (_arg2 == 1 || var3 < 50)n {n client_print(_arg0, "", "[AMXX] : Sorry, the bomb killed you.");n new var2;n if (g_vare60 == 1 && 3412[_arg1] == 1)n {n new var10;n var10 = get_user_frags(_arg1);n if (_arg4 == 0)n {n 2340[_arg1] += 1;n set_user_frags(_arg1, var10 + 1);n }n elsen {n 2208[_arg1] += 1;n set_user_frags(_arg1, var10 + -1);n new var11;n var11 = get_cvar_num("amx_kamikaze_tkpunish1");n new var12;n var12 = get_cvar_num("amx_kamikaze_tkpunish2");n if (var12 + -1 < 2208[_arg1])n {n if (var11 == 1)n {n client_cmd(_arg1, "echo You were kicked for team killing;disconnect");n }n if (var11 == 2)n {n client_cmd(_arg1, "echo You were banned for team killing");n if (equal("4294967295", var6, g_var0))n {n new var13 = 0;n get_user_ip(_arg1, var13, 31, 1);n server_cmd("addip 180.0 %s;writeip", var13);n }n server_cmd("banid 180.0 %s kick;writeid", var6);n }n }n }n log_message(""%s<%d><%s><%s>" killed "%s<%d><%s><%s>" with "Kamikaze Bomb"", var8, get_user_userid(_arg1), var6, var4, var9, get_user_userid(_arg0), var7, var5);n }n user_kill(_arg0, 1);n sub_1840(_arg3, _arg0);n }n elsen {n client_print(_arg0, "", "[AMXX] : Ouch, that bomb hurt you.");n set_user_health(_arg0, var3 + -50);n if (get_cvar_num("mp_logdetail") == 3)n {n log_message(""%s<%d><%s><%s>" attacked "%s<%d><%s><%s>" with "Kamikaze Bomb" (hit "chest") (damage "50") (health "%d")", var8, get_user_userid(_arg1), var6, var4, var9, get_user_userid(_arg0), var7, var5, get_user_health(_arg0));n }n if (_arg4 == 1)n {n new var14 = 0;n new var15 = 0;n get_players(var14, var15, 21724, var4);n new var16 = 0;n while (var16 < var15)n {n client_print(var14[var16], "", "%s attacked a teammate", var8);n var16++;n }n }n }n return 0;n}nnsub_2fc(_arg0, _arg1)n{n return 0 <= floatcmp(_arg0, _arg1);n}nnsub_138c(_arg0, _arg1)n{n return get_localinfo("amxx_configsdir", _arg0, _arg1);n}nnsub_174(_arg0, _arg1)n{n return floatsub(_arg0, float(_arg1));n}nnsub_3bc(_arg0, _arg1)n{n return 0 > floatcmp(_arg0, _arg1);n}nnsub_47c(_arg0, _arg1)n{n return _arg0 & -1 == 0;n}nnsub_64c(_arg0)n{n new var1;n return get_user_flags(_arg0, g_var0) > 0 && !get_user_flags(_arg0, g_var0) & 33554432;n}nn
Decompiled source reconstructed
timebomb_272.amxx was published compiled only. This Pawn was recovered from the
bytecode with Lysis — 1504 lines. Strings, cvars and the plugin registration
survive; local variable names do not. It is an approximation, not the author's file.
// Decompiled from timebomb_272.amxx by Lysis.n// This is RECONSTRUCTED source, not the author's original: withoutn// debug symbols the variable names are lost and control flow isn// rebuilt from bytecode. Treat it as a readable approximation.nnnew g_vare5c = 1;nnew g_vare64;nnew g_varc = 15;nnew g_var8 = 40;nnew g_var888;nnew g_var2d8;nnew g_var894;nnew g_var890;nnew g_var88c;nnew g_vare60 = 1;nnew g_var89c;nnew g_var898;nnew g_var0 = 450;nnew g_var4 = 700;nnew g_varc2c;nnew g_varc30;nnew g_varc3c;nnew g_varc40;nnew g_varc44;nnew g_varc48;nnew g_varc34;nnew g_varc38;npublic HandleSay(_arg0)n{n new var1 = 0;n read_args(var1, 192);n remove_quotes(var1);n if (HandleSay2(_arg0, var1))n {n return 1;n }n return 0;n}nnpublic HandleSay2(_arg0, _arg1)n{n new var2;n var2 = get_gametime();n new var3;n var3 = get_user_team(_arg0, {0}, g_var0);n new var1;n if (equal(_arg1, "kamik", 5) || equal(_arg1, "kamak", 5))n {n if (g_vare5c == 0)n {n client_print(_arg0, "", "[AMXX] : Admin has disabled the ability to kamikaze.");n return 1;n }n if (is_user_alive(_arg0) == 0)n {n client_print(_arg0, "", "[AMXX] : You cannot become a bomb, you are already dead.");n return 1;n }n if (g_vare64 == 1)n {n client_print(_arg0, "", "[AMXX] : Its too early in the round to become a bomb.");n return 1;n }n if (0 < 3280[_arg0])n {n client_print(_arg0, "", "[AMXX] : You are the bomb already.");n return 1;n }n if (2472[_arg0] == 1)n {n client_print(_arg0, "", "[AMXX] : You are a spy, spys cannot become kamikazes.");n return 1;n }n new var4;n var4 = get_maxplayers() + 1;n new var5 = 1;n while (var5 < var4)n {n if (get_cvar_num("amx_kamikaze_bombers") > 3688[var3])n {n client_print(_arg0, "", "[AMXX] : Wait your turn, too many kamikazis on your team.");n return 1;n }n var5++;n }n if (sub_2fc(3148[_arg0], var2))n {n client_print(_arg0, "", "[AMXX] : You were just a bomb a short while ago, give someone else a chance.");n return 1;n }n 2340[_arg0] = 0;n 3688[var3]++;n 3412[_arg0] = 1;n 3280[_arg0] = g_varc;n 3148[_arg0] = sub_174(var2, g_var8);n new var6 = 0;n get_user_name(_arg0, var6, 32);n sub_b258(_arg0);n client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n client_print(g_var0, "", "[AMXX] : %s has become a human timebomb, run for cover!!!", var6);n return 0;n }n return 0;n}nnpublic admin_timebomb(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 2))n {n return 1;n }n new var1 = 0;n read_argv(1, var1, 32);n new var2;n var2 = sub_bd0(_arg0, var1, 1);n if (!var2)n {n return 1;n }n if (is_user_alive(var2) == 0)n {n console_print(_arg0, "[AMXX] The player is dead and cannot be bombed");n return 1;n }n if (0 < 3280[var2])n {n console_print(_arg0, "[AMXX] : That player is already a bomb");n return 1;n }n 2340[var2] = 0;n 3280[var2] = g_varc;n new var3 = 0;n get_user_name(var2, var3, 32);n client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n client_print(g_var0, "", "[AMXX] : %s has become a human timebomb, run for cover!!!", var3);n new var4 = 0;n new var5 = 0;n new var6 = 0;n get_user_authid(var2, var5, 16);n get_user_authid(_arg0, var4, 16);n get_user_name(_arg0, var6, 32);n sub_b258(var2);n log_amx(""%s<%d><%s><>" timebomb "%s<%d><%s><>"", var6, get_user_userid(_arg0), var4, var3, get_user_userid(var2), var5);n console_print(_arg0, "[AMXX] Client "%s" bombed", var3);n client_print(g_var0, "", "[AMXX] Admin: %s has bombed %s", var6, var3);n return 1;n}nnpublic admin_votebomb(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 2))n {n return 1;n }n new var3;n var3 = get_cvar_float("amx_last_voting");n if (sub_2fc(var3, get_gametime()))n {n console_print(_arg0, "There is already one voting...");n return 1;n }n new var1;n if (var3 && sub_2fc(floatadd(var3, get_cvar_float("amx_vote_delay")), get_gametime()))n {n console_print(_arg0, "Voting not allowed at this time");n return 1;n }n new var4 = 0;n get_cvar_string("amx_vote_inprogress", var4, 32);n if (equal(var4, 13608, 1))n {n new var5 = 0;n read_argv(1, var5, 32);n new var6;n var6 = sub_bd0(_arg0, var5, 1);n if (!var6)n {n return 1;n }n new var7 = 0;n new var8 = 0;n get_user_name(var6, var5, 32);n if (is_user_alive(var6) == 0)n {n client_print(_arg0, 2, "[AMXX] %s is dead and cannot be voted a bomb.", var5);n return 1;n }n format(var7, 256, "yShould we blow up %s?wnn1. Yesn2. No", var5);n num_to_str(var6, 1640/* ERROR unknown load Constant */ + 1640, 32);n var8 = 3;n new var9 = 0;n new var10 = 0;n get_user_authid(_arg0, var9, 16);n get_user_name(_arg0, var10, 32);n log_amx(""%s<%d><%s><>" vote bomb (target "%s")", var10, get_user_userid(_arg0), var9, var5);n new var11;n var11 = floatadd(1073741824, get_cvar_float("amx_vote_time"));n set_cvar_float("amx_last_voting", floatadd(get_gametime(), var11));n g_var888 = get_cvar_float("amx_votetimebomb_ratio");n copy(1128, 128, "bomb %s");n new var12 = 0;n while (var12 < 33)n {n 732[var12][1] = 0;n var12++;n }n g_var2d8 += 1;n set_cvar_string("amx_vote_inprogress", 14448);n ejl_vault("WRITE", "CURRENT_VOTE", "TIMEBOMB");n g_var894 = 1;n g_var890 = 0;n new var13 = 0;n new var14;n var14 = get_maxplayers() + 1;n new var15 = 1;n while (var15 < var14)n {n get_user_team(var15, var13, 33);n new var2;n if (equali(var13, "UNAS", g_var4) || equali(var13, "SPEC", g_var4) || get_user_time(var15, g_var0) != 0)n {n show_menu(var15, var8, var7, floatround(var11, g_var0), {0});n g_var890 += 1;n }n var15++;n }n set_task(var11, "check_votes", g_var0, {0}, g_var0, {0}, g_var0);n g_var88c = 0;n client_print(_arg0, 2, "[AMXX] Voting has started...");n new var16 = 0;n while (var16 < 4)n {n 2168[var16] = 0;n var16++;n }n }n elsen {n client_print(_arg0, 2, "[AMXX] Voting not allowed yet.");n }n return 1;n}nnpublic amx_tb_credit(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (2 > read_argc())n {n new var2 = 0;n if (g_vare60 == 1)n {n copy(var2, g_var4, "ON");n }n elsen {n copy(var2, g_var4, "OFF");n }n console_print(_arg0, "[AMXX] Usage: amx_timebomb_credit < on | off > Currently: %s", var2);n return 1;n }n new var3 = 0;n read_argv(1, var3, 10);n new var1;n if (equal(var3, "on", 2) || equal(var3, 6120, 1))n {n g_vare60 = 1;n console_print(_arg0, "[AMXX] Kamikaze frag credit is now ON");n client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze frag credit mode ON");n }n elsen {n g_vare60 = 0;n console_print(_arg0, "[AMXX] Kamikaze frag credit is now OFF");n client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze frag credit mode OFF");n }n new var4 = 0;n new var5 = 0;n get_user_authid(_arg0, var4, 16);n get_user_name(_arg0, var5, 32);n log_amx(""%s<%d><%s><>" kamikazi_frag_cr %s", var5, get_user_userid(_arg0), var4, var3);n return 1;n}nnpublic amx_tb_credit_d(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_vare60 == 0)n {n ejl_vault("WRITE", "Kamikazi_FragCredit", "off");n console_print(_arg0, "[AMXX] Kamikaze frag credit: OFF is now the default.");n }n elsen {n ejl_vault("WRITE", "Kamikazi_FragCredit", "on");n console_print(_arg0, "[AMXX] Kamikaze frag credit: ON is now the default.");n }n new var1 = 0;n new var2 = 0;n get_user_authid(_arg0, var1, 16);n get_user_name(_arg0, var2, 32);n log_amx(""%s<%d><%s><>" kamikazi_frag_cr_d", var2, get_user_userid(_arg0), var1);n return 1;n}nnpublic amx_tfc_by(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (2 > read_argc())n {n new var2 = 0;n if (g_var89c == 1)n {n copy(var2, g_var4, "ON");n }n elsen {n copy(var2, g_var4, "OFF");n }n console_print(_arg0, "[AMXX] Usage: amx_timebomb_tfc_b < on | off > Currently: %s", var2);n return 1;n }n new var3 = 0;n read_argv(1, var3, 10);n new var1;n if (equal(var3, "on", 2) || equal(var3, 8120, 1))n {n g_var89c = 1;n console_print(_arg0, "[AMXX] TFC timebomb bystander damage ON");n client_print(g_var0, "", "[AMXX] Admin has turned TFC timebomb bystander damage ON");n }n elsen {n g_var89c = 0;n console_print(_arg0, "[AMXX] TFC timebomb bystander damage is now OFF");n client_print(g_var0, "", "[AMXX] Admin has turned TFC timebomb bystander damage OFF");n }n new var4 = 0;n new var5 = 0;n get_user_authid(_arg0, var4, 16);n get_user_name(_arg0, var5, 32);n log_amx(""%s<%d><%s><>" tfc_bystander %s", var5, get_user_userid(_arg0), var4, var3);n return 1;n}nnpublic amx_tfc_by_d(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_var89c == 0)n {n ejl_vault("WRITE", "TFC_Kamikazi_b", "off");n console_print(_arg0, "[AMXX] TFC timebomb bystander damage: OFF is now the default.");n }n elsen {n ejl_vault("WRITE", "TFC_Kamikazi_b", "on");n console_print(_arg0, "[AMXX] TFC timebomb bystander damage: ON is now the default.");n }n new var1 = 0;n new var2 = 0;n get_user_authid(_arg0, var1, 16);n get_user_name(_arg0, var2, 32);n log_amx(""%s<%d><%s><>" tfc_bystander_d", var2, get_user_userid(_arg0), var1);n return 1;n}nnpublic amx_timebombs(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_var898 == 1)n {n console_print(_arg0, "[AMXX] Kamikaze ON/OFF is locked. No change can be made unless you do amx_timebombs_lock");n return 1;n }n if (2 > read_argc())n {n new var2 = 0;n if (g_vare5c == 1)n {n copy(var2, g_var4, "ON");n }n elsen {n copy(var2, g_var4, "OFF");n }n console_print(_arg0, "[AMXX] Usage: amx_timebombs < on | off > Currently: %s", var2);n return 1;n }n new var3 = 0;n read_argv(1, var3, 10);n new var1;n if (equal(var3, "on", 2) || equal(var3, 4436, 1))n {n g_vare5c = 1;n console_print(_arg0, "[AMXX] Kamikaze mode is now ON");n client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze mode ON");n }n elsen {n g_vare5c = 0;n console_print(_arg0, "[AMXX] Kamikaze mode is now OFF");n client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze mode OFF");n }n new var4 = 0;n new var5 = 0;n get_user_authid(_arg0, var4, 16);n get_user_name(_arg0, var5, 32);n log_amx(""%s<%d><%s><>" timebombs_mode %s", var5, get_user_userid(_arg0), var4, var3);n return 1;n}nnpublic amx_timebombs_d(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_vare5c == 0)n {n ejl_vault("WRITE", "Timebombs", "off");n console_print(_arg0, "[AMXX] Kamikaze mode OFF is now the default.");n }n elsen {n ejl_vault("WRITE", "Timebombs", "on");n console_print(_arg0, "[AMXX] Kamikaze mode ON is now the default.");n }n new var1 = 0;n new var2 = 0;n get_user_authid(_arg0, var1, 16);n get_user_name(_arg0, var2, 32);n log_amx(""%s<%d><%s><>" timebombs_mode_d", var2, get_user_userid(_arg0), var1);n return 1;n}nnpublic blowem_up(_arg0)n{n if (_arg0 == 100)n {n new var8;n var8 = get_maxplayers() + 1;n new var9 = 1;n while (var9 < var8)n {n new var1;n if (3280[var9] > 0 || 3412[var9] == 1)n {n 3412[var9] = 0;n 3280[var9] = 0;n 3688[get_user_team(var9, {0}, g_var0)]--;n new var10 = 0;n get_user_name(var9, var10, 32);n set_hudmessage(200, 255, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n show_hudmessage(g_var0, "%s has exploded.", var10);n new var11 = 0;n get_user_origin(var9, var11, g_var0);n var11 + 8/* ERROR unknown load Binary */ = var11 + 8/* ERROR unknown load Binary */ - 26;n user_kill(var9, 1);n sub_1868(var11, var9);n 3544[var9] = 1;n }n var9++;n }n }n elsen {n if (0 < 3280[_arg0])n {n new var12 = 0;n new var13 = 0;n new var14 = 0;n new var15 = 0;n get_user_name(_arg0, var15, 31);n set_hudmessage(200, 255, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n show_hudmessage(g_var0, "%s has exploded.", var15);n new var16 = 0;n get_user_origin(_arg0, var16, g_var0);n new var17;n var17 = get_maxplayers() + 1;n new var18 = 1;n while (var18 < var17)n {n if (cvar_exists("mp_friendlyfire"))n {n new var19;n var19 = get_cvar_num("mp_friendlyfire");n new var3;n if (var19 != 0 && (var19 == 1 && get_cvar_num("amx_kamikaze_obeyffcvar") == 0))n {n if (get_user_team(_arg0, {0}, g_var0) != get_user_team(var18, {0}, g_var0))n {n new var4;n if (is_user_alive(var18) == 1 && _arg0 != var18)n {n get_user_origin(var18, var14, g_var0);n if (g_var0 > get_distance(var16, var14))n {n sub_a444(var18, _arg0, 1, var14, 0);n }n if (g_var4 > get_distance(var16, var14))n {n sub_a444(var18, _arg0, 0, var14, 0);n }n }n }n }n elsen {n new var5;n if (is_user_alive(var18) == 1 && _arg0 != var18)n {n get_user_origin(var18, var14, g_var0);n if (get_user_team(_arg0, {0}, g_var0) == get_user_team(var18, {0}, g_var0))n {n if (g_var0 > get_distance(var16, var14))n {n if (!g_vare64)n {n sub_a444(var18, _arg0, 1, var14, 1);n }n }n elsen {n if (g_var4 > get_distance(var16, var14))n {n if (!g_vare64)n {n sub_a444(var18, _arg0, 0, var14, 1);n }n }n }n }n if (g_var0 > get_distance(var16, var14))n {n sub_a444(var18, _arg0, 1, var14, 0);n }n if (g_var4 > get_distance(var16, var14))n {n sub_a444(var18, _arg0, 0, var14, 0);n }n }n }n }n elsen {n new var6;n if (is_user_alive(var18) == 1 && _arg0 != var18)n {n get_user_origin(var18, var14, g_var0);n if (g_var0 > get_distance(var16, var14))n {n sub_a444(var18, _arg0, 1, var14, 0);n }n if (g_var4 > get_distance(var16, var14))n {n sub_a444(var18, _arg0, 0, var14, 0);n }n }n }n var18++;n }n 3280[_arg0] = 0;n 3412[_arg0] = 0;n client_print(_arg0, "", "[AMXX] : Sorry, the bomb killed you.");n user_kill(_arg0, 1);n message_begin(1, g_varc2c, 19720, _arg0);n write_short(2048);n write_short(2048);n write_short(4096);n write_byte(250);n write_byte(250);n write_byte(250);n write_byte(255);n message_end();n new var7;n if (g_vare60 == 1 && 2340[_arg0] > 0)n {n client_print(_arg0, "", "[AMXX] : Your kamikazi attempt was a success: You made %d KILLS.", 2340[_arg0]);n }n var16 + 8/* ERROR unknown load Binary */ = var16 + 8/* ERROR unknown load Binary */ - 26;n sub_1868(var16, _arg0);n get_players(var12, var13, 20000, 20008);n new var20 = 0;n while (var20 < var13)n {n message_begin(1, g_varc30, 20012, var12[var20]);n write_short(16384);n write_short(16384);n write_short(16384);n message_end();n var20++;n }n message_begin(g_var0, 23, 20024, _arg0);n write_byte(107);n write_coord(var16);n write_coord(var16 + 4/* ERROR unknown load Binary */);n write_coord(var16 + 8/* ERROR unknown load Binary */);n write_coord("");n write_short(g_varc3c);n write_short(25);n write_byte(100);n message_end();n 3544[_arg0] = 1;n set_user_rendering(_arg0, g_var0, g_var0, g_var0, g_var0, 5, g_var0);n }n }n return 0;n}nnpublic check_votes()n{n set_cvar_string("amx_vote_inprogress", 10588);n ejl_vault("WRITE", "CURRENT_VOTE", "NULL");n g_var894 = 0;n new var2 = 0;n while (var2 < 33)n {n 732[var2][1] = 0;n var2++;n }n if (g_var88c == 1)n {n g_var88c = 0;n client_print(g_var0, "", "[AMXX] Voting sucessfully stopped.");n return 1;n }n new var3 = 0;n new var4 = 0;n new var5 = 0;n while (var5 < 4)n {n if (var4 < 2168[var5])n {n var4 = 2168[var5];n var3 = var5;n }n var5++;n }n new var6;n var6 = g_var890;n new var7;n new var1;n if (var6)n {n var1 = floatdiv(float(2168[var3]), float(var6));n }n elsen {n var1 = 0;n }n var7 = var1;n if (sub_2fc(var7, g_var888))n {n new var8;n var8 = str_to_num(1640/* ERROR unknown load Constant */ + 1640);n new var9 = 0;n get_user_name(var8, var9, 32);n if (var3 == 0)n {n if (is_user_alive(var8) == 0)n {n client_print(g_var0, "", "[AMXX] %s is dead and cannot be turned into a bomb.", var9);n return 1;n }n 2340[var8] = 0;n 3280[var8] = g_varc;n sub_b258(var8);n client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n client_print(g_var0, "", "[AMXX] Voting successful. The result: %s has been turned into a timebomb by vote. (%d - %d of %d)", var9, 2168, 2168 + 4, g_var890);n }n elsen {n client_print(g_var0, "", "[AMXX] Voting result: %s will not become a timebomb. (%d - %d of %d)", var9, 2168, 2168 + 4, g_var890);n log_amx("World triggered "voting_success" (needed "%.2f") (ratio "%.2f") (result "bomb")", g_var888, var7);n }n }n elsen {n client_print(g_var0, "", "[AMXX] Bomb voting failed... Not enough for a clear majority (%d - %d of %d)", 2168, 2168 + 4, g_var890);n log_amx("World triggered "voting_failure" (needed "%.2f") (ratio "%.2f")", g_var888, var7);n }n return 1;n}nnpublic client_connect(_arg0)n{n 3148[_arg0] = 0;n 3280[_arg0] = 0;n 3412[_arg0] = 0;n 3544[_arg0] = 0;n 732[_arg0][1] = 0;n 2472[_arg0] = 0;n return 0;n}nnpublic client_disconnect(_arg0)n{n 3148[_arg0] = 0;n 3280[_arg0] = 0;n 3412[_arg0] = 0;n 3544[_arg0] = 0;n 732[_arg0][1] = 0;n 2472[_arg0] = 0;n return 0;n}nnpublic ejl_vault(_arg0, _arg1, _arg2)n{n new var2 = 0;n new var3 = 0;n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n new var9 = 0;n new var10 = 0;n sub_138c(var9, 64);n format(var10, 64, "%s/ejl_vault.ini", var9);n if (equal(_arg0, "READ", g_var0))n {n if (file_exists(var10) == 1)n {n copy(2604, 128, 27328);n while ((var4 = read_file(var10, var4, var2, 192, var3)) != 0)n {n parse(var2, var6, 64, var7, 128);n if (equal(var6, _arg1, g_var0))n {n copy(2604, 128, var7);n }n }n }n elsen {n write_file(var10, "**** Plugins use to store values -- immune to crashes and map changes ****", g_var0);n }n }n elsen {n if (equal(_arg0, "WRITE", g_var0))n {n if (file_exists(var10) == 1)n {n format(var8, 192, "%s %s", _arg1, _arg2);n while ((var4 = read_file(var10, var4, var2, 192, var3)) != 0)n {n parse(var2, var6, 64, var7, 128);n if (var5 == 0)n {n new var1;n if (equal(var2, 27680, g_var0) || equal(var6, _arg1, g_var0))n {n var5 = 1;n write_file(var10, var8, var4 + -1);n }n }n elsen {n if (equal(var6, _arg1, g_var0))n {n write_file(var10, 27684, var4 + -1);n }n }n }n if (var5 == 0)n {n write_file(var10, var8, -1);n }n }n }n }n return 0;n}nnpublic handle_botsayplugin()n{n new var1 = 0;n read_argv(1, var1, 7);n new var2;n var2 = str_to_num(var1);n new var3 = 0;n read_args(var3, 191);n new var4 = 0;n read_argv(2, var4, 7);n new var5;n var5 = str_to_num(var4);n if (is_user_bot(var5))n {n new var6 = 0;n new var7;n var7 = strlen(var3);n new var8;n var8 = contain(var3, ": ");n copy(var6, var7 - var8 + 5, var3[var8 + 5]);n if (HandleSay2(var5, var6))n {n server_cmd("botsayreturn %d 1", var2);n }n }n return 0;n}nnpublic lock_unlock(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_var898 == 1)n {n g_var898 = 0;n console_print(_arg0, "[AMXX] Kamikaze mode lock is OFF.");n }n elsen {n g_var898 = 1;n console_print(_arg0, "[AMXX] Kamikazi mode lock is ON.");n if (g_vare5c == 1)n {n console_print(_arg0, "[AMXX] You have locked kamikazi ON mode.");n }n console_print(_arg0, "[AMXX] You have locled Kamikazi OFF mode.");n }n return 1;n}nnpublic new_spawn(_arg0)n{n set_user_rendering(_arg0, g_var0, 255, 255, 255, g_var0, 16);n 3544[_arg0] = 0;n return 0;n}nnpublic plugin_init()n{n register_plugin(16, "3.1.2", "eisbein based of GIR");n register_cvar("amx_luds_kamikaze", "v3.1.2", g_var4, g_var0);n register_concmd("amx_timebombs", "amx_timebombs", 16, "<on |off> turns ability to kamikazi on and off");n register_concmd("amx_timebombs_default", "amx_timebombs_d", 2048, "sets the current kamikazi mode as default");n register_concmd("amx_timebomb_credit", "amx_tb_credit", 16, "<on |off> turns kamikazi frag credit on and off");n register_concmd("amx_timebomb_credit_default", "amx_tb_credit_d", 2048, "sets the current kamikazi frag credit mode as default");n register_concmd("amx_timebomb", "admin_timebomb", 16, "< player >");n register_concmd("amx_votetimebomb", "admin_votebomb", 33554432, "< part of nick >");n register_concmd("amx_timebombs_lock", "lock_unlock", 2048, "Locks/unlocks the current timebombs mode");n register_concmd("stopvote", "stopvote", 32, "stops vote in progress");n register_clcmd("say", "HandleSay", -1, {0});n register_concmd("say", "HandleSay", -1, {0});n register_event("ResetHUD", "roundend_cleanup", 25096, "2&#Game_C", "2&#Game_w");n register_srvcmd("botsay", "handle_botsayplugin", -1, {0});n register_cvar("amx_kamikaze_obeyffcvar", 25392, g_var0, g_var0);n register_cvar("amx_kamikaze_tkpunish1", 25492, g_var0, g_var0);n register_cvar("amx_kamikaze_tkpunish2", 25592, g_var0, g_var0);n register_cvar("amx_kamikaze_bombers", 25684, g_var0, g_var0);n set_cvar_string("amx_kamikaze_obeyffcvar", 25788);n set_cvar_string("amx_kamikaze_tkpunish1", 25888);n set_cvar_string("amx_kamikaze_tkpunish2", 25988);n register_cvar("amx_vote_inprogress", 26076, g_var0, g_var0);n register_cvar("amx_last_voting", 26148, g_var0, g_var0);n set_cvar_float("amx_last_voting", g_var0);n register_menucmd(register_menuid("Should we blow up ", g_var0), 15, "vote_count");n register_cvar("amx_votetimebomb_ratio", "0.51", g_var0, g_var0);n g_varc2c = get_user_msgid("ScreenFade");n g_varc30 = get_user_msgid("ScreenShake");n set_task(1065353216, "timebomb_timer", 765, 26604, g_var0, 26608, 9999);n ejl_vault("READ", "Timebombs", 26676);n if (equal(2604, "off", g_var0))n {n g_vare5c = 0;n }n elsen {n g_vare5c = 1;n }n ejl_vault("READ", "Kamikazi_FragCredit", 26796);n if (equal(2604, "off", g_var0))n {n g_vare60 = 0;n }n elsen {n g_vare60 = 1;n }n ejl_vault("READ", "TFC_Kamikazi_b", 26896);n if (equal(2604, "off", g_var0))n {n g_var89c = 0;n }n elsen {n g_var89c = 1;n }n ejl_vault("WRITE", "CURRENT_VOTE", "NULL");n set_task(1074580685, "set_kamik_rule", g_var0, {0}, g_var0, {0}, g_var0);n register_event("ResetHUD", "new_spawn", 27148, {0});n return 0;n}nnpublic plugin_log()n{n new var1;n var1 = read_logargc();n if (var1 == 2)n {n new var2 = 0;n read_logargv(1, var2, 31);n if (var2 + 24/* ERROR unknown load Binary */ == 83)n {n round_start();n }n }n elsen {n if (var1 == 3)n {n new var3 = 0;n read_logargv(1, var3, 31);n if (equal(var3, "changed role to", 15))n {n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n read_logargv(g_var0, var4, 63);n read_logargv(2, var8, 31);n new var9;n var9 = strlen(var4);n new var10;n var10 = var9;n new var11 = 0;n while (var11 < var9)n {n var10 += -1;n if (0 < var10)n {n if (var4[var10] == 60)n {n var7 += 1;n if (var7 == 2)n {n copy(var5, var11 - var6, var4[var10 + 1]);n }n if (var7 == 1)n {n var6 = var11 + 2;n }n }n }n var11++;n }n new var12;n var12 = find_player(22016, var5);n if (!var12)n {n return 0;n }n if (equali(var8, "Spy", g_var0))n {n 2472[var12] = 1;n }n elsen {n 2472[var12] = 0;n }n }n }n }n return 0;n}nnpublic plugin_precache()n{n g_varc40 = precache_model("sprites/smoke.spr");n g_varc44 = precache_model("sprites/white.spr");n g_varc48 = precache_model("sprites/explode1.spr");n g_varc34 = precache_model("sprites/glow01.spr");n g_varc38 = precache_model("models/mapmodels/g_dynamite.mdl");n g_varc3c = precache_model("models/hgibs.mdl");n precache_sound("buttons/blip2.wav");n return 0;n}nnpublic round_start()n{n new var1;n var1 = get_maxplayers() + 1;n new var2 = 1;n while (var2 < var1)n {n if (3544[var2] == 1)n {n set_user_rendering(var2, g_var0, 255, 255, 255, g_var0, 16);n 3544[var2] = 0;n }n var2++;n }n return 0;n}nnpublic roundend_cleanup()n{n blowem_up(100);n g_vare64 = 1;n set_task(1097859072, "roundstart_delay", g_var0, {0}, g_var0, {0}, g_var0);n return 0;n}nnpublic roundstart_delay()n{n g_vare64 = 0;n return 0;n}nnpublic set_kamik_rule()n{n new var1 = 0;n new var2 = 0;n new var3 = 0;n sub_138c(var2, 32);n get_mapname(var1, 33);n format(var3, 64, "%s/kamikazi.txt", var2);n if (file_exists(var3) == 1)n {n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n while ((var4 = read_file(var3, var4, var5, 128, _unused_temp_)) != 0)n {n parse(var5, var6, 32, var7, 2, var8, 2);n if (equali(var6, var1, g_var0))n {n if (equal(var7, 27224, 1))n {n g_vare5c = 1;n }n elsen {n g_vare5c = 0;n }n if (equal(var8, 27232, 1))n {n g_var898 = 1;n }n }n }n }n return 1;n}nnpublic stopvote(_arg0, _arg1, _arg2)n{n if (!sub_72c(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (g_var894 == 1)n {n new var1 = 0;n get_user_name(_arg0, var1, 32);n g_var88c = 1;n client_print(_arg0, 2, "[AMXX] ADMIN !!! Ignore the unknown command message -- its ok");n client_print(g_var0, "", "[AMXX] %s has disabled the vote in progress.", var1);n }n return 0;n}nnpublic timebomb_timer()n{n new var3;n var3 = get_gametime();n new var4 = 100;n new var5;n var5 = get_maxplayers() + 1;n new var6 = 0;n var6 = 1;n while (var6 < var5)n {n new var1;n if (3280[var6] != 0 && 3280[var6] < var4)n {n var4 = var6;n }n new var2;n if (3412[var6] == 1 && sub_3bc(sub_174(sub_174(sub_174(3148[var6], g_var8), g_varc), 5), var3))n {n 3412[var6] = 0;n 3280[var6] = 0;n }n var6++;n }n var6 = 1;n while (var6 < var5)n {n if (0 < 3280[var6])n {n emit_sound(var6, "", "buttons/blip2.wav", 1065353216, 1061997773, g_var0, 100);n new var7 = 0;n get_user_origin(var6, var7, g_var0);n message_begin(g_var0, 23, 18924, var6);n write_byte(17);n write_coord(var7);n write_coord(var7 + 4/* ERROR unknown load Binary */);n write_coord(var7 + 8/* ERROR unknown load Binary */ + 20);n write_short(g_varc34);n write_byte(20);n write_byte(200);n message_end();n if (3280[var6] == 1)n {n blowem_up(var6);n }n elsen {n 3280[var6] -= 1;n if (var4 == var6)n {n new var8 = 0;n new var9 = 0;n get_user_name(var6, var8, 32);n get_user_team(var6, var9, 32);n if (equal(var9, 18936, 1))n {n set_hudmessage(200, g_var0, g_var0, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n }n elsen {n set_hudmessage(g_var0, 100, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n }n show_hudmessage(g_var0, "%s will explode in %d seconds.", var8, 3280[var6]);n if (3280[var6] == 11)n {n client_cmd(g_var0, "spk "fvox/remaining"");n }n if (11 > 3280[var6])n {n new var10 = 0;n num_to_word(3280[var6], var10, 48);n client_cmd(g_var0, "spk "fvox/%s"", var10);n }n }n if (is_user_alive(var6) == 0)n {n blowem_up(var6);n }n }n }n var6++;n }n return 0;n}nnpublic vote_count(_arg0, _arg1)n{n ejl_vault("READ", "CURRENT_VOTE", 12916);n if (equal(2604, "TIMEBOMB", g_var0))n {n new var1 = 0;n get_user_name(_arg0, var1, 32);n if (732[_arg0] != g_var2d8)n {n 732[_arg0] = g_var2d8;n if (!(sub_47c(get_cvar_float("amx_vote_answers"))))n {n client_print(g_var0, "", "[AMXX] %s voted for option # %d", var1, _arg1 + 1);n }n 2168[_arg1] += 1;n }n elsen {n 732[_arg0][1] += 1;n }n return 1;n }n return 0;n}nnsub_2fc(_arg0, _arg1)n{n return 0 < floatcmp(_arg0, _arg1);n}nnsub_174(_arg0, _arg1)n{n return floatadd(_arg0, float(_arg1));n}nnsub_b258(_arg0)n{n new var2;n var2 = g_varc * 10 + 20;n new var1;n if (var2 > 255 || var2 < 1)n {n var2 = 255;n }n message_begin(g_var0, 23, 21940, _arg0);n write_byte(124);n write_byte(_arg0);n write_coord(15);n write_short(g_varc38);n write_short(var2);n message_end();n return 0;n}nnsub_72c(_arg0, _arg1, _arg2, _arg3)n{n new var2 = 0;n new var1;n if (is_dedicated_server())n {n var1 = 0;n }n elsen {n var1 = 1;n }n if (var1 == _arg0)n {n var2 = 1;n }n elsen {n if (_arg1 == 16777216)n {n if (sub_64c(_arg0))n {n var2 = 1;n }n }n if (_arg1 & get_user_flags(_arg0, g_var0))n {n var2 = 1;n }n if (_arg1 == 0)n {n var2 = 1;n }n }n if (var2 == 0)n {n console_print(_arg0, "%L", _arg0, "NO_ACC_COM");n return 0;n }n if (_arg3 > read_argc())n {n new var3 = 0;n new var4 = 0;n get_concmd(_arg2, var3, 31, _unused_temp_, var4, 127, _arg1, -1);n console_print(_arg0, "%L: %s %s", _arg0, "USAGE", var3, var4);n return 0;n }n return 1;n}nnsub_bd0(_arg0, _arg1, _arg2)n{n new var4;n var4 = find_player("bl", _arg1);n if (var4)n {n if (find_player("blj", _arg1) != var4)n {n console_print(_arg0, "%L", _arg0, "MORE_CL_MATCHT");n return 0;n }n }n elsen {n new var1;n if ((var4 = find_player(388, _arg1)) == 0 && _arg1 == 35 && _arg1 + 4/* ERROR unknown load Binary */)n {n var4 = find_player(396, str_to_num(_arg1 + 4));n }n }n if (!var4)n {n console_print(_arg0, "%L", _arg0, "CL_NOT_FOUND");n return 0;n }n if (_arg2 & 1)n {n new var3;n if (get_user_flags(var4, g_var0) & 1 && _arg2 & 2)n {n new var5 = 0;n get_user_name(var4, var5, 31);n console_print(_arg0, "%L", _arg0, "CLIENT_IMM", var5);n return 0;n }n }n if (_arg2 & 4)n {n if (!is_user_alive(var4))n {n new var6 = 0;n get_user_name(var4, var6, 31);n console_print(_arg0, "%L", _arg0, "CANT_PERF_DEAD", var6);n return 0;n }n }n if (_arg2 & 8)n {n if (is_user_bot(var4))n {n new var7 = 0;n get_user_name(var4, var7, 31);n console_print(_arg0, "%L", _arg0, "CANT_PERF_BOT", var7);n return 0;n }n }n return var4;n}nnsub_1868(_arg0, _arg1)n{n message_begin(g_var0, 23, _arg0, g_var0);n write_byte(21);n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */ + 16);n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */ + 1936);n write_short(g_varc44);n write_byte(g_var0);n write_byte(g_var0);n write_byte("");n write_byte(20);n write_byte(g_var0);n write_byte(188);n write_byte("%L: %s %s");n write_byte(255);n write_byte(255);n write_byte(g_var0);n message_end();n message_begin(g_var0, 23, {0,0,0}, g_var0);n write_byte(g_varc);n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */);n write_byte(188);n write_byte(10);n message_end();n message_begin(g_var0, 23, _arg0, g_var0);n write_byte("");n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */);n write_short(g_varc48);n write_byte(65);n write_byte(10);n write_byte(g_var0);n message_end();n message_begin(g_var0, 23, 3716, _arg1);n write_byte(125);n write_byte(_arg1);n message_end();n message_begin(g_var0, 23, _arg0, g_var0);n write_byte(5);n write_coord(_arg0);n write_coord(_arg0 + 4/* ERROR unknown load Binary */);n write_coord(_arg0 + 8/* ERROR unknown load Binary */);n write_short(g_varc40);n write_byte(20);n write_byte(10);n message_end();n return 0;n}nnsub_a444(_arg0, _arg1, _arg2, _arg3, _arg4)n{n new var3;n var3 = get_user_health(_arg0);n new var4 = 0;n new var5 = 0;n new var6 = 0;n new var7 = 0;n new var8 = 0;n new var9 = 0;n get_user_team(_arg0, var5, 31);n get_user_name(_arg0, var9, 31);n get_user_authid(_arg0, var7, 31);n get_user_team(_arg1, var4, 31);n get_user_name(_arg1, var8, 31);n get_user_authid(_arg1, var6, 31);n new var1;n if (_arg2 == 1 || var3 < 50)n {n client_print(_arg0, "", "[AMXX] : Sorry, the bomb killed you.");n new var2;n if (g_vare60 == 1 && 3412[_arg1] == 1)n {n new var10;n var10 = get_user_frags(_arg1);n if (_arg4 == 0)n {n 2340[_arg1] += 1;n set_user_frags(_arg1, var10 + 1);n }n elsen {n 2208[_arg1] += 1;n set_user_frags(_arg1, var10 + -1);n new var11;n var11 = get_cvar_num("amx_kamikaze_tkpunish1");n new var12;n var12 = get_cvar_num("amx_kamikaze_tkpunish2");n if (var12 + -1 < 2208[_arg1])n {n if (var11 == 1)n {n client_cmd(_arg1, "echo You were kicked for team killing;disconnect");n }n if (var11 == 2)n {n client_cmd(_arg1, "echo You were banned for team killing");n if (equal("4294967295", var6, g_var0))n {n new var13 = 0;n get_user_ip(_arg1, var13, 31, 1);n server_cmd("addip 180.0 %s;writeip", var13);n }n server_cmd("banid 180.0 %s kick;writeid", var6);n }n }n }n log_message(""%s<%d><%s><%s>" killed "%s<%d><%s><%s>" with "Kamikaze Bomb"", var8, get_user_userid(_arg1), var6, var4, var9, get_user_userid(_arg0), var7, var5);n }n user_kill(_arg0, 1);n sub_1868(_arg3, _arg0);n }n elsen {n client_print(_arg0, "", "[AMXX] : Ouch, that bomb hurt you.");n set_user_health(_arg0, var3 + -50);n if (get_cvar_num("mp_logdetail") == 3)n {n log_message(""%s<%d><%s><%s>" attacked "%s<%d><%s><%s>" with "Kamikaze Bomb" (hit "chest") (damage "50") (health "%d")", var8, get_user_userid(_arg1), var6, var4, var9, get_user_userid(_arg0), var7, var5, get_user_health(_arg0));n }n if (_arg4 == 1)n {n new var14 = 0;n new var15 = 0;n get_players(var14, var15, 21836, var4);n new var16 = 0;n while (var16 < var15)n {n client_print(var14[var16], "", "%s attacked a teammate", var8);n var16++;n }n }n }n return 0;n}nnsub_2fc(_arg0, _arg1)n{n return 0 <= floatcmp(_arg0, _arg1);n}nnsub_138c(_arg0, _arg1)n{n return get_localinfo("amxx_configsdir", _arg0, _arg1);n}nnsub_174(_arg0, _arg1)n{n return floatsub(_arg0, float(_arg1));n}nnsub_3bc(_arg0, _arg1)n{n return 0 > floatcmp(_arg0, _arg1);n}nnsub_47c(_arg0, _arg1)n{n return _arg0 & -1 == 0;n}nnsub_64c(_arg0)n{n new var1;n return get_user_flags(_arg0, g_var0) > 0 && !get_user_flags(_arg0, g_var0) & 33554432;n}nn

