Raised This Month: $12 Target: $400
 3% 

BCM4 WIndowBLock...HELP


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
minokura
New Member
Join Date: Jan 2009
Old 01-29-2009 , 20:25   BCM4 WIndowBLock...HELP
Reply With Quote #1

What it wrong?

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <xs>

#pragma semicolon 1

#define OBJECT_BHOP 1
#define OBJECT_BLOCK 2
#define OBJECT_BOOSTBLOCK 3
#define OBJECT_ICEBHOP 4
#define OBJECT_DELAYEDBHOP 5
#define OBJECT_FALLBLOCK 6
#define OBJECT_TELEPORTBLOCK 7
#define OBJECT_FATALISBLOCK 8
#define OBJECT_TINKBLOCK 9
#define OBJECT_MAGICCARPET 10
#define OBJECT_DUCKBLOCK 11
#define OBJECT_SPEEDBLOCK 12
#define OBJECT_SLOWBLOCK 13
#define OBJECT_WINDOWBLOCK 14


#define MODEL_NORMAL 1
#define MODEL_WALLZ 2
#define MODEL_WALLX 3
#define MODEL_WALLY 4
#define MODEL_TINY 5
#define MODEL_TELESTART 6
#define MODEL_TELEDEST 7

#define TASK_ID_FALLBLOCK 101000
#define TASK_ID_RESETVELOCITY 202000
#define TASK_ID_UNSOLID 303000
#define TASK_ID_SOLID 404000
#define TASK_ID_SETVELOCITY 505000
#define TASK_ID_MAXSPEED 606000
#define TASK_ID_GRAB 707000
#define TASK_ID_SHOWXYZ 808000

new const gPLUGIN[] = "BCM";
new const 
gVERSION[] = "4";
new const 
gAUTHOR[] = "[email protected]";

new 
gDir[129] = "addons/amxmodx/data/kzm";

new const 
gTYPES[][] =
{
    
"",
    
"_bhop.",
    
"_block.",
    
"_boost.",
    
"_ice.",
    
"_delayedbhop.",
    
"_fall.",
    
"",
    
"_fatalis.",
    
"_tink.",
    
"_magiccarpet.",
    
"_duck.",
    
"_speed.",
    
"_slow.",
    
"_window."
};

new const 
gMODELTYPES[][] =
{
    
"",
    
"normal",
    
"wall",
    
"wall",
    
"wall",
    
"tiny",
    
"blue_",
    
"orange_"
};

new const 
gNORMALMODELS[][] =
{
    
"",
    
"models/bcm4/bcm4_normal_bhop.mdl",
    
"models/bcm4/bcm4_normal_block.mdl",
    
"models/bcm4/bcm4_normal_boost.mdl",
    
"models/bcm4/bcm4_normal_ice.mdl",
    
"models/bcm4/bcm4_normal_delayedbhop.mdl",
    
"models/bcm4/bcm4_normal_fall.mdl",
    
"",
    
"models/bcm4/bcm4_normal_fatalis.mdl",
    
"models/bcm4/bcm4_normal_tink.mdl",
    
"models/bcm4/bcm4_normal_magiccarpet.mdl",
    
"models/bcm4/bcm4_normal_duck.mdl",
    
"models/bcm4/bcm4_normal_speed.mdl",
    
"models/bcm4/bcm4_normal_slow.mdl",
    
"models/bcm4/bcm4_normal_window.mdl"
};

new const 
gTINYMODELS[][] =
{
    
"",
    
"models/bcm4/bcm4_tiny_bhop.mdl",
    
"models/bcm4/bcm4_tiny_block.mdl",
    
"models/bcm4/bcm4_tiny_boost.mdl",
    
"models/bcm4/bcm4_tiny_ice.mdl",
    
"models/bcm4/bcm4_tiny_delayedbhop.mdl",
    
"models/bcm4/bcm4_tiny_fall.mdl",
    
"",
    
"models/bcm4/bcm4_tiny_fatalis.mdl",
    
"models/bcm4/bcm4_tiny_tink.mdl",
    
"models/bcm4/bcm4_tiny_magiccarpet.mdl",
    
"models/bcm4/bcm4_tiny_duck.mdl",
    
"models/bcm4/bcm4_tiny_speed.mdl",
    
"models/bcm4/bcm4_tiny_slow.mdl",
    
"models/bcm4/bcm4_tiny_window.mdl"
};

new const 
gWALLMODELS[][] =
{
    
"",
    
"models/bcm4/bcm4_wall_bhop.mdl",
    
"models/bcm4/bcm4_wall_block.mdl",
    
"models/bcm4/bcm4_wall_boost.mdl",
    
"models/bcm4/bcm4_wall_ice.mdl",
    
"models/bcm4/bcm4_wall_delayedbhop.mdl",
    
"models/bcm4/bcm4_wall_fall.mdl",
    
"",
    
"models/bcm4/bcm4_wall_fatalis.mdl",
    
"models/bcm4/bcm4_wall_tink.mdl",
    
"models/bcm4/bcm4_wall_magiccarpet.mdl",
    
"models/bcm4/bcm4_wall_duck.mdl",
    
"models/bcm4/bcm4_wall_speed.mdl",
    
"models/bcm4/bcm4_wall_slow.mdl",
    
"models/bcm4/bcm4_wall_window.mdl"
};

new const 
gTELEPORTMODELS[][] =
{
    
"models/teleporter_blue_sprites.mdl",
    
"models/teleporter_orange_rings.mdl"
};

new const 
gGLOWS[][] =
{
    {-
1, -1, -1},// NULL
    
{000}, // BHOP
    
{02550}, // BLOCK
    
{2552550}, // BOOSTBLOCK
    
{0255255}, // ICEBHOP
    
{25500}, // DELAYEDBHOP 100,0,0
    
{00255}, // FALLBLOCK
    
{2552550}, // TELEPORTBLOCK
    
{255255255}, // FATALISBLOCK
    
{1480211}, // TINKBLOCK
    
{5050100}, // MAGICCARPET
    
{255150150}, // DUCKBLOCK
    
{75200150}, // SPEEDBLOCK
    
{1396919}, // SLOWBLOCK
    
{000// WINDOWBLOCK
};

new const 
Float:gMINS[][] =
{
    {-
1.0, -1.0, -1.0}, // NULL
    
{-32.0, -32.0, -4.0}, // Normal
    
{-64.0, -64.0, -4.0}, // Wall Z
    
{-64.0, -4.0, -64.0}, // Wall X
    
{-4.0, -64.0, -64.0}, // Wall Y
    
{-8.0, -8.0, -4.0}, // Tiny
    
{-16.0, -16.0, -16.0}, // Tele Start
    
{-16.0, -16.0, -16.0// NULL (Tele Dest)
};

new const 
Float:gMAXS[][] =
{
    {-
1.0, -1.0, -1.0}, // NULL
    
{32.032.04.0}, // Normal
    
{64.064.04.0}, // Wall Z
    
{64.04.064.0}, // Wall X
    
{4.064.064.0}, // Wall Y
    
{8.08.04.0}, // Tiny
    
{16.016.016.0}, // Tele Start
    
{16.016.016.0// Tele Dest
};

new const 
gOBJECTNAMES[][] =
{
    
"",
    
"Bhop - Regular Bhop",
    
"Block - Regular Block",
    
"Boost Block - Boosts you in the air",
    
"Ice Bhop - No slowdown when landing",
    
"Delayed Bhop - 1 sec disappear delay",
    
"Fall Block - No fall damage",
    
"Teleport",
    
"Fatalis Block - Damage 10hp/sec",
    
"Tink Block - Heal 2hp/sec",
    
"Magic Carpet Block - CT's can ride on it",
    
"Duck Block - Spams duck repeatedly",
    
"Speed Block - Gives speed boost",
    
"Slow Block - Slows you after 3 seconds",
    
"Window BLock - Transparency BLock"
};

new 
gMainMenu;

new 
gBuildMenu;
new 
gMoveMenu;
new 
gModelMenu;

new 
gMsgSayText;
new 
gMaxPlayers;

new 
Float:gSlowedTime[33];
new 
gEntSlowed[33];
new 
gCvarLimit;
new 
gCvarAccessBuild;
new 
gCvarAccessMove;
new 
gCvarAccessDelete;
new 
gCvarAccessNoclip;
new 
gCvarAccessLoad;
new 
gCvarAccessNewConfig;
new 
gCvarAccessSave;
new 
gCvarAccessMagicCarpet;

new 
Float:gSetVelocity[33][3];

new 
gChoseModel[33];
new 
gBeamSprite;

new 
gGrabLength[33];
new 
gCurConfig[33] = "default";

public 
plugin_precache()
{
    for( new 
1sizeof(gNORMALMODELS); i++ )
    {
        if( 
!= OBJECT_TELEPORTBLOCK )
        {
            
precache_model(gNORMALMODELS[i]);
        }
    }
    
    for( new 
1sizeof(gTINYMODELS); i++ )
    {
        if( 
!= OBJECT_TELEPORTBLOCK )
        {
            
precache_model(gTINYMODELS[i]);
        }
    }
    
    for( new 
1sizeof(gWALLMODELS); i++ )
    {
        if( 
!= OBJECT_TELEPORTBLOCK )
        {
            
precache_model(gWALLMODELS[i]);
        }
    }
    
    for( new 
0sizeof(gTELEPORTMODELS); i++ )
    {
        
precache_model(gTELEPORTMODELS[i]);
    }
    
    
gBeamSprite precache_model("sprites/zbeam4.spr");
    
    return 
PLUGIN_CONTINUE;
}

public 
plugin_init()
{
    
register_plugin(gPLUGINgVERSIONgAUTHOR);
    
    
gCvarLimit register_cvar("bcm_limit""320"00.0);
    
register_cvar("bcm4""kzmed"FCVAR_SERVER|FCVAR_SPONLY0.0);
    
    
gCvarAccessBuild register_cvar("bcm_access_build""c"FCVAR_SPONLY0.0);
    
gCvarAccessMove register_cvar("bcm_access_move""c"FCVAR_SPONLY0.0);
    
gCvarAccessDelete register_cvar("bcm_access_delete""c"FCVAR_SPONLY0.0);
    
gCvarAccessNoclip register_cvar("bcm_access_noclip""c"FCVAR_SPONLY0.0);
    
gCvarAccessLoad register_cvar("bcm_access_load""c"FCVAR_SPONLY0.0);
    
gCvarAccessNewConfig register_cvar("bcm_access_newconfig""c"FCVAR_SPONLY0.0);
    
gCvarAccessSave register_cvar("bcm_access_save""c"FCVAR_SPONLY0.0);
    
gCvarAccessMagicCarpet register_cvar("bcm_access_magiccarpet""c"FCVAR_SPONLY0.0);
    
    new 
szAccessFlag[2];
    
get_pcvar_string(gCvarAccessBuildszAccessFlag1);
    new 
accessBuild read_flags(szAccessFlag);
    
    
get_pcvar_string(gCvarAccessMoveszAccessFlag1);
    new 
accessMove read_flags(szAccessFlag);
    
    
get_pcvar_string(gCvarAccessDeleteszAccessFlag1);
    new 
accessDelete read_flags(szAccessFlag);
    
    
get_pcvar_string(gCvarAccessNoclipszAccessFlag1);
    new 
accessNoclip read_flags(szAccessFlag);
    
    
get_pcvar_string(gCvarAccessNewConfigszAccessFlag1);
    new 
accessNewConfig read_flags(szAccessFlag);
    
    
get_pcvar_string(gCvarAccessSaveszAccessFlag1);
    new 
accessSave read_flags(szAccessFlag);
    
    
get_pcvar_string(gCvarAccessMagicCarpetszAccessFlag1);
    new 
accessMagicCarpet read_flags(szAccessFlag);
    
    
register_forward(FM_Touch"fwdTouch"0);
    
    
register_event("HLTV""msgNewRound""a""1=0""2=0");
    
    
register_forward(FM_PlayerPreThink"fwdPlayerPreThink"0);
    
    
gMsgSayText get_user_msgid("SayText");
    
gMaxPlayers get_maxplayers();
    
    
gMainMenu menu_create("BCM4 by [KzM] Fatalis""mnuMain"0);
    
menu_additem(gMainMenu"Build Menu""1"0, -1);
    
menu_additem(gMainMenu"Move Menu""2"0, -1);
    
menu_additem(gMainMenu"Destroy""3"accessDelete, -1);
    
menu_additem(gMainMenu"Noclip""4"accessNoclip, -1);
    
menu_additem(gMainMenu"Load""5"0, -1);
    
menu_additem(gMainMenu"Save""6"accessSave, -1);
    
    
gBuildMenu menu_create("Build Menu""mnuBuild"0);
    
menu_additem(gBuildMenu"Bhop""1"accessBuild, -1);
    
menu_additem(gBuildMenu"Block""2"accessBuild, -1);
    
menu_additem(gBuildMenu"Boost Block""3"accessBuild, -1);
    
menu_additem(gBuildMenu"Ice Bhop""4"accessBuild, -1);
    
menu_additem(gBuildMenu"Delayed Bhop""5"accessBuild, -1);
    
menu_additem(gBuildMenu"Fall Block""6"accessBuild, -1);
    
menu_additem(gBuildMenu"Teleport""7"accessBuild, -1);
    
menu_additem(gBuildMenu"Fatalis Block""8"accessBuild, -1);
    
menu_additem(gBuildMenu"Tink Block""9"accessBuild, -1);
    
menu_additem(gBuildMenu"Magic Carpet""10"accessMagicCarpet, -1);
    
menu_additem(gBuildMenu"Duck Block""11"accessBuild, -1);
    
menu_additem(gBuildMenu"Speed Block""12"accessBuild, -1);
    
menu_additem(gBuildMenu"Slow Block""13"accessBuild, -1);
    
menu_additem(gBuildMenu"Window Block" "14"accessBuild, -1);

    
menu_setprop(gBuildMenuMPROP_EXITNAME"Main Menu");
        
    
gMoveMenu menu_create("Move Menu""mnuMove"0);
    
menu_additem(gMoveMenu"Z+ Green""1"accessMove, -1);
    
menu_additem(gMoveMenu"Z-""2"accessMove, -1);
    
menu_additem(gMoveMenu"X+ Red""3"accessMove, -1);
    
menu_additem(gMoveMenu"X-""4"accessMove, -1);
    
menu_additem(gMoveMenu"Y+ Blue""5"accessMove, -1);
    
menu_additem(gMoveMenu"Y-""6"accessMove, -1);
    
menu_additem(gMoveMenu"Z++""7"accessMove, -1);
    
menu_setprop(gMoveMenuMPROP_EXITNAME"Main Menu");
    
    
gModelMenu menu_create("Model Menu""mnuModel"0);
    
menu_additem(gModelMenu"Normal""1"0, -1);
    
menu_additem(gModelMenu"Wall Z (Green)""2"0, -1);
    
menu_additem(gModelMenu"Wall X (Red)""3"0, -1);
    
menu_additem(gModelMenu"Wall Y (Blue)""4"0, -1);
    
menu_additem(gModelMenu"Tiny""5"0, -1);
    
menu_setprop(gMoveMenuMPROP_EXITNAME"Main Menu");
    
    
register_clcmd("say /bhopmenu""cmdBhopMenu", -1"");
    
register_clcmd("say /bcm""cmdBhopMenu", -1"");
    
register_clcmd("amx_bcm""cmdBhopMenu", -1"");
    
register_clcmd("bcm_newconfig""cmdNewConfig"accessNewConfig"");
    
    
register_clcmd("+bcmgrab""cmdBCMGrabOn"accessMove"");
    
register_clcmd("-bcmgrab""cmdBCMGrabOff"accessMove"");
    
    
register_srvcmd("bcm_backwardscompat2""fnConvertFrom2", -1"");
    
    if( !
dir_exists(gDir) )
    {
        
mkdir(gDir);
    }
    
    
add(gDir128"/bcm"0);
    
    if( !
dir_exists(gDir) )
    {
        
mkdir(gDir);
    }
    
    new 
szMap[33];
    
get_mapname(szMap32);
    
    
format(gDir128"%s/%s"gDirszMap);
    
    if( !
dir_exists(gDir) )
    {
        
mkdir(gDir);
    }
    
    
fnBackwardsCompat3();
    
    
fnLoad("default");
    
    
set_task(2.0"tskShowObjectInfo"0""0"b"0);
    
    return 
PLUGIN_CONTINUE;
}

public 
cmdNewConfig(plrlevelcid)
{
    if( !
cmd_access(plrlevelcid2) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    new 
szArg[33];
    
read_argv(1szArg32);
    
    if( !
fnIsStringAlphaNumeric(szArg) )
    {
        
fnGreenChat(plr"[KzM] Config name must be alphanumeric.");
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
szPath[129];
    
format(szPath128"%s/%s.txt"gDirszArg);
    
    if( !
file_exists(szPath) )
    {
        new 
fopen(szPath"wt");
        
fputs(f"");
        
fclose(f);
        
        new 
szName[32];
        
get_user_name(plrszName32);
        
        
fnGreenChat(0"[KzM] %s created config ^"%s^"."szNameszArg);
    }
    
    return 
PLUGIN_HANDLED;
}

fnBackwardsCompat3()
{
    new 
szPath[129];
    
format(szPath128"%s.txt"gDir);
    
    if( 
file_exists(szPath) )
    {
        new 
szNewPath[129];
        
format(szNewPath128"%s/default.txt"gDir);
        
        new 
szData[129], fopen(szPath"rt"), newf fopen(szNewPath"at");
        while( !
feof(f) )
        {
            
fgets(fszData128);
            
            if( 
szData[0] == '^0' )
            {
                continue;
            }
            
            
fputs(newfszData);
        }
        
fclose(f);
        
fclose(newf);
        
        
delete_file(szPath);
    }
}

public 
cmdBCMGrabOn(plrlevelcid)
{
    if( !
cmd_access(plrlevelcid1) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    new 
ent fnGetAimEnt(plr);
    
    new 
type fnGetObjectType(ent);
    
    if( 
type )
    {
        new 
szEnt[5];
        
num_to_str(entszEnt4);
        
        new 
Float:vPlayerOrigin[3], Float:vEntOrigin[3];
        
pev(plrpev_originvPlayerOrigin);
        
pev(entpev_originvEntOrigin);
        
        
gGrabLength[plr] = floatround(vector_distance(vPlayerOriginvEntOrigin));
        
        
set_task(0.1"tskGrab"TASK_ID_GRAB plrszEnt4"b"0);
    }
    
    return 
PLUGIN_HANDLED_MAIN;
}

public 
cmdBCMGrabOff(plrlevelcid)
{
    if( !
cmd_access(plrlevelcid1) )
    {
        return 
PLUGIN_HANDLED;
    }
    
    
remove_task(TASK_ID_GRAB plr0);
    
    return 
PLUGIN_HANDLED;
}

public 
tskGrab(const szEnt[], plr)
{
    
plr -= TASK_ID_GRAB;
    
    static 
ent;
    
ent str_to_num(szEnt);
    
    static 
Float:vAim[3];
    
velocity_by_aim(plrgGrabLength[plr], vAim);
    
    static 
Float:vOrigin[3];
    
pev(plrpev_originvOrigin);
    
    
vOrigin[0] += vAim[0];
    
vOrigin[1] += vAim[1];
    
vOrigin[2] += vAim[2];
    
    
fnSetOriginSnap(entvOrigin);
    
    return 
PLUGIN_CONTINUE;
}

public 
cmdBhopMenu(plrlevelcid)
{
    
menu_display(plrgMainMenu0);
    
    return 
PLUGIN_CONTINUE;
}

public 
mnuMain(plrmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    new 
szCmd[3],  _accesscallback;
    
menu_item_getinfo(menuitem_accessszCmd2""0callback);
    
    switch( 
str_to_num(szCmd) )
    {
        case 
1// Build
        
{
            
menu_display(plrgModelMenu0);
            
set_task(0.1"tskShowXYZ"TASK_ID_SHOWXYZ plr""0"b"0);
            return 
PLUGIN_CONTINUE;
        }
        case 
2// Move
        
{
            
menu_display(plrgMoveMenu0);
            
set_task(0.1"tskShowXYZ"TASK_ID_SHOWXYZ plr""0"b"0);
            return 
PLUGIN_CONTINUE;
        }
        case 
3// Delete
        
{
            new 
ent fnGetAimEnt(plr);
            
            new 
type fnGetObjectType(ent);
            if( 
type )
            {
                if( 
type != 99 )
                {
                    
engfunc(EngFunc_RemoveEntityent);
                }
                else
                {
                    new 
szTarget[5];
                    
pev(entpev_targetszTarget4);
                    
                    new 
dest engfunc(EngFunc_FindEntityByString, -1
                        
"targetname"szTarget);
                        
                    
engfunc(EngFunc_RemoveEntityent);
                    if( 
dest )
                    {
                        
engfunc(EngFunc_RemoveEntitydest);
                    }
                }
            }
        }
        case 
4// Noclip
        
{
            if( 
get_user_flags(plr0)&ADMIN_KICK // quick fix for a bug that only happens on one person's server
            
{
                
set_pev(plrpev_movetypepev(plrpev_movetype) == MOVETYPE_WALK ?
                    
MOVETYPE_NOCLIP MOVETYPE_WALK);
            }
        }
        case 
5// Load
        
{
            new 
szTitle[49];
            
format(szTitle48"Load Menu - Current: %s"gCurConfig);
            
            new 
menu menu_create(szTitle"mnuLoad"0);
            
            new 
szAccessFlag[2];
            
get_pcvar_string(gCvarAccessLoadszAccessFlag1);
            new 
accessLoad read_flags(szAccessFlag);
            
            new 
dir open_dir(gDir""0);
            
            new 
szFileName[65];
            while( 
next_file(dirszFileName64) )
            {
                if( 
szFileName[0] == '.' )
                {
                    continue;
                }
                
                
replace(szFileName64".txt""");
                
menu_additem(menuszFileName""accessLoad, -1);
            }
            
close_dir(dir);
            
            
menu_additem(menu"\rNew Config""1"0, -1);
            
            
menu_setprop(menuMPROP_EXITNAME"Main Menu");
            
            
menu_display(plrmenu0);
            
            return 
PLUGIN_CONTINUE;
            
            
/*new ent = fnGetAimEnt(plr);
            
            new type = fnGetObjectType(ent);
            if( type && type != 99 )
            {
                new szName[32];
                pev(ent, pev_targetname, szName, 31);
                
                if( szName[0] == '^0' )
                {
                    copy(szName, 31, "Unknown");
                }
                
                fnGreenChat(plr, "[KzM] Creator: %s", szName);
            }
            else
            {
                fnGreenChat(plr, "[KzM] Aim at an object first.");
            }*/
            
        
}
        case 
6// Save
        
{
            new 
szName[32];
            
get_user_name(plrszName31);
            
            
fnGreenChat(0"[KzM] %s saved config ^"%s^", %i objects."szName,
                
gCurConfigfnSave());
        }
    }
    
    
menu_display(plrgMainMenu0);
    
    return 
PLUGIN_CONTINUE;
}

public 
mnuLoad(plrmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
menu_display(plrgMainMenu0);
        return 
PLUGIN_CONTINUE;
    }
    
    new 
szCmd[2], szItem[33], _accesscallback;
    
menu_item_getinfo(menuitem_accessszCmd1szItem32callback);
    
    if( 
str_to_num(szCmd) )
    {
        
fnGreenChat(plr"[KzM] Type a name for the new config.");
        
        
client_cmd(plr"messagemode bcm_newconfig");
        
        
menu_destroy(menu);
        
menu_display(plrgMainMenu0);
        return 
PLUGIN_CONTINUE;
    }
    
    new 
szName[32];
    
get_user_name(plrszName32);
    
    
fnGreenChat(0"[KzM] %s loaded config ^"%s^", %i objects."szNameszItemfnLoad(szItem));
    
    
menu_destroy(menu);
    
menu_display(plrgMainMenu0);
    return 
PLUGIN_CONTINUE;
}

public 
mnuBuild(plrmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_display(plrgMainMenu0);
        return 
PLUGIN_CONTINUE;
    }
    
    new 
szCmd[3],  _accesscallback;
    
menu_item_getinfo(menuitem_accessszCmd2""0callback);
    
    new 
cmd str_to_num(szCmd);
    
    if( 
fnGetObjectCount() >= get_pcvar_num(gCvarLimit) )
    {
        
fnGreenChat(plr"[KzM] Object limit of %i reached."get_pcvar_num(gCvarLimit));
        
menu_display(plrgBuildMenucmd 0);
        return 
PLUGIN_CONTINUE;
    }
    
    switch( 
cmd )
    {
        case 
1..68..13:
        {
            new 
Float:vOrigin[3];
            
fnGetAimOrigin(plrvOrigin);
            
vOrigin[2] += 4.0;
            
            new 
szName[32];
            
get_user_name(plrszName31);
            
replace_all(szName31" ""_");
            
            
fnMakeObject(cmdgChoseModel[plr], vOriginszName);
        }
        case 
OBJECT_TELEPORTBLOCK:
        {
            new 
Float:vOrigin[3];
            
fnGetAimOrigin(plrvOrigin);
            
vOrigin[2] += 4.0;
            
            static 
bool:alt[33], szRand[33][5];
            if( !
alt[plr] )
            {
                
alt[plr] = true;
                
                
format(szRand[plr], 4"%c%c%c%c",
                    
random_num('a''z'),
                    
random_num('a''z'),
                    
random_num('a''z'),
                    
random_num('a''z'));
                    
                
fnMakeTeleport(vOriginszRand[plr], true);
            }
            else
            {
                
alt[plr] = false;
                
                
fnMakeTeleport(vOriginszRand[plr], false);
            }
        }
    }
    
    
menu_display(plrgBuildMenucmd 0);
    
    return 
PLUGIN_CONTINUE;
}

public 
mnuMove(plrmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_display(plrgMainMenu0);
        
remove_task(TASK_ID_SHOWXYZ plr0);
        
        return 
PLUGIN_CONTINUE;
    }
    
    new 
ent fnGetAimEnt(plr);
    
    if( !
fnGetObjectType(ent) )
    {
        
menu_display(plrgMoveMenu0);
        return 
PLUGIN_CONTINUE;
    }
    
    new 
Float:vOrigin[3];
    
pev(entpev_originvOrigin);
    
    new 
szCmd[3],  _accesscallback;
    
menu_item_getinfo(menuitem_accessszCmd2""0callback);
    
    switch( 
str_to_num(szCmd) )
    {
        case 
1:
        {
            
vOrigin[2] += 8.0;
        }
        case 
2:
        {
            
vOrigin[2] -= 8.0;
        }
        case 
3:
        {
            
vOrigin[0] += 8.0;
        }
        case 
4:
        {
            
vOrigin[0] -= 8.0;
        }
        case 
5:
        {
            
vOrigin[1] += 8.0;
        }
        case 
6:
        {
            
vOrigin[1] -= 8.0;
        }
        case 
7:
        {
            
vOrigin[2] += 32.0;
        }
    }
    
    
fnSetOriginSnap(entvOrigin);
    
    
menu_display(plrgMoveMenu0);
    
    return 
PLUGIN_CONTINUE;
}

public 
mnuModel(plrmenuitem)
{
    new 
szCmd[3],  _accesscallback;
    
menu_item_getinfo(menuitem_accessszCmd2""0callback);
    
    
remove_task(TASK_ID_SHOWXYZ plr0);
    
    
gChoseModel[plr] = str_to_num(szCmd);
    
    
menu_display(plrgBuildMenu0);
    
    return 
PLUGIN_CONTINUE;
}

public 
fwdTouch(entplr)
{
    if( !
is_user_alive(plr) )
    {
        return 
FMRES_IGNORED;
    }
    
    static 
szEntClass[6];
    
pev(entpev_classnameszEntClass5);
    
    if( 
equal(szEntClass"bcm_3"0) )
    {
        new 
type fnGetObjectType(ent);
        
        switch( 
type )
        {
        case 
OBJECT_BHOP:
        {
            if( !
task_exists(TASK_ID_UNSOLID ent0)
            && !
task_exists(TASK_ID_SOLID ent0) )
            {
                
set_task(0.1"tskUnsolid"TASK_ID_UNSOLID ent""0""0);
            }
        }
        case 
OBJECT_BLOCK:
        {
            
        }
        case 
OBJECT_BOOSTBLOCK:
        {
            
pev(plrpev_velocitygSetVelocity[plr]);
            
            
gSetVelocity[plr][2] = 600.0;
            if( !
task_exists(TASK_ID_FALLBLOCK plr0) )
            {
                
set_pev(plrpev_takedamage0.0);
                
set_task(0.0"tskFallBlock"TASK_ID_FALLBLOCK plr""0""0);
            }
        }
        case 
OBJECT_ICEBHOP:
        {
            
set_pev(plrpev_fuser20.0);
            
            if( !
task_exists(TASK_ID_UNSOLID ent0)
            && !
task_exists(TASK_ID_SOLID ent0) )
            {
                
set_task(0.1"tskUnsolid"TASK_ID_UNSOLID ent""0""0);
            }
        }
        case 
OBJECT_DELAYEDBHOP:
        {
            if( !
task_exists(TASK_ID_UNSOLID ent0)
            && !
task_exists(TASK_ID_SOLID ent0) )
            {
                
set_task(1.0"tskUnsolid"TASK_ID_UNSOLID ent""0""0);
            }
        }
        case 
OBJECT_FALLBLOCK:
        {
            static 
Float:lastTouch[33];
            
            if( 
get_gametime() - lastTouch[plr] < 1.0 )
            {
                return 
FMRES_IGNORED;
            }
            
            
lastTouch[plr] = get_gametime();
            
            if( !
task_exists(TASK_ID_FALLBLOCK plr0) )
            {
                
set_pev(plrpev_takedamage0.0);
                
set_task(0.0"tskFallBlock"TASK_ID_FALLBLOCK plr""0""0);
            }
        }
        case 
OBJECT_TELEPORTBLOCK:
        {
            
        }
        case 
OBJECT_FATALISBLOCK:
        {
            static 
Float:lastTouched[33];
            
            if( 
get_gametime() - lastTouched[plr] > 1.0 )
            {
                new 
Float:health;
                
pev(plrpev_healthhealth);
                
                if( 
health 10.0 )
                {
                    if( 
pev(plrpev_takedamage) )
                    {
                        
set_pev(plrpev_healthhealth 10.0);
                    }
                }
                else
                {
                    
user_kill(plr0);
                }
                
                
lastTouched[plr] = get_gametime();
            }
        }
        case 
OBJECT_TINKBLOCK:
        {
            static 
Float:lastTouched[33];
            
            if( 
get_gametime() - lastTouched[plr] > 1.0 )
            {
                new 
Float:health;
                
pev(plrpev_healthhealth);
                if( 
health <= 98.0 )
                {
                    
set_pev(plrpev_healthhealth 2.0);
                }
                
                
lastTouched[plr] = get_gametime();
            }
        }
        case 
OBJECT_MAGICCARPET:
        {
            if( 
get_user_team(plr""0) == 2)
            {
                new 
Float:vVelocity[3];
                
pev(plrpev_velocityvVelocity);
                
vVelocity[2] = 0.0;
                
set_pev(entpev_velocityvVelocity);
            }
        }
        case 
OBJECT_DUCKBLOCK:
        {
            
set_pev(plrpev_bInDuck1);
        }
        case 
OBJECT_SPEEDBLOCK:
        {
            
velocity_by_aim(plr1200gSetVelocity[plr]);
            
gSetVelocity[plr][2] = 0.0;
        }
        case 
OBJECT_SLOWBLOCK:
        {
            if( 
get_gametime() - gSlowedTime[plr] < 3.0
            
&& gEntSlowed[plr] == ent )
            {
                
set_pev(plrpev_maxspeed75.0);
            }

            if( !
task_exists(TASK_ID_MAXSPEED plr0) )
            {
                new 
szEntId[5];
                
num_to_str(entszEntId4);
                
                
set_task(3.0"tskMaxSpeed"TASK_ID_MAXSPEED plrszEntId4""0);
            }
        }
        }
    }
    else if( 
equal(szEntClass"bcm_t"0) )
    {
        new 
szTarget[5];
        
pev(entpev_targetszTarget4);
        
        new 
dest engfunc(EngFunc_FindEntityByString, -1"targetname"szTarget);
        
        if( 
dest )
        {
            new 
Float:vOrigin[3];
            
pev(destpev_originvOrigin);
            
vOrigin[2] += 64.0;
            
            if( !
task_exists(TASK_ID_RESETVELOCITY plr0) )
            {
                
set_task(0.0"tskResetVelocity"TASK_ID_RESETVELOCITY plr""0""0);
            }
            
            
engfunc(EngFunc_SetOriginplrvOrigin);
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
tskMaxSpeed(const szEntId[], plr)
{
    
plr -= TASK_ID_MAXSPEED;
    
    if( 
is_user_alive(plr) )
    {
        
gSlowedTime[plr] = get_gametime();
        
        
gEntSlowed[plr] = str_to_num(szEntId);
    
        
set_pev(plrpev_maxspeed250.0);
    }
}

public 
tskUnsolid(ent)
{
    
ent -= TASK_ID_UNSOLID;
    
    
set_pev(entpev_solidSOLID_NOT);
    
set_pev(entpev_rendermodekRenderTransAdd);
    
set_pev(entpev_renderamt100.0);
    
    
set_task(1.0"tskSolid"TASK_ID_SOLID ent""0""0);
}

public 
tskSolid(ent)
{
    
ent -= TASK_ID_SOLID;
    
    
set_pev(entpev_solidSOLID_BBOX);
    
set_pev(entpev_rendermodekRenderNormal);
}

public 
tskResetVelocity(plr)
{
    
plr -= TASK_ID_RESETVELOCITY;
    
    
set_pev(plrpev_velocityFloat:{0.00.00.0});
}

public 
tskFallBlock(plr)
{
    
plr -= TASK_ID_FALLBLOCK;
    
    
set_pev(plrpev_takedamage1.0);
}

public 
msgNewRound()
{
    new 
entFloat:vOrigin[3];
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_3")) )
    {
        if( 
fnGetObjectType(ent) == OBJECT_MAGICCARPET )
        {
            
pev(entpev_v_anglevOrigin);
            
            
set_pev(entpev_velocityFloat:{0.00.00.0});
            
engfunc(EngFunc_SetOriginentvOrigin);
        }
    }
}

fnMakeObject(objectmodelFloat:vOrigin[3], const szName[])
{
    if( (
vOrigin[0] == 0.0
    
&& vOrigin[1] == 0.0
    
&& vOrigin[2] == 0.0)
    || !
fnIsOriginVacant(modelvOrigin) )
    {
        return 
0;
    }
    
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
    
    if( !
pev_valid(ent) )
    {
        return 
0;
    }
    
    
set_pev(entpev_classname"bcm_3");
    
set_pev(entpev_solidSOLID_BBOX);
    
set_pev(entpev_movetypeMOVETYPE_NONE);
    
set_pev(entpev_targetnameszName);
    
    switch( 
model )
    {
    case 
MODEL_NORMAL:
    {
        
engfunc(EngFunc_SetModelentgNORMALMODELS[object]);
    }
    case 
MODEL_WALLZ..MODEL_WALLY:
    {
        
engfunc(EngFunc_SetModelentgWALLMODELS[object]);
    }
    case 
MODEL_TINY:
    {
        
engfunc(EngFunc_SetModelentgTINYMODELS[object]);
    }
    }
    
    
engfunc(EngFunc_SetSizeentgMINS[model], gMAXS[model]);
    
    if( 
model == MODEL_WALLY )
    {
        
set_pev(entpev_anglesFloat:{0.090.00.0});
    }
    else if( 
model == MODEL_WALLZ )
    {
        
set_pev(entpev_anglesFloat:{0.00.090.0});
    }
    
    
fnSetOriginSnap(entvOrigin);
    
    if( 
object == OBJECT_MAGICCARPET )
    {
        
set_pev(entpev_movetypeMOVETYPE_FLY);
        
set_pev(entpev_v_anglevOrigin);
    }
    
    return 
1;
}

fnMakeTeleport(Float:vOrigin[3], const szTarget[], bool:mode)
{
    if( (
vOrigin[0] == 0.0 && vOrigin[1] == 0.0 && vOrigin[2] == 0.0)
    || !
fnIsOriginVacant(MODEL_TELESTARTvOrigin)
    || (!
mode && !engfunc(EngFunc_FindEntityByString, -1"target"szTarget)) )
    {
        return 
0;
    }
    
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
    
    if( !
pev_valid(ent) )
    {
        return 
0;
    }
    
    
set_pev(entpev_classnamemode "bcm_t" "bcm_d");
    
set_pev(entpev_solidSOLID_BBOX);
    
set_pev(entpev_movetypeMOVETYPE_NONE);
    
set_pev(entmode pev_target pev_targetnameszTarget);
    
set_pev(entpev_framerate5.0);
    
set_pev(entpev_rendermodekRenderTransAdd);
    
set_pev(entpev_renderamt255.0);
    
    if( !
mode )
    {
        
set_pev(entpev_anglesFloat:{0.00.090.0});
    }
    
    
engfunc(EngFunc_SetModelentmode gTELEPORTMODELS[0] : gTELEPORTMODELS[1]);
    
    
engfunc(EngFunc_SetSizeentgMINS[MODEL_TELESTART], gMAXS[MODEL_TELESTART]);
    
    
fnSetOriginSnap(entvOrigin);
    
    return 
1;
}

fnGetAimOrigin(plrFloat:vOrigin[3])
{
    new 
Float:vStart[3], Float:vViewOfs[3], Float:vDest[3];
    
    
pev(plrpev_originvStart);
    
pev(plrpev_view_ofsvViewOfs);
    
    
vStart[0] += vViewOfs[0];
    
vStart[1] += vViewOfs[1];
    
vStart[2] += vViewOfs[2];
    
    
pev(plrpev_v_anglevDest);
    
engfunc(EngFunc_MakeVectorsvDest);
    
global_get(glb_v_forwardvDest);
    
    
vDest[0] *= 9999.0;
    
vDest[1] *= 9999.0;
    
vDest[2] *= 9999.0;
    
    
vDest[0] += vStart[0];
    
vDest[1] += vStart[1];
    
vDest[2] += vStart[2];

    
engfunc(EngFunc_TraceLinevStartvDest0plr0);
    
get_tr2(0TR_vecEndPosvOrigin);

    return 
1;
}

fnGetAimEnt(plr)
{
    new 
Float:vStart[3], Float:vViewOfs[3], Float:vDest[3];
    
    
pev(plrpev_originvStart);
    
pev(plrpev_view_ofsvViewOfs);
    
    
vStart[0] += vViewOfs[0];
    
vStart[1] += vViewOfs[1];
    
vStart[2] += vViewOfs[2];
    
    
pev(plrpev_v_anglevDest);
    
engfunc(EngFunc_MakeVectorsvDest);
    
global_get(glb_v_forwardvDest);
    
    
vDest[0] *= 9999.0;
    
vDest[1] *= 9999.0;
    
vDest[2] *= 9999.0;
    
    
vDest[0] += vStart[0];
    
vDest[1] += vStart[1];
    
vDest[2] += vStart[2];

    
engfunc(EngFunc_TraceLinevStartvDest0plr0);
    
    new 
ent get_tr2(0TR_pHit);
    
    if( !
pev_valid(ent) )
    {
        new 
Float:vOrigin[3];
        
fnGetAimOrigin(plrvOrigin);
        
        new 
szClass[6];
        while( (
ent engfunc(EngFunc_FindEntityInSphereentvOrigin1.0)) )
        {
            
pev(entpev_classnameszClass5);
            if( 
equal(szClass"bcm_3"0) )
            {
                return 
ent;
            }
        }
        
        return 
0;
    }
    
    return 
ent;
}

fnSetOriginSnap(entFloat:vOrigin[3])
{
    
vOrigin[0] = float(floatround(vOrigin[0] / 8.0)) * 8.0;
    
vOrigin[1] = float(floatround(vOrigin[1] / 8.0)) * 8.0;
    
vOrigin[2] = float(floatround(vOrigin[2] / 8.0)) * 8.0;
    
    new 
model fnGetObjectModelType(ent);
    if( !
model )
    {
        return 
0;
    }
    
    if( !
fnIsOriginNearSpawn(vOrigin)
    && 
fnIsOriginVacant(modelvOrigin) )
    {        
        
engfunc(EngFunc_SetOriginentvOrigin);
        
        if( 
model == MODEL_WALLX
        
|| model == MODEL_WALLY )
        {
            
vOrigin[2] += 15.0;////
        
}
        
        if( 
engfunc(EngFunc_PointContentsvOrigin) == -)
        {
            new 
type fnGetObjectType(ent);
            
            if( 
type && type != 99 )
            {
                
fnSetRendering(entkRenderFxGlowShellgGLOWS[type][0],
                    
gGLOWS[type][1], gGLOWS[type][2], kRenderNormal64);
            }
        }
        else
        {
            
set_pev(entpev_renderfxkRenderFxNone);
        }
    }
    
    return 
1;
}

bool:fnIsOriginNearSpawn(Float:vOrigin[3])
{
    new 
ent;
    new 
szClass[23];
    
    while( (
ent engfunc(EngFunc_FindEntityInSphereentvOrigin128.0)) )
    {
        
pev(entpev_classnameszClass22);
        
        if( 
equal(szClass"info_player_start"0)
        || 
equal(szClass,"info_player_deathmatch"0) )
        {
            return 
true;
        }
    }
    
    return 
false;
}

fnGetObjectType(ent)
{
    new 
szClass[6];
    
pev(entpev_classnameszClass5);
    
    if( 
equal(szClass"bcm_t"0)
    || 
equal(szClass"bcm_d"0) )
    {
        return 
99;
    }
    else if( !
equal(szClass"bcm_3"0) )
    {
        return 
0;
    }
    
    
/*new Float:vColor[3];
    pev(ent, pev_rendercolor, vColor);
    
    for( new i = 0; i < sizeof(gGLOWS); i++ )
    {
        if( vColor[0] == gGLOWS[i][0]
        && vColor[1] == gGLOWS[i][1]
        && vColor[2] == gGLOWS[i][2] )
        {
            return i;
        }
    }*/
    
    
new szModel[65];
    
pev(entpev_modelszModel64);
    
    for( new 
1sizeof(gTYPES); i++ )
    {
        if( 
contain(szModelgTYPES[i]) > -)
        {
            return 
i;
        }
    }
    
    return 
0;
}

fnGetObjectModelType(ent)
{
    new 
szModel[65];
    
pev(entpev_modelszModel64);
    
    for( new 
1sizeof(gMODELTYPES); i++ )
    {
        if( 
contain(szModelgMODELTYPES[i]) > -)
        {
            switch( 
)
            {
            case 
MODEL_WALLZ .. MODEL_WALLY:
            {
                new 
Float:vAngles[3];
                
pev(entpev_anglesvAngles);
                
                if( 
vAngles[1] == 90.0 )
                {
                    return 
MODEL_WALLY;
                }
                else if( 
vAngles[2] == 90.0 )
                {
                    return 
MODEL_WALLZ;
                }
                else
                {
                    return 
MODEL_WALLX;
                }
            }
            default:
            {
                return 
i;
            }
            }
        }
    }
    
    return 
0;
}

fnSave()
{
    new 
szPath[129];
    
format(szPath128"%s/%s.txt"gDirgCurConfig);
    
    
delete_file(szPath);
    
    new 
fopen(szPath"at");
    
    new 
enttypeszData[129], Float:vOrigin[3], szName[32], countmodelType;
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_3")) )
    {
        
count++;
        
        
type fnGetObjectType(ent);
        
pev(entpev_originvOrigin);
        
pev(entpev_targetnameszName31);
        
        
modelType fnGetObjectModelType(ent);
        
        
format(szData128"%i %f %f %f %s %i^n"typevOrigin[0], vOrigin[1], vOrigin[2], 
            
szNamemodelType);
        
fputs(fszData);
    }
    
    new 
Float:vOrigin2[3], destszTarget[5];
    
ent 0;
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_t")) )
    {
        
count++;
        
        
pev(entpev_originvOrigin);
        
pev(entpev_targetszTarget4);
        
        
dest engfunc(EngFunc_FindEntityByString, -1"targetname"szTarget);
        if( !
dest )
        {
            continue;
        }
        
        
pev(destpev_originvOrigin2);
        
        
format(szData128"99 %f %f %f %f %f %f^n"vOrigin[0], vOrigin[1], vOrigin[2], 
            
vOrigin2[0], vOrigin2[1], vOrigin2[2]);
            
        
fputs(fszData);
    }
    
    
fclose(f);
    
    return 
count;
}

fnLoad(const szConfigName[])
{
    new 
ent;
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_3")) )
    {
        
engfunc(EngFunc_RemoveEntityent);
    }
    
ent 0;
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_t")) )
    {
        
engfunc(EngFunc_RemoveEntityent);
    }
    
ent 0;
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_d")) )
    {
        
engfunc(EngFunc_RemoveEntityent);
    }
    
    new 
szData[129], szType[3], szX[13], szY[13], szZ[13], szName[32], szModelType[3];
    new 
szX2[13], szY2[13], szZ2[13], szTarget[5];
    new 
Float:vOrigin[3], Float:vOrigin2[3];
    new 
typemodelTypecount;
    
    new 
szPath[129];
    
format(szPath128"%s/%s.txt"gDirszConfigName);
    
    if( !
file_exists(szPath) )
    {
        return 
0;
    }
    
    
copy(gCurConfig32szConfigName);
    
    new 
fopen(szPath"rt");
    while( !
feof(f) )
    {
        
fgets(fszData,128);
        
        if( !
strlen(szData) )
        {
            continue;
        }
        
        
parse(szDataszType2);
        
        
type str_to_num(szType);
        if( 
type != 99 )
        {
            
parse(szData""0szX12szY12szZ12szName31szModelType2);
            
vOrigin[0] = str_to_float(szX);
            
vOrigin[1] = str_to_float(szY);
            
vOrigin[2] = str_to_float(szZ);
            
            
modelType str_to_num(szModelType);
            
count++;
            
            
fnMakeObject(type, !modelType MODEL_NORMAL modelTypevOriginszName);////
        
}
        else
        {
            
parse(szData""0szX12szY12szZ12szX212szY212szZ212);
            
            
vOrigin[0] = str_to_float(szX);
            
vOrigin[1] = str_to_float(szY);
            
vOrigin[2] = str_to_float(szZ);
            
            
vOrigin2[0] = str_to_float(szX2);
            
vOrigin2[1] = str_to_float(szY2);
            
vOrigin2[2] = str_to_float(szZ2);
            
            
format(szTarget4"%c%c%c%c",
                
random_num('a''z'),
                
random_num('a''z'),
                
random_num('a''z'),
                
random_num('a''z'));
                
            
count++;
                
            
fnMakeTeleport(vOriginszTargettrue);
            
fnMakeTeleport(vOrigin2szTargetfalse);
        }
        
    }
    
    
fclose(f);
    
    return 
count;
}

fnGreenChat(plr, const message[], {Float,Sql,Result,_}:...)
{
    static 
msg[192];
    
msg[0] = 0x04;
    
    
vformat(msg[1], 190message3);
    
    if( 
plr && plr <= 32 )
    {
        
message_begin(MSG_ONEgMsgSayText, {000}, plr);
        
write_byte(plr);
        
write_string(msg);
        
message_end();
    }
    else if( 
plr == )
    {
        for( new 
1<= gMaxPlayersi++ )
        {
            if( !
is_user_connected(i) )
            {
                continue;
            }
            
            
message_begin(MSG_ONEgMsgSayText, {000}, i);
            
write_byte(i);
            
write_string(msg);
            
message_end();
        }
    }
    
    return 
1;
}

public 
tskShowObjectInfo()
{
    for( new 
1<= gMaxPlayersi++ )
    {
        if( !
is_user_connected(i) )
        {
            continue;
        }
        
        new 
ent fnGetAimEnt(i);
        
        new 
type fnGetObjectType(ent);
        if( 
type && type != 99 )
        {
            new 
szName[32];
            
pev(entpev_targetnameszName31);
            
            if( 
szName[0] == '^0' )
            {
                
copy(szName31"Unknown");
            }
            
            
set_hudmessage(2552550, -1.00.7500.02.00.00.04);
            
show_hudmessage(i"Object Type: %s^nCreator: %s"gOBJECTNAMES[type], szName);
        }
    }
}

fnGetObjectCount()
{
    new 
enti;
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_3")) )
    {
        
i++;
    }
    
    
ent 0;
    
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_t")) )
    {
        
i++;
    }
    
    
ent 0;
    
    while( (
ent engfunc(EngFunc_FindEntityByStringent"classname""bcm_t")) )
    {
        
i++;
    }
    
    return 
i;
}

public 
fnConvertFrom2()
{
    new 
szDir[] = "addons/amxmodx/configs/bcm";
    new 
dir open_dir(szDir""0);
    
    new 
szFile[65];
    new 
szPath[129];
    while( 
next_file(dirszFile64) )
    {
        if( 
szFile[0] == '.' )
        {
            continue;
        }
        
        
format(szPath128"%s/%s"szDirszFile);
        
        new 
fopen(szPath"rt");
        new 
szData[129];
        while( !
feof(f) )
        {
            
fgets(fszData128);
            
replace(szData128"S""2");
            
replace(szData128"B""1");
            
replace(szData128"E""2");
            
            
replace(szFile64".cfg""");
            
format(szPath128"addons/amxmodx/data/kzm/bcm/%s.txt"szFile);
            
            new 
f2 fopen(szPath"at");
            
fputs(f2szData);
            
fclose(f2);
        }
        
fclose(f);
    }
    
close_dir(dir);
}

public 
fwdPlayerPreThink(plr)
{
    
// emp
    
if( (gSetVelocity[plr][0] != 0.0
    
|| gSetVelocity[plr][1] != 0.0
    
|| gSetVelocity[plr][2] != 0.0)
    && 
is_user_alive(plr) )
    {
        
set_pev(plrpev_velocitygSetVelocity[plr]);
        
gSetVelocity[plr][0] = 0.0;
        
gSetVelocity[plr][1] = 0.0;
        
gSetVelocity[plr][2] = 0.0;
    }
    
    return 
FMRES_IGNORED;
}

public 
tskShowXYZ(plr)
{
    
plr -= TASK_ID_SHOWXYZ;
    
    if( !
is_user_connected(plr) )
    {
        
remove_task(TASK_ID_SHOWXYZ plr0);
        
        return 
PLUGIN_CONTINUE;
    }
    
    static 
Float:vAim[3];
    
velocity_by_aim(plr64vAim);
    
    static 
Float:vOrigin[3];
    
pev(plrpev_originvOrigin);
    
    
vOrigin[0] += vAim[0];
    
vOrigin[1] += vAim[1];
    
vOrigin[2] += vAim[2];
    
    
vOrigin[2] += 16.0;
    
    static 
origin[3], origin2[3];
    
FVecIVec(vOriginorigin);
    
    
origin2 origin;
    
    
origin[0] += 16;
    
fnMakeSprite(plroriginorigin2, {25500});
    
    
origin[0] -= 16;
    
origin[1] += 16;
    
fnMakeSprite(plroriginorigin2, {00255});
    
    
origin[1] -= 16;
    
origin[2] += 16;
    
fnMakeSprite(plroriginorigin2, {02550});
    
    return 
PLUGIN_CONTINUE;
}

fnMakeSprite(plrorigin[], origin2[], color[], stay=1all=0)////
{
    
message_begin(all MSG_BROADCAST MSG_ONE_UNRELIABLESVC_TEMPENTITY, {000}, all plr);
    
write_byte(0);
    
write_coord(origin[0]);
    
write_coord(origin[1]);
    
write_coord(origin[2]);
    
write_coord(origin2[0]);
    
write_coord(origin2[1]);
    
write_coord(origin2[2]);
    
write_short(gBeamSprite);
    
write_byte(1);
    
write_byte(1);
    
write_byte(stay);
    
write_byte(4);
    
write_byte(0);
    
write_byte(color[0]);
    
write_byte(color[1]);
    
write_byte(color[2]);
    
write_byte(190);
    
write_byte(0);
    
message_end();
    
    return 
1;
}

fnIsOriginVacant(modelFloat:vOrigin[3])
{
    
// woot bad code
    
static Float:vMins[3], Float:vMaxs[3];
    
vMins[0] = gMINS[model][0];
    
vMins[1] = gMINS[model][1];
    
vMins[2] = gMINS[model][2];
    
    
vMaxs[0] = gMAXS[model][0];
    
vMaxs[1] = gMAXS[model][1];
    
vMaxs[2] = gMAXS[model][2];
    
    
vMins[0] += 1.0;
    
vMins[1] += 1.0;
    
vMins[2] += 1.0;
    
    
vMaxs[0] += -1.0;
    
vMaxs[1] += -1.0;
    
vMaxs[2] += -1.0;
    
    static 
Float:vOrigins[8][3];
    
vOrigins[0] = vOrigin;
    
vOrigins[1] = vOrigin;
    
vOrigins[2] = vOrigin;
    
vOrigins[3] = vOrigin;
    
vOrigins[4] = vOrigin;
    
vOrigins[5] = vOrigin;
    
vOrigins[6] = vOrigin;
    
vOrigins[7] = vOrigin;
    
    
vOrigins[0][0] += vMaxs[0];
    
vOrigins[0][1] += vMins[1];
    
vOrigins[0][2] += vMaxs[2];
    
    
vOrigins[1][0] += vMaxs[0];
    
vOrigins[1][1] += vMins[1];
    
vOrigins[1][2] += vMins[2];
    
    
vOrigins[2][0] += vMins[0];
    
vOrigins[2][1] += vMaxs[1];
    
vOrigins[2][2] += vMaxs[2];
    
    
vOrigins[3][0] += vMins[0];
    
vOrigins[3][1] += vMaxs[1];
    
vOrigins[3][2] += vMins[2];
    
    
vOrigins[4][0] += vMins[0];
    
vOrigins[4][1] += vMins[1];
    
vOrigins[4][2] += vMins[2];
    
    
vOrigins[5][0] += vMins[0];
    
vOrigins[5][1] += vMins[1];
    
vOrigins[5][2] += vMaxs[2];
    
    
vOrigins[6][0] += vMaxs[0];
    
vOrigins[6][1] += vMaxs[1];
    
vOrigins[6][2] += vMaxs[2];
    
    
vOrigins[7][0] += vMaxs[0];
    
vOrigins[7][1] += vMaxs[1];
    
vOrigins[7][2] += vMins[2];
    
    
/*new origins[8][3];
    
    for( new i = 0; i < 8; i++ )
    {
        FVecIVec(vOrigins[i], origins[i]);
    }
    
    fnMakeSprite(0, origins[0], origins[1], {255, 255, 255}, 50, 1);
    fnMakeSprite(0, origins[2], origins[3], {255, 255, 255}, 50, 1);
    fnMakeSprite(0, origins[4], origins[5], {255, 255, 255}, 50, 1);
    fnMakeSprite(0, origins[6], origins[7], {255, 255, 255}, 50, 1);*/
    
    
new j;
    for( new 
0<= 7i++ )
    {
        if( 
engfunc(EngFunc_PointContentsvOrigins[i]) != -)
        {
            
j++;
        }
    }
    
    return 
true false;
}

fnSetRendering(entfxrgbrendamt)
{
    new 
Float:vColor[3];
    
vColor[0] = float(r);
    
vColor[1] = float(g);
    
vColor[2] = float(b);
    
    
set_pev(entpev_renderfxfx);
    
set_pev(entpev_rendercolorvColor);
    
set_pev(entpev_rendermoderend);
    
set_pev(entpev_renderamtfloat(amt));
    
    return 
1;
}

bool:fnIsStringAlphaNumeric(const szString[])
{
    for( new 
0strlen(szString); i++ )
    {
        if( (
szString[i] >= 'a' && szString[i] <= 'z')
        || (
szString[i] >= 'A' && szString[i] <= 'Z')
        || (
szString[i] >= '0' && szString[i] <= '9') )
        {
            continue;
        }
        else
        {
            return 
false;
        }
    }
    
    return 
true;

>>>>>>>> COmPile error[IMG]http://img301.**************/img301/3693/compileerrorla6.th.jpg[/IMG]

Last edited by minokura; 01-30-2009 at 21:30.
minokura is offline
xPaw
Retired AMX Mod X Moderator
Join Date: Jul 2008
Old 01-30-2009 , 10:33   Re: BCM4 WIndowBLock...HELP
Reply With Quote #2

use [php]/[pawn]/[code] tags.
__________________
xPaw is offline
Firippu
Senior Member
Join Date: Jan 2007
Old 01-30-2009 , 19:02   Re: BCM4 WIndowBLock...HELP
Reply With Quote #3

change
Code:
{139, 69, 19} // SLOWBLOCK
to
Code:
{139, 69, 19}, // SLOWBLOCK
and
Code:
"Slow Block - Slows you after 3 seconds"
to
Code:
"Slow Block - Slows you after 3 seconds",
then it compiles fine
__________________
Firippu is offline
minokura
New Member
Join Date: Jan 2009
Old 01-30-2009 , 21:40   Re: BCM4 WIndowBLock...HELP
Reply With Quote #4

And now? what it wrong?

I edited The Post... =/
minokura is offline
Firippu
Senior Member
Join Date: Jan 2007
Old 01-30-2009 , 23:19   Re: BCM4 WIndowBLock...HELP
Reply With Quote #5

Same problem as before, but just in a different location.

I will say no more.
__________________
Firippu is offline
minokura
New Member
Join Date: Jan 2009
Old 01-31-2009 , 16:50   Re: BCM4 WIndowBLock...HELP
Reply With Quote #6

Quote:
Same problem as before, but just in a different location.

I will say no more.
Don't Have 1 Error in my scripting
__________________
By : LdR ;)


/\ /\ /\
l l l
l l l
l l l
l l l

THx ;*
minokura is offline
Old 02-03-2009, 16:23
minokura
This message has been deleted by Exolent[jNr]. Reason: Don't bump until 2 weeks have passed since last post.
padilha007
Senior Member
Join Date: Jul 2008
Old 02-03-2009 , 16:38   Re: BCM4 WIndowBLock...HELP
Reply With Quote #7

menu_additem(gBuildMenu, "Window Block" "14", accessBuild, -1);

to:

menu_additem(gBuildMenu, "Window Block", "14", accessBuild, -1);
__________________

padilha007 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 18:08.


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