I was looking at Twilight Suzukas jedi mind control plugin and i wanted it. So i set about trying to fix it. I got rid of all the stuff that isnt mind control related. I started looking through the code made some changes but i cant seem to figure out why it wont work. I got it to compile but it doesnt take control of the person. Im not sure exactly why it doesnt work but during the game it seems like as soon as it gets enabled it starts trying to disable it.
Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fun>
/*
COMMANDS
========
JEDI MIND CONTROL:
amx_mindcontrol - Control a victim
amx_stopcontrol - Stop control of victim (ENTER if CANCEL is defined)
amx_jedibind - Binds buttons to Controll mode
amx_unjedibind - Restores buttons in config.cfg
amx_jediwtf - Resets keys to default
amx_failsafe - executes the failsafe
+jedi_control - Controls who ever your looking at
-jedi_control - Stops controlling
*/
#define JEDI ADMIN_BAN
//Local arrays.
new g_controlling[33] = 0
new g_IsController[33] = 0
new bool:Mindcontrolling[33] = false
new MindControl = 0
//Hooks for the jedi commands
public jedi_forward(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+forward")
return PLUGIN_CONTINUE
}
public jedi_sforward(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-forward")
return PLUGIN_CONTINUE
}
public jedi_back(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+back")
return PLUGIN_CONTINUE
}
public jedi_sback(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-back")
return PLUGIN_CONTINUE
}
public jedi_lookup(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+lookup")
return PLUGIN_CONTINUE
}
public jedi_slookup(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-lookup")
return PLUGIN_CONTINUE
}
public jedi_lookdown(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+lookdown")
return PLUGIN_CONTINUE
}
public jedi_slookdown(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-lookdown")
return PLUGIN_CONTINUE
}
public jedi_left(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+moveleft")
return PLUGIN_CONTINUE
}
public jedi_sleft(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-moveleft")
return PLUGIN_CONTINUE
}
public jedi_right(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+moveright")
return PLUGIN_CONTINUE
}
public jedi_sright(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-moveright")
return PLUGIN_CONTINUE
}
public jedi_attack(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+attack")
return PLUGIN_CONTINUE
}
public jedi_sattack(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-attack")
return PLUGIN_CONTINUE
}
public jedi_attacktwo(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+attack2")
return PLUGIN_CONTINUE
}
public jedi_sattacktwo(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-attack2")
return PLUGIN_CONTINUE
}
public jedi_jump(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+jump")
return PLUGIN_CONTINUE
}
public jedi_sjump(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-jump")
return PLUGIN_CONTINUE
}
public jedi_duck(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+duck")
return PLUGIN_CONTINUE
}
public jedi_sduck(id){
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-duck")
return PLUGIN_CONTINUE
}
public jedi_reload(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+reload")
return PLUGIN_CONTINUE
}
public jedi_sreload(id){
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-reload")
return PLUGIN_CONTINUE
}
public jedi_use(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+use")
return PLUGIN_CONTINUE
}
public jedi_suse(id){
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-use")
return PLUGIN_CONTINUE
}
public jedi_speed(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+speed")
return PLUGIN_CONTINUE
}
public jedi_sspeed(id){
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-speed")
return PLUGIN_CONTINUE
}
public jedi_slot0(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot0")
return PLUGIN_CONTINUE
}
public jedi_slot1(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot1")
return PLUGIN_CONTINUE
}
public jedi_slot2(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot2")
return PLUGIN_CONTINUE
}
public jedi_slot3(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot3")
return PLUGIN_CONTINUE
}
public jedi_slot4(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot4")
return PLUGIN_CONTINUE
}
public jedi_slot5(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot5")
return PLUGIN_CONTINUE
}
public jedi_slot6(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot6")
return PLUGIN_CONTINUE
}
public jedi_slot7(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot7")
return PLUGIN_CONTINUE
}
public jedi_slot8(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot8")
return PLUGIN_CONTINUE
}
public jedi_slot9(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot9")
return PLUGIN_CONTINUE
}
public jedi_slot10(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"slot10")
return PLUGIN_CONTINUE
}
public jedi_drop(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"drop")
return PLUGIN_CONTINUE
}
public jedi_nightvision(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"nightvision")
return PLUGIN_CONTINUE
}
public jedi_lastinv(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"lastinv")
return PLUGIN_CONTINUE
}
public jedi_tleft(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+left")
return PLUGIN_CONTINUE
}
public jedi_stleft(id){
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-left")
return PLUGIN_CONTINUE
}
public jedi_tright(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"+right")
return PLUGIN_CONTINUE
}
public jedi_stright(id){
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"-right")
return PLUGIN_CONTINUE
}
public jedi_invnext(id) {
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"invnext")
return PLUGIN_CONTINUE
}
public jedi_invprev(id){
if ((g_IsController[id]) != 0) return PLUGIN_HANDLED
if ((Mindcontrolling[id]) == false) return PLUGIN_CONTINUE
client_cmd(g_controlling[id],"invprev")
return PLUGIN_CONTINUE
}
//Liason between controls and player.
public jedi_mindcontrol(id,level,cid)
{
if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED
if (g_controlling[id]!= 0)
{
client_print(id,print_console,"[MINDCONTROL ACTIVE] You may only possess one at a time.")
return PLUGIN_HANDLED
}
new arg[33]
read_argv(1, arg, 32)
new player_id = cmd_target(id, arg, 1)
if (!player_id) return PLUGIN_HANDLED
if (player_id == id) return PLUGIN_HANDLED
new player_name[32]
get_user_name(player_id,player_name,31)
client_print(id,print_console,"[MINDCONTROL ACTIVATED] %s is under your control",player_name)
Mindcontrolling[id] = true
g_controlling[id] = player_id
g_IsController[player_id] = id
jedi_bind(id)
jedi_destroy(player_id)
MindControl = 1;
attach_view(id, player_id);
return PLUGIN_CONTINUE
}
//Stops jedi control.
public jedi_stopcontrol(id)
{
if (!(g_controlling[id]))
{
return PLUGIN_CONTINUE
}
else
{
new players[32], inum
get_players(players,inum,"")
jedi_unbind(id)
jedi_error(id)
jedi_unbind(g_controlling[id])
client_print(id,print_chat,"[AMX] Mindcontrolled Victim Deactivated")
MindControl = 0;
}
return PLUGIN_CONTINUE
}
//Binds them into a jedi.
public jedi_bind(id)
{
client_print(id,print_console,"[MINDCONTROL ACTIVATED] Rebinding hooks. Do not be alarmed")
Mindcontrolling[id] = true
client_cmd(id,"cl_forwardspeed 0")
client_cmd(id,"cl_backspeed 0")
client_cmd(id,"cl_sidespeed 0")
return PLUGIN_CONTINUE
}
//Fixes jedi bind
public jedi_wtf(id)
{
client_print(id,print_console,"[MINDCONTROL DEACTIVATED] Rebinding keys")
client_cmd(id,"exec autoexec.cfg")
client_cmd(id,"exec config.cfg")
client_cmd(id,"cl_forwardspeed 1000")
client_cmd(id,"cl_backspeed 1000")
client_cmd(id,"cl_sidespeed 1000")
return PLUGIN_CONTINUE
}
//Deactivates the person, and enables the failsafe.
public jedi_destroy(id)
{
client_print(id,print_console,"[MINDCONTROL ACTIVATED] Rebinding hooks. Do not be alarmed")
return PLUGIN_HANDLED
}
//Makes sure that the person isnt controlled anymore, and does all it can to help them.
public jedi_failsafe(id)
{
jedi_wtf(id);
jedi_error(id);
client_print(id,print_console,"[MINDCONTROL FAILSAFE] FailSafe enabled. Functionality will be returned if allowed.")
return PLUGIN_HANDLED
}
//Unbinds them, and the person that they stole.
public jedi_unbind(id)
{
client_cmd(id,"exec config.cfg")
client_cmd(g_controlling[id],"exec config.cfg")
client_print(g_controlling[id],print_console,"[MINDCONTROL DEACTIVATED] Rebinding keys, Bind problems still type: amx_jediwtf")
client_print(g_controlling[id],print_chat,"[MINDCONTROL DEACTIVATED] Rebinding keys, Engage failsafe if you are still screwed up.")
client_print(id,print_console,"[MINDCONTROL DEACTIVATED] Rebinding keys, Bind problems still type: amx_jediwtf")
client_print(id,print_chat,"[MINDCONTROL DEACTIVATED] Rebinding keys, Engage failsafe if you are still screwed up")
client_cmd(id,"cl_forwardspeed 1000")
client_cmd(id,"cl_backspeed 1000")
client_cmd(id,"cl_sidespeed 1000")
g_controlling[id] = 0
g_IsController[id] = 0
g_controlling[g_controlling[id]] = 0
g_IsController[g_controlling[id]] = 0
Mindcontrolling[id] = false
attach_view(id,id);
return PLUGIN_HANDLED
}
//Fixes errors if they happen.
public jedi_error(id)
{
client_print(id,print_console,"[MINDCONTROL ERROR] Checking Keybinds")
client_cmd(id,"-forward")
client_cmd(id,"-back")
client_cmd(id,"-moveleft")
client_cmd(id,"-moveright")
client_cmd(id,"-attack")
client_cmd(id,"-attack2")
client_cmd(id,"-jump")
client_cmd(id,"-duck")
client_cmd(id,"-reload")
client_cmd(id,"-use")
client_cmd(id,"-speed")
client_cmd(id,"-lookup")
client_cmd(id,"-lookdown")
client_cmd(id,"cl_forwardspeed 1000")
client_cmd(id,"cl_backspeed 1000")
client_cmd(id,"cl_sidespeed 1000")
}
//Called on disconnection.
public client_disconnect(id)
{
jedi_unbind(id)
jedi_unbind(g_controlling[id])
if (!(g_IsController[id]))
{
return PLUGIN_CONTINUE
}
else
{
jedi_unbind(id)
jedi_unbind(g_IsController[id])
jedi_error(g_IsController[id])
client_print(id,print_chat,"[AMX] Mindcontrolled Victim Disconnected")
client_print(g_IsController[id],print_chat,"[AMX] Mindcontrolled Victim Disconnected")
}
return PLUGIN_CONTINUE
}
//Called on death.
public death()
{
new id = read_data(2)
jedi_unbind(id)
jedi_unbind(g_controlling[id])
if (!(g_IsController[id]))
{
return PLUGIN_CONTINUE
}
else
{
jedi_unbind(g_IsController[id])
jedi_error(g_IsController[id])
jedi_unbind(id)
client_print(g_IsController[id],print_chat,"[AMX] Mindcontrolled Victim Died")
client_print(id,print_chat,"[AMX] Mindcontrolled Victim Died")
}
return PLUGIN_CONTINUE
}
//Called every frame.
public server_frame()
{
if (MindControl == 0) return PLUGIN_HANDLED
new players[32], inum
get_players(players,inum,"")
for(new i = 0 ;i < inum ;++i)
{
new Float:vRetVector[3]
if (Mindcontrolling[i] == true)
{
entity_get_vector(i, EV_VEC_v_angle, vRetVector)
entity_set_vector(g_controlling[i], EV_VEC_v_angle, vRetVector)
}
}
return PLUGIN_CONTINUE
}
public plugin_init()
{
register_plugin("Jedi Plugin XLR", "Project: Gamma", "Mel + crew")
register_event("DeathMsg","death","a")
register_clcmd("amx_jedibind","jedi_bind",JEDI,"")
register_clcmd("amx_unjedibind","jedi_unbind",0,"")
register_clcmd("amx_jediwtf","jedi_wtf",0,"")
register_clcmd("amx_jedierror","jedi_error",0,"")
register_clcmd("jedi_failsafe","jedi_failsafe",0,"")
register_clcmd("amx_mindcontrol","jedi_mindcontrol",JEDI,"<nick> = Control a victim")
register_clcmd("amx_stopcontrol","jedi_stopcontrol",JEDI)
register_clcmd("toggle_jedi_control", "jedi_toggle_control",JEDI)
register_clcmd("+jedi_control", "jedi_temp",JEDI)
register_clcmd("-jedi_control", "jedi_stemp",JEDI)
register_clcmd("+forward", "jedi_forward",0)
register_clcmd("-forward", "jedi_sforward",0)
register_clcmd("+back", "jedi_back",0)
register_clcmd("-back", "jedi_sback",0)
register_clcmd("+lookup", "jedi_lookup",0)
register_clcmd("-lookup", "jedi_slookup",0)
register_clcmd("+lookdown", "jedi_lookdown",0)
register_clcmd("-lookdown", "jedi_slookdown",0)
register_clcmd("+moveleft", "jedi_left",0)
register_clcmd("-moveleft", "jedi_sleft",0)
register_clcmd("+moveright", "jedi_right",0)
register_clcmd("-moveright", "jedi_sright",0)
register_clcmd("+attack", "jedi_attack",0)
register_clcmd("-attack", "jedi_sattack",0)
register_clcmd("+attack2", "jedi_attacktwo",0)
register_clcmd("-attack2", "jedi_sattacktwo",0)
register_clcmd("+jump", "jedi_jump",0)
register_clcmd("-jump", "jedi_sjump",0)
register_clcmd("+duck", "jedi_duck",0)
register_clcmd("-duck", "jedi_sduck",0)
register_clcmd("+reload", "jedi_reload",0)
register_clcmd("-reload", "jedi_sreload",0)
register_clcmd("+use", "jedi_use",0)
register_clcmd("-use", "jedi_suse",0)
register_clcmd("+speed", "jedi_speed",0)
register_clcmd("-speed", "jedi_sspeed",0)
register_clcmd("+left", "jedi_tleft",0)
register_clcmd("-left", "jedi_stleft",0)
register_clcmd("+right", "jedi_tright",0)
register_clcmd("-right", "jedi_stright",0)
register_clcmd("slot1", "jedi_slot1",0)
register_clcmd("slot2", "jedi_slot2",0)
register_clcmd("slot3", "jedi_slot3",0)
register_clcmd("slot4", "jedi_slot4",0)
register_clcmd("slot5", "jedi_slot5",0)
register_clcmd("slot6", "jedi_slot6",0)
register_clcmd("slot7", "jedi_slot7",0)
register_clcmd("slot8", "jedi_slot8",0)
register_clcmd("slot9", "jedi_slot9",0)
register_clcmd("slot10", "jedi_slot10",0)
register_clcmd("slot0", "jedi_slot0",0)
register_clcmd("drop", "jedi_drop",0)
register_clcmd("lastinv", "jedi_lastinv",0)
register_clcmd("invnext", "jedi_invnext",0)
register_clcmd("invprev", "jedi_invprev",0)
register_clcmd("nightvision", "jedi_nightvision",0)
}