AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   client_print cmd_target problems... (https://forums.alliedmods.net/showthread.php?t=95581)

HLM 06-25-2009 02:40

client_print cmd_target problems...
 
PHP Code:

#include <amxmodx>
#include <fun>
#include <amxmisc>

#define PLUGIN "Cloak"
#define VERSION "1.0"
#define AUTHOR "Master A.K.A. HLM"

new g_iVisibilityState[33]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("amx_cloak","give_invis"ADMIN_KICK,"<name|#userid|steamid> <on/half/off> ")
}

public 
give_invis(id,level,cid)
{
    if(!
cmd_access(id,level,cid,3))
        return 
PLUGIN_HANDLED
    
    
new szarg1[33], szarg2[8]
    
read_argv(1,szarg1,32)
    
read_argv(2,szarg2,7)
    new 
mode str_to_num(szarg2)
    
    new 
target cmd_target(id,szarg1,2)
    new 
name[32];
    
get_user_name(idname32)
    if(
target)
    {
        
g_iVisibilityState[target] = mode
        
switch(mode)
        {
            case 
0:
            {
                if(
is_user_alive(target))
                
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
                
client_print(target,print_chat,"-[EVIL]- %s is no longer cloaked ",name)
            }
            case 
1:
            {
                if(
is_user_alive(target))
                
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,85)
                
client_print(target,print_chat"-[EVIL]- %s is partially cloaked ",name)
                
// Partial Cloak
            
}
            case 
2:
            {
                if(
is_user_alive(target))
                
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,0)
                
client_print(target,print_chat"-[EVIL]- %s is completely cloaked ",name)
                
// Full Cloak
            
}
        }
    }
        
    return 
PLUGIN_HANDLED


I wantto change case 0: case 1: case 2: to equal on half and off.. then I dont have to run amx_cloak %s <0/1/2>

how would I do this?

EDIT: This has been solved, view post 16 for the current issue at hand..

Emp` 06-25-2009 03:53

Re: make a case of a switch equal a string?
 
You can't do it with full strings, you can do a switch for the first character though. I would suggest just doing if/else.

HLM 06-25-2009 15:17

Re: make a case of a switch equal a string?
 
PHP Code:

if azarg2 "on" then $dothis
else
if 
szarg2 ="off" then $turn_this_off
else
if 
szarg2 "half" then $use_this 

am I going about this correctly?

SnoW 06-25-2009 16:41

Re: make a case of a switch equal a string?
 
Quote:

Originally Posted by HLM (Post 856961)
PHP Code:

if azarg2 "on" then $dothis
else
if 
szarg2 ="off" then $turn_this_off
else
if 
szarg2 "half" then $use_this 

am I going about this correctly?

Emp already told you that you can't do it with strings. You can do following:
PHP Code:

switch( szarg2] )
{
     case 
'n': { }
     case 
'f': { }
     case 
'a': { }


Or
PHP Code:

if( equalszarg2"on" ) ) { }
else if( 
equalszarg2"off" ) ) { }
else if( 
equalszarg2"half" ) ) { } 


HLM 06-25-2009 18:17

Re: make a case of a switch equal a string?
 
okay, I now have it 100% set up, I still have to warning about indentation.. IDK but how do I 'refresh' the cloak after user dies?

like.. is_user_dead, is there anything like that?

Atspulgs 06-25-2009 18:21

Re: make a case of a switch equal a string?
 
there is
is_user_alive(id)

tpt 06-25-2009 18:39

Re: make a case of a switch equal a string?
 
Quote:

Originally Posted by Atspulgs (Post 857100)
there is
is_user_alive(id)

Code:
if( is_user_alive( index ) ) //alive if( !is_user_alive( index ) ) //dead

But i think you're looking for deathmsg event. :wink:

Code:
public plugin_init()        register_event("DeathMsg", "e_death", "a", "1>0") public e_death() {      //player has died      new Killer = read_data(1)      new Victim = read_data(2) }

fysiks 06-25-2009 19:04

Re: make a case of a switch equal a string?
 
Also, you need to start using braces.

PHP Code:

                if(is_user_alive(target))
                
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
                
client_print(target,print_chat,"-[EVIL]- %s is no longer cloaked ",name

If user is alive both are executed. If user is dead the second is still executed. Is this check really needed anyways?

SchlumPF* 06-25-2009 19:21

Re: make a case of a switch equal a string?
 
Quote:

Originally Posted by Emp` (Post 856508)
You can't do it with full strings, you can do a switch for the first character though. I would suggest just doing if/else.

PHP Code:

new random_text[] = "this is untested but should work";

switch( 
engfuncEngFunc_AllocStringrandom_text ) )
{
    
// 123 should be the returned value of engfunc( EngFunc_AllocString, your_case ) since switch requires constant expressions
    
case 123client_printplrprint_chat"lol Emp was wrong!" );
    default: 
client_printplrprint_chat"fail" );



HLM 06-25-2009 19:30

Re: make a case of a switch equal a string?
 
Quote:

Originally Posted by fysiks (Post 857118)
Also, you need to start using braces.

PHP Code:

                if(is_user_alive(target))
                
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
                
client_print(target,print_chat,"-[EVIL]- %s is no longer cloaked ",name

If user is alive both are executed. If user is dead the second is still executed. Is this check really needed anyways?

the if is_user_alive bit was my way of trying to get it to do it whenever user is alive, but now I feel asif it should be removed, because this is not looping infinitely redoing the command constantly... (wouldnt that kill the server?)
the final product:
PHP Code:

#include <amxmodx>
#include <fun>
#include <amxmisc>

#define PLUGIN "Cloak"
#define VERSION "1.0"
#define AUTHOR "Master A.K.A. HLM"

new g_iVisibilityState[33]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("amx_cloak","give_invis"ADMIN_KICK,"<name|#userid|steamid> <on/half/off> ")
    
register_event("DeathMsg""e_death""a""1>0")
}

public 
give_invis(id,level,cid)
{
    if(!
cmd_access(id,level,cid,3))
        return 
PLUGIN_HANDLED
    
    
new szarg1[33], szarg2[8]
    
read_argv(1,szarg1,32)
    
read_argv(2,szarg2,7)
    new 
mode str_to_num(szarg2)
    
    new 
target cmd_target(id,szarg1,2)
    new 
name[32];
    
get_user_name(idname32)
    if(
target)
    {
        
g_iVisibilityState[target] = mode
        
            
if( equalszarg2"off" ) )
            {
                
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
                
client_print(target,print_chat,"-[EVIL]- %s is no longer cloaked ",name)
            }
            else if( 
equalszarg2"half" ) ) 
            {
                
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,85)
                
client_print(target,print_chat"-[EVIL]- %s is partially cloaked ",name)
                
// Partial Cloak
            
}
            else if( 
equalszarg2"on" ) )
            {
                
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,0)
                
client_print(target,print_chat"-[EVIL]- %s is completely cloaked ",name)
                
// Full Cloak
            
}
    }
return 
PLUGIN_HANDLED
}

public 
e_death(id,level,cid)
{
    
    new 
szarg1[33], szarg2[8]
    
read_argv(1,szarg1,32)
    
read_argv(2,szarg2,7)
    new 
mode str_to_num(szarg2)
    
    new 
target cmd_target(id,szarg1,2)
    new 
name[32];
    
get_user_name(idname32)
    
    if( 
equalszarg2"off" ) )
    {
        
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,255)
    }
    else if( 
equalszarg2"half" ) )
    {
        
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,85)
        
client_print(target,print_chat"-[EVIL]- %s, you are still partially cloaked! ",name)
    }
    else if( 
equalszarg2"on" ) )
    {
        
set_user_rendering(target,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,0)
        
client_print(target,print_chat"-[EVIL]- %s, you are still completely cloaked! ",name)
    }
return 
PLUGIN_HANDLED


the only problem is that it does NOT last through death.. I have a feeling that it is because I redefined the vars and whatnot.. is it possible to have a public in a public? or call upon the value of the args from a different function?


All times are GMT -4. The time now is 15:33.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.