RSSy MYGO.pl Opublikowano Czerwiec 4, 2021 o 18:51 RSSy Udostępnij Opublikowano Czerwiec 4, 2021 o 18:51 Anyone can fix the /vips command please ? PHP Code: /************************* CREDITS ************************* - OciXCrom ( For VIP Hour stock ) - Yontu ( For map parsing in file code ) ************************* CREDITS *************************/ #include < amxmodx > #include < amxmisc > #include < cstrike > #include < engine > #include < fakemeta > #include < fun > #include < hamsandwich > #pragma semicolon 1 #define PLUGIN "VIP Clasic" #define VERSION "1.7" #define AUTHOR "Shadows Adi" //Aici modifici 'ADMIN_LEVEL_H' in functie de flagul pe care il vrei. Default: 't' #define is_user_vip(%1) (get_user_flags(%1) & ADMIN_LEVEL_H) //Aici vei pune "//" in fata lui #define daca nu vrei sa ii apara tag in chat cand scrie. //#define VIP_CHAT enum _:CvarsSettings { VipHP, VipHsHP, VipAP, VipHsAP, VipMaxHP, VipMaxAP, VipPrefix, VipSpawnHP, VipSpawnAP, #if defined VIP_CHAT VipChatPrefix, #endif VipJumps, VipPrices, VipMenuRounds, VipFree, VipFreeStart, VIpFreeEnd, VipMaxResets }; enum _:Teams { CT = 0, TERO, BOTH }; enum _:Weapons { WeapName[64], WeaponID[32], BpAmmo, Team[Teams] }; new const VipWeapons[][Weapons] = { { "AK47 \d+ \wDeagle \d+ \wSet Grenade", "weapon_ak47", 90, TERO }, { "Galil \d+ \wDeagle \d+ \wSet Grenade", "weapon_galil", 30, TERO }, { "AWP \d+ \wDeagle \d+ \wSet Grenade", "weapon_awp", 30, BOTH }, { "M4A1 \d+ \wDeagle \d+ \wSet Grenade", "weapon_m4a1", 90, CT }, { "Famas \d+ \wDeagle \d+ \wSet Grenade", "weapon_famas", 30, CT } }; new const VipPistols[][Weapons] = { { "\wDeagle \d+ \wGrenade Set", "weapon_deagle", 35, BOTH }, { "\wUSP \d+ \wGrenade Set","weapon_usp", 100, BOTH }, { "\wGlock-18 \d+ \wGrenade Set", "weapon_glock18", 120, BOTH } }; new pCvars[CvarsSettings]; new g_iRound; new jumpnum[ 33 ] = 0; new g_bMapBanned; new Limit [ 33 ]; new Tag[ 32 ]; /********************** BOOLEANS **********************/ new bool:WeaponSelected[33]; new bool:dojump[ 33 ] = false; /********************** END OF BOOLEANS **********************/ const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90); const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE); public plugin_init( ) { register_plugin( PLUGIN, VERSION, AUTHOR); register_clcmd( "say /vm", "ShowVIPMenu" ); register_clcmd( "say /vmenu", "ShowVIPMenu" ); register_clcmd( "say /vip", "ShowVIPMotd" ); register_clcmd( "say /vips", "ShowVIPs" ); register_clcmd( "say /rsd", "check_vip" ); register_clcmd( "say_team /vm", "ShowVIPMenu" ); register_clcmd( "say_team /vmenu", "ShowVIPMenu" ); register_clcmd( "say_team /vips", "ShowVIPs" ); register_clcmd( "say_team /rsd", "check_vip" ); register_cvar( "lgcs_vip_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_UNLOGGED ); pCvars [ VipHP ] = register_cvar( "vip_kill_hp", "10" ); pCvars [ VipAP ] = register_cvar( "vip_kill_ap", "10" ); pCvars [ VipHsHP ] = register_cvar( "vip_killhs_hp", "15" ); pCvars [ VipHsAP ] = register_cvar( "vip_killhs_ap", "15" ); pCvars [ VipMaxHP ] = register_cvar( "vip_max_hp", "110" ); pCvars [ VipMaxAP ] = register_cvar( "vip_max_ap", "110" ); pCvars [ VipPrefix ] = register_cvar( "vip_msg_prefix", "[VIP]" ); pCvars [ VipSpawnHP ] = register_cvar("vip_spawn_hp", "100"); pCvars [ VipSpawnAP ] = register_cvar("vip_spawn_ap", "100"); #if defined VIP_CHAT register_clcmd( "say ", "hook_say" ); register_clcmd( "say_team ", "hook_sayteam" ); pCvars [ VipChatPrefix ] = register_cvar( "vip_chat_prefix", "[VIP]" ); #endif pCvars [ VipJumps ] = register_cvar( "vip_multi_jumps", "1" ); pCvars [ VipPrices ] = register_cvar( "vip_prices_motd", "vip_info.html" ); pCvars [ VipMenuRounds ] = register_cvar( "vip_rounds_showmenu", "3" ); pCvars [ VipFree ] = register_cvar( "vip_free_on", "1" ); pCvars [ VipFreeStart ] = register_cvar( "vip_free_start", "22" ); pCvars [ VIpFreeEnd ] = register_cvar( "vip_free_end", "10" ); pCvars [ VipMaxResets ] = register_cvar( "vip_max_reset_deaths", "3" ); RegisterHam( Ham_Spawn, "player", "ham_PlayerSpawnPost", 1); RegisterHam( Ham_Killed, "player", "ham_PlayerKilled", 1); register_event( "HLTV", "ev_NewRound", "a", "1=0", "2=0" ); register_logevent( "logev_Restart", 2, "1&Restart_Round", "1&Game_Commencing" ); register_message(get_user_msgid("ScoreAttrib"), "OnScoreAttrib"); get_pcvar_string( pCvars[ VipPrefix ], Tag, charsmax( Tag ) ); new path[ 64 ]; get_localinfo( "amxx_configsdir", path, charsmax( path ) ); formatex( path, charsmax( path ), "%s/VIP/vip_maps.ini", path); new file = fopen( path, "r+" ); if( !file_exists( path ) ) { write_file( path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: "); write_file( path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^nawp_bycastor" ); write_file( path, "; NOTA:^n Pentru a ignora anumite harti, adaugati ^";^" in fata hartii" ); } new mapname[ 32 ]; get_mapname( mapname, charsmax( mapname ) ); new text[ 121 ], maptext[ 32 ]; while( !feof( file ) ) { fgets( file, text, charsmax( text ) ); trim( text ); if( text[ 0 ] == ';' || !strlen( text ) ) { continue; } parse( text, maptext, charsmax( maptext ) ); if( equal( maptext, mapname) ) { //********* AICI STERGETI "//" DIN FATA PENTRU DEBUG. *********// //log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext ); g_bMapBanned = 1; break; } } fclose( file ); } public client_putinserver( id ) { if( is_user_vip( id ) ) { new szName[32]; get_user_name( id, szName, charsmax( szName ) ); color_chat(0, "!g%s !yVIP-ul !g%s !ytocmai s-a conectat pe server!", Tag, szName); } jumpnum[ id ] = 0; dojump[ id ] = false; } #if AMXX_VERSION_NUM < 183 public client_disconnect( id ) #else public client_disconnected( id ) #endif { jumpnum[ id ] = 0; dojump[ id ] = false; } public ev_NewRound( ) { g_iRound++; if( IsVipHour( get_pcvar_num( pCvars [ VipFreeStart ] ), get_pcvar_num( pCvars [ VIpFreeEnd ] ) ) ) set_pcvar_string( pCvars [ VipFree ], "1" ); else set_pcvar_string( pCvars [ VipFree ], "0" ); } public logev_Restart( ) { g_iRound = 0; } public check_vip( id ) { if( is_user_vip( id ) ) { vip_rs( id ); } else { color_chat( id, "^3| ^4%s^3| ^1Aceasta comanda este doar pentru membrii ^4V.I.P. ^1!", Tag ); return 1; } return 0; } public vip_rs(id) { if(Limit [ id ] >= get_pcvar_num( pCvars[ VipMaxResets ] ) ) { color_chat(id, "^3| ^4%s ^3| ^1Aceasta comanda poate fi folosita decat de ^4 3 ^1ori pe ^4harta ^1!", Tag ); return 1; } else { cmd_rs(id); Limit[id]++; } return 0; } public cmd_rs(id) { if(get_user_deaths(id) == 0) { color_chat(id, "^3| ^4%s ^3| ^1Death-urile tale sunt deja ^4 0^3!", Tag ); } else { cs_set_user_deaths(id,0); color_chat(id, "^3| ^4%s ^3| ^4Decesele tale ^1au fost ^4resetate^1!", Tag ); } return PLUGIN_HANDLED; } public ShowVIPMenu( id ) { if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED; if(is_user_vip( id ) || get_pcvar_num( pCvars[ VipFree ] ) ) { if(g_bMapBanned) { color_chat(id, "!g%s !yVIP-ul este dezactivat pe aceasta harta!g!", Tag); return PLUGIN_HANDLED; } else { if( g_iRound >= get_pcvar_num( pCvars[ VipMenuRounds ] ) ) { if(!WeaponSelected [ id ] ) { new g_iMenu = menu_create("\wVIP Menu", "handle_vip_menu_weapons" ); new szItem[32], CsTeams:iTeam; iTeam = cs_get_user_team(id); for ( new i; i < sizeof VipWeapons; i++ ) { switch(iTeam) { case CS_TEAM_T: { switch(VipWeapons[i][Team]) { case TERO, BOTH: { num_to_str(i, szItem, charsmax(szItem)); menu_additem( g_iMenu, VipWeapons[ i ][ WeapName ], szItem ); } } } case CS_TEAM_CT: { switch(VipWeapons[i][Team]) { case CT, BOTH: { num_to_str(i, szItem, charsmax(szItem)); menu_additem( g_iMenu, VipWeapons[ i ][ WeapName ], szItem ); } } } } } menu_setprop(g_iMenu, MPROP_EXIT, MEXIT_ALL); menu_display( id, g_iMenu ); } else { color_chat( id, "!g%s!y: Asteapta runda viitoare pentru a-ti alege iar armele!", Tag ); return PLUGIN_HANDLED; } } else { if(!WeaponSelected [ id ] ) { new g_iMenu = menu_create("\wVIP Menu", "handle_vip_menu_pistols" ); new szItem[32], CsTeams:iTeam; iTeam = cs_get_user_team(id); for ( new i; i < sizeof VipPistols; i++ ) { switch(iTeam) { case CS_TEAM_T: { switch(VipPistols[i][Team]) { case TERO, BOTH: { num_to_str(i, szItem, charsmax(szItem)); menu_additem( g_iMenu, VipPistols[ i ][ WeapName ], szItem ); } } } case CS_TEAM_CT: { switch(VipPistols[i][Team]) { case CT, BOTH: { num_to_str(i, szItem, charsmax(szItem)); menu_additem( g_iMenu, VipPistols[ i ][ WeapName ], szItem ); } } } } } menu_setprop(g_iMenu, MPROP_EXIT, MEXIT_ALL); menu_display( id, g_iMenu ); } else { color_chat( id, "!g%s!y: Asteapta runda viitoare pentru a-ti alege iar armele!", Tag ); return PLUGIN_HANDLED; } } } } else { color_chat( id, "!g%s!y: Acest meniu este doar pentru jucatorii !gVIP!y!", Tag ); return PLUGIN_HANDLED; } return PLUGIN_HANDLED; } public handle_vip_menu_weapons( id, menu, item ) { if( item == MENU_EXIT || !is_user_alive( id )) { menu_destroy( menu ); return PLUGIN_HANDLED; } new itemdata[3]; new data[6][32]; new index[32]; menu_item_getinfo(menu, item, itemdata[0], data[0], charsmax(data), data[1], charsmax(data), itemdata[1]); parse(data[0], index, 31); item = str_to_num(index); if( is_user_vip( id ) || get_pcvar_num( pCvars[ VipFree ] ) ) { drop_weapons( id, 1); drop_weapons( id, 2); give_item( id, "weapon_knife" ); give_item( id, "weapon_hegrenade" ); give_item( id, "weapon_flashbang" ); cs_set_user_bpammo( id, CSW_FLASHBANG, 2 ); WeaponSelected [ id ] = true; give_item( id, VipWeapons[ item ][ WeaponID ] ); cs_set_user_bpammo( id, get_weaponid( VipWeapons[ item ][ WeaponID ] ), VipWeapons[ item ][ BpAmmo ] ); give_item( id, "weapon_deagle" ); cs_set_user_bpammo( id, CSW_DEAGLE, 35 ); } return PLUGIN_HANDLED; } public handle_vip_menu_pistols( id, menu, item ) { if( item == MENU_EXIT || !is_user_alive( id ) || !is_user_connected(id)) { menu_destroy( menu ); return PLUGIN_HANDLED; } new itemdata[3]; new data[6][32]; new index[32]; menu_item_getinfo(menu, item, itemdata[0], data[0], charsmax(data), data[1], charsmax(data), itemdata[1]); parse(data[0], index, 31); item = str_to_num(index); if( is_user_vip( id ) || get_pcvar_num( pCvars[ VipFree ] ) ) { drop_weapons( id, 2 ); give_item( id, "weapon_knife" ); give_item( id, "weapon_hegrenade" ); give_item( id, "weapon_flashbang" ); cs_set_user_bpammo( id, CSW_FLASHBANG, 2 ); WeaponSelected [ id ] = true; give_item( id, VipPistols[ item ][ WeaponID ] ); cs_set_user_bpammo( id, get_weaponid( VipPistols[ item ][ WeaponID ] ), VipPistols[ item ][ BpAmmo ] ); } return PLUGIN_HANDLED; } public ham_PlayerSpawnPost( id ) { if(!is_user_alive( id ) ) return HAM_IGNORED; if( is_user_vip( id ) || get_pcvar_num( pCvars[ VipFree ] ) ) { WeaponSelected [ id ] = false; ShowVIPMenu( id ); cs_set_user_armor( id, 100, CS_ARMOR_VESTHELM ); if( get_user_team( id ) == 2 ) give_item( id, "item_thighpack" ); cs_set_user_armor(id, get_pcvar_num(pCvars [ VipSpawnAP ]), CS_ARMOR_VESTHELM); set_user_health(id, get_pcvar_num(pCvars [ VipSpawnHP ])); } return PLUGIN_HANDLED; } public ham_PlayerKilled( iVictim, iAttacker ) { if( !iVictim || !iAttacker || !is_user_alive( iAttacker ) ) return HAM_IGNORED; if( is_user_vip( iAttacker ) || get_pcvar_num( pCvars[ VipFree ] ) ) { new g_iIsHeadshot = read_data( 3 ); new g_iHealth = get_user_health( iAttacker ); new g_iArmor = get_user_armor( iAttacker ); new g_iHealthAdd = get_pcvar_num( pCvars[ VipHP ] ); new g_iHealthHSAdd = get_pcvar_num( pCvars[ VipHsHP ] ); new g_iArmorAdd = get_pcvar_num( pCvars[ VipAP ] ); new g_iArmorHSAdd = get_pcvar_num( pCvars[ VipHsAP ] ); new g_iMaxHP = get_pcvar_num( pCvars[ VipMaxHP ] ); new g_iMaxAP = get_pcvar_num( pCvars[ VipMaxAP ] ); if( g_iIsHeadshot ) { if( g_iHealth >= g_iMaxHP || g_iArmor >= g_iMaxAP ) { set_user_health( iAttacker, g_iMaxHP ); set_user_armor( iAttacker, g_iMaxAP ); } else { set_user_health( iAttacker, g_iHealth + g_iHealthHSAdd ); set_user_armor( iAttacker, g_iHealth + g_iArmorHSAdd ); } } else { if( g_iHealth >= g_iMaxHP || g_iArmor >= g_iMaxAP ) { set_user_health( iAttacker, g_iMaxHP ); set_user_armor( iAttacker, g_iMaxAP ); } else { set_user_health( iAttacker, g_iHealth + g_iHealthAdd ); set_user_armor( iAttacker, g_iHealth + g_iArmorAdd ); } } } return PLUGIN_HANDLED; } public client_PreThink(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; new nbut = get_user_button(id); new obut = get_user_oldbutton(id); if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP)) { if( is_user_vip( id ) || get_pcvar_num( pCvars[ VipFree ] ) ) { if(jumpnum[id] < get_pcvar_num( pCvars[ VipJumps ] )) { dojump[id] = true; jumpnum[id]++; return PLUGIN_CONTINUE; } } } if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND)) { jumpnum[id] = 0; return PLUGIN_CONTINUE; } return PLUGIN_CONTINUE; } public client_PostThink(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; if( is_user_vip( id ) || get_pcvar_num( pCvars[ VipFree ] ) ) { if(dojump[id] == true) { new Float:velocity[3] ; entity_get_vector(id,EV_VEC_velocity,velocity); velocity[2] = random_float(265.0,285.0); entity_set_vector(id,EV_VEC_velocity,velocity); dojump[id] = false; return PLUGIN_CONTINUE; } } return PLUGIN_CONTINUE; } #if defined VIP_CHAT public hook_say( id ) { if( is_user_vip( id ) || get_pcvar_num( pCvars[ VipFree ] ) ) { new szName[ 32 ], szMessage[ 192 ], szPrefix[ 32 ]; get_user_name( id, szName, charsmax( szName ) ); get_pcvar_string( pCvars[ VipChatPrefix ], szPrefix, charsmax( szPrefix ) ); read_args( szMessage, charsmax( szMessage ) ); remove_quotes( szMessage ); if( is_user_alive( id ) ) color_chat( 0, "!g%s!team %s!y: %s", szPrefix, szName, szMessage ); else if(!is_user_alive( id ) ) color_chat( 0, "!y*DEAD* !g%s!team %s!y: %s", szPrefix, szName, szMessage ); } else { new szName[ 32 ], szMessage[ 192 ]; get_user_name( id, szName, charsmax( szName ) ); read_args( szMessage, charsmax( szMessage ) ); remove_quotes( szMessage ); if( is_user_alive( id ) ) color_chat( 0, "!team %s!y: %s", szName, szMessage ); else if(!is_user_alive( id ) ) color_chat( 0, "!y*DEAD* %s!team %s!y: %s", szName, szMessage ); } return PLUGIN_HANDLED; } public hook_sayteam( id ) { if( is_user_vip( id ) || get_pcvar_num( pCvars[ VipFree ] ) ) { new szName[ 32 ], szMessage[ 192 ], szPrefix[ 32 ]; get_user_name( id, szName, charsmax( szName ) ); get_pcvar_string( pCvars[ VipChatPrefix ], szPrefix, charsmax( szPrefix ) ); read_args( szMessage, charsmax( szMessage ) ); remove_quotes( szMessage ); if(get_user_team( id ) == 1 ) { if( is_user_alive( id ) ) color_chat( 0, "!y(Terrorist) !g%s!team %s!y: %s", szPrefix, szName, szMessage ); else if( !is_user_alive( id ) ) color_chat( 0, "!y*DEAD* (Terrorist) !g%s!team %s!y: %s", szPrefix, szName, szMessage ); } if(get_user_team( id ) == 2 ) { if( is_user_alive( id ) ) color_chat( 0, "!y(Counter-Terrorist) !g%s!team %s!y: %s", szPrefix, szName, szMessage ); else if( !is_user_alive( id ) ) color_chat( 0, "!y*DEAD* (Counter-Terrorist) !g%s!team %s!y: %s", szPrefix, szName, szMessage ); } } else { new szName[ 32 ], szMessage[ 192 ]; get_user_name( id, szName, charsmax( szName ) ); read_args( szMessage, charsmax( szMessage ) ); remove_quotes( szMessage ); if(get_user_team( id ) == 1 ) { if( is_user_alive( id ) ) color_chat( 0, "!y(Terrorist)!team %s!y: %s", szName, szMessage ); else if( !is_user_alive( id ) ) color_chat( 0, "!y*DEAD* (Terrorist)!team %s!y: %s", szName, szMessage ); } if(get_user_team( id ) == 2 ) { if( is_user_alive( id ) ) color_chat( 0, "!y(Counter-Terrorist)!team %s!y: %s", szName, szMessage ); else if( !is_user_alive( id ) ) color_chat( 0, "!y*DEAD* (Counter-Terrorist)!team %s!y: %s", szName, szMessage ); } } return PLUGIN_HANDLED; } #endif public ShowVIPMotd(id) { if( !is_user_connected( id ) ) return PLUGIN_HANDLED; new szString[ 64 ], Temp[ 64 ], Tag[32]; get_pcvar_string( pCvars[ VipPrices ], szString, charsmax( szString ) ); get_pcvar_string( pCvars[ VipPrefix ], Tag, charsmax( Tag ) ); formatex( Temp, charsmax( Temp ), "addons/amxmodx/configs/%s", szString ); show_motd( id, Temp, "Avantajele VIP-ului" ); color_chat(0, "!g%s !yCiteste despre avantajele !gVIP!y-ului!y!"); return PLUGIN_HANDLED; } public OnScoreAttrib( iMsgId, iMsgDest, iMsgEnt ) { if( is_user_vip( get_msg_arg_int( 1 ) ) || get_pcvar_num( pCvars[ VipFree ] ) ) { if(is_user_alive(get_msg_arg_int( 1 ))) { set_msg_arg_int( 2, ARG_BYTE, ( 1<<2 ) ); } } } public ShowVIPs( id ) { if(is_user_connected( id ) ) return PLUGIN_HANDLED; new vip_name[33]; new message[190]; new contor, len; if( is_user_vip( id ) ) { get_user_name( id, vip_name[ contor++ ], charsmax( vip_name ) ); } len = format( message, charsmax( message ), "!g%s !yVIP's Online!team: "); if( contor > 0 ) { for( new i = 0 ; i < contor ; i++) { len += format( message[ len ], charsmax( message ) - len, "!y%s%s ", vip_name[ i ], i < ( contor - 1 ) ? ", " : ""); if(len > 96 ) { color_chat( id, message ); len = format( message, charsmax( message ), "%s "); } } color_chat( id, message); } else { len += format( message[ len ], charsmax( message ) - len, "No VIP online."); color_chat( id, message ); } return PLUGIN_CONTINUE; } bool:IsVipHour( iStart, iEnd ) //Credits OciXCrom { new iHour; time( iHour ); return bool:( iStart < iEnd ? ( iStart <= iHour < iEnd ) : ( iStart <= iHour || iHour < iEnd ) ); } stock drop_weapons(id, dropwhat) { // Get user weapons new weapons[32], num_weapons, index, weaponid; get_user_weapons(id, weapons, num_weapons); // Loop through them and drop primaries or secondaries for (index = 0; index < num_weapons; index++) { // Prevent re-indexing the array weaponid = weapons[index]; if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)) || (dropwhat == 3) && (((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM) || ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))) { // Get weapon entity new wname[32]; get_weaponname(weaponid, wname, charsmax(wname)); // Player drops the weapon engclient_cmd(id, "drop", wname); } } } // Stock: ChatColor! stock color_chat(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); // Green Color replace_all(msg, 190, "!y", "^1"); // Default Color replace_all(msg, 190, "!team", "^3"); // Team Color replace_all(msg, 190, "!team2", "^0"); // Team2 Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } } Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi