RSSy MYGO.pl Opublikowano Luty 9, 2024 o 19:41 RSSy Udostępnij Opublikowano Luty 9, 2024 o 19:41 So i need to add 3 more options to this code Players Water Knife Pistol Hud weather replace the existing option visible and invisible with [ON] (with green text AND [OFF] with red text for knife and pistol make them invisible just like players and water When you make players invisible make only your team invisible not the opponent team Hud is to turn on and off hud_draw 1 and hud_draw 0 weather is to turn off snow and rain on the server map (if possible , i only see this on a russian server) Code: #include <amxmodx> #include <engine> #include <fakemeta> #include <hamsandwich> #define MAX_ENTITYS 900+15*32 // (900+15*SERVER_SLOTS) is the calculation cs uses but it can be bypassed by the "-num_edicts <x>"-parameter new bool:g_bPlayerInvisible[33]; new bool:g_bWaterInvisible[33]; new bool:g_bWaterEntity[MAX_ENTITYS]; new bool:g_bWaterFound; new g_iSpectatedId[33]; public plugin_init( ) { register_plugin( "Invis", "2.0", "SchlumPF" ); register_clcmd( "say /invis", "menuInvisDisplay" ); register_menucmd( register_menuid( "\rInvisibility - SchlumPF^n^n" ), 1023, "menuInvisAction" ); register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 ); RegisterHam( Ham_Spawn, "player", "hamSpawnPlayer_Post", 1 ); register_event( "SpecHealth2", "eventSpecHealth2", "bd" ); } public plugin_cfg( ) { new ent = -1; while( ( ent = find_ent_by_class( ent, "func_water" ) ) != 0 ) { // pev( ent, pev_skin ) == CONTENTS_WATER is also true on func_water entities if( !g_bWaterFound ) { g_bWaterFound = true; } g_bWaterEntity[ent] = true; } // thanks to connor for finding the following two detections ent = -1; while( ( ent = find_ent_by_class( ent, "func_illusionary" ) ) != 0 ) { if( pev( ent, pev_skin ) == CONTENTS_WATER ) { if( !g_bWaterFound ) { g_bWaterFound = true; } g_bWaterEntity[ent] = true; } } ent = -1; while( ( ent = find_ent_by_class( ent, "func_conveyor" ) ) != 0 ) { if( pev( ent, pev_spawnflags ) == 3 ) { if( !g_bWaterFound ) { g_bWaterFound = true; } g_bWaterEntity[ent] = true; } } } public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset ) { if( player && g_bPlayerInvisible[host] && host != ent && ent != g_iSpectatedId[host] ) { static const Float:corner[8][3] = { { -4096.0, -4096.0, -4096.0 }, { -4096.0, -4096.0, 4096.0 }, { -4096.0, 4096.0, -4096.0 }, { -4096.0, 4096.0, 4096.0 }, { 4096.0, -4096.0, -4096.0 }, { 4096.0, -4096.0, 4096.0 }, { 4096.0, 4096.0, -4096.0 }, { 4096.0, 4096.0, 4096.0 } }; // rounded; distance from the map's center to the corners; sqrt( 4096^2 + 4096^2 + 4096^2 ) static const Float:map_distance = 7094.480108; static Float:origin[3]; get_es( es_handle, ES_Origin, origin ); static i; while( get_distance_f( origin, corner[i] ) > map_distance ) { if( ++i >= sizeof( corner ) ) { // better to nullify the varibale now then doing it each time before the loop i = 0; } } set_es( es_handle, ES_Origin, corner[i] ); set_es( es_handle, ES_Effects, get_es( es_handle, ES_Effects ) | EF_NODRAW ); } else if( g_bWaterInvisible[host] && g_bWaterEntity[ent]) { set_es( es_handle, ES_Effects, get_es( es_handle, ES_Effects ) | EF_NODRAW ); } } public hamSpawnPlayer_Post( id ) { g_iSpectatedId[id] = 0; } // thanks to xPaw who told me about this event public eventSpecHealth2( id ) { g_iSpectatedId[id] = read_data( 2 ); } public menuInvisDisplay( id ) { static menu[256]; new len = formatex( menu, 255, "\rInvisibility - SchlumPF^n^n" ); len += formatex( menu[len], 255 - len, "\r1. \wPlayers: %s^n", g_bPlayerInvisible[id] ? "invisible" : "visible" ); if( g_bWaterFound ) { len += formatex( menu[len], 255 - len, "\r2. \wWater: %s^n", g_bWaterInvisible[id] ? "invisible" : "visible" ); } //else //{ // len += formatex( menu[len], 255 - len, "\r2. \wWater: There is no water on this map!^n" ); //} len += formatex( menu[len], 255 - len, "^n\r0. \wExit" ); show_menu( id, ( 1<<0 | 1<<1 | 1<<9 ), menu, -1 ); return PLUGIN_HANDLED; } public menuInvisAction( id, key ) { switch( key ) { case 0: { g_bPlayerInvisible[id] = !g_bPlayerInvisible[id]; menuInvisDisplay( id ); } case 1: { if( g_bWaterFound ) { g_bWaterInvisible[id] = !g_bWaterInvisible[id]; } menuInvisDisplay( id ); } case 9: show_menu( id, 0, "" ); } } public client_connect( id ) { g_bPlayerInvisible[id] = false; g_bWaterInvisible[id] = false; g_iSpectatedId[id] = 0; } Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi