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.
dod_spechide
by Unknown · 2005-03-31
recovered from the server
From the first post
Files
| dod_spechide.amxx | Compiled Plugin | 7 KB | Download |
Decompiled source reconstructed
dod_spechide.amxx was published compiled only. This Pawn was recovered from the
bytecode with Lysis — 302 lines. Strings, cvars and the plugin registration
survive; local variable names do not. It is an approximation, not the author's file.
// Decompiled from dod_spechide.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.nnpublic CmdSpectate(_arg0, _arg1, _arg2)n{n if (!sub_204(_arg0, _arg1, _arg2, 1))n {n return 1;n }n if (read_argc() == 1)n {n sub_2eec(_arg0);n return 1;n }n new var1 = 0;n read_argv(1, var1, 31);n new var2;n var2 = sub_2ad0(var1);n if (!var2)n {n return 1;n }n if (get_user_team(var2, {0}, "%L") != get_user_team(_arg0, {0}, "%L"))n {n client_print(_arg0, 2, "You can't spectate someone from opposite team.");n return 1;n }n new var3 = 0;n new var4 = 0;n new var5 = 0;n sub_2960(_arg0, var4 + var4, var3 + var3, var5 + var5);n new var6 = var5 + 4;n new var7 = var3 + 4;n new var8 = var4 + 4;n sub_2960(var2, var8 + var8, var7 + var7, var6 + var6);n if (var2 == _arg0)n {n client_print(_arg0, 2, 2704);n client_print(_arg0, 2, "Syntax: amx_spectate <name> - If no name is given, you will stop spectating.");n return 1;n }n new var9 = 0;n new var10 = var3 + 4;n format(var9, 127, "(ADMIN) %s: began a hidden spectate on %s", var3 + var3, var10 + var10);n sub_2d54(var9);n new var11 = var5 + 4;n new var12 = var4 + 4;n new var13 = var3 + 4;n log_amx("Cmd: "%s<%d><%s><%s>" began hidden spectate on "%s<%d><%s><%s>"", var3 + var3, get_user_userid(_arg0), var4 + var4, var5 + var5, var13 + var13, get_user_userid(var2), var12 + var12, var11 + var11);n new var14 = 0;n pev(_arg0, 118, var14);n if (276[_arg0] == 0)n {n pev(_arg0, 41, 1992[_arg0]);n 804[_arg0] = pev(_arg0, 89);n pev(_arg0, 43, 936[_arg0]);n 1068[_arg0] = var14;n 1068[_arg0][1] = var14 + 4/* ERROR unknown load Binary */;n 1068[_arg0][2] = var14 + 8/* ERROR unknown load Binary */;n 1596[_arg0] = pev(_arg0, 73);n 540[_arg0] = pev(_arg0, 70);n 672[_arg0] = pev(_arg0, 69);n 408[_arg0] = pev(_arg0, 89);n pev(_arg0, 41, 1728[_arg0]);n 1860[_arg0] = pev(_arg0, 80);n }n set_pev(_arg0, 73, pev(_arg0, 73) | 128);n set_pev(_arg0, 89, 5);n set_pev(_arg0, 43, 0);n set_pev(_arg0, "USAGE", 4);n set_pev(_arg0, 101, var2);n set_pev(_arg0, 69, 0);n set_pev(_arg0, 70, 0);n set_pev(_arg0, 80, 0);n 276[_arg0] = 1;n return 1;n}nnpublic client_PreThink(_arg0)n{n if (276[_arg0])n {n if (pev(_arg0, 81) & 1)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 1);n }n if (pev(_arg0, 81) & 2048)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 2048);n }n if (pev(_arg0, 81) & 2)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 2);n }n if (pev(_arg0, 81) & 4)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 4);n }n if (pev(_arg0, 81) & 8)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 8);n }n if (pev(_arg0, 81) & 16)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 16);n }n if (pev(_arg0, 81) & 32)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 32);n }n if (pev(_arg0, 81) & 64)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 64);n }n if (pev(_arg0, 81) & 128)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 2048);n }n if (pev(_arg0, 81) & 256)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 256);n }n if (pev(_arg0, 81) & 512)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 512);n }n if (pev(_arg0, 81) & 1024)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 1024);n }n if (pev(_arg0, 81) & 4096)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 4096);n }n if (pev(_arg0, 81) & 8192)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 8192);n }n if (pev(_arg0, 81) & 16384)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 16384);n }n if (pev(_arg0, 81) & 32768)n {n set_pev(_arg0, 81, pev(_arg0, 81) - 32768);n }n }n return 0;n}nnpublic client_connect(_arg0)n{n 276[_arg0] = 0;n return 0;n}nnpublic plugin_init()n{n register_plugin("Admin Spectate", "0.1", "AMXX DoD Community");n register_concmd("amx_spectate", "CmdSpectate", 8, "<name> - Do not provide a name to stop spectating");n return 0;n}nnpublic plugin_modules()n{n require_module("ENGINE");n require_module("FAKEMETA");n return 0;n}nnsub_204(_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_124(_arg0))n {n var2 = 1;n }n }n if (_arg1 & get_user_flags(_arg0, "%L"))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_2eec(_arg0)n{n if (276[_arg0] == 0)n {n client_print(_arg0, 2, "You weren't forced into spectator mode on somebody.");n client_print(_arg0, 2, "Syntax: amx_spectate <name> - If no name is given, you will stop spectating.");n return 0;n }n set_pev(_arg0, 43, 936[_arg0]);n set_pev(_arg0, 73, 1596[_arg0]);n set_pev(_arg0, "USAGE", 0);n set_pev(_arg0, 101, 0);n entity_set_origin(_arg0, 1068[_arg0]);n set_pev(_arg0, 69, 672[_arg0]);n set_pev(_arg0, 70, 540[_arg0]);n set_pev(_arg0, 89, 408[_arg0]);n set_pev(_arg0, 80, 1860[_arg0]);n set_pev(_arg0, 41, 1992[_arg0]);n 276[_arg0] = 0;n return 0;n}nnsub_2ad0(_arg0)n{n new var1;n var1 = find_player("ahjl", _arg0);n if (!var1)n {n var1 = find_player("bhjl", _arg0);n }n if (!var1)n {n var1 = find_player("chj", _arg0);n }n if (!var1)n {n var1 = find_player("dhj", _arg0);n }n if (!var1)n {n var1 = find_player("khj", _arg0);n }n if (!var1)n {n return -1;n }n return var1;n}nnsub_2960(_arg0, _arg1, _arg2, _arg3)n{n get_user_authid(_arg0, _arg1, 31);n get_user_name(_arg0, _arg2, 31);n get_user_ip(_arg0, _arg3, 15, 1);n return 0;n}nnsub_2d54(_arg0)n{n new var1 = 1;n while (get_maxplayers() >= var1)n {n if (is_user_connected(var1))n {n if (get_user_flags(var1, "%L") & 8)n {n client_print(var1, 3, _arg0);n }n }n var1++;n }n return 0;n}nnsub_124(_arg0)n{n new var1;n return get_user_flags(_arg0, "%L") > 0 && !get_user_flags(_arg0, "%L") & 33554432;n}nn

