spacing got a little wierd in the paste, so forgive that.
PHP Code:
//Called during plugin init
public Initialize_CLCMD ( )
{
[...blah...]
register_clcmd ( "wcentangle", "Ult_Entangle", -1, "-Entangle Ultimate" );
[...blah...]
}
//Ran when client commands
public Ult_Entangle ( id )
{
if ( !Ult_Can_Use ( id, SKILLIDX_ENTANGLE ) )
{
return PLUGIN_HANDLED;
}
if ( is_user_alive ( id ) && is_user_connected( id ) && !issearching[id] && !ultimateused[id] )
{
new parm[2];
parm[0] = id;
parm[1] = ULTIMATESEARCHTIME;
Task_Search_Event_Entangle ( parm );
}
return PLUGIN_CONTINUE;
}
//Client command function calls this and loops through it on occassion until a match is found
//This is where it errors out in the logs
public Task_Search_Event_Entangle ( parm[2] )
{
new waitparm[6];
new iparm[2];
new id = parm[0];
new enemyz, body;
new counter;
if ( !is_user_connected( id ) )
{
icon_controller ( id );
return PLUGIN_CONTINUE;
}
get_user_aiming ( id,enemyz, body );
if ( ( get_user_team ( enemyz ) == SPEC ) || !is_user_connected( enemyz ) )
{
icon_controller ( id );
return PLUGIN_CONTINUE;
}
if ( !p_resists[enemyz][RESISTIDX_MAGIC])
{
p_resists[enemyz][RESISTIDX_MAGIC] = 0;
}
if ( ( 0 < enemyz <= 32 ) && ( p_resists[enemyz][RESISTIDX_MAGIC] >= RESIST_MAX_VALUE ) || ( !temp_immunity[enemyz] && magic_saving_throw ( enemyz ) ) )
{
temp_immunity[enemyz] = true;
if ( is_user_connected( enemyz ) && !is_user_bot( enemyz ) )
{
client_print ( enemyz, print_chat, "%L", enemyz, "ULTIMATE_ENGANGLE_RESISTANT", MOD );
}
iparm[0] = enemyz;
format( iparm[1], 31, "%s", "Entangling roots" );
set_task ( 5.0, "Task_Reset_Immunity", TASK_RESET_IMMUNITY + id, iparm, 2 );
}
if ( 0<enemyz<=32 && !stunned[enemyz] && get_user_team ( id )!=get_user_team ( enemyz ) && playeritem[enemyz]!=IMMUNITY && !hasblink[enemyz] && is_user_alive ( id ) && is_user_alive ( enemyz ) && !temp_immunity[enemyz] )
{
issearching[id] = false;
ultimateused[id] = true;
icon_controller ( id );
if ( is_user_connected( enemyz ) && !is_user_bot( enemyz ) )
{
if ( file_exists ( "sound/warcraft3/entanglingrootstarget1.wav" ) == 1 )
{
emit_sound ( id, CHAN_ITEM, "warcraft3/entanglingrootstarget1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM );
}
else
{
if ( file_exists ( "sound/weapons/cbar_hitbod3.wav" ) == 1 )
{
emit_sound ( id,CHAN_ITEM, "weapons/cbar_hitbod3.wav", 1.0, ATTN_NORM, 0, PITCH_NORM );
}
}
}
waitparm[0] = enemyz;
waitparm[1] = 100;
waitparm[5] = floatround ( get_user_maxspeed ( enemyz ) );
set_user_maxspeed ( enemyz,1.0 );
Task_Entangle_Stop ( waitparm );
stunned[enemyz] = true;
new cooldownparm[1];
cooldownparm[0] = id;
set_task ( CVAR_ENTANGLE_COOLDOWN, "cooldown", 50 + id, cooldownparm, 1 );
}
else
{
issearching[id] = true;
icon_controller ( id );
counter = parm[1];
while ( counter >= 0 )
{
counter -= 10;
if ( counter == 0 )
{
emit_sound ( id, CHAN_ITEM, "turret/tu_ping.wav", 1.0, ATTN_NORM, 0, PITCH_NORM );
}
}
--parm[1];
if ( parm[1]>0 && get_user_health ( id ) > 0 )
{
set_task ( 0.1, "Task_Search_Event_Entangle", TASK_ULTIMATE_ENTANGLE_SEARCH + id, parm, 2 );
}
else
{
issearching[id] = false;
icon_controller ( id );
}
}
return PLUGIN_CONTINUE;
}