AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   BCM4 WIndowBLock...HELP (https://forums.alliedmods.net/showthread.php?t=84662)

minokura 01-29-2009 20:25

BCM4 WIndowBLock...HELP
 
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]

xPaw 01-30-2009 10:33

Re: BCM4 WIndowBLock...HELP
 
use [php]/[pawn]/[code] tags.

Firippu 01-30-2009 19:02

Re: BCM4 WIndowBLock...HELP
 
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

minokura 01-30-2009 21:40

Re: BCM4 WIndowBLock...HELP
 
And now? what it wrong?

I edited The Post... =/

Firippu 01-30-2009 23:19

Re: BCM4 WIndowBLock...HELP
 
Same problem as before, but just in a different location.

I will say no more.

minokura 01-31-2009 16:50

Re: BCM4 WIndowBLock...HELP
 
Quote:

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

I will say no more.
Don't Have 1 Error in my scripting

padilha007 02-03-2009 16:38

Re: BCM4 WIndowBLock...HELP
 
menu_additem(gBuildMenu, "Window Block" "14", accessBuild, -1);

to:

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


All times are GMT -4. The time now is 01:52.

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