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

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

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

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

124 страниц V  « 16 17 18 ... 122 123 »

Advanced Experience System

, Система опыта и рангов.
serfreeman1337
сообщение 28.4.2014, 10:11
Сообщение #321
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Тогда нужно больше инфы. Какая система хранения опыта? По какому ключу идет сохранение? Нет ли еррор логов?
Единственный случай с прекращением учета опыта при смене ника может случится при отсутствии связи с БД MySQL.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
staff2517
сообщение 28.4.2014, 12:06
Сообщение #322
Стаж: 12 лет

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

Цитата(serfreeman1337 @ 28.4.2014, 10:11) *
Тогда нужно больше инфы. Какая система хранения опыта? По какому ключу идет сохранение? Нет ли еррор логов?
Единственный случай с прекращением учета опыта при смене ника может случится при отсутствии связи с БД MySQL.

Ерор логов нету
aes.cfg
// -- aes_main.amxx -- //

// Настройка сохранения статистики.
// 0 - не сохранять.
// 1 - сохранять в файл /amxmodx/data/aes/stats.ini
// 2 - использовать SQL базу данных
aes_db_type "0"

// Удаление неактивных игроков.
// Количество дней, через которые из статистики будут удаляться неактивные игроки.
// Значение 0 выключает эту возможность.
aes_db_prune_days "0"

// Ключ сохранения. По какому параметру вести учет игроков?
// 0 - Ник
// 1 - SteamID
// 2 - IP
aes_track_mode "0"

// Настройка званий.
// Какое количество опыта должен набрать игрок для определенного звания.
// Первая цифра отвечает за количество опыта для звания "Рядовой", вторая за звания "Ефрейтор" и так далее.
// Первая цифра соответственно должна быть равна НУЛЮ!
// Писать в кавычках!
// ВАЖНО! Сколько Вы здесь напишите чисел, столько званий у Вас и будет! Не забудьте отредактировать ланг файл, под Ваше количество званий!
aes_level "0 20 40 60 100 150 200 300 400 600 1000 1500 2100 2700 3400 4200 5100 5900 7000 10000"

// Задержка перед загрузкой опыта игрока.
// Увеличьте это значение при проблемах с загрузкой опыта.
aes_load_delay "0.0"

// Сохранение бонусных очков.
aes_save_bonus "1"

// -- aes_exp_cstrike.amxx -- //

// Сколько опыта будет даваться за одно убийство
aes_xp_frag "1"
// Сколько опыта будет давать за убийство хедшотов
aes_xp_hs "2"
// Кол-во опыта за установку бомбы
aes_xp_c4_plant "1"
// Кол-во опыта за подрыв бомбы
aes_xp_c4_explode "3"
// Кол-во опыта за дефьюз бомбы
aes_xp_c4_defused "4"
// Опыт за вывод заложников
aes_xp_hostage_got "1"
// Опыт за спасение заложников
aes_xp_hostage_rescue "1"
// Опыт за спасение как V.I.P.
aes_xp_vip_escaped "4"
// Опыт за убийство V.I.P.
aes_xp_vip_killed "1"
// Опыт за смерть. Используйте отрицательные значения чтобы вычитать.
aes_xp_death "0"

// Минимальное кол-во игроков, при которых будет начисляться бонус за выполнение действий карты.
// Действии с заложниками, бомбой и VIP.
aes_xp_goal_min_players "4"

// Включен режим FFA
aes_xp_ffa "0"

// Бонусы за количество фрагов, убийств в голову и прочего.
// Формат записи: "<количество_фрагов> <количество_бонуса_за_них> <количество_фрагов> <количество_бонуса_за_них> и т.д."
// Бонусы дают доступ к меню /anew
// 0 - выключить.

// Просто за фраги
aes_anew_frags "6 1 8 1 11 1 15 2 20 2"
// За убийство в голову
aes_anew_hs "5 1 8 1 10 2 14 2 18 2"
// За убийство с ножа
aes_anew_knife "1 1 2 1 3 1 4 1"
// За убийство с гранаты
aes_anew_he "2 1 3 1 4 1 5 2"

// Когда сбрасывать кол-фрагов и т.п.
// 0 - никогда
// 1 - при смерти
aes_anew_reset "1"

// Количество выдаваемых бонусов игроку за повышению по званию.
aes_bonus_levelup "2"

// -- aes_informer.amxx -- //

// Показывает сообщение о новом уровне. 1 - показывать игроку. 2 - только всем. 0 - отключить сообщение.
aes_newlevel_chat "2"

// Через сколько секунд обновлять hud сообщения?
aes_hud_update "1.5"

// По стандарту показывать информер? (Hud сообщение с текущим званием)
aes_hud_info_default "1"

// Тип информера. 1 - Hud. 0 - выключить
aes_hud_info_type "1"

// Цвет информера(r g b). Вводить три числа в одних кавычках!
// Или укажите random для задания случайного цвета.
aes_hud_info_color "255 255 0"

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

// Тип сообщения /aNew. 1 - Hud. 0 - выключить
aes_hud_anew_type "1"

// Цвет сообщения /aNew (r g b). Вводить три числа в одних кавычках!
aes_hud_anew_color "255 255 0"

// Координаты сообщения /aNew (x y). Вводить два числа в одних кавычках!
aes_hud_anew_pos "-1.0 0.80"

// Отображать информер наблюдателям.
aes_hud_info_deafult_d "1"

// Цвет информера для наблюдателя.
// random - случайный цвет.
aes_hud_info_color_d "255 255 0"

// Позиция информера для наблюдателя.
aes_hud_info_pos_d "0.01 0.15"

// Режим форматирования.
aes_informer_tpl "0"

// -- aes_bonus_system.amxx -- //

// Вкл/Выкл системы бонусов
aes_bonus_enable "1"

// До какого раунда не выдавать все бонусы, включая /anew
aes_bonus_firstround "2"

// Ограничение времени использования команды /anew.
// 0.0 - без ограничения.
// больше 0.0 - задать своё время.
// -1.0 - использовать mp_buytime квар.
aes_bonus_time "-1.0"

// Список карт, на которых не будут действовать все бонусы.
aes_lockmap "awp_india"
aes_lockmap "awp_india2"
aes_lockmap "aim_headshot"
aes_lockmap "aim_map"
aes_lockmap "aim_usp"
aes_lockmap "aim_glock"
aes_lockmap "$2000$"
aes_lockmap "$3000$"

// -- aes_main.amxx -- //
// > SQL < //

// Настройки соединения с SQL сервером

// Хост для подключения.
aes_sql_host "localhost"

// Пользователь.
aes_sql_user "root"

// Пароль.
aes_sql_password ""

// База данных.
aes_sql_db "amxx"

// Таблица.
aes_sql_table "aes_stats"

// Максимальное кол-во неудачных попыток обращения к БД,
// после которых плагин перестает связываться с БД до конца карты.
aes_sql_maxfail "10"

// Драйвер БД.
// mysql или sqlite.
aes_sql_driver "mysql"

plugins-aes.ini
; Advanced Experience System
; by serfreeman1337

; Primary plugin
aes_main.amxx

; Experience collectors
aes_exp_cstrike.amxx ; CStrike and CZero support

; Informers
aes_informer.amxx ; HUD and chat informer

; Admin tools
;aes_exp_editor.amxx ; Allows set player experience via menu or console cmds

; Bonus system
aes_bonus_system.amxx ; Core bonus plugin
aes_bonus_cstrike.amxx ; CStrike bonuses


Отредактировал: staff2517, - 28.4.2014, 12:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 28.4.2014, 14:25
Сообщение #323
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Вот теперь понятно. Проблема с обновлением опыта при использовании csstats.dat. Держи фикс.
При проблемах с компиляцией попробую заюзать фикснутый colorchat.inc.
Прикрепленные файлы:
Прикрепленный файл  aes_exp_cstrike.sma ( 10,22 килобайт ) Кол-во скачиваний: 31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя angelo4ek
сообщение 28.4.2014, 20:40
Сообщение #324
Стаж: 12 лет

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

serfreeman1337,
а если я хоч добавить скилов и изменить их перерасчет?
это нужно лезть в .sma?
и если да, то насколько я понял, это нужно делать в начале исходника?

Отредактировал: angelo4ek, - 28.4.2014, 20:41
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 9art
сообщение 28.4.2014, 20:46
Сообщение #325


Стаж: 12 лет

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

angelo4ek,
// ВАЖНО! Сколько Вы здесь напишите чисел, столько званий у Вас и будет! Не забудьте отредактировать ланг файл, под Ваше количество званий!
aes_level "0 20 40 60 100 150 200 300 400 600 1000 1500 2100 2700 3400 4200 5100 5900 7000 10000"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя angelo4ek
сообщение 28.4.2014, 21:36
Сообщение #326
Стаж: 12 лет

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

9art,
Вы меня не поняли.
я скачал дополнение "aes_statsx_cstrike_v0.2"
и там есть скилы, если я хочу увелиить количество скилов и что бы подругом считало(другие значение, более вышие)
пример
[L- до 60]
[LS 60]
[L+ 75]
[M- 85]
[MS 100]
[M+ 115]
[H- 130]
[HS 140]
[H+ 150]
[P- 165]
[PS 180]
[P+ 195]
[G 210]

п.с:Извините, я наверное не правильно выразелся))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 28.4.2014, 21:37
Сообщение #327


Иконка группы

Стаж: 16 лет

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

angelo4ek,
Надо подправить css файл (если не ошибаюсь) чтобы были иконки скила


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя angelo4ek
сообщение 28.4.2014, 21:52
Сообщение #328
Стаж: 12 лет

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

Fred Perry,
думаю что не надо, так как, когда я станавливал дополнение, там не надо было заменять или редактировать его.
скорее всего это дело в самом исходнике, подпарвить скилы и их наименование, и мб HTML код.
я хз... потом и спрашиваю, что именно надо подправить)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 28.4.2014, 22:24
Сообщение #329


Иконка группы

Стаж: 16 лет

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

angelo4ek,
Я просто не особо понял о чем ты спрашиваешь.


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
staff2517
сообщение 28.4.2014, 22:36
Сообщение #330
Стаж: 12 лет

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

Цитата(serfreeman1337 @ 28.4.2014, 14:25) *
Вот теперь понятно. Проблема с обновлением опыта при использовании csstats.dat. Держи фикс.
При проблемах с компиляцией попробую заюзать фикснутый colorchat.inc.

Не компилируется даже с колорчатом
Если можете скомпилируйте под amxmodx 1.8.2

Отредактировал: staff2517, - 29.4.2014, 10:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
staff2517
сообщение 29.4.2014, 8:13
Сообщение #331
Стаж: 12 лет

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

Скачал amxmodx 1.8.3 он скомпилил плагин, я закинул его на сервер и вообще у всех игроков пишет (статистика не учитываться)
Когда фикс колорчата закинул в компилятор то вовсе не компилируется
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
staff2517
сообщение 29.4.2014, 10:25
Сообщение #332
Стаж: 12 лет

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

Добавьте пожалуйста проверку на рестарты в плагин aes_bonus_system.amxx
Случилось следующие:
У меня на сервере авторестарт 50 сек за эти 50 сек мы сыграли 2 раунда + дал фраг с гранаты потом произошел рестарт и я смог взять бонусы с первого раунда :-(
aes_bonus_firstround

// До какого раунда не выдавать все бонусы, включая /anew
aes_bonus_firstround "2"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя angelo4ek
сообщение 29.4.2014, 10:45
Сообщение #333
Стаж: 12 лет

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

serfreeman1337,
Можно как-то это скомпелировать, а то я в стандартном не могу, ошибок много выдает.

aes_statsx_cstrike.sma
#include <amxmodx>
#include <csx>
#include <csstats>

#include <colorchat>
#include <aes_main>

#define PLUGIN "AES: StatsX"
#define VERSION "0.2"
#define AUTHOR "serfreeman1337"

/* - CVARS - */
enum _:cvars {
CVAR_MOTD_DESC,
CVAR_ASTATS_DESC,
CVAR_CHAT_DESC,
CVAR_SKILL,
CVAR_CSSTATS,
CVAR_ASTATS_GLOBAL,
CVAR_ALIST_CNT
}

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",
"HTML_HEAD",
"HTML_CHEST",
"HTML_STOMACH",
"HTML_LARM",
"HTML_RARM",
"HTML_LLEG",
"HTML_RLEG"
}

new g_skill_opt[sizeof g_skill_letters]
new chatDescCap[10],motdDescCap[10],aStatsDescCap[10]
new useCsstats,useAstatsGlobal

#define BUFF_LEN 1535

new theBuffer[BUFF_LEN + 1] = 0

#define MENU_LEN 512

new g_MenuStatus[33][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 plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say","Say_Catch")
register_clcmd("say_team","Say_Catch")

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

cvar[CVAR_MOTD_DESC] = register_cvar("aes_statsx_top","*abcfij")
cvar[CVAR_CHAT_DESC] = register_cvar("aes_statsx_rank","bcij")
cvar[CVAR_ASTATS_DESC] = register_cvar("aes_statsx_astats","aj")

// Настройка скилла. Значения схожи со значениями эффективности.
// Значения: L- L L+ M- M M+ H- H H+ P- P P+ G(Low Middle High Pro)
cvar[CVAR_SKILL] = register_cvar("aes_statsx_skill","50 60 75 85 100 115 130 140 150 165 180 195 210")

// Использовать расчет опыта и уровня на основании статистики из csstats.dat
// в случае если не удалось получить опыт из AES
cvar[CVAR_CSSTATS] = register_cvar("aes_statsx_use_csstats","1")

cvar[CVAR_ASTATS_GLOBAL] = register_cvar("aes_statsx_astats_global","1")
cvar[CVAR_ALIST_CNT] = register_cvar("aes_statsx_alist","10")

// register_dictionary_colored("statsx.txt")
register_dictionary_colored("statsx_aes.txt")

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

public plugin_cfg(){
new levelString[36],stPos,ePos,rawPoint[20],cnt

get_pcvar_string(cvar[CVAR_MOTD_DESC],motdDescCap,9)
trim(motdDescCap)

get_pcvar_string(cvar[CVAR_CHAT_DESC],chatDescCap,9)
trim(chatDescCap)

get_pcvar_string(cvar[CVAR_ASTATS_DESC],aStatsDescCap,9)
trim(aStatsDescCap)

get_pcvar_string(cvar[CVAR_SKILL],levelString,35)

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

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

stPos += ePos + 1

cnt++

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

useCsstats = get_pcvar_num(cvar[CVAR_CSSTATS])
useAstatsGlobal = get_pcvar_num(cvar[CVAR_ASTATS_GLOBAL])
}

// Ловим сообщения чата
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))
return RankSay(id)
if(containi(msg[1],"top") == 0){
replace(msg,190,"/top","")

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

if(!strcmp(msg[1],"statsme",1))
return StatsMeSay(id,id)

if(!strcmp(msg[1],"stats",1)){
arrayset(g_MenuStatus[id],0,2)
return ShowStatsMenu(id,0)
}

if(!strcmp(msg[1],"astats",1)){
return ShowAStats(id)
}

if(!strcmp(msg[1],"alist",1)){
return ShowAList(id)
}
}

return PLUGIN_CONTINUE
}

public RankSay(id){
if(!SayRank){
client_print_color(id,0,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

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

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

rank = get_user_stats(id,stats,bh)

len += formatex(message[len],190 - len,"%L ",id,"AES_YOUR_RANK_IS",rank,get_statsnum())

parse_rank_desc(id,message,190,len,stats)

client_print_color(id,print_chat,message)

return PLUGIN_HANDLED
}

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

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

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

// добавляем в сообщение информацию в соотв. с флагами
switch(theChar[0]){
case 'a':{ // ничего
}
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 sskill[4]
get_skill(stats,sskill,3)
len += formatex(msg[len],maxlen - len,"%L ^3%s^1",id,"STATS_SKILL",sskill)

}
case 'j':{ // ранг и опыт
new aStats[AES_ST_END],level[42],lev

if(aes_get_player_stats(id,aStats)){
aes_get_level_name(aStats[AES_ST_LEVEL],level,31,id)
lev = strlen(level)
lev += formatex(level[lev],41-lev,"(%d)",aStats[AES_ST_EXP])
}
else // без ранга
formatex(level,31,"^4---^1")

len += formatex(msg[len],maxlen - len,"%L ^3%s^1",id,"STATS_RANK",level)
}
}

theChar[0] = 0
cnt ++
}

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

// Формирование окна /rankstats
// id - кому показывать
// stId - кого показывать
public RankStatsSay(id,stId){
if(!SayRankStats){
client_print_color(id,0,"%L %L",id,"STATS_TAG", id,"DISABLED_MSG")

return PLUGIN_HANDLED
}

new len,stats[8],aStats[AES_ST_END],bh[8],tt[64]
new name[32],skilll[32],levelName[42]

theBuffer[0] = 0

formatex(tt,63,"%L",id,"RANKSTATS_TITLE")

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

new rank = get_user_stats(stId,stats,bh)

new rt = get_skill(stats,skilll,31)
formatex(skilll,31,"%L",id,"HTML_SKILL_VALUE",g_skill_class[rt])

if(id == stId)
formatex(name,31,"%L",id,"HTML_YOU")
else{
get_user_name(stId,name,31)
formatex(levelName,31," ^"%s^"",name)
add(tt,63,levelName)
}

aes_get_player_stats(stId,aStats)
aes_get_level_name(aStats[AES_ST_LEVEL],levelName,41,id)

len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"HTML_RANKSTATS_BODY",
id,"HTML_RANK_IS",name,rank,get_statsnum())

// vot eto formatirovanie
len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"HTML_RANKSTATS_HEADER",
id,"HTML_KILLS",stats[STATS_KILLS],stats[STATS_HS],
id,"HTML_DEATHS",stats[STATS_DEATHS],
id,"HTML_HITS",stats[STATS_HITS],
id,"HTML_SHOTS",stats[STATS_SHOTS],
id,"HTML_DMG",stats[STATS_DAMAGE],
id,"HTML_ACC",accuracy(stats),
id,"HTML_EFF",effec(stats),
id,"HTML_SKILL",skilll,
id,"HTML_ARMYRANKS",levelName,aStats[AES_ST_EXP])

len += formatex(theBuffer[len],1536-len,"%L",id,"HTML_RANKSTATS_HITS")

new theSwitcher

for (new i = 1; i < 8; i++)
{
len += formatex(theBuffer[len],BUFF_LEN-len,"%L",
id,"HTML_RANKSTATS_HITSTABLE",
theSwitcher ? " class=b" : "",
id,BODY_PART[i],bh[i])

theSwitcher = theSwitcher ? false : true
}

// mne tak nadoel etot kod sad.gif
for(new i = 0 ; i < 2; ++i){
len += formatex(theBuffer[len],BUFF_LEN-len,"%L",
id,"HTML_RANKSTATS_BLANK",
theSwitcher ? " class=b" : "")

theSwitcher = theSwitcher ? false : true
}

show_motd(id,theBuffer,tt)

return PLUGIN_HANDLED
}

get_skill(stats[8],skill[],skilllen,&skillexp = 0){
new sk = floatround(effec(stats))

for(new i;i < sizeof g_skill_opt;++i){
if(g_skill_opt[i] > sk || i == sizeof g_skill_opt - 1){
copy(skill,skilllen,g_skill_letters[i])
return i
}
}

return 0
}

// Формирование окна /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

theBuffer[0] = 0

new len,tt[64]
formatex(tt,63,"%L",id,"HTML_PLAYER_TOP")

//len += formatex(buffer[len],1535 - len,"<html><head>")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L%L",id,"HTML_META",id,"HTML_STYLE")
//len += formatex(buffer[len],1535 - len,"</head><body>")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"HTML_TOP_BODY",id,"HTML_PLAYER_TOP")

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

new name[32],uid[36],stats[8],bh[8]

new size = min(get_statsnum(),Pos)
new i

new Array:uids = ArrayCreate(36)
new Array:ustats = ArrayCreate(8)
new Array:names = ArrayCreate(32)
new Array:poss = ArrayCreate(1)

// Если ваш сервер не может поднять создание 4ех динамических массивов
// Удалите AES и больше никогда не ставьте его

new rank,lst

for(i = size - MAX_TOP < 0 ? 0 : size - MAX_TOP; i < size ; i++){
rank = get_stats(i,stats,bh,name,31,uid,35)

ArrayPushCell(poss,rank ? rank : lst + 1)
ArrayPushString(uids,uid)
ArrayPushString(names,name)
ArrayPushArray(ustats,stats)

lst = rank
}

len = parse_top_desc_body(id,theBuffer,BUFF_LEN,len,uids,ustats,names,poss,false)
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"HTML_CLOSE")

//len += formatex(buffer[len],1562 - len,"</body></html")

show_motd(id,theBuffer,tt)

return PLUGIN_HANDLED
}

// Формируем список игроков в таблице для топа игроков
parse_top_desc_body(id,buff[],maxlen,len,Array:uids,Array:ustats,Array:names,Arr
ay:pos,bool:isAstats){
new tmp[256],len2,tmp2[96],name[32],stats[8],bh[8],st[AES_ST_END],theChar[4],rank,bo
ol:theSwitcher

new Array:aStats,players[32],pCount

if(!isAstats){
aStats = aes_get_stats(uids)
pCount = ArraySize(names)
}
else{
get_players(players,pCount)
SortCustom1D(players,pCount,"AStats_Sort_Function",players,pCount)
}

// неудалось получить статистику или недостаточно данных
// сносим массив и пользуемся стандартной статистикой для формирования званий
if(aStats != Invalid_Array && ArraySize(aStats) < ArraySize(names) && !isAstats){
ArrayDestroy(aStats)

aStats = Invalid_Array
}

for(new i;i < pCount ;++i){
arrayset(st,-1,AES_ST_END)

if(!isAstats){
ArrayGetString(names,i,name,31)
ArrayGetArray(ustats,i,stats)
rank = ArrayGetCell(pos,i)
}else{
get_user_name(players[i],name,31)
rank = useAstatsGlobal ? get_user_stats(players[i],stats,bh) : get_user_wstats(players[i],0,stats,bh)
aes_get_player_stats(players[i],st)
}

if(!isAstats && aStats != Invalid_Array)
ArrayGetArray(aStats,i,st)

new fCnt = isAstats != true ? strlen(motdDescCap) : strlen(aStatsDescCap)

for(new z = 0; z < fCnt ; ++z){
tmp2[0] = 0
theChar[0] = isAstats != true ? motdDescCap[z] : aStatsDescCap[z]

switch(theChar[0]){
case '*':{
formatex(tmp2,31,"%d",rank)
}
case 'a':{
if(!isAstats)
ArrayGetString(names,i,tmp2,31)
else
copy(tmp2,95,name)

replace_all(tmp2,95,"<","&lt")
replace_all(tmp2,95,">","&gt")
}
case 'b':{
formatex(tmp2,31,"%d",stats[STATS_KILLS])
}
case 'c':{
formatex(tmp2,31,"%d",stats[STATS_DEATHS])
}
case 'd':{
formatex(tmp2,31,"%d",stats[STATS_HITS])
}
case 'e':{
formatex(tmp2,31,"%d",stats[STATS_SHOTS])
}
case 'f':{
formatex(tmp2,31,"%d",stats[STATS_HS])
}
case 'g':{
formatex(tmp2,31,"%.2f%%",accuracy(stats))
}
case 'h':{
formatex(tmp2,31,"%.2f%%",effec(stats))
}
case 'i':{
new rt = get_skill(stats,tmp2,31)
formatex(tmp2,31,"%L",id,"HTML_SKILL_VALUE",g_skill_class[rt])
}
case 'j':{
new lvl[64]

// используем статистику из csstats.dat
if(st[AES_ST_EXP] < 0){
if(useCsstats){
new stats2[4]

if(!isAstats)
get_stats2(rank - 1,stats2)
else
get_user_stats2(players[i],stats2)

st[AES_ST_EXP] = aes_get_exp_for_stats(stats,stats2)
st[AES_ST_LEVEL] = aes_get_level_for_exp(st[AES_ST_EXP])
}else
st[AES_ST_LEVEL] = -1

}

if(st[AES_ST_LEVEL] > -1){
aes_get_level_name(st[AES_ST_LEVEL],tmp2,95,id)
formatex(lvl,63,"%s (%d)",tmp2,st[AES_ST_EXP])
}else
formatex(lvl,63,"%L",id,"HTML_NOT_TRACKED")

len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_BODY_CELL",lvl)

tmp2[0] = 0
theChar[0] = 0

continue
}
}

// выводим отформатированные данные
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_BODY_CELL",tmp2)

tmp2[0] = 0
theChar[0] = 0
}

len2 = 0
len += formatex(buff[len],maxlen-len,"%L",id,"HTML_BODY_ROW",theSwitcher ? " class=b" : " class=q",tmp)

theSwitcher = theSwitcher ? false : true
}

if(!isAstats){
ArrayDestroy(ustats)
ArrayDestroy(names)
ArrayDestroy(pos)

if(aStats != Invalid_Array)
ArrayDestroy(aStats)
}

return len
}

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

lCnt = isAstats != true ? strlen(motdDescCap) : strlen(aStatsDescCap)

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

switch(theChar[0]){
case '*':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_POS")
}
case 'a':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_PLAYER")
}
case 'b':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_KILLS")
}
case 'c':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_DEATHS")
}
case 'd':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_HITS")
}
case 'e':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_SHOTS")
}
case 'f':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_HS")
}
case 'g':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_ACC")
}
case 'h':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_EFF")
}
case 'i':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_SKILL")
}
case 'j':{
len2 += formatex(tmp[len2],255-len2,"%L",id,"HTML_HEADER_CELL","",id,"HTML_ARMYRANKS")
}
}

theChar[0] = 0
}

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

// Личная статистка за карту
// Команда /statsme

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

return PLUGIN_HANDLED
}

new len,stats[8],bh[8],wpnId,wpnName[32],tt[64]

formatex(tt,63,"%L",id,"STATS_TITLE")

if(id != stId){
new name[32],nameQ[34]
get_user_name(stId,name,31)

formatex(nameQ,33," ^"%s^"",name)

add(tt,63,nameQ)
}

theBuffer[0] = 0

get_user_wstats(stId,0,stats,bh)

len += formatex(theBuffer[len],BUFF_LEN-len,"%L%L",id,"HTML_META",id,"HTML_STYLE")
len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"HTML_STATS_BODY")

len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"HTML_STATS_HEADER1",
id,"HTML_KILLS",stats[STATS_KILLS],
id,"HTML_HS",stats[STATS_HS],
id,"HTML_DEATHS",stats[STATS_DEATHS],
id,"HTML_HITS",stats[STATS_HITS],
id,"HTML_SHOTS",stats[STATS_SHOTS],
id,"HTML_DMG",stats[STATS_DAMAGE],
id,"HTML_ACC",accuracy(stats),
id,"HTML_EFF",effec(stats))

len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"HTML_STATS_HEADER2",
id,"HTML_WEAPON",
id,"HTML_KILLS",
id,"HTML_DEATHS",
id,"HTML_HITS",
id,"HTML_SHOTS",
id,"HTML_DMG",
id,"HTML_ACC")

new theTrigger

for (wpnId = 1; wpnId < xmod_get_maxweapons() && BUFF_LEN-len > 0 ; wpnId++)
{
if (get_user_wstats(stId, wpnId, stats,bh))
{
xmod_get_wpnname(wpnId,wpnName,31)

len += formatex(theBuffer[len],BUFF_LEN-len,"%L",id,"HTML_STATS_TABLE",
theTrigger ? " class=b" : " class=q",
wpnName,
stats[STATS_KILLS],
stats[STATS_DEATHS],
stats[STATS_HITS],
stats[STATS_SHOTS],
stats[STATS_DAMAGE],
accuracy(stats))

theTrigger = theTrigger ? false : true
}
}

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

show_motd(id,theBuffer,tt)

return PLUGIN_HANDLED
}

// формирование меню для просмотра статистики игроков
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
}

// вариант просмотра статистики
menuLen += formatex(menuText[menuLen],MENU_LEN - 1 - menuLen,"^n^n\r%d.\w %L",8,id,g_MenuStatus[id][0] ? "MENU_RANK" : "MENU_STATS")
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
}

g_MenuStatus[id][0] ? RankStatsSay(id,usrIndex) : StatsMeSay(id,usrIndex)

ShowStatsMenu(id,g_MenuStatus[id][1])
}
case 7:{
g_MenuStatus[id][0] = g_MenuStatus[id][0] ? 0 : 1
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
}

// Статистика текущих игроков
public ShowAStats(id){
theBuffer[0] = 0

new len,tt[64]
formatex(tt,63,"%L",id,"THE_STATS")

//len += formatex(buffer[len],1535 - len,"<html><head>")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L%L",id,"HTML_META",id,"HTML_STYLE")
//len += formatex(buffer[len],1535 - len,"</head><body>")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"HTML_TOP_BODY",id,"THE_STATS")

len += parse_top_desc_header(id,theBuffer,BUFF_LEN,len,true)

len = parse_top_desc_body(id,theBuffer,BUFF_LEN,len,Invalid_Array,Invalid_Array,Invali
d_Array,Invalid_Array,true)
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"HTML_CLOSE")

//len += formatex(buffer[len],1562 - len,"</body></html")

show_motd(id,theBuffer,tt)

return PLUGIN_HANDLED
}

public AStats_Sort_Function(elem1,elem2){
new st1[AES_ST_END],st2[AES_ST_END]

aes_get_player_stats(elem1,st1)
aes_get_player_stats(elem2,st2)

if(st1[AES_ST_EXP] > st2[AES_ST_EXP])
return -1
else if(st1[AES_ST_EXP] < st2[AES_ST_EXP])
return 1

return 0
}

// Страница со списком званий
public ShowAList(id){
theBuffer[0] = 0

new len,len2,tt[64],buff[BUFF_LEN]
formatex(tt,63,"%L",id,"THE_RANKS")

//len += formatex(buffer[len],1535 - len,"<html><head>")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L%L",id,"HTML_META",id,"HTML_STYLE")
//len += formatex(buffer[len],1535 - len,"</head><body>")
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"HTML_TOP_BODY",id,"THE_RANKS")

new aStats[AES_ST_END],levelName[64],bool:theSwitcher

aes_get_player_stats(id,aStats)

new stPos = max(0,aStats[AES_ST_LEVEL] - (get_pcvar_num(cvar[CVAR_ALIST_CNT])/2))
new enPos = max(10,aStats[AES_ST_LEVEL] + (get_pcvar_num(cvar[CVAR_ALIST_CNT])/2))

enPos = min(enPos,aes_get_max_level())

len2 += formatex(buff[len2],BUFF_LEN-len2,"%L",id,"HTML_HEADER_CELL","",id,"STATS_RANK")
len2 += formatex(buff[len2],BUFF_LEN-len2,"%L",id,"HTML_HEADER_CELL","",id,"STATS_EXP")

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

buff[0] = 0
len2 = 0

for(new i = stPos; i < enPos ; ++i){
aes_get_level_name(i,levelName,63,id)

len2 += formatex(buff[len2],BUFF_LEN - len2,"%L",id,"HTML_BODY_CELL",levelName)

if(!i)
num_to_str(0,levelName,63)
else
num_to_str(aes_get_exp_to_next_level(i - 1),levelName,63)

len2 += formatex(buff[len2],BUFF_LEN - len2,"%L",id,"HTML_BODY_CELL",levelName)

if(i != aStats[AES_ST_LEVEL])
len += formatex(theBuffer[len],BUFF_LEN - len,"%L",id,"HTML_BODY_ROW",theSwitcher ? " class=b" : " class=q",buff)
else
len += formatex(theBuffer[len],BUFF_LEN - len,"<u>%L</u>",id,"HTML_BODY_ROW",theSwitcher ? " class=b style=^"text-decoration: underline;^"" : " class=q style=^"text-decoration: underline;^"",buff)

theSwitcher = theSwitcher ? false : true

buff[0] = 0
len2 = 0
}

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

show_motd(id,theBuffer,tt)

return PLUGIN_HANDLED
}

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

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

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

return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS]))
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 29.4.2014, 12:39
Сообщение #334
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Цитата(angelo4ek @ 29.4.2014, 0:36) *
9art,
Вы меня не поняли.
я скачал дополнение "aes_statsx_cstrike_v0.2"
и там есть скилы, если я хочу увелиить количество скилов и что бы подругом считало(другие значение, более вышие)


Это делается в исходнике:
Код:
new const g_skill_letters[][] = {
"L-",
"L",
"L+",
"M-",
"M",
"M+",
"H-",
"H",
"H+",
"P"
}

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


g_skill_class - это для HTML CSS.
g_skill_letters - это для чата.

Больше 100 скилла не может быть, там сейчас определяется банальное соотношение K/D для скилла.

@staff2517, есть еррор логи?

Выкладывайте ошибки компиляции чтобы я знал что пошло не так и как помочь.
Компилировать за вас я не буду.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
staff2517
сообщение 29.4.2014, 12:49
Сообщение #335
Стаж: 12 лет

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

Цитата(serfreeman1337 @ 28.4.2014, 14:25) *
Вот теперь понятно. Проблема с обновлением опыта при использовании csstats.dat. Держи фикс.
При проблемах с компиляцией попробую заюзать фикснутый colorchat.inc.

вы сами пробовали компилировать ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 29.4.2014, 12:51
Сообщение #336
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Код
Welcome to the AMX Mod X 1.8.3-dev+9815050 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

Header size:           1568 bytes
Code size:            10932 bytes
Data size:             4268 bytes
Stack/heap size:      16384 bytes; estimated max. usage=555 cells (2220 bytes)
Total requirements:   33152 bytes
Done.


Я бы не постил, если бы это не компилировалось.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя angelo4ek
сообщение 29.4.2014, 13:04
Сообщение #337
Стаж: 12 лет

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

serfreeman1337,
я сделал вот так.
Код:

/* - 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"
}

и вот так
Код:
// Значения: L- L L+ M- M M+ H- H H+ P- P P+ G(Low Middle High Pro)
cvar[CVAR_SKILL] = register_cvar("aes_statsx_skill","50 60 75 85 100 115 130 140 150 165 180 195 210")


Это правильно?
и при компеляции выдет ошибки


Отредактировал: angelo4ek, - 29.4.2014, 13:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 9art
сообщение 29.4.2014, 13:10
Сообщение #338


Стаж: 12 лет

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

Цитата(angelo4ek @ 29.4.2014, 15:04) *
serfreeman1337,
и вот так
Код:
// Значения: L- L L+ M- M M+ H- H H+ P- P P+ G(Low Middle High Pro)
cvar[CVAR_SKILL] = register_cvar("aes_statsx_skill","50 60 75 85 100 115 130 140 150 165 180 195 210")

Цитата
Больше 100 скилла не может быть, там сейчас определяется банальное соотношение K/D для скилла.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя angelo4ek
сообщение 29.4.2014, 13:12
Сообщение #339
Стаж: 12 лет

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

9art,
я брал значеня с фаст капа

Границы скилла:

[L- до 60]
[LS 60]
[L+ 75]
[M- 85]
[MS 100]
[M+ 115]
[H- 130]
[HS 140]
[H+ 150]
[P- 165]
[PS 180]
[P+ 195]
[G 210]


Подсчёт скилла:

Наш сайт используют формулу под названием The ELO Method. Этот метод расчёта скиллов использует при расчёте очки убийцы и убитого, как было написано выше, но давайте поподробнее на этом остановимся.
Игрок начинает со скиллом 100. Когда кого-то убивают, у убийцы и жертвы меняется рейтинг. Это изменение основано на двух вещах: Delta ("сложность" убийства), основанная на рейтинге игроков, и Выходной коэффициент (developement coefficient), основанный на количестве убийств каждого игрока.

Дельта рассчитывается по формуле::
Delta = 1/(1 + 10^((k-v)/100)). В числителе единица, в знаменателе 1+10 в степени (k-v)/100). k - скилл убицы, v - скилл убитого

Следующий шаг - вычисление выходного коэффициента koeff. Это число показывает, сколько очков вы можете получить или потерять в случае своей смерти. Этот коэффициент высчитывается попроще. По умолчанию, коэффициент каждого 2. После 100 убийств он сбрасывается до 1.5.
Рейтинг убийцы умножается сложностью убийства, показываемой выходным коэффициентом. И наоборот, рейтинг жертвы уменьшается на столько, сколько очков составляет его выходной коэффициент. В итоге, формула такая:

Новый скилл=Скилл+/-(coeff*Delta)


Рейтинг не даётся за победы или поражения, так как за это даются очки.


Посчёт итогового скилла в играх на 0 больше 1х1:

Если команда выиграла битву, то у всех игроков выигравшей команды, получивших за эту битву минус к скиллу, минус уменьшается в 3 раза.

Если команда проиграла битву, то у всех игроков проигравшей команды, получивших плюс к скиллу, плюс уменьшается в 3 раза.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 29.4.2014, 13:21
Сообщение #340
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Цитата(angelo4ek @ 29.4.2014, 16:04) *
Это правильно?
и при компеляции выдет ошибки


В основном архиве с AES есть файл colorchat.inc, используй его для компиляции.
Скопируй файл addons/amxmodx/scripting/include/colorchat.inc из архива в папку include твоего компилятора.

Цитата(angelo4ek @ 29.4.2014, 16:12) *
Подсчёт скилла:

Наш сайт используют формулу под названием The ELO Method.

Такое можно реализовать, но зачем оно нужно?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
124 страниц V  « 16 17 18 ... 122 123 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 6 гостей читают эту тему: