how to grab a model
.: Description :.
can someone try to explain how to add a grab command so i can grab and move around the model.. ?
PHP Code:
#include <amxmodx> #include <fun> #include <fakemeta> #define PLUGIN "MarioMod" #define AUTHOR "zpoke" #define VERSION "1.0" #define ENT_CLASSNAME "zpoke_item" #define TIMER_THINKTIME 0.025 new const g_mdl[] = "models/teleporter.mdl"; new Float:fOrigin[ 3 ]; new toucher_name[ 32 ]; new g_item new g_forward public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ); register_clcmd( "say /item", "mainmenu" ); g_forward = register_forward( FM_Touch, "hook_Touch" ); register_forward( FM_Think, "hook_Think", 1 ); } public plugin_precache() precache_model( g_mdl ); public mainmenu( id ) { new menu = menu_create( "\rItem menu:", "menu_handler" ); menu_additem( menu, "\wCreate item", "1" ); menu_setprop( menu, MPROP_EXIT, MEXIT_ALL ); menu_display( id, menu, 0 ); } public menu_handler( id, menu, item ) { if( item == MENU_EXIT ) { menu_destroy( menu ); return PLUGIN_HANDLED; } new data[ 6 ], iName[ 64 ]; new access, callback; menu_item_getinfo( menu, item, access, data, 5, iName, 63, callback ); new key = str_to_num( data ); switch( key ) { case 1: { create_item( id ) } } menu_destroy( menu ); return PLUGIN_HANDLED; } create_item( id ) { new Float:mins[3], Float:maxs[3]; mins = Float:{ -15.0, -15.0, -36.0 }; maxs = Float:{ 15.0, 15.0, 36.0 }; pev( id, pev_origin, fOrigin ); g_item = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) ); engfunc( EngFunc_SetModel, g_item, g_mdl ) ; engfunc( EngFunc_SetSize, g_item, mins, maxs ); engfunc( EngFunc_SetOrigin, g_item, fOrigin ); set_pev( g_item, pev_solid, SOLID_TRIGGER ); set_pev( g_item, pev_movetype, MOVETYPE_NONE ); set_pev( g_item, pev_classname, "zpoke_item" ); engfunc( EngFunc_DropToFloor, g_item ); set_pev( g_item, pev_nextthink, get_gametime() + TIMER_THINKTIME) ; fOrigin[ 1 ] -= 100; set_pev( id, pev_origin, fOrigin ) } stock set_rendering2(index, fx, r, g, b, render, amount) { set_pev( index, pev_renderfx, fx ); new Float:RenderColor[3]; RenderColor[0] = float( r ); RenderColor[1] = float( g ); RenderColor[2] = float( b ); set_pev( index, pev_rendercolor, RenderColor ); set_pev( index, pev_rendermode, render ); set_pev( index, pev_renderamt, float( amount ) ); } public hook_Think( ent ) { if( ent == g_item ) { //Making entity rotate new Float:angles[3]; pev( ent, pev_angles, angles ); angles[0] += 5.0 angles[1] += 5.0 angles[2] += 5.0 set_pev( ent, pev_angles, angles ); set_rendering2( ent, kRenderFxGlowShell, random( 255 ), random( 255 ), random( 255 ), kRenderTransAlpha, 50 ); set_pev( ent, pev_nextthink, get_gametime() + TIMER_THINKTIME ); } return FMRES_HANDLED; } public hook_Touch( ent, id ) { if( !is_user_alive( id ) ) return FMRES_IGNORED; //Get classname of the entity touched new classname[32]; pev( ent, pev_classname, classname, 31); //Get name of the toucher get_user_name( id, toucher_name, 31 ); if( equal( classname, ENT_CLASSNAME ) ) { action_touched( ent, id ) unregister_forward( FM_Touch, g_forward ); } return FMRES_HANDLED; }
action_touched( ent, id ) { print_color( 0, "%s touched the model.", toucher_name ); client_cmd( id, "speak ^"fvox/boop^""); remove_item( ent ) //give exp here } remove_item( ent ) { if ( pev_valid( ent ) ) { new classname[ 32 ]; pev( ent, pev_classname, classname, 31 ); if( equal( classname, "zpoke_item" ) ) engfunc(EngFunc_RemoveEntity, ent ); } } print_color( index, const sFormat[], any:...) { new players[32], count = 1 if ( index ) players[0] = index; else get_players( players, count, "ch" ) for ( new i = 0; i < count; i++ ) { new message[256]; new len = formatex( message, 255, "^x01[MarioMod]:^x04 " ) vformat( message[len], 255 - len, sFormat, 3 ) message[192] = '^0' message_begin( index ? MSG_ONE : MSG_ALL, get_user_msgid("SayText"), _, index ) write_byte( players[0] ) write_string( message ) message_end() } return 1 }
|