Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов. Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу. Для поиска плагинов и модов существует соответствующий раздел.
Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены. Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.
Правила оформления темы: 1. Помимо заголовка не забудьте верно сформулировать свой вопрос. 2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы. 3. Выложите лог с ошибками (если имеется) под спойлер
[en] WHOLEBODY = wholebody HEAD = head CHEST = chest STOMACH = stomach LEFTARM = leftarm RIGHTARM = rightarm LEFTLEG = leftleg RIGHTLEG = rightleg MODE_SET_TO = "amx_statsx_mode" set to "%s" ATTACKERS = Attackers ACC = acc. HIT_S = hit(s) DMG = dmg VICTIMS = Victims MOST_DMG = Most damage done by KILLED_YOU_DIST = %s killed you with %s^nfrom distance of %0.2f meters. DID_DMG_HITS = He did %d damage to you with %d hit(s)^nand still has %dhp and %dap. YOU_DID_DMG = You did %d damage to him with %d hit(s). EFF = eff. BEST_SCORE = Best score KILL_S = kill(s) TOTAL = Total SHOT_S = shot(s) HITS_YOU_IN = %s hits you in KILLED_BY_WITH = $gKilled by $t%s %gwith $t%s @ %0.0fm NO_HITS = $tno hits YOU_NO_KILLER = You have no killer... YOU_HIT = $gYou hit $t%s %d time(s)$g, $t%d damage$g LAST_RES = Last result: $t%d hit(s)$g, $t%d damage$g KILLS = Kills DEATHS = Deaths HITS = Hits SHOTS = Shots YOUR = Your PLAYERS = Players RANK_IS = rank is %d of %d DAMAGE = Damage WEAPON = Weapon YOUR_RANK_IS = Your rank is $t%d $gof $t%d $gwith $t%d kill(s)$g, $t%d hit(s)$g, skill level $t%0.0f%%$g. AMMO = ammo HEALTH = health ARMOR = armor GAME_SCORE = Game score STATS_ANNOUNCE = You have $t%s $gstats announcements ENABLED = enabled DISABLED = disabled SERVER_STATS = Server Stats X_RANK_IS = %s's rank is %d of %d DISABLED_MSG = Server has disabled that option MM_RANKSTATS = [RankStats] MM_RANK = [Rank] MM_NICK=Name MM_HS=HS MM_PLACE= top MM_FIRSTPLACE= Top 10 players MM_SECONDPLACE= Top 20 players MM_THIRDPLACE= Top 30 players MM_BOT=Last place MM_DMG_PLACE=Most Damage by MM_HS_PLACE=Best HS by MM_WITH_HS=with %d HS MM_STAT=Stats: MM_HIT=Hits: MM_POT=Skill Level (%%) MM_DAMAGE= Damage (HP) MM_EFF=EFF. (%%) MM_ACC=ACC. (%%) MM_MARQUEE = %s^n%s^nRank: %d | Kill: %d | Death: %d MM_T = TERRORIST MM_CT = CT MM_HP = HP MM_AP = AP MM_LEFTARM = L. arm MM_RIGHTARM = R. arm MM_LEFTLEG = L. leg MM_RIGHTLEG = R. leg MM_BONUS = bonus MM_AWARD = You awarded $t%d$ $g($t+%d$$g bonus) for $t%d place MM_ATTEND = Attend MM_ATTEND_TO = - %s (hour / %% player) MM_TIME = Time MM_YEAR = year(s) MM_MONTH = month MM_WEEK = week(s) MM_DAY = day(s) MM_HOUR = hour(s) MM_MIN = min. MM_TODAY = Today MM_YESTERDAY = Yesterday MM_DAY_BEFORE = Day before MM_BEFORE = ago MM_WELCOME = Welcome to MM_LAST_VISIT = Last visit: MM_TIME_PLAY_BONUS = You are played $t%d h.$g in row and awarded $t%d$$g bonus MM_BOT_T = Top Bot MM_DMG_PLACE_T = Top Damage MM_HS_PLACE_T = Top HS MM_PT_T = Played Time MM_AWARD_T = Award MM_TOPX_T = Place
ST_MULTI_KILL = MultiKill ST_MULTI_KILL_SOUND = MultiKillSound ST_BOMB_PLANTING = Bomb Planting ST_BOMB_DEFUSING = Bomb Defusing ST_BOMB_PLANTED = Bomb Planted ST_BOMB_DEF_SUCC = Bomb Defuse Succ. ST_BOMB_DEF_FAIL = Bomb Def. Failure ST_BOMB_PICKUP = Bomb PickUp ST_BOMB_DROP = Bomb Drop ST_BOMB_CD_VOICE = Bomb Countdown Voice ST_BOMB_CD_DEF = Bomb Countdown (defuser) ST_BOMB_SITE = Bomb Site Reached ST_ITALY_BONUS = Italy Bonus Kill ST_LAST_MAN = Last Man ST_KNIFE_KILL = Knife Kill ST_KNIFE_KILL_SOUND = Knife Kill Sound ST_HE_KILL = Grenade Kill ST_HE_SUICIDE = Grenade Suicide ST_HS_KILL = HeadShot Kill ST_HS_KILL_SOUND = HeadShot Kill Sound ST_ROUND_CNT = Round Counter ST_ROUND_CNT_SOUND = Round Counter Sound ST_KILL_STR = Killing Streak ST_KILL_STR_SOUND = Killing Streak Sound ST_ENEMY_REM = Enemy Remaining ST_DOUBLE_KILL = Double Kill ST_DOUBLE_KILL_SOUND = Double Kill Sound ST_PLAYER_NAME = Player Name ST_FIRST_BLOOD_SOUND = First Blood Sound ST_SHOW_KILLER_CHAT = Show Killer HP&AP ST_SHOW_ATTACKERS = Show Attackers ST_SHOW_VICTIMS = Show Victims ST_SHOW_KILLER = Show Killer ST_SHOW_TEAM_SCORE = Show Team Score ST_SHOW_TOTAL_STATS = Show Total Stats ST_SHOW_BEST_SCORE = Show Best Score ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive ST_SHOW_HUD_STATS_DEF = Show HUD-stats default ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists ST_STATS_PLAYER_MAP_END = Stats at the end of map ST_STATS_TOP15_MAP_END = Top15 at the end of map ST_SAY_HP = Say /hp ST_SAY_STATSME = Say /statsme ST_SAY_RANKSTATS = Say /rankstats ST_SAY_ME = Say /me ST_SAY_RANK = Say /rank ST_SAY_REPORT = Say /report ST_SAY_SCORE = Say /score ST_SAY_TOP15 = Say /top15 ST_SAY_STATS = Say /stats ST_SPEC_RANK = Spec. Rank Info
[ru] WHOLEBODY = Тело HEAD = Голова CHEST = Грудь STOMACH = Живот LEFTARM = Левая рука RIGHTARM = Правая рука LEFTLEG = Левая нога RIGHTLEG = Правая нога MODE_SET_TO = "amx_statsx_mode" изменен на "%s" ATTACKERS = Нападавшие ACC = точность HIT_S = попаданий DMG = урон VICTIMS = Обороняющиеся MOST_DMG = Наибольший урон нанес KILLED_YOU_DIST = %s убил вас %s^n с %0.2f метров. DID_DMG_HITS = Вы нанесли %d%% урона, попав %d раз^n, но у нападавшего осталось %d%% жиз. и %d%% брон. YOU_DID_DMG = Вы нанесли %d%% урона, попав %d раз. EFF = эффективн. BEST_SCORE = Лучший результат KILL_S = убито TOTAL = Всего SHOT_S = выстрелов HITS_YOU_IN = %s попал Вам в KILLED_BY_WITH = $gВас убил $t%s $gс $t%s $g, расстояния $t%0.0f м$t NO_HITS = $tНи одного попадания YOU_NO_KILLER = Вас никто не убивал... YOU_HIT = $gВы стреляли в $t%s$g, $tпопав %d раз$g и нанесли $t%d%% урона$g LAST_RES = Посл. результ.: $t%d попаданий$g, $t%d%% урона$g KILLS = Убито DEATHS = Смертей HITS = Попаданий SHOTS = Выстрелов YOUR = Вы занимаете PLAYERS = Занимает RANK_IS = %d-ую позицию из %d DAMAGE = Урон (%%) WEAPON = Оружие YOUR_RANK_IS = Вы занимаете $t%d-е место$g из $t%d$g, убив $t%d$g, $tпопав %d раз$g, уровень навыков $t%0.0f%%$g. AMMO = Патроны HEALTH = Жизни ARMOR = Броня GAME_SCORE = Очки STATS_ANNOUNCE = Вы $t%s $gсообщения статистики ENABLED = включили DISABLED = выключили SERVER_STATS = Статистика сервера X_RANK_IS = %s занимает %d-е место из %d DISABLED_MSG = На сервере заблокирована данная функция. MM_RANKSTATS = [Статистика] MM_RANK = [ Ранг ] MM_NICK = Имя игрока MM_HS = В голову MM_PLACE = -ка лучших MM_FIRSTPLACE = В 10-ку лучших попали MM_SECONDPLACE = В 20-ку лучших попали MM_THIRDPLACE = В 30-ку лучших попали MM_BOT = Последние места заняли MM_DMG_PLACE=Наибольший урон нанесли MM_HS_PLACE=Статистика попаданий в голову MM_WITH_HS=из них %d в голову MM_STAT=Статистика: MM_HIT=Попадания: MM_POT=Уровень умений (%%) MM_DAMAGE = Урон (%% жизн.) MM_EFF=Эффектив. (%%) MM_ACC=Точность (%%) MM_MARQUEE = %s^n%s^nРанг: %d | Убил: %d | Умер: %d MM_T = ТЕРРОРИСТЫ MM_CT = СПЕЦНАЗ MM_HP = %% жизн. MM_AP = %% брон. MM_LEFTARM = Л. рука MM_RIGHTARM = П. рука MM_LEFTLEG = Л. нога MM_RIGHTLEG = П. нога MM_BONUS = бонус MM_AWARD = Вы награждены $t%d$ $g($t+%d$$g бонус) за $t%d-ое место MM_ATTEND = Посещение MM_ATTEND_TO = - %s (часы / %% игроков) MM_TIME = Время MM_YEAR = год(а) MM_MONTH = мес. MM_WEEK = нед. MM_DAY = дн. MM_HOUR = час. MM_MIN = мин. MM_TODAY = Сегодня MM_YESTERDAY = Вчера MM_DAY_BEFORE = Позавчера MM_BEFORE = назад MM_WELCOME = Добро пожаловать на MM_LAST_VISIT = Последнее посещение: MM_TIME_PLAY_BONUS = Вы играете уже $t%d ч.$g подряд и награждаетесь $t%d$$g бонусом MM_BOT_T = Последние места MM_DMG_PLACE_T = Урон MM_HS_PLACE_T = В голову MM_PT_T = Сыграно времени MM_AWARD_T = Награды MM_TOPX_T = Места
ST_MULTI_KILL = МультКилл ST_MULTI_KILL_SOUND = Звук МултиКилл ST_BOMB_PLANTING = Бомба пзакладывается ST_BOMB_DEFUSING = Бомба обезврежевается ST_BOMB_PLANTED = Бомба установлена ST_BOMB_DEF_SUCC = Разминирована ST_BOMB_DEF_FAIL = Не разминирована ST_BOMB_PICKUP = Подобрал бомбу ST_BOMB_DROP = Сбросил бомбу ST_BOMB_CD_VOICE = Отсчет бомбы(звук) ST_BOMB_CD_DEF = Отсчет бомбы ST_BOMB_SITE = Bomb Site Reached ST_ITALY_BONUS = Italy Bonus Kill ST_LAST_MAN = Последний человек ST_KNIFE_KILL = Убийство ножом ST_KNIFE_KILL_SOUND = Звук убийства ножом ST_HE_KILL = Убил гранатой ST_HE_SUICIDE = Подорвал себя ST_HS_KILL = Убийство в голову ST_HS_KILL_SOUND = Звук убийство в голову ST_ROUND_CNT = Round Counter ST_ROUND_CNT_SOUND = Round Counter Sound ST_KILL_STR = Killing Streak ST_KILL_STR_SOUND = Звук Killing Streak ST_ENEMY_REM = Враг остался ST_DOUBLE_KILL = Двойное убийство ST_DOUBLE_KILL_SOUND = Двойное убийство(звук) ST_PLAYER_NAME = Имя игрока ST_FIRST_BLOOD_SOUND = Первая кровь(звук ST_SHOW_KILLER_CHAT = Показать убийцу HP&AP ST_SHOW_ATTACKERS = Показать атакующего ST_SHOW_VICTIMS = Показать убитого ST_SHOW_KILLER = Показать убийцу ST_SHOW_TEAM_SCORE = Счет команд ST_SHOW_TOTAL_STATS = Вся статистика ST_SHOW_BEST_SCORE = Рекорды ST_SHOW_MOST_DISRUPTIVE = Разрушители ST_SHOW_HUD_STATS_DEF = HUD статистика(стандартная) ST_SHOW_DIST_HS_HUD = Расстояние и HS (HUD) ST_STATS_PLAYER_MAP_END = Статистика в конце карты ST_STATS_TOP15_MAP_END = ТОП15 в конце карты ST_SAY_HP = Say /hp ST_SAY_STATSME = Say /statsme ST_SAY_RANKSTATS = Say /rankstats ST_SAY_ME = Say /me ST_SAY_RANK = Say /rank ST_SAY_REPORT = Say /report ST_SAY_SCORE = Say /score ST_SAY_TOP15 = Say /top15 ST_SAY_STATS = Say /stats ST_SPEC_RANK = Информация о ранке
// HUD statistics stop relative freeze end in seconds. // To stop before freeze end use a negative value. #define HUD_FREEZE_LIMIT_CVAR "amx_statsx_freeze" #define HUD_FREEZE_LIMIT "-2.0"
// HUD statistics minimum duration, in seconds, to trigger the display logic. #define HUD_MIN_DURATION 0.2
// Config plugin constants. #define MODE_HUD_DELAY 0 // Make a 0.01 sec delay on HUD reset process.
// You can also manualy enable or disable these options by setting them to 1 // For example: // public ShowAttackers = 1 // However amx_statscfg command is recommended
public KillerChat = 0 // displays killer hp&ap to victim console // and screen
public ShowAttackers = 0 // shows attackers public ShowVictims = 0 // shows victims public ShowKiller = 0 // shows killer public ShowTeamScore = 0 // shows team score at round end public ShowTotalStats = 0 // shows round total stats public ShowBestScore = 0 // shows rounds best scored player public ShowMostDisruptive = 0 // shows rounds most disruptive player
public EndPlayer = 0 // displays player stats at the end of map public EndTop15 = 0 // displays top15 at the end of map
public SayHP = 0 // displays information about user killer public SayStatsMe = 0 // displays user's stats and rank public SayRankStats = 0 // displays user's rank stats public SayMe = 0 // displays user's stats public SayRank = 0 // displays user's rank public SayReport = 0 // report user's weapon status to team public SayScore = 0 // displays team's map score public SayTop15 = 0 // displays first 15 players public SayStatsAll = 0 // displays all players stats and rank
public ShowStats = 1 // set client HUD-stats switched off by default public ShowDistHS = 0 // show distance and HS in attackers and // victims HUD lists public ShowFullStats = 0 // show full HUD stats (more than 78 chars)
public SpecRankInfo = 0 // displays rank info when spectating
// Killer information, save killer info at the time when player is killed. #define KILLED_KILLER_ID 0 // Killer userindex/user-ID #define KILLED_KILLER_HEALTH 1 // Killer's health #define KILLED_KILLER_ARMOUR 2 // Killer's armour #define KILLED_TEAM 3 // Killer's team #define KILLED_KILLER_STATSFIX 4 // Fix to register the last hit/kill
new g_izKilled[MAX_PLAYERS][5]
// Menu variables and configuration #define MAX_PPL_MENU_ACTIONS 2 // Number of player menu actions #define PPL_MENU_OPTIONS 7 // Number of player options per displayed menu
new g_iPluginMode = 0
new g_izUserMenuPosition[MAX_PLAYERS] = {0, ...} new g_izUserMenuAction[MAX_PLAYERS] = {0, ...} new g_izUserMenuPlayers[MAX_PLAYERS][32]
new g_izSpecMode[MAX_PLAYERS] = {0, ...}
new g_izShowStatsFlags[MAX_PLAYERS] = {0, ...} new g_izStatsSwitch[MAX_PLAYERS] = {0, ...} new Float:g_fzShowUserStatsTime[MAX_PLAYERS] = {0.0, ...} new Float:g_fShowStatsTime = 0.0 new Float:g_fFreezeTime = 0.0 new Float:g_fFreezeLimitTime = 0.0 new Float:g_fHUDDuration = 0.0
new g_iRoundEndTriggered = 0 new g_iRoundEndProcessed = 0
new Float:g_fStartGame = 0.0 new g_izTeamScore[MAX_TEAMS] = {0, ...} new g_izTeamEventScore[MAX_TEAMS] = {0, ...} new g_izTeamRndStats[MAX_TEAMS][8] new g_izTeamGameStats[MAX_TEAMS][8] new g_izUserUserID[MAX_PLAYERS] = {0, ...} new g_izUserAttackerDistance[MAX_PLAYERS] = {0, ...} new g_izUserVictimDistance[MAX_PLAYERS][MAX_PLAYERS] new g_izUserRndName[MAX_PLAYERS][MAX_NAME_LENGTH + 1] new g_izUserRndStats[MAX_PLAYERS][8] new g_izUserGameStats[MAX_PLAYERS][8]
// Common buffer to improve performance, as Small always zero-initializes all vars new g_sBuffer[MAX_BUFFER_LENGTH + 1] = "" new g_sScore[MAX_TEXT_LENGTH + 1] = "" new g_sAwardAndScore[MAX_BUFFER_LENGTH + 1] = ""
new t_sText[MAX_TEXT_LENGTH + 1] = "" new t_sName[MAX_NAME_LENGTH + 1] = "" new t_sWpn[MAX_WEAPON_LENGTH + 1] = ""
server_print(" ") server_print("########################################################################### ####") server_print("^tTitle : StatsX Shell (Ultimate StatsX)") server_print("^tVersion: %s (RUS/FIX)", STATSX_SHELL_VER) server_print("^tAuthor : AMX MOD X DEV TEAM & MastaMan") server_print("^tEdited : Wildness Team") server_print("^tSite : server_print(" ") server_print("------------------------------------------------------------------------------") server_print(" ") if(file_exists(szCfgDir)) { server_print("[%s] > Load settings from: statsx_shell.cfg", Time) } else { server_print("[%s] > Not found: statsx_shell.cfg ........................... [ERROR]", Time) server_print(" ") server_print("> Please reinstall plugin statsx_shell.amxx for ") server_print(" solve this problem or check your cfg!") server_print(" ") server_print("> Visit www.ws-portal.ru for check new version and more info...") server_print(" ") server_print("########################################################################### ####")
//log_amx("Not found: statsx_shell.cfg")
return PLUGIN_CONTINUE } server_print(" ")
new szData[MAX_TEXT_LENGTH], i new bool:bERROR_MESSAGE, szERROR_MESSAGE[70] new file = fopen(szCfgDir, "rt") while(!feof(file)) { new bool:g_bERROR_MESSAGE_TYPE1 = true new bool:g_bERROR_MESSAGE_TYPE2 = true
public client_putinserver(id) { if(get_pcvar_num(pcvar_connect_message)) { set_task(2.5, "connect_message_anonce", id) } }
public connect_message_anonce(id) { new szName[32], szKey[50], szData[128], szHUDMessage[512] new szHour[5], szDay[5], szMonth[5] new izStats[8], izBody[8], szHostname[64] new iHour, iDay, iMonth new iLen = 0 new iColor_R, iColor_G, iColor_B, g_pcvarColor
// Get and format attackers header and list. get_attackers(id, sBuffer[MAX_BUFFER_LENGTH + 1]) { new izStats[8], izBody[8] new iAttacker new iFound, iLen new iMaxPlayer = get_maxplayers()
iFound = 0 sBuffer[0] = 0
// Get and format header. Add killing attacker statistics if user is dead. // Make sure shots is greater than zero or division by zero will occur. // To print a '%', 4 of them must done in a row. izStats[STATS_SHOTS] = 0 iAttacker = g_izKilled[id][KILLED_KILLER_ID]
if (iAttacker) get_user_astats(id, iAttacker, izStats, izBody)
// Get and format victims header and list get_victims(id, sBuffer[MAX_BUFFER_LENGTH + 1]) { new izStats[8], izBody[8] new iVictim new iFound, iLen new iMaxPlayer = get_maxplayers()
iFound = 0 sBuffer[0] = 0
// Get and format header. // Make sure shots is greater than zero or division by zero will occur. // To print a '%', 4 of them must done in a row. izStats[STATS_SHOTS] = 0 get_user_vstats(id, 0, izStats, izBody)
// Get and format team score. add_team_score(sBuffer[MAX_BUFFER_LENGTH + 1]) { new Float:fzMapEff[MAX_TEAMS], Float:fzMapAcc[MAX_TEAMS], Float:fzRndAcc[MAX_TEAMS]
// Calculate team stats for (new iTeam = 0; iTeam < MAX_TEAMS; iTeam++) { fzMapEff[iTeam] = effec(g_izTeamGameStats[iTeam]) fzMapAcc[iTeam] = accuracy(g_izTeamGameStats[iTeam]) fzRndAcc[iTeam] = accuracy(g_izTeamRndStats[iTeam]) }
// Get and format killed stats: hits, damage on killer. format_kill_vinfo(id, iKiller, sBuffer[MAX_BUFFER_LENGTH + 1]) { new iFound = 0 new izStats[8] new izBody[8] new iLen
// MastaMan Edition format_award(sBuffer[MAX_BUFFER_LENGTH + 1]) { new izStats[8], izBody[8], szName[3][MAX_NAME_LENGTH], id new iLen = 0 new Float:izAwardCash_Bonus[3], Float:izAwardSkil_Level[3], izCash
new lBonus[30]
format(lBonus, 29, "%L", LANG_SERVER, "MM_BONUS")
iLen = format_all_themes(sBuffer, iLen)
id = iAwardID for(new i = 0; i < 3; i++) { get_stats(id, izStats, izBody, t_sName, MAX_NAME_LENGTH) replace_all(t_sName, MAX_NAME_LENGTH, "<", "<") replace_all(t_sName, MAX_NAME_LENGTH, ">", ">")
// Show round end stats. If gametime is zero then use default duration time. show_roundend_hudstats(id, Float:fGameTime) { // Bail out if there no HUD stats should be shown // for this player or end round stats not created. if (!g_izStatsSwitch[id]) return if (!g_sAwardAndScore[0]) return
// If round end timer is zero clear round end stats. if (g_fShowStatsTime == 0.0) { ClearSyncHud(id, g_HudSync_EndRound) #if defined STATSX_DEBUG log_amx("Clear round end HUD stats for #%d", id) #endif }
// Set HUD-duration to default or remaining time. new Float:fDuration
// Show stats only if more time left than coded minimum. if (fDuration >= HUD_MIN_DURATION) { set_hudtype_endround(fDuration) ShowSyncHudMsg(id, g_HudSync_EndRound, "%s", g_sAwardAndScore) #if defined STATSX_DEBUG log_amx("Show %1.2fs round end HUD stats for #%d", fDuration, id) #endif } }
// Show round end stats. show_user_hudstats(id, Float:fGameTime) { // Bail out if there no HUD stats should be shown // for this player or user stats timer is zero. if (!g_izStatsSwitch[id]) return if (g_fzShowUserStatsTime[id] == 0.0) return
// Set HUD-duration to default or remaining time. new Float:fDuration
// Report user weapon status to team. public cmdReport(id) { if (!SayReport) { colorChat(id, CHATCOLOR_RED, "%L", id, "DISABLED_MSG") return PLUGIN_HANDLED }
new iWeapon, iClip, iAmmo, iHealth, iArmor
iWeapon = get_user_weapon(id, iClip, iAmmo)
if (iWeapon != 0) xmod_get_wpnname(iWeapon, t_sWpn, MAX_WEAPON_LENGTH)
// Player stats menu. public cmdStats(id) { if (!SayStatsAll) { colorChat(id, CHATCOLOR_RED, "%L", id, "DISABLED_MSG") return PLUGIN_HANDLED }
showStatsMenu(id, g_izUserMenuPosition[id] = 0)
return PLUGIN_CONTINUE }
//-------------------------------- // Menu //--------------------------------
public actionStatsMenu(id, key) { switch (key) { // Key '1' to '7', execute action on this option case 0..6: { new iOption, iIndex iOption = (g_izUserMenuPosition[id] * PPL_MENU_OPTIONS) + key
if (g_izUserMenuAction[id] >= MAX_PPL_MENU_ACTIONS) g_izUserMenuAction[id] = 0
showStatsMenu(id, g_izUserMenuPosition[id]) } // Key '9', select next page of options case 8: showStatsMenu(id, ++g_izUserMenuPosition[id]) // Key '10', cancel or go back to previous menu case 9: { if (g_izUserMenuPosition[id] > 0) showStatsMenu(id, --g_izUserMenuPosition[id]) } }
return PLUGIN_HANDLED }
new g_izUserMenuActionText[MAX_PPL_MENU_ACTIONS][62]
// Round start public eventStartRound() { new iTeam, id, i
if (read_data(1) >= floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor)) {
#if defined STATSX_DEBUG log_amx("Reset round stats") #endif
// Reset game stats on game start and restart. if (g_fStartGame > 0.0 && g_fStartGame <= get_gametime()) { #if defined STATSX_DEBUG log_amx("Reset game stats") #endif
g_fStartGame = 0.0
// Clear team and game stats. for (iTeam = 0; iTeam < MAX_TEAMS; iTeam++) { g_izTeamEventScore[iTeam] = 0
for (i = 0; i < 8; i++) g_izTeamGameStats[iTeam][i] = 0 }
// Clear game stats, incl '0' that is sum of all users. for (id = 0; id < MAX_PLAYERS; id++) { for (i = 0; i < 8; i++) g_izUserGameStats[id][i] = 0 } }
// Update team score with "TeamScore" event values and // clear team round stats. for (iTeam = 0; iTeam < MAX_TEAMS; iTeam++) { g_izTeamScore[iTeam] = g_izTeamEventScore[iTeam]
for (i = 0; i < 8; i++) g_izTeamRndStats[iTeam][i] = 0 }
// Clear user round stats, incl '0' that is sum of all users. for (id = 0; id < MAX_PLAYERS; id++) { g_izUserRndName[id][0] = 0
for (i = 0; i < 8; i++) g_izUserRndStats[id][i] = 0
g_fzShowUserStatsTime[id] = 0.0 }
// Allow end round stats and reset end round triggered indicator. g_iRoundEndTriggered = 0 g_iRoundEndProcessed = 0 g_fShowStatsTime = 0.0
// Update local configuration vars with value in cvars. get_config_cvars() }
return PLUGIN_CONTINUE }
// Reset killer info on round restart. public eventResetHud(id) { new args[1] args[0] = id
public delay_resethud(args[]) { new id = args[0] new Float:fGameTime
// Show user and score round stats after HUD-reset #if defined STATSX_DEBUG log_amx("Reset HUD for #%d", id) #endif fGameTime = get_gametime() show_user_hudstats(id, fGameTime) show_roundend_hudstats(id, fGameTime)
for (new i = 0; i < MAX_PLAYERS; i++) g_izUserVictimDistance[id][i] = 0
return PLUGIN_CONTINUE }
// Save killer info on death. public client_death(killer, victim, wpnindex, hitplace, TK) { // Bail out if no killer. if (!killer) return PLUGIN_CONTINUE
if (killer != victim) { new iaVOrigin[3], iaKOrigin[3] new iDistance
// Display kill stats for the player if round // end stats was not processed. if (!g_iRoundEndProcessed) kill_stats(victim)
return PLUGIN_CONTINUE }
// Display hudmessage stats on death. // This will also update all round and game stats. // Must be called at least once per round. kill_stats(id) { // Bail out if user stats timer is non-zero, // ie function already called. if (g_fzShowUserStatsTime[id] > 0.0) { return }
new team = get_user_team(id) if (team < 1 || team > 2) { return }
// Flag kill stats displayed for this player. g_fzShowUserStatsTime[id] = get_gametime()
// Add user death stats to user round stats new izStats[8], izBody[8] new iTeam, i new iKiller
iKiller = g_izKilled[id][KILLED_KILLER_ID]
// Get user's team (if dead use the saved team) if (iKiller) iTeam = g_izKilled[id][KILLED_TEAM] - 1 else iTeam = get_user_team(id) - 1
if (get_user_rstats(id, izStats, izBody)) { // Update user's team round stats if (iTeam >= 0 && iTeam < MAX_TEAMS) { for (i = 0; i < 8; i++) { g_izTeamRndStats[iTeam][i] += izStats[i] g_izTeamGameStats[iTeam][i] += izStats[i] g_izUserRndStats[0][i] += izStats[i] g_izUserGameStats[0][i] += izStats[i] } }
// Update user's round stats if (g_izUserUserID[id] == get_user_userid(id)) { for (i = 0; i < 8; i++) { g_izUserRndStats[id][i] += izStats[i] g_izUserGameStats[id][i] += izStats[i] } } else { g_izUserUserID[id] = get_user_userid(id)
for (i = 0; i < 8; i++) { g_izUserRndStats[id][i] = izStats[i] g_izUserGameStats[id][i] = izStats[i] } }
} // endif (get_user_rstats())
// Report stats in the chat section, if player is killed. if (KillerChat && iKiller && iKiller != id) { if (format_kill_ainfo(id, iKiller, g_sBuffer)) { colorChat(id, CHATCOLOR_GREEN, "* %s", g_sBuffer) format_kill_vinfo(id, iKiller, g_sBuffer) }
public time_play_bonus() { if(!get_pcvar_num(pcvar_pt_bonus) || !get_pcvar_num(pcvar_pt)) { return PLUGIN_HANDLED }
new iCash, iTmpCash, iDay, szDay[5] new szPlayers[32], iNum, szName[32] new szKey[50], szData[128]
new iCash_1h = get_pcvar_num(pcvar_pt_bonus_1h) new iCash_2h = get_pcvar_num(pcvar_pt_bonus_2h) new iCash_3h = get_pcvar_num(pcvar_pt_bonus_3h) new iCash_4h = get_pcvar_num(pcvar_pt_bonus_4h) new iCash_5h = get_pcvar_num(pcvar_pt_bonus_5h)
public day_stat_clear() { new szDate[5], szKey[6] format_time(szDate, sizeof(szDate) - 1, "%d")
for(new i = 0; i < 24; i++) { formatex(szKey, 5, "%d-h", i) nvault_set(g_Vault , szKey , "0") }
nvault_set(g_Vault , "DAY" , szDate)
return PLUGIN_CONTINUE }
public ERTask() { // Flag round end triggered. g_iRoundEndTriggered = 1
// Display round end stats to all players. endround_stats() }
endround_stats() { // Bail out if end round stats has already been processed // or round end not triggered. if (g_iRoundEndProcessed || !g_iRoundEndTriggered) return
new iaPlayers[32], iPlayer, iPlayers, id
get_players(iaPlayers, iPlayers)
// Display attacker & victim list for all living players. // This will also update all round and game stats for all players // not killed. #if defined STATSX_DEBUG log_amx("End round stats") #endif
for (iPlayer = 0; iPlayer < iPlayers; iPlayer++) { id = iaPlayers[iPlayer]
if (g_fzShowUserStatsTime[id] == 0.0) { kill_stats(id) } }
g_sAwardAndScore[0] = 0
// Create round awards. if (ShowMostDisruptive) add_most_disruptive(g_sAwardAndScore) if (ShowBestScore) add_best_score(g_sAwardAndScore)
// Create round score. // Compensate HUD message if awards are disabled. if (ShowTeamScore || ShowTotalStats) { if (ShowMostDisruptive && ShowBestScore) add(g_sAwardAndScore, MAX_BUFFER_LENGTH, "^n^n") else if (ShowMostDisruptive || ShowBestScore) add(g_sAwardAndScore, MAX_BUFFER_LENGTH, "^n^n^n^n") else add(g_sAwardAndScore, MAX_BUFFER_LENGTH, "^n^n^n^n^n^n")
if (ShowTeamScore) add_team_score(g_sAwardAndScore)
if (ShowTotalStats) add_total_stats(g_sAwardAndScore) }
save_team_chatscore()
// Get and save round end stats time. g_fShowStatsTime = get_gametime()
// Display round end stats to all players. for (iPlayer = 0; iPlayer < iPlayers; iPlayer++) { id = iaPlayers[iPlayer] show_roundend_hudstats(id, 0.0) }
// Flag round end processed. g_iRoundEndProcessed = 1 }
/* Thanks for Damaged Soul for finding the information on how to do this.
This is code snippets I find useful.
^x01 is Yellow ^x03 is Team Color. Ie. Red (Terrorist) or blue (Counter-Terrorist) or grey (SPECTATOR or UNASSIGNED). ^x04 is Green
The colors red, grey, and blue can't be used on the same line. This is not possible at all to do.
Also there are limitation to using Red or Grey while on the TEAM CT. You would have to do for example if they were on CT.
ColorChat(0, RED, "%s, ^x01This color is yellow. ^x03This color is red. ^x04This color is green.);
You have to set the Type to RED because of certain messages that need to be sent out so a person on the team CT can be sent red colors.
Some important information. When using MSG_ALL to send color message to all clients and your going to use blue/grey/red color sending the TeamInfo Message to tempoary change the player team to achieve this. You must send that message in MSG_ALL also. If your going to only send it to one person. You need to MSG_ONE on TeamInfo and SayText. (Thanks to CheapSuit I was able to see their was an error and fix it).
*/
colorChat(id, ChatColor:color, const msg[], {Float,Sql,Result,_}:...) { new team, index, MSG_Type new bool:teamChanged = false static message[192]
switch(color) { case CHATCOLOR_NORMAL: // Normal { message[0] = 0x01; } case CHATCOLOR_GREEN: // Green { message[0] = 0x04; } default: // Grey, Red, Blue { message[0] = 0x03; } }
А ещё проще, можно было открыть statsx_shell.cfg и там отключить приветствие
statsx_shell.cfg
Код:
//////////////////////////////////////////////////////////////////////////////////// // СООБЩЕНИЕ ПРИ ПОДКЛЮЧЕНИИ ИГРОКА К СЕРВЕРУ ////////////////////////////////////////////////////////////////////////////////////
// ПРИМЕЧАНИЕ: Данная функция является экспериментальной!
// 0 - Выключить // 1 - Включить // // Значение по умолчанию: 1 amx_statsx_conn_msg_enabled 0
// Эффекты // 0 - Плавный переход // 1 - Мерцание + Плавный переход // 2 - Печатная машинка // // Значение по умолчанию: 2 amx_statsx_conn_msg_effect 0
// Цвета // 0 - Зеленый // 1 - Красный // 2 - Синий // 3 - Жёлтый // 4 - Бирюзовый // 5 - Пурпурный // 6 - Оранжевый // 7 - Фиолетовый // 8 - Серый // 9 - Случайный цвет // 10 - Случайный цвет от 1-8 // // Значение по умолчанию: amx_statsx_conn_msg_color 0
// Показывать строку с информацией о последнем посещении // 0 - Выключить // 1 - Включить // // Значение по умолчанию: 1 amx_statsx_conn_msg_visit 1
// ПРИМЕЧАНИЕ: Для работы функции показа информации о последнем // посещении, должна быть включена Система Сбора Статистики Сыгранного Времени
Скидка 5% при заказе сервера
Чтобы получить 5% скидку при заказе сервера на хостинге Serva4ok.ru Необходимо ввести это кодовое слово gKUt-FENO-ZonE-aIaa