AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Player In Zone (https://forums.alliedmods.net/showthread.php?t=134389)

padilha007 08-04-2010 03:41

Player In Zone
 
I made this plugin to check if player is in the zone. But some times the plugin fail, i dont have any ideia whats is the problem.

Tnx in advance.

PHP Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

#define ZonesMax 15
#define TASK_ID         1234

new ZonaFreeDayOne[ZonesMax][3];
new 
ZonaFreeDayTwo[ZonesMax][3];

new 
ZonaFreeDayAtual;

new 
sprite_zbeam;

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd"say /fdz""clearyzona" );
    
    
RegisterHamHam_TakeDamage "player" "fwd_HamTake"0);
    
    
set_task(1.0"PutVisual"TASK_ID__"b")
}

public 
plugin_precache() 
{
    
sprite_zbeam precache_model("sprites/zbeam4.spr");
}

public 
fwd_HamTakeiClientiInflictoriAttackerFloat:fDamagem_Damagebits )
{
    if( 
is_user_connectediClient ) )
    {
        if( !
get_user_in_zoneiAttacker ) )
            return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

stock get_user_in_zoneid )
{
    new 
PlayerOrigem[3];
    
get_user_origin(idPlayerOrigem0);
    
    for( new 
0ZonesMaxi++ )
    {
        if( 
ZonaFreeDayOne[i][0] && ZonaFreeDayTwo[i][0] )
        {
            if( 
PlayerOrigem[0] <= ZonaFreeDayOne[i][0] && PlayerOrigem[0] >= ZonaFreeDayTwo[i][0] )
            {
                if( 
PlayerOrigem[1] <= ZonaFreeDayOne[i][1] && PlayerOrigem[1] >= ZonaFreeDayTwo[i][1] )
                    return 
1;
                
                if( 
PlayerOrigem[1] >= ZonaFreeDayOne[i][1] && PlayerOrigem[1] <= ZonaFreeDayTwo[i][1] )
                    return 
1;
            }
        }
    }
    
    return 
0;
}

public 
clearyzona(id)
{
    new 
menu menu_create("[ Clear Zone ]""menu_fdzn");
        
    
menu_additem(menu,    "\w Add Save Zone"    "1"0);
    
menu_additem(menu,    "\w Remove Save Zones"    "2"0);
    
menu_additem(menu,    "\w Exit"        "3"0);
                
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
menu_display(idmenu0);
    
    return 
PLUGIN_HANDLED;
}

public 
menu_fdzn(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    new 
data[6], iName[64], iOrigin[3];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,5iName63callback);

    new 
key str_to_num(data);

    switch(
key)
    {
        case 
1:
        {
            if( !
ZonaFreeDayAtual )
                
ZonaFreeDayAtual GetEmptyBaseIndex();
            
            if( !
ZonaFreeDayOne[ZonaFreeDayAtual][0] || !ZonaFreeDayOne[ZonaFreeDayAtual][1] || !ZonaFreeDayOne[ZonaFreeDayAtual][2] )
            {
                
get_user_origin(idiOrigin0);
                
                
ZonaFreeDayOne[ZonaFreeDayAtual][0] = iOrigin[0];
                
ZonaFreeDayOne[ZonaFreeDayAtual][1] = iOrigin[1];
                
ZonaFreeDayOne[ZonaFreeDayAtual][2] = iOrigin[2];
            }
            else if( !
ZonaFreeDayTwo[ZonaFreeDayAtual][0] || !ZonaFreeDayTwo[ZonaFreeDayAtual][1] || !ZonaFreeDayTwo[ZonaFreeDayAtual][2] )
            {
                
get_user_origin(idiOrigin0);
                
                
ZonaFreeDayTwo[ZonaFreeDayAtual][0] = iOrigin[0];
                
ZonaFreeDayTwo[ZonaFreeDayAtual][1] = iOrigin[1];
                
ZonaFreeDayTwo[ZonaFreeDayAtual][2] = iOrigin[2];
                
                
ZonaFreeDayAtual 0;
            }
        }
        
        case 
2:
            
SaveZonas();
        
        case 
3:
            return 
PLUGIN_HANDLED;
    }

    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
SaveZonas( )
{
    new 
file fopen(gszNewFile"wt");
    new 
szData[128];

    for( new 
0ZonesMaxi++ )
    {
        if( 
ZonaFreeDayOne[i][0] && ZonaFreeDayTwo[i][0] )
        {
            
formatex(szData128"%d %d %d %d %d %d^n"ZonaFreeDayOne[i][0], ZonaFreeDayOne[i][1], ZonaFreeDayOne[i][2], ZonaFreeDayTwo[i][0], ZonaFreeDayTwo[i][1], ZonaFreeDayTwo[i][2]);
            
fputs(fileszData);
        }
    }

    
fclose(file);
}

public 
LoadZonas( )
{
    new 
Entidade;
    
    new 
O1[16], O2[16], O3[16], O4[16], O5[16], O6[16];
    
    for ( new 
0file_size gszNewFile); ++ )
    {
        new 
szText 64 ]
        new 
iLen
        read_file 
gszNewFileaszTextsizeof szText ) - 1iLen )

        if ( ( 
szText ] != ';' ) && (szText ] != '/' ) )
        {
            
Entidade GetEmptyBaseIndex();
            
            
parse(szTextO116O216O316O416O516O616);
            
            
ZonaFreeDayOne[Entidade][0] = str_to_num(O1);
            
ZonaFreeDayOne[Entidade][1] = str_to_num(O2);
            
ZonaFreeDayOne[Entidade][2] = str_to_num(O3);
            
            
ZonaFreeDayTwo[Entidade][0] = str_to_num(O4);
            
ZonaFreeDayTwo[Entidade][1] = str_to_num(O5);
            
ZonaFreeDayTwo[Entidade][2] = str_to_num(O6);
        }
    }
}

GetEmptyBaseIndex()
{
    for( new 
1ZonesMaxi++ )
    {
        if( !
ZonaFreeDayOne[i][0] && !ZonaFreeDayTwo[i][0] )
        {
            return 
i;
        }
    }
    
    return 
0;
}

public 
PutVisual()
{
    for( new 
1ZonesMaxi++ )
    {
        for(new 
1<= 4j++)
        {
            if( 
ZonaFreeDayOne[i][0] && ZonaFreeDayTwo[i][0] )
            {
                
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
                
write_byte(0)
                
                switch( 
)
                {
                    case 
1:
                    {
                        
write_coord(ZonaFreeDayOne[i][0])
                        
write_coord(ZonaFreeDayOne[i][1])
                        
write_coord(ZonaFreeDayOne[i][2])
                        
write_coord(ZonaFreeDayOne[i][0])
                        
write_coord(ZonaFreeDayTwo[i][1])
                        
write_coord(ZonaFreeDayTwo[i][2])
                    }
                    case 
2:
                    {
                        
write_coord(ZonaFreeDayTwo[i][0])
                        
write_coord(ZonaFreeDayOne[i][1])
                        
write_coord(ZonaFreeDayOne[i][2])
                        
write_coord(ZonaFreeDayTwo[i][0])
                        
write_coord(ZonaFreeDayTwo[i][1])
                        
write_coord(ZonaFreeDayTwo[i][2])
                    }
                    case 
3:
                    {
                        
write_coord(ZonaFreeDayOne[i][0])
                        
write_coord(ZonaFreeDayOne[i][1])
                        
write_coord(ZonaFreeDayOne[i][2])
                        
write_coord(ZonaFreeDayTwo[i][0])
                        
write_coord(ZonaFreeDayOne[i][1])
                        
write_coord(ZonaFreeDayTwo[i][2])
                    }
                    case 
4:
                    {
                        
write_coord(ZonaFreeDayOne[i][0])
                        
write_coord(ZonaFreeDayTwo[i][1])
                        
write_coord(ZonaFreeDayOne[i][2])
                        
write_coord(ZonaFreeDayTwo[i][0])
                        
write_coord(ZonaFreeDayTwo[i][1])
                        
write_coord(ZonaFreeDayTwo[i][2])
                    }
                }
                    
                
write_short(sprite_zbeam)
                
write_byte(0)
                
write_byte(0)
                
write_byte(30)
                
write_byte(15)
                
write_byte(0)
                
write_byte(255)
                
write_byte(0)
                
write_byte(0)  
                
write_byte(100)
                
write_byte(0)
                
message_end()
            }
        }
    }



Arkshine 08-04-2010 04:30

Re: Player In Zone
 
Debug get_user_in_zone() and try to understand.


All times are GMT -4. The time now is 00:16.

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