Raised This Month: $ Target: $400
 0% 

Player In Zone


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
padilha007
Senior Member
Join Date: Jul 2008
Old 08-04-2010 , 03:41   Player In Zone
Reply With Quote #1

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()
            }
        }
    }

__________________


Last edited by padilha007; 08-04-2010 at 23:53.
padilha007 is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 08-04-2010 , 04:30   Re: Player In Zone
Reply With Quote #2

Debug get_user_in_zone() and try to understand.
__________________
Arkshine is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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