Senior Member
Join Date: Nov 2013
Location: Vilnius, Lithuania
|
11-15-2018
, 09:52
Problem with "register_touch"
|
#1
|
Hello. I want to do that player who touch christmas tree would see a message, but I did something's wrong happened in my code. Can anyone help me?
PHP Code:
#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < cstrike >
#include < engine >
#include < hamsandwich >
new const MODEL[ ] = "models/xmas/xmas_tree.mdl";
new g_szConfigFile[ 128 ];
public plugin_init( ) {
register_plugin( "Xmas shit", "1.0", "xPaw & Juice" );
register_clcmd( "tree_spawn", "CmdSpawnTree", ADMIN_MAP );
register_clcmd( "tree_remove", "CmdSpawnRemove", ADMIN_MAP );
register_clcmd( "say /tree", "CmdTreeMenu" );
register_event( "CurWeapon", "Weather", "be" );
register_touch("env_tree","*","fwd_touch")
}
public fwd_touch(w_box,other){
client_print(other,print_chat,"Touched")
}
ShowTreeMenu( id )
{
new menu = menu_create("Tree Menu", "TreeMenu");
menu_additem( menu, "Create Tree", "1", ADMIN_MAP );
menu_additem( menu, "Delete Tree", "2", ADMIN_MAP );
menu_additem( menu, "Save Menu", "3", ADMIN_MAP );
menu_display( id, menu );
}
ShowSaveMenu( id )
{
new menu = menu_create( "Save Tree Menu", "SaveMenu" );
menu_additem( menu, "Load Saved Trees", "1", ADMIN_MAP );
menu_additem( menu, "Delete All Trees", "2", ADMIN_MAP );
menu_additem( menu, "Save All Trees^n", "3", ADMIN_MAP );
menu_additem( menu, "Back", "4", ADMIN_MAP );
menu_display( id, menu );
}
public TreeMenu( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return;
}
new _access, info[2], callback;
menu_item_getinfo(menu, item, _access, info, sizeof(info) - 1, _, _, callback);
menu_destroy(menu);
switch( str_to_num(info) )
{
case 1:
{
client_cmd( id, "tree_spawn" );
ShowTreeMenu(id);
}
case 2:
{
client_cmd( id, "tree_remove" );
ShowTreeMenu( id );
}
case 3:
{
ShowSaveMenu( id );
}
}
}
public SaveMenu( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return;
}
new _access, info[2], callback;
menu_item_getinfo(menu, item, _access, info, sizeof(info) - 1, _, _, callback);
menu_destroy(menu);
switch( str_to_num(info) )
{
case 1:
{
DeleteAllTrees( );
LoadTrees( );
ShowSaveMenu( id );
}
case 2:
{
DeleteAllTrees( );
ShowSaveMenu( id );
}
case 3:
{
SaveTrees( );
ShowSaveMenu( id );
}
case 4:
{
ShowTreeMenu( id );
}
}
}
public DeleteAllTrees( ) {
new iEntity = -1;
while( (iEntity = engfunc(EngFunc_FindEntityByString, iEntity, "classname", "env_tree")) )
{
engfunc(EngFunc_RemoveEntity, iEntity);
}
}
public LoadTrees( ) {
new iFile = fopen( g_szConfigFile, "rt" );
if( !iFile )
return;
new Float:vOrigin[ 3 ], x[ 16 ], y[ 16 ], z[ 16 ], szData[ sizeof( x ) + sizeof( y ) + sizeof( z ) + 3 ];
while( !feof( iFile ) ) {
fgets( iFile, szData, charsmax( szData ) );
trim( szData );
if( !szData[ 0 ] )
continue;
parse( szData, x, 15, y, 15, z, 15 );
vOrigin[ 0 ] = str_to_float( x );
vOrigin[ 1 ] = str_to_float( y );
vOrigin[ 2 ] = str_to_float( z );
CreateTree( vOrigin );
}
fclose( iFile );
}
public Weather( id ) {
if( is_user_alive( id ) )
client_cmd( id, "cl_weather 3" );
}
public plugin_precache( ) {
precache_model( MODEL );
create_entity( "env_snow" );
}
public plugin_cfg( ) {
new szMapName[ 32 ];
get_mapname( szMapName, 31 );
strtolower( szMapName );
formatex( g_szConfigFile, 127, "addons/amxmodx/data/trees" );
if( !dir_exists( g_szConfigFile ) ) {
mkdir( g_szConfigFile );
format( g_szConfigFile, 127, "%s/%s.txt", g_szConfigFile, szMapName );
return;
}
format( g_szConfigFile, 127, "%s/%s.txt", g_szConfigFile, szMapName );
if( !file_exists( g_szConfigFile ) )
return;
LoadTrees( );
}
public CmdSpawnTree( const id, const iLevel, const iCid ) {
if( !cmd_access( id, iLevel, iCid, 1 ) )
return PLUGIN_HANDLED;
new Float:vOrigin[ 3 ];
entity_get_vector( id, EV_VEC_origin, vOrigin );
CreateTree( vOrigin )
return PLUGIN_HANDLED;
}
public CmdSpawnRemove( const id, const iLevel, const iCid ) {
if( !cmd_access( id, iLevel, iCid, 1 ) )
return PLUGIN_HANDLED;
new Float:vOrigin[ 3 ], szClassName[ 10 ], iEntity = -1, iDeleted;
entity_get_vector( id, EV_VEC_origin, vOrigin );
while( ( iEntity = find_ent_in_sphere( iEntity, vOrigin, 100.0 ) ) > 0 ) {
entity_get_string( iEntity, EV_SZ_classname, szClassName, 9 );
if( equal( szClassName, "env_tree" ) ) {
remove_entity( iEntity );
iDeleted++;
}
}
if( iDeleted > 0 )
SaveTrees( );
console_print( id, "[AMXX] Deleted %i trees.%s", iDeleted, iDeleted == 0 ? " You need to stand in tree to remove it" : "" );
return PLUGIN_HANDLED;
}
public CmdTreeMenu(id)
{
if( !access(id, ADMIN_MAP) ) return PLUGIN_HANDLED;
ShowTreeMenu(id);
return PLUGIN_HANDLED;
}
CreateTree( const Float:vOrigin[ 3 ] ) {
new iEntity = create_entity( "info_target" );
if( !iEntity )
return 0;
entity_set_string( iEntity, EV_SZ_classname, "env_tree" );
entity_set_int( iEntity, EV_INT_solid, SOLID_NOT );
entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_NONE );
entity_set_size( iEntity, Float:{ -1.0, -1.0, -1.0 }, Float:{ 1.0, 1.0, 36.0 } );
entity_set_origin( iEntity, vOrigin );
entity_set_model( iEntity, MODEL );
drop_to_floor( iEntity );
return iEntity;
}
SaveTrees( ) {
if( file_exists( g_szConfigFile ) )
delete_file( g_szConfigFile );
new iFile = fopen( g_szConfigFile, "wt" );
if( !iFile )
return;
new Float:vOrigin[ 3 ], iEntity;
while( ( iEntity = find_ent_by_class( iEntity, "env_tree" ) ) > 0 ) {
entity_get_vector( iEntity, EV_VEC_origin, vOrigin );
fprintf( iFile, "%f %f %f^n", vOrigin[ 0 ], vOrigin[ 1 ], vOrigin[ 2 ] );
}
fclose( iFile );
}
Last edited by LithuanianJack; 11-15-2018 at 09:53.
|
|