PDA

View Full Version : help with hero


ArtofDrowning07
09-14-2004, 23:45
ok thought of a hero, been workin on it for a week..heres the code

//***Embroiler by -=cKy=- <Killer>
//Confuses enemy: Mixes up their move keys (7 diff. configs)

//CVARS
//embroiler_level 7
//embroiler_health 100
//embroiler_armor 150

#include <amxmod.inc>
#include <xtrafun>
#include <superheromod.inc>

new gHeroName[]="Embroiler"
new gHasEmbroilerPower[SH_MAXSLOTS+1]

new coption
new xvar
//new oldetarget

public plugin_init()
{
register_plugin("SUPERHERO Embroiler","1.0","-=cKy=- <Killer>")

if ( isDebugOn() ) server_print("Attempting to create Embroiler hero")
if ( !cvar_exists("embroiler_level") ) register_cvar("embroiler_level", "7")
shCreateHero(gHeroName, "Confuses Enemy", "At round start, random enemy's move keys become mixed up!", false, "embroiler_level")

register_srvcmd("Embroiler_init", "Embroiler_init")
shRegHeroInit(gHeroName, "Embroiler_init")
register_event("ResetHUD","newRound","b")

set_task(0.01,"embroiler_loop",0,"",0,"b")

register_cvar("embroiler_health","100")
register_cvar("embroiler_armor","150")

shSetMaxHealth(gHeroName, "embroiler_health")
shSetMaxArmor(gHeroName, "embroiler_armor")
}
//----------------------------------------------------------------------------------
public Embroiler_init()
{
new temp[6]
read_argv(1,temp,5)
new id=str_to_num(temp)

read_argv(2,temp,5)
new hasPowers=str_to_num(temp)
xvar=0
gHasEmbroilerPower[id]=(hasPowers!=0)
if( !gHasEmbroilerPower[id] )
{
shRemHealthPower(id)
shRemArmorPower(id)
remove_task(id)
}
}

public newRound(id)
{
if( !shModActive() || !is_user_alive(id) || !gHasEmbroilerPower[id] ) return PLUGIN_CONTINUE

new enemyNum=0
xvar=0
for (new enemy=1; enemy<=SH_MAXSLOTS; enemy++)
{
if ( is_user_alive(enemy) && get_user_team(enemy)!=get_user_team(id) && enemy!=id ) enemyNum++
}
if (enemyNum==0) return PLUGIN_CONTINUE
// oldetarget=etarget
new etarget=random_num(1, enemyNum)
for (new x=etarget; (x!=id || get_user_team(x)!=get_user_team(id)); x=etarget)
{
etarget = random_num(1, enemyNum)
}
coption=random_num(1, 8)
check_button(etarget)
new parm[1]
parm[0]=etarget
new enemyName[32]
get_user_name(etarget,enemyName,31)
new message[128]
if(coption==8)
format(message, 127, "You got lucky and didn't get confused by Embroiler's power!")
if(coption!=8)
format(message, 127, "You, %s, became confused by Embroiler's power! #%d", enemyName, coption)
set_hudmessage(128,0,128,-1.0,0.25,0,0.25,2.0,0.0,0.0,4)
show_hudmessage(etarget, message)
//format(message, 127, "You have released your power on enemy %s!", enemyName)
//set_hudmessage(128,0,128,-1.0,0.25,0,0.25,2.0,0.0,0.0,4)
//show_hudmessage(id, message)
set_task(0.01,"embroiler_loop",etarget,parm,1,"b")
return PLUGIN_CONTINUE
}

public embroiler_loop(etarget)
{
check_button(etarget)
return PLUGIN_CONTINUE
}

public check_button(etarget)
{
new message[128]
format(message, 127, "xvar: %d ", xvar)
set_hudmessage(128,0,128,-1.0,0.25,0,0.25,2.0,0.0,0.0,4)
show_hudmessage(etarget, message)
if(!is_user_alive(etarget)) return PLUGIN_CONTINUE

switch(coption)
{
case 1:{
if(xvar!=1 && xvar!=2)
{
register_clcmd("+moveright","moveleft",0)
register_clcmd("+moveleft","moveright",0)
register_clcmd("+back","moveup",0)
register_clcmd("+forward","movedown",0)
xvar=1
}
if(get_user_button(etarget)&IN_MOVELEFT) {
xvar=2
client_cmd(etarget, "+moveleft")
}
if(get_user_button(etarget)&IN_MOVERIGHT) client_cmd(etarget, "+moveright")
if(get_user_button(etarget)&IN_FORWARD) client_cmd(etarget, "+forward")
if(get_user_button(etarget)&IN_BACK) client_cmd(etarget, "+back")
}
case 2:{
if(xvar!=1 && xvar!=2)
{
register_clcmd("+moveright","movedown",0)
register_clcmd("+moveleft","moveup",0)
register_clcmd("+back","moveleft",0)
register_clcmd("+forward","moveright",0)
xvar=1
}
if(get_user_button(etarget)&IN_MOVELEFT) {
xvar=2
client_cmd(etarget, "+moveleft")
}
if(get_user_button(etarget)&IN_MOVERIGHT) client_cmd(etarget, "+moveright")
if(get_user_button(etarget)&IN_FORWARD) client_cmd(etarget, "+forward")
if(get_user_button(etarget)&IN_BACK) client_cmd(etarget, "+back")
}
case 3:{
if(xvar!=1 && xvar!=2)
{
register_clcmd("+moveright","moveup",0)
register_clcmd("+moveleft","movedown",0)
register_clcmd("+back","moveright",0)
register_clcmd("+forward","moveleft",0)
xvar=1
}
if(get_user_button(etarget)&IN_MOVELEFT) {
xvar=2
client_cmd(etarget, "+moveleft")
}
if(get_user_button(etarget)&IN_MOVERIGHT) client_cmd(etarget, "+moveright")
if(get_user_button(etarget)&IN_FORWARD) client_cmd(etarget, "+forward")
if(get_user_button(etarget)&IN_BACK) client_cmd(etarget, "+back")
}
case 4:{
if(xvar!=1 && xvar!=2)
{
register_clcmd("+moveright","moveleft",0)
register_clcmd("+moveleft","moveup",0)
register_clcmd("+back","moveright",0)
register_clcmd("+forward","movedown",0)
xvar=1
}
if(get_user_button(etarget)&IN_MOVELEFT) {
xvar=2
client_cmd(etarget, "+moveleft")
}
if(get_user_button(etarget)&IN_MOVERIGHT) client_cmd(etarget, "+moveright")
if(get_user_button(etarget)&IN_FORWARD) client_cmd(etarget, "+forward")
if(get_user_button(etarget)&IN_BACK) client_cmd(etarget, "+back")
}
case 5:{
if(xvar!=1 && xvar!=2)
{
register_clcmd("+moveright","moveleft",0)
register_clcmd("+moveleft","movedown",0)
register_clcmd("+back","moveup",0)
register_clcmd("+forward","moveright",0)
xvar=1
}
if(get_user_button(etarget)&IN_MOVELEFT) {
xvar=2
client_cmd(etarget, "+moveleft")
}
if(get_user_button(etarget)&IN_MOVERIGHT) client_cmd(etarget, "+moveright")
if(get_user_button(etarget)&IN_FORWARD) client_cmd(etarget, "+forward")
if(get_user_button(etarget)&IN_BACK) client_cmd(etarget, "+back")
}
case 6:{
if(xvar!=1 && xvar!=2)
{
register_clcmd("+moveright","movedown",0)
register_clcmd("+moveleft","moveright",0)
register_clcmd("+back","moveup",0)
register_clcmd("+forward","moveleft",0)
xvar=1
}
if(get_user_button(etarget)&IN_MOVELEFT) {
xvar=2
client_cmd(etarget, "+moveleft")
}
if(get_user_button(etarget)&IN_MOVERIGHT) client_cmd(etarget, "+moveright")
if(get_user_button(etarget)&IN_FORWARD) client_cmd(etarget, "+forward")
if(get_user_button(etarget)&IN_BACK) client_cmd(etarget, "+back")
}
case 7:{
if(xvar!=1 && xvar!=2)
{
register_clcmd("+moveright","moveup",0)
register_clcmd("+moveleft","moveright",0)
register_clcmd("+back","moveleft",0)
register_clcmd("+forward","movedown",0)
xvar=1
}
if(get_user_button(etarget)&IN_MOVELEFT) {
xvar=2
client_cmd(etarget, "+moveleft")
}
if(get_user_button(etarget)&IN_MOVERIGHT) client_cmd(etarget, "+moveright")
if(get_user_button(etarget)&IN_FORWARD) client_cmd(etarget, "+forward")
if(get_user_button(etarget)&IN_BACK) client_cmd(etarget, "+back")
}
case 8:{
if(get_user_button(etarget)&IN_MOVELEFT) client_cmd(etarget, "+moveleft")
}
}
return PLUGIN_CONTINUE
}

public moveleft(id)
{
client_cmd(id, "+moveleft")
return PLUGIN_HANDLED
}

public moveright(id)
{
client_cmd(id, "+moveright")
return PLUGIN_HANDLED
}

public moveup(id)
{
client_cmd(id, "+forward")
return PLUGIN_HANDLED
}

public movedown(id)
{
client_cmd(id, "+back")
return PLUGIN_HANDLED
}

i put the xvar=2 shit in there to test if it went through the if(get_user_button) statements when they were pressed and i found out that that is the problem; the program doesnt go thru those parts when the specific button is pressed..how can i fix this?

thanks for the help

EDIT***: oh btw this part:
for (new x=etarget; (x!=id || get_user_team(x)!=get_user_team(id)); x=etarget)
{
etarget = random_num(1, enemyNum)
}

is so i could test the heros powers on myself..yeah..just incase u were wondering lol

ArtofDrowning07
09-15-2004, 22:53
k nvm ill get it thx anyway

Chivas2973
09-15-2004, 23:30
lol, ok

ArtofDrowning07
09-16-2004, 15:20
yeah that code was all fucked up so im rewriting it lol is this kinda thing possible?

reaper
09-16-2004, 16:44
yea its possible i got a hero like it already where if you shoot me your keys gets all messed up and you see bright lights flashing.

imported_Phiber
09-16-2004, 16:50
hey reaper post that hero on the forum! :D

reaper
09-16-2004, 17:59
No i cannot and will not post any of my exclusive hero's if i did that they wouldnt be exclusive would they? lol, na but if the original author wanted them published he would publish them himslef thats not up to me to decide sry bro.

imported_TicoMeElmo
09-16-2004, 18:30
wait after it mixes it up theres a timer right? then it changes back right? lol cuz then thats messed up if there new to cs or cz wutevers and just happen to join your server for first time thatll suck

reaper
09-16-2004, 19:30
Hmm... i dont even know if theres a timer i have never had it done to me before lol ill ask the original author :p.

imported_TicoMeElmo
09-16-2004, 20:12
or atleast the next round does it change back? if it does then thats cool i guess

ArtofDrowning07
09-16-2004, 21:04
yeah mine would be like that, a random guy gets his keys mixed up for a round and the next round it goes to another random guy..yeah ima work on it

if i figure it out ill post it

ArtofDrowning07
09-17-2004, 15:38
ok is there a way to overwrite a command in the main counter-strike console with amx? like, not overwrite an amx command but one of the main ones like +moveleft, etc.??

thanks

Night Slayer
10-23-2004, 02:48
|RIC|.....

MTS Steel DrAgoN
10-23-2004, 02:53
|RIC|.....

wtf?