Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

124 страниц V  « 109 110 111 ... 122 123 »

Advanced Experience System

, Система опыта и рангов.
Статус пользователя best101
сообщение 6.4.2017, 9:32
Сообщение #2181


Стаж: 10 лет

Сообщений: 155
Благодарностей: 6
Полезность: < 0

Цитата(podbot @ 6.4.2017, 9:52) *
best101, значит в aes.cfg

cbf1b2bfde1a.gif
Там кроме позиции, цвета ничего нет.

Это должно быть где то в исходнике
aes_informer.sma

Знал бы, конечно не спрашивал...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя OFanok
сообщение 11.4.2017, 15:32
Сообщение #2182


Стаж: 9 лет 1 месяц

Сообщений: 75
Благодарностей: 8
Полезность: 75

может кто подсказать или помоч? как на AES от 0.5 версии вывести скил на экран , под званием и опытом?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ChillyChill
сообщение 12.4.2017, 21:07
Сообщение #2183
Стаж: 9 лет 1 месяц

Сообщений: 6
Благодарностей: 1
Полезность: 0

Добрый день! Подскажите пож-та,

1) Как в меню бонусов добавить броню?
2) Часто бывает что много раундов уже проходит, но по команде /anew пишет "Доступно с 3го раунда!"

aes 0.4.7
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя OFanok
сообщение 16.4.2017, 3:15
Сообщение #2184


Стаж: 9 лет 1 месяц

Сообщений: 75
Благодарностей: 8
Полезность: 75

ChillyChill, 2: в/addons/amxmodx/configs/aes/aes.cfg
// Выдача бонусов на спавне
// 0 - нет бонусов на спавне
// 1 - выдавать всегда
// 2 - выдать только один раз за раунд
aes_bonus_spawn "2"
в /addons/amxmodx/configs/aes/bonus.ini
<call>
plugin = aes_bonus_cstrike.amxx
name = LANG_AES_BONUS_M4A1
function = pointBonus_GiveM4a1
points = 1
round = 3
time = 15

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя joker_burn
сообщение 16.4.2017, 10:20
Сообщение #2185


Стаж: 15 лет
Город: Казань

Сообщений: 99
Благодарностей: 4
Полезность: 38

Добрый день, столкнулся с проблемой одна и та же сборка сервера на разных версиях windows не хочет работать, т.е на win 2003 x32 выходят ошибки HUD текста - ML_NOTFOUND, как будто нету текстовиков в папке lang, они есть))) потому что эта же самая сборка на win 7 x64 работает отлично. не могу понять в какую сторону капать, подскажите пожалуйста. вопрос собственно по AES и чату, остальное работает))
приложил скрины:
вин 2003
Прикрепленное изображение
вин 7
Прикрепленное изображение

PS: сборка ReHLDS
plugins:
; Бан-система ;
; Античиты ;
;===============;
fresh_bans_134-183.amxx
screen_maker.amxx
fb_forwards.amxx


;===============;
; Админ-плагины ;
;===============;
admin.amxx
;admin_sql.amxx

admincmd.amxx
adminhelp.amxx
adminslots.amxx
multilingual.amxx

menufront.amxx
cmdmenu.amxx
plmenu.amxx
telemenu.amxx
mapsmenu.amxx
pluginmenu.amxx

;===============;
; Чат/Сообщения ;
;===============;
adminchat.amxx
antiflood.amxx
scrollmsg.amxx
imessage.amxx
adminvote.amxx



;===============;
; Карты ;
;===============;
;nextmap.amxx
mapchooser.amxx
;timeleft.amxx

;===============;
; Конфигурации ;
;===============;
pausecfg.amxx
statscfg.amxx



;===============;
; Игра ;
;===============;
restmenu.amxx
;statsx.amxx
;miscstats.amxx
stats_logging.amxx




;===============;
; Свои плагины ;
;===============;
reapi_test.amxx
lite_translit.amxx
parachute_rbs.amxx
ad_manager.amxx
admin_esp.amxx
join_leave.amxx
C4timer.amxx
ideal_vip.amxx
statsx_shell.amxx
tok.amxx
mg_grab.amxx
reset.amxx
lite_balancer.amxx
admin_check.amxx
reaimdetector.amxx
hackdetector.amxx
weapon.amxx
afk_control.amxx
hpk.amxx
bullet_damage.amxx
flash_control.amxx
items_restrict.amxx
autoreload.amxx

модули:

fun
engine

fakemeta
geoip

sockets
regex

nvault
cstrike
csx
hamsandwich

reaimdetector
hackdetector

plugins-aes

aes_main.amxx
aes_exp_cstrike.amxx
aes_informer.amxx
aes_exp_editor.amxx
aes_bonus_system.amxx
aes_bonus_cstrike.amxx

версия amx 1.8.3
meta version 1.21p37

Отредактировал: joker_burn, - 16.4.2017, 11:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sunrise
сообщение 16.4.2017, 12:02
Сообщение #2186
Стаж: 9 лет 9 месяцев

Сообщений: 60
Благодарностей: 14
Полезность: 179

register_dictionary("statsx.txt") добавь в конец функции plugin_init. Пример в 0.5 версии.

setinfo lang ru на клиенте
проверь, что в файле amxmodx/data/lang/statsx.txt есть блок с русским языком [ru]


pick rylai pls
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя joker_burn
сообщение 16.4.2017, 12:10
Сообщение #2187


Стаж: 15 лет
Город: Казань

Сообщений: 99
Благодарностей: 4
Полезность: 38

joker_burn, посмотрел логи и ужаснулся))) сервер не может открыть файлы в папке lang
windows 2003
L 04/16/2017 - 14:05:32: [GEOIP] Database info: GeoLite2 Country database 2.0
L 04/16/2017 - 14:05:33: -------- Mapchange to de_dust2_2x2 --------
L 04/16/2017 - 14:05:33: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\statscfg.txt
L 04/16/2017 - 14:05:33: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\fresh_bans.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\time.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\admin.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\admincmd.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\adminhelp.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\adminhelp.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\adminslots.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\multilingual.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\languages.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\menufront.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\cmdmenu.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\admincmd.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\plmenu.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\telemenu.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\mapsmenu.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\pausecfg.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\adminchat.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\antiflood.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\antiflood.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\scrollmsg.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\imessage.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\adminvote.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:34: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\mapsmenu.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\pausecfg.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\admincmd.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\restmenu.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\common.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\ideal_vip.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\statsx_shell.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\grab_plus.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\mg_grab.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\aes.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\aes_expeditor.txt
L 04/16/2017 - 14:05:35: [AMXX] Failed to open dictionary file: cstrike\addons\amxmodx\data\lang\aes.txt
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя joker_burn
сообщение 16.4.2017, 12:23
Сообщение #2188


Стаж: 15 лет
Город: Казань

Сообщений: 99
Благодарностей: 4
Полезность: 38

Цитата(sunrise @ 16.4.2017, 13:02) *
register_dictionary("statsx.txt") добавь в конец функции plugin_init.

такого нету у меня)))
aes_statsx_cstrike.sma
/*
* AES: StatsX v. 0.5
* by serfreeman1337 http://1337.uz/
*/

#include <amxmodx>
#include <csx>

#if AMXX_VERSION_NUM < 183
#include <colorchat>

#define print_team_default DontChange
#define print_team_grey Grey
#define print_team_red Red
#define print_team_blue Blue

#define MAX_PLAYERS 32
#define MAX_NAME_LENGTH 32

#define client_disconnected client_disconnect
#endif

//#define AES // расскомментируйте для поддержки AES (http://1337.uz/advanced-experience-system/)
//#define CSSTATSX_SQL // расскомментируйте для поддержки CSstatsX SQL (http://1337.uz/csstatsx-sql/)

#if defined AES
#include <aes_v>

native Float:aes_get_exp_for_stats_f(stats[8],stats2[4])
#endif

#if defined CSSTATSX_SQL
#include <csstatsx_sql>
#include <time>
#endif

#define PLUGIN "AES: StatsX"
#define VERSION "0.5 Vega"
#define AUTHOR "serfreeman1337"

/* - CVARS - */
enum _:cvars {
CVAR_MOTD_DESC,
CVAR_CHAT_DESC,
CVAR_SESTATS_DESC,
CVAR_SKILL,
CVAR_MOTD_SKILL_FMT
}

new cvar[cvars]

/* - RANDOM STUFF */

// User stats parms id
#define STATS_KILLS 0
#define STATS_DEATHS 1
#define STATS_HS 2
#define STATS_TKS 3
#define STATS_SHOTS 4
#define STATS_HITS 5
#define STATS_DAMAGE 6

#define MAX_TOP 10

/* - SKILL - */

new const g_skill_letters[][] = {
"L-",
"L",
"L+",
"M-",
"M",
"M+",
"H-",
"H",
"H+",
"P-",
"P",
"P+",
"G"
}

new const g_skill_class[][] = {
"Lm",
"L",
"Lp",
"Mm",
"M",
"Mp",
"Hm",
"H",
"Hp",
"Pm",
"P",
"Pp",
"G"
}

// Global player flags.
new const BODY_PART[8][] =
{
"WHOLEBODY",
"AES_HEAD",
"AES_CHEST",
"AES_STOMACH",
"AES_LARM",
"AES_RARM",
"AES_LLEG",
"AES_RLEG"
}

new Float:g_skill_opt[sizeof g_skill_letters]

#define BUFF_LEN 1535

new theBuffer[BUFF_LEN + 1] = 0

#define MENU_LEN 512

new g_MenuStatus[MAX_PLAYERS + 1][2]

public SayStatsMe = 0 // displays user's stats and rank
public SayRankStats = 0 // displays user's rank stats
public SayRank = 0 // displays user's rank
public SayTop15 = 0 // displays first 15 players
public SayStatsAll = 0 // displays all players stats and rank
public SayHot = 0 // displays top from current players
#if defined CSSTATSX_SQL
public SaySeStats = 0 // displays players match history
#endif

#if defined AES
new aes_track_mode
#endif

public plugin_precache()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

/*
// Отображение /top15 и /rank
// ВАЖНО! Motd окно не может показывать больше 1534-х символов, а сообщение в чат больше 192-х.
// Если что то отображается криво или не полностью, то нужно уменьшить количество пунктов. (Топ не показывает больше 10-ти игроков)
// * - Ранг
// a - Ник (Only /top15)
// b - Убийста
// c - Смерти
// d - Попаданий
// e - Выстрелов
// f - В голову
// g - Точность
// h - Эффективность
// i - Скилл
// j - Звание Army Ranks
// k - K:D
// l - HS:K
// m - HS %
// n - онлайн время
*/

cvar[CVAR_MOTD_DESC] = register_cvar("aes_statsx_top","*abcfi")
cvar[CVAR_CHAT_DESC] = register_cvar("aes_statsx_rank","bci")

//
// o - изменение скилла
// p - дата сессии
// q - карта
//
cvar[CVAR_SESTATS_DESC] = register_cvar("aes_statsx_sestats","poqnbckfl")

// Настройка скилла. Значения схожи со значениями эффективности.
// Значения: L- L L+ M- M M+ H- H H+ P- P P+ G
cvar[CVAR_SKILL] = register_cvar("aes_statsx_skill","60.0 75.0 85.0 100.0 115.0 130.0 140.0 150.0 165.0 180.0 195.0 210.0")

/*
* Как выводить скилл в motd
* 0 - html (картинка с буквой + скилл)
* 1 - буква (скилл)
* 2 - буква
* 3 - скилл
*/
cvar[CVAR_MOTD_SKILL_FMT] = register_cvar("aes_statsx_motd_skill","0")

register_dictionary("statsx.txt")
register_dictionary("statsx_aes.txt")

#if defined CSSTATSX_SQL
register_dictionary("time.txt")
#endif
}

public plugin_init()
{
register_clcmd("say","Say_Catch")
register_clcmd("say_team","Say_Catch")

register_menucmd(register_menuid("Stats Menu"), 1023, "actionStatsMenu")
}

#if AMXX_VERSION_NUM < 183
public plugin_cfg()
#else
public OnAutoConfigsBuffered()
#endif
{
new levelString[512],stPos,ePos,rawPoint[20],cnt
get_pcvar_string(cvar[CVAR_SKILL],levelString,charsmax(levelString))

// парсер значений для скилла
do {
ePos = strfind(levelString[stPos]," ")

formatex(rawPoint,ePos,levelString[stPos])
g_skill_opt[cnt] = str_to_float(rawPoint)

stPos += ePos + 1

cnt++

// narkoman wole suka
if(cnt > sizeof g_skill_letters - 1)
break
} while (ePos != -1)

new addStast[] = "amx_statscfg add ^"%s^" %s"

server_cmd(addStast, "ST_SAY_STATSME", "SayStatsMe")
server_cmd(addStast, "ST_SAY_RANKSTATS", "SayRankStats")
server_cmd(addStast, "ST_SAY_RANK", "SayRank")
server_cmd(addStast, "ST_SAY_TOP15", "SayTop15")
server_cmd(addStast, "ST_SAY_STATS", "SayStatsAll")
server_cmd(addStast, "AES_SAY_HOT", "SayHot")

#if defined CSSTATSX_SQL
server_cmd(addStast, "CSXSQL_SESTATS_CFG", "SaySeStats")
#endif

#if defined AES
aes_track_mode = get_cvar_num("aes_track_mode")
#endif
}

#if defined CSSTATSX_SQL
//
// Команда /sestats
//
public SeStats_Show(id,player_id)
{
if(!SaySeStats)
{
client_print_color(id,print_team_red,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

new plr_db,sestats_data[2]

sestats_data[0] = id
sestats_data[1] = player_id

plr_db = get_user_stats_id(player_id)

if(!plr_db|| !get_sestats_thread_sql(plr_db,"SeStats_ShowHandler",sestats_data,sizeof sestats_data,10))
{
client_print_color(id,print_team_red,"%L %L",id,"STATS_TAG", id,"AES_STATS_INFO2")

return PLUGIN_HANDLED
}

return PLUGIN_HANDLED
}

public SeStats_ShowHandler(CSXSQL_SESTATS:sestats_array,sestats_data[])
{
new id = sestats_data[0]
new player_id = sestats_data[1]

if(!is_user_connected(id) || !is_user_connected(player_id))
{
get_sestats_free(sestats_array)
return PLUGIN_HANDLED
}

new len,title[64]

// заголовок
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"AES_META")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"AES_STYLE")

if(id == player_id)
{
formatex(title,charsmax(title),"%L %L",
id,"YOURS",
id,"CSXSQL_SETITLE"
)

}
else
{
new name[MAX_NAME_LENGTH]
get_user_name(player_id,name,charsmax(name))

formatex(title,charsmax(title),"%L %s",
id,"CSXSQL_SETITLE",
name
)
}

len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"CSXSQL_SEHTML",title)

// таблица со статистикой
new row_str[512],cell_str[MAX_NAME_LENGTH * 3],row_len
new desc_str[10],desc_char[4],bool:odd

get_pcvar_string(cvar[CVAR_SESTATS_DESC],desc_str,charsmax(desc_str))
trim(desc_str)

new desc_length = strlen(desc_str)

len += parse_top_desc_header(id,theBuffer,BUFF_LEN,len,false,desc_str)

new stats[8],bh[8]

for(new i,length = get_sestats_read_count(sestats_array) ; i < length ; i++)
{
get_sestats_read_stats(sestats_array,i,stats,bh)

for(new desc_index ; desc_index < desc_length ; desc_index++)
{
cell_str[0] = 0
desc_char[0] = desc_str[desc_index]

switch(desc_char[0])
{
// время
case 'p':
{
new stime = get_sestats_read_stime(sestats_array,i)
format_time(cell_str,charsmax(cell_str),"%m/%d/%Y - %H:%M:%S",stime)
}
// изменение скилла
case 'o':
{
new Float:skill = get_sestats_read_skill(sestats_array,i)

formatex(cell_str,charsmax(cell_str),"%s%.2f",
skill > 0.0 ? "+" : "",
skill
)
}
// карта
case 'q':
{
get_sestats_read_map(sestats_array,i,cell_str,charsmax(cell_str))
}
// убийства
case 'b':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_KILLS])
}
// смерти
case 'c':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_DEATHS])
}
// попадания
case 'd':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_HITS])
}
// выстрелы
case 'e':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_SHOTS])
}
// хедшоты
case 'f':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_HS])
}
// точнсть
case 'g':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
accuracy(stats)
)
}
// эффективность
case 'h':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
effec(stats)
)
}
// K:D
case 'k':
{
formatex(cell_str,charsmax(cell_str),"%.2f",
kd_ratio(stats)
)
}
// HS:K
case 'l':
{
formatex(cell_str,charsmax(cell_str),"%.2f",
hsk_ratio(stats)
)
}
// HS effec
case 'm':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
effec_hs(stats)
)
}
// время в игре
case 'n':
{
new ot = get_sestats_read_online(sestats_array,i)
func_format_ot(ot,cell_str,charsmax(cell_str),id)
}
default: continue
}

// выводим отформатированные данные
row_len += formatex(row_str[row_len],charsmax(row_str)-row_len,"%L",id,"AES_BODY_CELL",cell_str)
}
row_len = 0

row_len = len
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"%L",id,"AES_BODY_ROW",odd ? " id=b" : " id=q",row_str)

if(len >= BUFF_LEN)
{
theBuffer[row_len] = 0
break
}

row_len = 0

odd ^= true
}

get_sestats_free(sestats_array)

formatex(title,charsmax(title),"%L",id,"CSXSQL_SETITLE")
show_motd(id,theBuffer,title)

return PLUGIN_HANDLED
}
#endif

//
// Команда /hot
//
public ShowCurrentTop(id)
{
if(!SayHot)
{
client_print_color(id,print_team_red,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

new players[MAX_PLAYERS],pnum
get_players(players,pnum)

new current_top[MAX_PLAYERS][2]

for(new i,stats[8],bh[8] ; i < pnum ; i++)
{
current_top[i][0] = players[i]

#if !defined CSSTATSX_SQL
current_top[i][1] = get_user_stats(players[i],stats,bh)
#else
current_top[i][1] = get_user_stats_sql(players[i],stats,bh)
#endif
}

SortCustom2D(current_top,sizeof current_top,"Sort_CurrentTop")

new len,title[64]
formatex(title,charsmax(title),"%L",id,"AES_HOT_PLAYERS")

// заголовок
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"AES_META")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"AES_STYLE")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"AES_TOP_BODY",id,"AES_HOT_PLAYERS")

// таблица со статистикой
new row_str[512],cell_str[MAX_NAME_LENGTH * 3],row_len
new desc_str[10],desc_char[4],bool:odd

get_pcvar_string(cvar[CVAR_MOTD_DESC],desc_str,charsmax(desc_str))
trim(desc_str)

// TODO: AES RANKS
replace(desc_str,charsmax(desc_str),"j","")

new desc_length = strlen(desc_str)
new skill_out = get_pcvar_num(cvar[CVAR_MOTD_SKILL_FMT])

len += parse_top_desc_header(id,theBuffer,BUFF_LEN,len,false,desc_str)

for(new i,stats[8],bh[8],player_id ,name[MAX_NAME_LENGTH] ; i < sizeof current_top ; i++)
{
player_id = current_top[i][0]

if(!player_id)
{
continue
}

get_user_name(player_id,name,charsmax(name))

#if !defined CSSTATSX_SQL
get_user_stats(player_id,stats,bh)
#else
get_user_stats_sql(player_id,stats,bh)
#endif

for(new desc_index ; desc_index < desc_length ; desc_index++)
{
cell_str[0] = 0
desc_char[0] = desc_str[desc_index]

switch(desc_char[0]){
// ранк
case '*':
{
formatex(cell_str,charsmax(cell_str),"%d",current_top[i][1])
}
// ник
case 'a':
{

formatex(cell_str,charsmax(cell_str),"%s",name)

replace_all(cell_str,charsmax(cell_str),"<","&lt")
replace_all(cell_str,charsmax(cell_str),">","&gt")
}
// убийства
case 'b':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_KILLS])
}
// смерти
case 'c':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_DEATHS])
}
// попадания
case 'd':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_HITS])
}
// выстрелы
case 'e':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_SHOTS])
}
// хедшоты
case 'f':
{
formatex(cell_str,charsmax(cell_str),"%d",stats[STATS_HS])
}
// точнсть
case 'g':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
accuracy(stats)
)
}
// эффективность
case 'h':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
effec(stats)
)
}

// скилл
case 'i':{
new Float:skill ,skill_id

#if defined CSSTATSX_SQL
// используем скилл из csstatsx sql (ELO)
get_user_skill(player_id,skill)
#else
// используем K:D для скилла
skill = effec(stats)
#endif

skill_id = aes_statsx_get_skill_id(skill)

switch(skill_out)
{
// html
case 0:
{
formatex(cell_str,charsmax(cell_str),"%L",
id,
"AES_SKILL_FMT",


g_skill_class[skill_id],
skill
)
}
// буква (скилл)
case 1:
{
formatex(cell_str,charsmax(cell_str),"%s (%.2f)",
g_skill_letters[skill_id],
skill
)
}
// буква
case 2:
{
formatex(cell_str,charsmax(cell_str),"%s",
g_skill_letters[skill_id]
)
}
// скилл
case 3:
{
formatex(cell_str,charsmax(cell_str),"%.2f",
skill
)
}
}




}
#if defined AES
// опыт и ранг
case 'j':
{
// TODO: AES RANKS
formatex(cell_str,charsmax(cell_str),"lyl")
}
#endif
// K:D
case 'k':
{
formatex(cell_str,charsmax(cell_str),"%.2f",
kd_ratio(stats)
)
}
// HS:K
case 'l':
{
formatex(cell_str,charsmax(cell_str),"%.2f",
hsk_ratio(stats)
)
}
// HS effec
case 'm':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
effec_hs(stats)
)
}
#if defined CSSTATSX_SQL
// время в игре
case 'n':
{
new ot = get_user_gametime(player_id)
func_format_ot(ot,cell_str,charsmax(cell_str),id)
}
#endif
default: continue
}

// выводим отформатированные данные
row_len += formatex(row_str[row_len],charsmax(row_str)-row_len,"%L",id,"AES_BODY_CELL",cell_str)
}

row_len = len
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"%L",id,"AES_BODY_ROW",odd ? " id=b" : " id=q",row_str)

if(len >= BUFF_LEN)
{
theBuffer[row_len] = 0
}

row_len = 0
odd ^= true
}

show_motd(id,theBuffer,title)

return PLUGIN_HANDLED
}

public Sort_CurrentTop(const elem1[], const elem2[])
{
if(elem1[1] < elem2[1])
{
return -1
}
else if(elem1[1] > elem2[1])
{
return 1
}

return 0
}

// Ловим сообщения чата
public Say_Catch(id){
new msg[191]
read_args(msg,190)

trim(msg)
remove_quotes(msg)

if(msg[0] == '/'){
if(strcmp(msg[1],"rank",1) == 0)
{
return RankSay(id)
}
if(strcmp(msg[1],"hot",1) == 0 || strcmp(msg[1],"topnow",1) == 0)
{
return ShowCurrentTop(id)
}
if(containi(msg[1],"top") == 0)
{
replace(msg,190,"/top","")

return SayTop(id,str_to_num(msg))
}
if(strcmp(msg[1],"rankstats",1) == 0)
{
return RankStatsSay(id,id)
}

if(strcmp(msg[1],"statsme",1) == 0)
{
return StatsMeSay(id,id)
}

if(strcmp(msg[1],"stats",1) == 0)
{
arrayset(g_MenuStatus[id],0,2)
return ShowStatsMenu(id,0)
}
#if defined CSSTATSX_SQL
if(strcmp(msg[1],"sestats",1) == 0 || strcmp(msg[1],"history",1) == 0)
{
return SeStats_Show(id,id)
}
#endif
}

return PLUGIN_CONTINUE
}

//
// Команда /rank
//
public RankSay(id){
// команда /rank выключена
if(!SayRank)
{
client_print_color(id,print_team_red,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

new message[191],len,rank,stats_num,stats[8],bh[8]

len += formatex(message[len],charsmax(message)- len,"%L ",id,"STATS_TAG")

#if defined CSSTATSX_SQL
rank = get_user_stats_sql(id,stats,bh)
stats_num = get_statsnum_sql()
#else
rank = get_user_stats(id,stats,bh)
stats_num = get_statsnum()
#endif

if(rank > 0)
{
len += formatex(message[len],charsmax(message) - len,"%L ",id,"AES_YOUR_RANK_IS",rank,stats_num)
len += parse_rank_desc(id,message[len],charsmax(message)-len,stats)
}
else
{
len += formatex(message[len],charsmax(message) - len,"%L ",id,"AES_STATS_INFO2")
}

client_print_color(id,print_team_default,message)

return PLUGIN_HANDLED
}

//
// Формирование сообщения /rank
//
parse_rank_desc(id,msg[],maxlen,stats[8]){
new cnt,theChar[4],len

new desc_str[10]
get_pcvar_string(cvar[CVAR_CHAT_DESC],desc_str,charsmax(desc_str))

// Проверяем всё флаги
for(new i,length = strlen(desc_str) ; i < length ; ++i){
theChar[0] = desc_str[i] // фз почему напрямую не рабатает

// если это первое значение, то рисуем в начале скобку, иначе запятую с пробелом
if(cnt != length)
len += formatex(msg[len],maxlen - len,cnt <= 0 ? "(" : ", ")

// добавляем в сообщение информацию в соотв. с флагами
switch(theChar[0]){
// убийства
case 'b':
{
len += formatex(msg[len],maxlen - len,"%L ^3%d^1",id,"KILLS",stats[0])
}
// смерти
case 'c':
{
len += formatex(msg[len],maxlen - len,"%L ^3%d^1",id,"DEATHS",stats[1])
}
// попадания
case 'd':
{
len += formatex(msg[len],maxlen - len,"%L ^3%d^1",id,"HITS",stats[5])
}
// выстрелы
case 'e':
{
len += formatex(msg[len],maxlen - len,"%L ^3%d^1",id,"SHOTS",stats[4])
}
// хедшоты
case 'f':
{
len += formatex(msg[len],maxlen - len,"%L ^3%d^1",id,"STATS_HS",stats[2])
}
// точность
case 'g':
{
len += formatex(msg[len],maxlen - len,"%L ^3%.2f%%^1",id,"ACC",accuracy(stats))
}
// эффективность
case 'h':
{
len += formatex(msg[len],maxlen - len,"%L ^3%d%%^1",id,"EFF",effec(stats))
}
// скилл
case 'i':
{
new Float:skill,skill_id

#if defined CSSTATSX_SQL
get_user_skill(id,skill)
#else
skill = effec(stats)
#endif

skill_id = aes_statsx_get_skill_id(skill)

len += formatex(msg[len],maxlen - len,"%L ^3%s^1 (%.2f)",id,"STATS_SKILL",
g_skill_letters[skill_id],
skill
)

}
#if defined AES
case 'j':{ // ранг и опыт
new Float:player_exp = aes_get_player_exp(id)

if(player_exp == -1.0)// без ранга
{
len += formatex(msg[len],maxlen - len,"%L ^4---^1",id,"STATS_RANK")
}
else
{
new level_str[AES_MAX_LEVEL_LENGTH ]
new player_level = aes_get_player_level(id)
aes_get_level_name(player_level,level_str,charsmax(level_str),id)

len += formatex(msg[len],maxlen - len,"%L ^3%L^1",id,"STATS_RANK",id,"AES_RANK",
level_str,player_exp
)
}
}
#endif
// K:D
case 'k':
{
len += formatex(msg[len],maxlen - len,"%L ^3%.2f^1",
id,"AES_KS",
kd_ratio(stats)
)
}
// HS:K
case 'l':
{
len += formatex(msg[len],maxlen - len,"%L ^3%.2f^1",
id,"AES_HSK",
hsk_ratio(stats)
)
}
// HS effec
case 'm':
{
len += formatex(msg[len],maxlen - len,"%L ^3%.2f^1%%",
id,"AES_HSP",
effec_hs(stats)
)
}
#if defined CSSTATSX_SQL
// время в игре
case 'n':
{
new ot = get_user_gametime(id)

len += formatex(msg[len],maxlen - len,"%L: ^3",id,"AES_TIME")
len += func_format_ot(ot,msg[len],maxlen - len,id)
len += formatex(msg[len],maxlen - len,"^1")
}
#endif
}

theChar[0] = 0
cnt ++
}

// завершаем всё сообщение скобкой, если была подстановка параметров
if(cnt)
{
len += formatex(msg[len],maxlen - len,")")
}

return len
}

#if defined CSSTATSX_SQL
func_format_ot(ot,string[],len,idLang = LANG_SERVER)
{
new d,h,m,s

d = (ot / SECONDS_IN_DAY)
ot -= (d * SECONDS_IN_DAY)
h = (ot / SECONDS_IN_HOUR)
ot -= (h * SECONDS_IN_HOUR)
m = (ot / SECONDS_IN_MINUTE)
ot -= (m * SECONDS_IN_MINUTE)
s = ot

if(d)
{
return formatex(string,len,"%L",idLang,"AES_STATS_DESC1",d,h,m)
}
else if(h)
{
return formatex(string,len,"%L",idLang,"AES_STATS_DESC2",h,m)
}
else if(m)
{
return formatex(string,len,"%L",idLang,"AES_STATS_DESC3",m)
}

return formatex(string,len,"%L",idLang,"AES_STATS_DESC4",s)
}
#endif
//
// Формирование окна /rankstats
// id - кому показывать
// player_id - кого показывать
//
public RankStatsSay(id,player_id){
// Команда /rankstats выключена
if(!SayRankStats)
{
client_print_color(id,print_team_default,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

if(!is_user_connected(player_id))
{
client_print_color(id,print_team_default,"%L %L",id,"STATS_TAG",id,"AES_STATS_INFO2")

return PLUGIN_HANDLED
}

new len,motd_title[MAX_NAME_LENGTH]
new name[MAX_NAME_LENGTH],rank,stats[8],bh[8],stats_num,Float:skill,skill_id,skill_s
tr[64]

#if defined CSSTATSX_SQL
new stats3[STATS3_END]
get_user_stats3_sql(player_id,stats3)
#endif

theBuffer[0] = 0

formatex(motd_title,charsmax(motd_title),"%L",id,"RANKSTATS_TITLE")

len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"AES_META")
len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"AES_STYLE")

#if defined CSSTATSX_SQL
rank = get_user_stats_sql(player_id,stats,bh)
stats_num = get_statsnum_sql()
get_user_skill(player_id,skill)
#else
rank = get_user_stats(player_id,stats,bh)
stats_num = get_statsnum()
skill = effec(stats)
#endif

skill_id = aes_statsx_get_skill_id(skill)


if(id == player_id)
{
formatex(name,charsmax(name),"%L",id,"AES_YOU")
}
else
{
get_user_name(player_id,name,charsmax(name))
}

switch(get_pcvar_num(cvar[CVAR_MOTD_SKILL_FMT]))
{
// html
case 0:
{
formatex(skill_str,charsmax(skill_str),"%L",
id,
"AES_SKILL_FMT",

g_skill_class[skill_id],
skill
)
}
// буква (скилл)
case 1:
{
formatex(skill_str,charsmax(skill_str),"%s (%.2f)",
g_skill_letters[skill_id],
skill
)
}
// буква
case 2:
{
formatex(skill_str,charsmax(skill_str),"%s",
g_skill_letters[skill_id]
)
}
// скилл
case 3:
{
formatex(skill_str,charsmax(skill_str),"%.2f",
skill
)
}
}

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<table cellspacing=10 cellpadding=0><tr>")

new bool:is_wstats = false

#if defined CSSTATSX_SQL
is_wstats = (get_user_wstats_sql(player_id,0,stats,bh) == -1) ? false : true
#endif

//
// Общая статистика
//
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<td valign=top width=%d%% class=q><table cellspacing=0><tr><th colspan=2>",
is_wstats ? 40 : 50
)

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"%L",
id,"AES_RANKSTATS_TSTATS",
name,rank,stats_num
)

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=q><td>%L<td>%d (%L %d (%.2f%%))",id,"AES_KILLS",stats[STATS_KILLS],id,"AES_HS",stats[STATS_HS],effec_hs(stats))
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=b><td>%L<td>%d (%L %.2f)",id,"AES_DEATHS",stats[STATS_DEATHS],id,"AES_KS",kd_ratio(stats))
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=q><td>%L<td>%d",id,"AES_HITS",stats[STATS_HITS])
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=b><td>%L<td>%d",id,"AES_SHOTS",stats[STATS_SHOTS])
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=q><td>%L<td>%d",id,"AES_DMG",stats[STATS_DAMAGE])
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=b><td>%L<td>%.2f%%",id,"AES_ACC",accuracy(stats))
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=q><td>%L<td>%.2f%%",id,"AES_EFF",effec(stats))
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=b><td>%L<td>%s",id,"AES_SKILL",skill_str)

#if !defined CSSTATSX_SQL
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=q><td height=18px><td>")
#else
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=q><td>%L<td>",id,"AES_TIME")
len += func_format_ot(
get_user_gametime(player_id),
theBuffer[len],charsmax(theBuffer)-len,
id
)

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=b><td>%L<td>%d",id,"CSXSQL_JOINS",stats3[STATS3_CONNECT])

/*
new from = get_systime() - get_user_lastjoin_sql(player_id)
new from_str[40]
get_time_length(id,from,timeunit_seconds,from_str,charsmax(from_str))

len += formatex(theBuffer[len],charsmax(theBuffer)-len," (%L. %s %L)",
id,"LAST",
from_str,
id,"AGO"
)
*/

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=q><td>%L<td>%d (%L, %L)",id,"CSXSQL_ROUNDS",
(stats3[STATS3_ROUNDT] + stats3[STATS3_ROUNDCT]),
id,"CSXSQL_AS_T",stats3[STATS3_ROUNDT],
id,"CSXSQL_AS_CT",stats3[STATS3_ROUNDCT]
)

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=b><td>%L<td>%d (%L, %L)",id,"CSXSQL_WINS",
(stats3[STATS3_WINT] + stats3[STATS3_WINCT]),
id,"CSXSQL_AS_T",stats3[STATS3_WINT],
id,"CSXSQL_AS_CT",stats3[STATS3_WINCT]
)

new firstjoin = get_user_firstjoin_sql(player_id)

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=q><td>%L<td>",id,"CSXSQL_FIRSTJOIN")

if(firstjoin > 0)
{
len += format_time(theBuffer[len],charsmax(theBuffer)-len,"%m/%d/%Y - %H:%M:%S",firstjoin)
}
else
{
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"-")
}
#endif
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"</td></tr></table></td>")

#if !defined CSSTATSX_SQL
//
// Статистика по попаданиям
//
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<td valign=top width=50%% class=q><table cellspacing=0><tr><th colspan=2>")
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"%L",id,"AES_RANKSTATS_THITS")

new theSwitcher

for (new i = 1; i < 8; i++)
{
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=%s><td>%L<td>%d",
theSwitcher ? "b" : "q",
id,BODY_PART[i],bh[i]
)

theSwitcher = theSwitcher ? false : true
}


// mne tak nadoel etot kod :(
for(new i = 0 ; i < 2; ++i){
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=%s><td height=18px><td>",theSwitcher ? "b" : "q")

theSwitcher = theSwitcher ? false : true
}

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"</td>")
#else
// статистика по оружию выключена
if(!is_wstats)
{
//
// Статистика по попаданиям
//
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<td valign=top width=50%% class=q><table cellspacing=0><tr><th colspan=2>")
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"%L",id,"AES_RANKSTATS_THITS")

new theSwitcher

for (new i = 1; i < 8; i++)
{
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=%s><td>%L<td>%d",
theSwitcher ? "b" : "q",
id,BODY_PART[i],bh[i]
)

theSwitcher = theSwitcher ? false : true
}


// mne tak nadoel etot kod :(
for(new i = 0 ; i < 5; ++i){
len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=%s><td height=18px><td>",theSwitcher ? "b" : "q")

theSwitcher = theSwitcher ? false : true
}

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"</td>")
}
else
{
//
// Статистика по используемому оружию
//
len += formatex(theBuffer[len],BUFF_LEN-len,"<td valign=top width=60%% class=q><table cellspacing=0 width=100%%><tr><th>%L<th>%L<th>%L<th>%L<th>%L<th>%L<th>%L",
id,"AES_WEAPON",
id,"AES_KILLS",
id,"AES_DEATHS",
id,"AES_HITS",
id,"AES_SHOTS",
id,"AES_DMG",
id,"AES_ACC"
)

new bool:odd
new wpn_stats[9],Array:wpn_stats_array = ArrayCreate(sizeof wpn_stats)

for (new wpnId = 1,max_w = xmod_get_maxweapons_sql() ; wpnId < max_w ; wpnId++)
{
if (get_user_wstats_sql(player_id, wpnId, stats,bh))
{
wpn_stats[0] = stats[0]
wpn_stats[1] = stats[1]
wpn_stats[2] = stats[2]
wpn_stats[3] = stats[3]
wpn_stats[4] = stats[4]
wpn_stats[5] = stats[5]
wpn_stats[6] = stats[6]
wpn_stats[7] = stats[7]
wpn_stats[8] = wpnId

ArrayPushArray(wpn_stats_array,wpn_stats)
}
}

// сортируем по кол-ву убийств
ArraySort(wpn_stats_array,"Sort_WeaponStats")

for(new lena,i,wpnId,wpnName[MAX_NAME_LENGTH],length = ArraySize(wpn_stats_array) ; i < length && charsmax(theBuffer)-len > 0; i++)
{
ArrayGetArray(wpn_stats_array,i,wpn_stats)

wpnId = wpn_stats[8]
stats[0] = wpn_stats[0]
stats[1] = wpn_stats[1]
stats[2] = wpn_stats[2]
stats[3] = wpn_stats[3]
stats[4] = wpn_stats[4]
stats[5] = wpn_stats[5]
stats[6] = wpn_stats[6]
stats[7] = wpn_stats[7]

xmod_get_wpnname(wpnId,wpnName,charsmax(wpnName))

lena = len

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=%s><td>%s<td>%d<td>%d<td>%d<td>%d<td>%d<td>%0.1f%%",
odd ? "b" : "q",
wpnName,
stats[STATS_KILLS],
stats[STATS_DEATHS],
stats[STATS_HITS],
stats[STATS_SHOTS],
stats[STATS_DAMAGE],
accuracy(stats)
)

// LENA FIX
if(len >= BUFF_LEN)
{
len = lena
theBuffer[len] = 0

break
}

odd ^= true
}

ArrayDestroy(wpn_stats_array)
}
#endif

show_motd(id,theBuffer,motd_title)

return PLUGIN_HANDLED
}

#if defined CSSTATSX_SQL
public Sort_WeaponStats(Array:array, item1, item2)
{
new wpn_stats1[9],wpn_stats2[9]
ArrayGetArray(array,item1,wpn_stats1)
ArrayGetArray(array,item2,wpn_stats2)

if(wpn_stats1[0] > wpn_stats2[0])
{
return -1
}
else if(wpn_stats1[0] < wpn_stats2[0])
{
return 1
}

return 0
}
#endif


//
// Личная статистка за карту
//
// id - кому показывать
// stId - кого показывать
public StatsMeSay(id,player_id){
if(!SayStatsMe){
client_print_color(id,0,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

new len,stats[8],bh[8],motd_title[64]

formatex(motd_title,charsmax(motd_title),"%L",id,"STATS_TITLE")

if(id != player_id){
new name[32]
get_user_name(player_id,name,charsmax(name))
}

theBuffer[0] = 0

get_user_wstats(player_id,0,stats,bh)

len += formatex(theBuffer[len],BUFF_LEN-len,"%L%L",id,"AES_META",id,"AES_STYLE")
len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"AES_STATS_BODY")

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<table cellspacing=10 cellpadding=0><tr>")

len += formatex(theBuffer[len],BUFF_LEN-len,"<td valign=top width=20%% class=q><table cellspacing=0 width=100%%><tr><th colspan=2>%L<tr><td>%L<td>%d<tr class=b><td>%L<td>%d<tr><td>%L<td>%d<tr class=b><td>%L<td>%d<tr><td>%L<td>%d<tr class=b><td>%L<td>%d<tr><td>%L<td>%0.2f%%<tr class=b><td>%L<td>%0.2f%%</table>",
id,"AES_STATS_HEADER1",
id,"AES_KILLS",stats[STATS_KILLS],
id,"AES_HS",stats[STATS_HS],
id,"AES_DEATHS",stats[STATS_DEATHS],
id,"AES_HITS",stats[STATS_HITS],
id,"AES_SHOTS",stats[STATS_SHOTS],
id,"AES_DMG",stats[STATS_DAMAGE],
id,"AES_ACC",accuracy(stats),
id,"AES_EFF",effec(stats))

len += formatex(theBuffer[len],BUFF_LEN-len,"<td valign=top width=80%% class=q><table cellspacing=0 width=100%%><tr><th>%L<th>%L<th>%L<th>%L<th>%L<th>%L<th>%L",
id,"AES_WEAPON",
id,"AES_KILLS",
id,"AES_DEATHS",
id,"AES_HITS",
id,"AES_SHOTS",
id,"AES_DMG",
id,"AES_ACC"
)

new bool:odd

for (new wpnName[32],wpnId = 1 ; wpnId < xmod_get_maxweapons() && charsmax(theBuffer)-len > 0 ; wpnId++)
{
if (get_user_wstats(player_id, wpnId, stats,bh))
{
xmod_get_wpnname(wpnId,wpnName,charsmax(wpnName))

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"<tr id=%s><td>%s<td>%d<td>%d<td>%d<td>%d<td>%d<td>%0.1f%%",
odd ? "b" : "q",
wpnName,
stats[STATS_KILLS],
stats[STATS_DEATHS],
stats[STATS_HITS],
stats[STATS_SHOTS],
stats[STATS_DAMAGE],
accuracy(stats)
)

odd ^= true
}
}

show_motd(id,theBuffer,motd_title)

return PLUGIN_HANDLED
}

// Формирование окна /top
// В Pos указывается с какой позиции рисовать
public SayTop(id,Pos)
{
if(!SayTop15){
client_print_color(id,0,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

if(Pos == 15 || Pos <= 0)
Pos = 10

#if defined CSSTATSX_SQL
if(!get_stats_sql_thread(id,Pos,MAX_TOP,"SayTopHandler"))
{
client_print_color(id,print_team_red,"%L %L",id,"STATS_TAG",id,"AES_STATS_INFO1")
}
#else
SayTopHandler(id,Pos)
#endif

return PLUGIN_HANDLED
}

enum _:stats_former_array
{
STATSF_NAME[MAX_NAME_LENGTH],
STATSF_AUTHID[30],
STATSF_DATA[8],
STATSF_DATA2[4],
STATSF_BH[8],
STATSF_RANK

#if defined CSSTATSX_SQL
,STATSF_OT
#endif
}

//
// Сбор статистики
//
public SayTopHandler(id,Pos)
{
new Array:stats_array = ArrayCreate(stats_former_array)
new stats_info[stats_former_array],last_rank

#if defined CSSTATSX_SQL
new size = min(get_statsnum_sql(),Pos)
#else
new size = min(get_statsnum(),Pos)
#endif

#if defined AES
new Array:authids_array = ArrayCreate(sizeof stats_info[STATSF_AUTHID])
#endif

new rank,stats[8],stats2[4],bh[8],name[MAX_NAME_LENGTH],authid[30]

for(new i = size - MAX_TOP < 0 ? 0 : size - MAX_TOP; i < size ; i++){
#if defined CSSTATSX_SQL
rank = get_stats_sql(i,stats,bh,name,charsmax(name),authid,charsmax(authid))
get_stats2_sql(i,stats2)
get_stats_gametime(i,stats_info[STATSF_OT])
#else
rank = get_stats(i,stats,bh,name,charsmax(name),authid,charsmax(authid))
get_stats2(i,stats2)
#endif

if(!rank)
rank = last_rank

for(new i ; i < 8 ; i++)
{
stats_info[STATSF_DATA][i] = stats[i]
stats_info[STATSF_BH][i] = bh[i]
}

for(new i ; i < 4 ; i++)
{
stats_info[STATSF_DATA2][i] = stats2[i]
}

copy(stats_info[STATSF_NAME],
charsmax(stats_info[STATSF_NAME]),
name
)

copy(stats_info[STATSF_AUTHID],
charsmax(stats_info[STATSF_AUTHID]),
authid
)

last_rank = rank
stats_info[STATSF_RANK] = rank

// формируем статистику
ArrayPushArray(stats_array,stats_info)

#if defined AES
ArrayPushString(authids_array,authid)
#endif
}

new stats_data[2]

stats_data[0] = _:stats_array

#if defined AES
stats_data[1] = _:authids_array

if(!ArraySize(authids_array) || !aes_find_stats_thread(id,authids_array,"SayTopFormer",stats_data,sizeof stats_data))
{
new Array:empty_aes_stats = ArrayCreate()
SayTopFormer(id,empty_aes_stats,stats_data)
}
#else
SayTopFormer(id,stats_data)
#endif
}

aes_statsx_get_skill_id(Float:skill)
{
for(new i ; i < sizeof g_skill_opt ; i++)
{
if(skill < g_skill_opt[i])
{
return i
}
}

return (sizeof g_skill_opt - 1)
}

#if defined AES
Float:aes_search_exp_in_stats(Array:aes_stats_array,stats_size,name[],authid[],&level)
{
for(new i,aes_stats[aes_stats_struct] ; i < stats_size ; i++)
{
ArrayGetArray(aes_stats_array,i,aes_stats)
level = aes_stats[AES_S_LEVEL]

switch(aes_track_mode)
{
case 0:
{
if(strcmp(aes_stats[AES_S_NAME],name,1) == 0)
{
return aes_stats[AES_S_EXP]
}
}
case 1:
{
if(strcmp(aes_stats[AES_S_STEAMID],authid,1) == 0)
{
return aes_stats[AES_S_EXP]
}
}
case 2:
{
if(strcmp(aes_stats[AES_S_IP],authid,1) == 0)
{
return aes_stats[AES_S_EXP]
}
}
}

}

return -1.0
}
#endif

#if !defined AES
public SayTopFormer(id,stats_data[])
#else
public SayTopFormer(id,Array:aes_stats_array,stats_data[])
#endif
{
theBuffer[0] = 0

new Array:stats_array = Array:stats_data[0]

new len,title[64]
formatex(title,charsmax(title),"%L",id,"AES_PLAYER_TOP")

// заголовок
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"AES_META")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"AES_STYLE")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"AES_TOP_BODY",id,"AES_PLAYER_TOP")

// таблица со статистикой
new stats_info[stats_former_array],row_str[512],cell_str[MAX_NAME_LENGTH * 3],row_len
new desc_str[10],desc_char[4],bool:odd

get_pcvar_string(cvar[CVAR_MOTD_DESC],desc_str,charsmax(desc_str))
trim(desc_str)

new desc_length = strlen(desc_str)
new skill_out = get_pcvar_num(cvar[CVAR_MOTD_SKILL_FMT])

len += parse_top_desc_header(id,theBuffer,BUFF_LEN,len,false,desc_str)

#if defined AES
new aes_stats_size = ArraySize(aes_stats_array)
new aes_last_iter
#endif

for(new stats_index,length = ArraySize(stats_array);stats_index < length; stats_index ++){
ArrayGetArray(stats_array,stats_index,stats_info)

for(new desc_index ; desc_index < desc_length ; desc_index++)
{
cell_str[0] = 0
desc_char[0] = desc_str[desc_index]

switch(desc_char[0]){
// ранк
case '*':
{
formatex(cell_str,charsmax(cell_str),"%d",stats_info[STATSF_RANK])
}
// ник
case 'a':
{
formatex(cell_str,charsmax(cell_str),"%s",stats_info[STATSF_NAME])

replace_all(cell_str,charsmax(cell_str),"<","&lt")
replace_all(cell_str,charsmax(cell_str),">","&gt")
}
// убийства
case 'b':
{
formatex(cell_str,charsmax(cell_str),"%d",stats_info[STATSF_DATA][STATS_KILLS])
}
// смерти
case 'c':
{
formatex(cell_str,charsmax(cell_str),"%d",stats_info[STATSF_DATA][STATS_DEATHS])
}
// попадания
case 'd':
{
formatex(cell_str,charsmax(cell_str),"%d",stats_info[STATSF_DATA][STATS_HITS])
}
// выстрелы
case 'e':
{
formatex(cell_str,charsmax(cell_str),"%d",stats_info[STATSF_DATA][STATS_SHOTS])
}
// хедшоты
case 'f':
{
formatex(cell_str,charsmax(cell_str),"%d",stats_info[STATSF_DATA][STATS_HS])
}
// точнсть
case 'g':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
accuracy(stats_info[STATSF_DATA])
)
}
// эффективность
case 'h':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
effec(stats_info[STATSF_DATA])
)
}

// скилл
case 'i':{
new Float:skill ,skill_id

#if defined CSSTATSX_SQL
// используем скилл из csstatsx sql (ELO)
get_skill(stats_info[STATSF_RANK] - 1,skill)
#else
// используем K:D для скилла
skill = effec(stats_info[STATSF_DATA])
#endif

skill_id = aes_statsx_get_skill_id(skill)

switch(skill_out)
{
// html
case 0:
{
formatex(cell_str,charsmax(cell_str),"%L",
id,
"AES_SKILL_FMT",


g_skill_class[skill_id],
skill
)
}
// буква (скилл)
case 1:
{
formatex(cell_str,charsmax(cell_str),"%s (%.2f)",
g_skill_letters[skill_id],
skill
)
}
// буква
case 2:
{
formatex(cell_str,charsmax(cell_str),"%s",
g_skill_letters[skill_id]
)
}
// скилл
case 3:
{
formatex(cell_str,charsmax(cell_str),"%.2f",
skill
)
}
}




}
#if defined AES
// опыт и ранг
case 'j':
{
new level = 0
new Float:exp = -1.0

if(aes_stats_size)
exp = aes_search_exp_in_stats(aes_stats_array,aes_stats_size,stats_info[STATSF_NAME],s
tats_info[STATSF_AUTHID],level)

// не нашли стату aes для этого игрока
if(exp == -1.0)
{
// расчитываем на основе статы cstrike
new stats[8],stats2[4]

// кек
for(new i ; i < 8 ; i++)
{
stats[i] = stats_info[STATSF_DATA][i]
}

for(new i ; i < 4 ; i++)
{
stats2[i] = stats_info[STATSF_DATA2][i]
}

new Float:exp = aes_get_exp_for_stats_f(stats,stats2)

if(exp != -1.0)
{
new level = aes_get_exp_level(exp)

new level_str[AES_MAX_LEVEL_LENGTH]
aes_get_level_name(level,level_str,charsmax(level_str),id)

formatex(cell_str,charsmax(cell_str),"%L",
id,"AES_RANK",
level_str,
exp + 0.005
)
}
else // расчет по стате выключен
{
formatex(cell_str,charsmax(cell_str),"-")
}
}
else
{
new level_str[AES_MAX_LEVEL_LENGTH]
aes_get_level_name(level,level_str,charsmax(level_str),id)

formatex(cell_str,charsmax(cell_str),"%L",
id,"AES_RANK",
level_str,
exp + 0.005
)

aes_last_iter ++
}
}
#endif
// K:D
case 'k':
{
formatex(cell_str,charsmax(cell_str),"%.2f",
kd_ratio(stats_info[STATSF_DATA])
)
}
// HS:K
case 'l':
{
formatex(cell_str,charsmax(cell_str),"%.2f",
hsk_ratio(stats_info[STATSF_DATA])
)
}
// HS effec
case 'm':
{
formatex(cell_str,charsmax(cell_str),"%.2f%%",
effec_hs(stats_info[STATSF_DATA])
)
}
#if defined CSSTATSX_SQL
// время в игре
case 'n':
{
new ot = stats_info[STATSF_OT]
func_format_ot(ot,cell_str,charsmax(cell_str),id)
}
#endif
default: continue
}

// выводим отформатированные данные
row_len += formatex(row_str[row_len],charsmax(row_str)-row_len,"%L",id,"AES_BODY_CELL",cell_str)
}

row_len = 0

len += formatex(theBuffer[len],charsmax(theBuffer)-len,"%L",id,"AES_BODY_ROW",odd ? " id=b" : " id=q",row_str)
odd ^= true
}

ArrayDestroy(stats_array)

#if defined AES
ArrayDestroy(Array:stats_data[1])
ArrayDestroy(aes_stats_array)
#endif

show_motd(id,theBuffer,title)
}

// Stats formulas
Float:accuracy(izStats[])
{
if (!izStats[STATS_SHOTS])
return (0.0)

return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS]))
}

Float:effec(izStats[])
{
if (!izStats[STATS_KILLS])
return (0.0)

return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS]))
}

Float:effec_hs(stats[])
{
if (!stats[STATS_KILLS])
return float(stats[STATS_HS])

return (100.0 * float(stats[STATS_HS]) / float(stats[STATS_KILLS] + stats[STATS_HS]))
}

Float:kd_ratio(stats[])
{
if(!stats[STATS_DEATHS])
{
return float(stats[STATS_KILLS])
}

return float(stats[STATS_KILLS]) / float(stats[STATS_DEATHS])
}

Float:hsk_ratio(stats[])
{
if(!stats[STATS_KILLS])
{
return float(stats[STATS_HS])
}

return float(stats[STATS_HS]) / float(stats[STATS_KILLS])
}


// Формируем заголовок таблицы для топа игроков
parse_top_desc_header(id,buff[],maxlen,len,bool:isAstats,desc_str[]){
new tmp[256],len2,theChar[4],lCnt

lCnt = isAstats != true ? strlen(desc_str) : 0//strlen(aStatsDescCap)

for(new i ; i < lCnt ; ++i){
theChar[0] = isAstats != true ? desc_str[i] : desc_str[i]//aStatsDescCap[i]

switch(theChar[0]){
case '*':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_POS")
}
case 'a':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_PLAYER")
}
case 'b':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_KILLS")
}
case 'c':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_DEATHS")
}
case 'd':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_HITS")
}
case 'e':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_SHOTS")
}
case 'f':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_HS")
}
case 'g':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_ACC")
}
case 'h':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_EFF")
}
case 'i':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_SKILL")
}
#if !defined NO_AES
case 'j':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_ARMYRANKS")
}
#endif
case 'k':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_KS")
}
case 'l':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_HSK")
}
case 'm':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_HSP")
}
#if defined CSSTATSX_SQL
case 'n':{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"AES_TIME")
}
case 'p':
{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"CSXSQL_DATE")
}
case 'o':
{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"CSXSQL_SKILLCHANGE")
}
case 'q':
{
len2 += formatex(tmp[len2],charsmax(tmp)-len2,"%L",id,"AES_HEADER_CELL","",id,"CSXSQL_MAP")
}
#endif
}

theChar[0] = 0
}

return formatex(buff[len],maxlen-len,"%L",id,"AES_TOP_HEADER_ROW",tmp)
}

// формирование меню для просмотра статистики игроков
public ShowStatsMenu(id,page){
if(!SayStatsAll){
client_print_color(id,0,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

new menuKeys,menuText[512],menuLen
new tName[42],players[32],pCount

get_players(players,pCount)

new maxPages = ((pCount - 1) / 7) + 1 // находим макс. кол-во страниц

// отображаем с начала, если такой страницы не существует
if(page > maxPages)
page = 0

// начальный индекс игрока согласно странице
new usrIndex = (7 * page)

menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"%L %L\R\y%d/%d^n",
id,"MENU_TAG",id,"MENU_TITLE",page + 1,maxPages)

// добавляем игроков в меню
while(usrIndex < pCount){
get_user_name(players[usrIndex],tName,31)
menuKeys |= (1 << usrIndex % 7)

menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"^n\r%d.\w %s",
(usrIndex % 7) + 1,tName)

usrIndex ++

// перываем заполнение
// если данная страница уже заполнена
if(!(usrIndex % 7))
break
}

// вариант просмотра статистики

switch(g_MenuStatus[id][0])
{
case 0:menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"^n^n\r%d.\w %L",8,id,"MENU_RANK")
case 1: menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"^n^n\r%d.\w %L",8,id,"MENU_STATS")
#if defined CSSTATSX_SQL
case 2: menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"^n^n\r%d.\w %L",8,id,"CSXSQL_SETITLE")
#endif

}

menuKeys |= MENU_KEY_8

if(!(usrIndex % 7)){
menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"^n^n\r%d.\w %L",9,id,"MORE")
menuKeys |= MENU_KEY_9
}

if((7 * page)){
menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"^n^n\r%d.\w %L",0,id,"BACK")
menuKeys |= MENU_KEY_0
}else{
menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"^n^n\r%d.\w %L",0,id,"EXIT")
menuKeys |= MENU_KEY_0
}


show_menu(id,menuKeys,menuText,-1,"Stats Menu")

return PLUGIN_HANDLED
}

public actionStatsMenu(id,key){
switch(key){
case 0..6:{
new usrIndex = key + (7 * g_MenuStatus[id][1]) + 1

if(!is_user_connected(id)){
ShowStatsMenu(id,g_MenuStatus[id][1])

return PLUGIN_HANDLED
}

switch(g_MenuStatus[id][0])
{
case 0: RankStatsSay(id,usrIndex)
case 1: StatsMeSay(id,usrIndex)
#if defined CSSTATSX_SQL
case 2: SeStats_Show(id,usrIndex)
#endif
}

ShowStatsMenu(id,g_MenuStatus[id][1])
}
case 7:{
g_MenuStatus[id][0] ++
#if defined CSSTATSX_SQL
if(g_MenuStatus[id][0] > 2)
g_MenuStatus[id][0] = 0
#else
if(g_MenuStatus[id][0] > 1)
g_MenuStatus[id][0] = 0
#endif

ShowStatsMenu(id,g_MenuStatus[id][1])
}
case 8:{
g_MenuStatus[id][1] ++
ShowStatsMenu(id,g_MenuStatus[id][1])
}
case 9:{
if(g_MenuStatus[id][1]){
g_MenuStatus[id][1] --
ShowStatsMenu(id,g_MenuStatus[id][1])
}
}
}

return PLUGIN_HANDLED
}

Цитата
проверь, что в файле amxmodx/data/lang/statsx.txt есть блок с русским языком [ru]

это всё в порядке!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя joker_burn
сообщение 16.4.2017, 13:11
Сообщение #2189


Стаж: 15 лет
Город: Казань

Сообщений: 99
Благодарностей: 4
Полезность: 38

Цитата(serfreeman1337 @ 16.04.2017, 11:20) *

посоветуй в чём может беда?
с правами доступа всё в порядке.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя joker_burn
сообщение 16.4.2017, 14:43
Сообщение #2190


Стаж: 15 лет
Город: Казань

Сообщений: 99
Благодарностей: 4
Полезность: 38

Если я правильно понимаю, то проблема как раз кроется в системе, как у меня на win 2003))))
Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя best101
сообщение 16.4.2017, 20:25
Сообщение #2191


Стаж: 10 лет

Сообщений: 155
Благодарностей: 6
Полезность: < 0

А что, ещё кто то держит сервера на "домашнем ПК"?
Наверно хороший пинг у игроков, задержки нет...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя joker_burn
сообщение 17.4.2017, 12:17
Сообщение #2192


Стаж: 15 лет
Город: Казань

Сообщений: 99
Благодарностей: 4
Полезность: 38

Цитата(best101 @ 16.4.2017, 21:25) *
А что, ещё кто то держит сервера на "домашнем ПК"?
Наверно хороший пинг у игроков, задержки нет...

это дедик с выделенным каналом интернета, расположение в серверной стойке у самого провайдера))) поэтому не торопись в выводами derisive.gif
!. на счёт пинга вообще минимальный для клиентов из своей сети, по РФ 20-40 зависит от удаленности

Отредактировал: joker_burn, - 17.4.2017, 12:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя joker_burn
сообщение 17.4.2017, 14:42
Сообщение #2193


Стаж: 15 лет
Город: Казань

Сообщений: 99
Благодарностей: 4
Полезность: 38

взяло с гитхаба
Прикрепленный файл  rehlds_dist_3.0.0.518_dev.zip ( 7,21 мегабайт ) Кол-во скачиваний: 4

возможно hlds.exe от линукса как то переписать разрядность?

Отредактировал: joker_burn, - 17.4.2017, 16:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ChillyChill
сообщение 19.4.2017, 23:13
Сообщение #2194
Стаж: 9 лет 1 месяц

Сообщений: 6
Благодарностей: 1
Полезность: 0

Добрый день! Подскажите пож-та,

Как в меню бонусов добавить броню?
aes 0.4.7
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Acer
сообщение 21.4.2017, 12:36
Сообщение #2195


Стаж: 9 лет 3 месяца
Город: Chicago

Сообщений: 304
Благодарностей: 55
Полезность: 35

// Координаты информера(x y). Вводить два числа в одних кавычках!
aes_hud_info_pos "0.01 0.13"

Скажите координаты, чтоб информёр был ниже радара.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 4ertik
сообщение 21.4.2017, 12:51
Сообщение #2196
Стаж: 15 лет

Сообщений: 120
Благодарностей: 49
Полезность: 56

Цитата(Acer @ 21.4.2017, 13:36) *
// Координаты информера(x y). Вводить два числа в одних кавычках!
aes_hud_info_pos "0.01 0.13"

Скажите координаты, чтоб информёр был ниже радара.

Координация + Скриншот
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Acer
сообщение 21.4.2017, 14:30
Сообщение #2197


Стаж: 9 лет 3 месяца
Город: Chicago

Сообщений: 304
Благодарностей: 55
Полезность: 35

Так ну и последняя проблема, поставил statsx от аес, по началу всё ок было, теперь вот:
Problem


И дело не в ланге, перевод всё есть. Я его даже не трогал. Ну на всякий случай прикреплю.
Прикрепленные файлы:
Прикрепленный файл  statsx_aes.txt ( 5,81 килобайт ) Кол-во скачиваний: 28
Прикрепленный файл  aes_statsx_cstrike.sma ( 24,46 килобайт ) Кол-во скачиваний: 8
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
podbot
сообщение 21.4.2017, 17:24
Сообщение #2198
Стаж: 11 лет

Сообщений: 1242
Благодарностей: 366
Полезность: < 0

Acer, 1.8.2 компиль
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Acer
сообщение 21.4.2017, 18:42
Сообщение #2199


Стаж: 9 лет 3 месяца
Город: Chicago

Сообщений: 304
Благодарностей: 55
Полезность: 35

Цитата(podbot @ 21.4.2017, 17:24) *
Acer, 1.8.2 компиль

поподробнее пожалуйста
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
podbot
сообщение 22.4.2017, 1:46
Сообщение #2200
Стаж: 11 лет

Сообщений: 1242
Благодарностей: 366
Полезность: < 0

Acer, скачай amxx 1.8.2 и скомпиль, потом закинь на сервер, ссылку дать на 1.8.2?
хотя, ладно, сразу распишу, делать нефиг ща всеравно))
качаешь
закидываешь туда инклуды от AES (Это Объяснить?) это те файлы с расширением .inc что в папке с AES
компилируешь
закидываешь на сервер

Отредактировал: podbot, - 22.4.2017, 1:49
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
124 страниц V  « 109 110 111 ... 122 123 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: