Kolorowy Nextmap
csMisieK
21.12.2009
/* AMX Mod X * NextMap Plugin * * by the AMX Mod X Development Team * originally developed by OLO * * This file is part of AMX Mod X. * * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. */ #include <amxmodx> // WARNING: If you comment this line make sure // that in your mapcycle file maps don't repeat. // However the same map in a row is still valid. #define OBEY_MAPCYCLE new g_nextMap[32] new g_mapCycle[32] new g_pos public plugin_init() { register_plugin("NextMap", AMXX_VERSION_STR, "AMXX Dev Team") register_dictionary("nextmap.txt") register_event("30", "changeMap", "a") register_clcmd("say nextmap", "sayNextMap", 0, "- displays nextmap") register_clcmd("say currentmap", "sayCurrentMap", 0, "- display current map") register_clcmd("say ff", "sayFFStatus", 0, "- display friendly fire status") register_cvar("amx_nextmap", "", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY) new szString[32], szString2[32], szString3[8] get_localinfo("lastmapcycle", szString, 31) parse(szString, szString2, 31, szString3, 7) g_pos = str_to_num(szString3) get_cvar_string("mapcyclefile", g_mapCycle, 31) if (!equal(g_mapCycle, szString2)) g_pos = 0 // mapcyclefile has been changed - go from first readMapCycle(g_mapCycle, g_nextMap, 31) set_cvar_string("amx_nextmap", g_nextMap) format(szString3, 31, "%s %d", g_mapCycle, g_pos) // save lastmapcycle settings set_localinfo("lastmapcycle", szString3) } getNextMapName(szArg[], iMax) { new len = get_cvar_string("amx_nextmap", szArg, iMax) if (ValidMap(szArg)) return len len = copy(szArg, iMax, g_nextMap) set_cvar_string("amx_nextmap", g_nextMap) return len } public sayNextMap() { new name[32] getNextMapName(name, 31) fnTeamChat(id, "%L %s", LANG_PLAYER, "NEXT_MAP", name) } public sayCurrentMap() { new mapname[32] get_mapname(mapname, 31) client_print(0, print_chat, "%L: %s", LANG_PLAYER, "PLAYED_MAP", mapname) } public sayFFStatus() { client_print(0, print_chat, "%L: %L", LANG_PLAYER, "FRIEND_FIRE", LANG_PLAYER, get_cvar_num("mp_friendlyfire") ? "ON" : "OFF") } public delayedChange(param[]) { set_cvar_float("mp_chattime", get_cvar_float("mp_chattime") - 2.0) server_cmd("changelevel %s", param) } public changeMap() { new string[32] new Float:chattime = get_cvar_float("mp_chattime") set_cvar_float("mp_chattime", chattime + 2.0) // make sure mp_chattime is long new len = getNextMapName(string, 31) + 1 set_task(chattime, "delayedChange", 0, string, len) // change with 1.5 sec. delay } new g_warning[] = "WARNING: Couldn't find a valid map or the file doesn't exist (file ^"%s^")" stock bool:ValidMap(mapname[]) { if ( is_map_valid(mapname) ) { return true; } // If the is_map_valid check failed, check the end of the string new len = strlen(mapname) - 4; // The mapname was too short to possibly house the .bsp extension if (len < 0) { return false; } if ( equali(mapname[len], ".bsp") ) { // If the ending was .bsp, then cut it off. // the string is byref'ed, so this copies back to the loaded text. mapname[len] = '^0'; // recheck if ( is_map_valid(mapname) ) { return true; } } return false; } fnTeamChat( plr, const message[], {Float,Sql,Result,_}:... ) { static max_players, svc_saytext; if( !max_players ) max_players = get_maxplayers( ); if( !svc_saytext ) svc_saytext = get_user_msgid( "SayText" ); static msg[192]; msg[0] = 0x03; vformat( msg[1], sizeof msg - 2, message, 3 ); if( plr > 0 && plr <= max_players ) { message_begin( MSG_ONE, svc_saytext, { 0, 0, 0 }, plr ); write_byte( plr ); write_string( msg ); message_end( ); } else if( plr == 0 ) { for( new i = 1 ; i <= max_players ; i++ ) { if( is_user_connected( i ) ) { message_begin( MSG_ONE, svc_saytext, { 0, 0, 0 }, i ); write_byte( i ); write_string( msg ); message_end( ); } } } return 1; } #if defined OBEY_MAPCYCLE readMapCycle(szFileName[], szNext[], iNext) { new b, i = 0, iMaps = 0 new szBuffer[32], szFirst[32] if (file_exists(szFileName)) { while (read_file(szFileName, i++, szBuffer, 31, <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />) { if (!isalnum(szBuffer[0]) || !ValidMap(szBuffer)) continue if (!iMaps) copy(szFirst, 31, szBuffer) if (++iMaps > g_pos) { copy(szNext, iNext, szBuffer) g_pos = iMaps return } } } if (!iMaps) { log_amx(g_warning, szFileName) get_mapname(szFirst, 31) } copy(szNext, iNext, szFirst) g_pos = 1 } #else readMapCycle(szFileName[], szNext[], iNext) { new b, i = 0, iMaps = 0 new szBuffer[32], szFirst[32], szCurrent[32] get_mapname(szCurrent, 31) new a = g_pos if (file_exists(szFileName)) { while (read_file(szFileName, i++, szBuffer, 31, <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />) { if (!isalnum(szBuffer[0]) || !ValidMap(szBuffer)) continue if (!iMaps) { iMaps = 1 copy(szFirst, 31, szBuffer) } if (iMaps == 1) { if (equali(szCurrent, szBuffer)) { if (a-- == 0) iMaps = 2 } } else { if (equali(szCurrent, szBuffer)) ++g_pos else g_pos = 0 copy(szNext, iNext, szBuffer) return } } } if (!iMaps) { log_amx(g_warning, szFileName) copy(szNext, iNext, szCurrent) } else copy(szNext, iNext, szFirst) g_pos = 0 } #endif
Witam. Nie wiem co robie źle Jestem początkującym skrypterem albo nawet nie początkującym. Chcę aby po napisaniu nextmap, pokazywało się na sayu w kolorach druzyny - CT niebieski - TT czerwony. Pozdrawiam.
Misiaczek ;c
21.12.2009
Sprawdź:
colorchat.inc
Sorry że tak, ale załączników nie mogę dodać
/* AMX Mod X * NextMap Plugin * * by the AMX Mod X Development Team * originally developed by OLO * * This file is part of AMX Mod X. * * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. */ #include <amxmodx> #include <colorchat> // WARNING: If you comment this line make sure // that in your mapcycle file maps don't repeat. // However the same map in a row is still valid. #define OBEY_MAPCYCLE new g_nextMap[32] new g_mapCycle[32] new g_pos public plugin_init() { register_plugin("NextMap", AMXX_VERSION_STR, "AMXX Dev Team") register_dictionary("nextmap.txt") register_event("30", "changeMap", "a") register_clcmd("say nextmap", "sayNextMap", 0, "- displays nextmap") register_clcmd("say currentmap", "sayCurrentMap", 0, "- display current map") register_clcmd("say ff", "sayFFStatus", 0, "- display friendly fire status") register_cvar("amx_nextmap", "", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY) new szString[32], szString2[32], szString3[8] get_localinfo("lastmapcycle", szString, 31) parse(szString, szString2, 31, szString3, 7) g_pos = str_to_num(szString3) get_cvar_string("mapcyclefile", g_mapCycle, 31) if (!equal(g_mapCycle, szString2)) g_pos = 0 // mapcyclefile has been changed - go from first readMapCycle(g_mapCycle, g_nextMap, 31) set_cvar_string("amx_nextmap", g_nextMap) format(szString3, 31, "%s %d", g_mapCycle, g_pos) // save lastmapcycle settings set_localinfo("lastmapcycle", szString3) } getNextMapName(szArg[], iMax) { new len = get_cvar_string("amx_nextmap", szArg, iMax) if (ValidMap(szArg)) return len len = copy(szArg, iMax, g_nextMap) set_cvar_string("amx_nextmap", g_nextMap) return len } public sayNextMap() { new name[32] getNextMapName(name, 31) ColorChat(0,TEAM_COLOR, "%L %s", LANG_PLAYER, "NEXT_MAP", name) } public sayCurrentMap() { new mapname[32] get_mapname(mapname, 31) ColorChat(0,TEAM_COLOR, "%L: %s", LANG_PLAYER, "PLAYED_MAP", mapname) } public sayFFStatus() { ColorChat(0,TEAM_COLOR, "%L: %L", LANG_PLAYER, "FRIEND_FIRE", LANG_PLAYER, get_cvar_num("mp_friendlyfire") ? "ON" : "OFF") } public delayedChange(param[]) { set_cvar_float("mp_chattime", get_cvar_float("mp_chattime") - 2.0) server_cmd("changelevel %s", param) } public changeMap() { new string[32] new Float:chattime = get_cvar_float("mp_chattime") set_cvar_float("mp_chattime", chattime + 2.0) // make sure mp_chattime is long new len = getNextMapName(string, 31) + 1 set_task(chattime, "delayedChange", 0, string, len) // change with 1.5 sec. delay } new g_warning[] = "WARNING: Couldn't find a valid map or the file doesn't exist (file ^"%s^")" stock bool:ValidMap(mapname[]) { if ( is_map_valid(mapname) ) { return true; } // If the is_map_valid check failed, check the end of the string new len = strlen(mapname) - 4; // The mapname was too short to possibly house the .bsp extension if (len < 0) { return false; } if ( equali(mapname[len], ".bsp") ) { // If the ending was .bsp, then cut it off. // the string is byref'ed, so this copies back to the loaded text. mapname[len] = '^0'; // recheck if ( is_map_valid(mapname) ) { return true; } } return false; } #if defined OBEY_MAPCYCLE readMapCycle(szFileName[], szNext[], iNext) { new b, i = 0, iMaps = 0 new szBuffer[32], szFirst[32] if (file_exists(szFileName)) { while (read_file(szFileName, i++, szBuffer, 31, <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />) { if (!isalnum(szBuffer[0]) || !ValidMap(szBuffer)) continue if (!iMaps) copy(szFirst, 31, szBuffer) if (++iMaps > g_pos) { copy(szNext, iNext, szBuffer) g_pos = iMaps return } } } if (!iMaps) { log_amx(g_warning, szFileName) get_mapname(szFirst, 31) } copy(szNext, iNext, szFirst) g_pos = 1 } #else readMapCycle(szFileName[], szNext[], iNext) { new b, i = 0, iMaps = 0 new szBuffer[32], szFirst[32], szCurrent[32] get_mapname(szCurrent, 31) new a = g_pos if (file_exists(szFileName)) { while (read_file(szFileName, i++, szBuffer, 31, <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />) { if (!isalnum(szBuffer[0]) || !ValidMap(szBuffer)) continue if (!iMaps) { iMaps = 1 copy(szFirst, 31, szBuffer) } if (iMaps == 1) { if (equali(szCurrent, szBuffer)) { if (a-- == 0) iMaps = 2 } } else { if (equali(szCurrent, szBuffer)) ++g_pos else g_pos = 0 copy(szNext, iNext, szBuffer) return } } } if (!iMaps) { log_amx(g_warning, szFileName) copy(szNext, iNext, szCurrent) } else copy(szNext, iNext, szFirst) g_pos = 0 } #endif
colorchat.inc
//ColorChat(id, GREEN,"[Cosik]^x01 A nic"); #define MAXSLOTS 32 enum Color{ YELLOW = 1, // Yellow GREEN, // Green Color TEAM_COLOR, // Red, grey, blue GREY, // grey RED, // Red BLUE, // Blue } new TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" } public ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) { static message[256]; switch(type) { case YELLOW:{ // Yellow message[0] = 0x01; } case GREEN:{// Green message[0] = 0x04; } default:{ // White, Red, Blue message[0] = 0x03; } } vformat(message[1], 251, msg, 4); // Make sure message is not longer than 192 character. Will crash the server. message[192] = '^0'; new team, ColorChange, index, MSG_Type; if(!id) { index = FindPlayer(); MSG_Type = MSG_ALL; } else { MSG_Type = MSG_ONE; index = id; } team = get_user_team(index); ColorChange = ColorSelection(index, MSG_Type, type); ShowColorMessage(index, MSG_Type, message); if(ColorChange){ Team_Info(index, MSG_Type, TeamName[team]); } } ShowColorMessage(id, type, message[]){ message_begin(type, 76, _, id); write_byte(id) write_string(message); message_end(); } Team_Info(id, type, team[]){ message_begin(type, 86, _, id); write_byte(id); write_string(team); message_end(); return 1; } ColorSelection(index, type, Color:Type){ switch(Type) { case RED: { return Team_Info(index, type, TeamName[1]); } case BLUE: { return Team_Info(index, type, TeamName[2]); } case GREY: { return Team_Info(index, type, TeamName[0]); } } return 0; } FindPlayer(){ new i = -1; while(i <= MAXSLOTS){ if(is_user_connected(++i)){ return i; } } return -1; }
Sorry że tak, ale załączników nie mogę dodać
Misiaczek ;c
21.12.2009
hmm dziwne, u mnie na localu bez problemu leci
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team Header size: 924 bytes Code size: 5128 bytes Data size: 3528 bytes Stack/heap size: 16384 bytes; max. usage is unknown, due to recursion Total requirements: 25964 bytes Done.