AMX MOD X
Суббота, 09.08.2025, 09:12:45



Приветствую Вас Гость | RSS
[ Главная ] [ TopX совместить с statsX - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
TopX совместить с statsX
JokerДата: Среда, 07.05.2008, 00:27:13 | Сообщение # 1
Генерал-майор
Группа: Пользователи
Сообщений: 375
Репутация: 5
Статус: Не в сети
Дело обстоит вот как. Есть палигн TopX (думаю все его знают). Кто не знает:
Quote
С этим плагином вы можете добавить функцию к StatsX.

.::Команды::.
/topХ
X = значение
Например : /top656 и покажет игроков, кто разместил на "656" месте и игроков вокруг него.

Все работает норм, но так сложилось, что использовать симво "/" в чате у меня на сервере нельзя. Сначала изменил исходник, убрал этот символ. Но так как statsx использует у меня команду "say top", то этот плагин не работает. Так вот к чему я клоню. Мне нужно совместить плагин TopX с statsX. Тоесть, чтобы можно было просматривать стату любого счета. Получается мне нужно просто скрипт TopX засунуть в statsX. Но как бы я не пытался при компилировнии выдает ошибки. Думаю неочень сложно будет их совместить для знающих людей. Надеюсь это ж возможно?

Все что мне нужно это просмотр статы любого места, с помощью команды "say top...".

Добавлено (2008-05-06, 7:32 Pm)
---------------------------------------------
Так откомпилился без ошибок, но часть TopX та и не работает. На сколько я понял это из-за вот этой части.

statsx:

Code
format_top15(sBuffer[MAX_BUFFER_LENGTH + 1])
{
   new iMax = get_statsnum()
   new izStats[8], izBody[8]
   new iLen = 0

   if (iMax > 15)
    iMax = 15

   new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16]
     
   format(lKills, 15, "%L", LANG_SERVER, "KILLS")
   format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS")
   format(lHits, 15, "%L", LANG_SERVER, "HITS")
   format(lShots, 15, "%L", LANG_SERVER, "SHOTS")
   format(lEff, 15, "%L", LANG_SERVER, "EFF")
   format(lAcc, 15, "%L", LANG_SERVER, "ACC")
     
   ucfirst(lEff)
   ucfirst(lAcc)

   iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
   iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc)
     
   for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++)
   {
    get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH)
    replace_all(t_sName, MAX_NAME_LENGTH, "<", "[")
    replace_all(t_sName, MAX_NAME_LENGTH, ">", "]")
    iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName, izStats[STATS_KILLS],   
        izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats))
   }
}

TopX:

Code
format_top15(sBuffer[MAX_BUFFER_LENGTH+1], statsFrom)
{
   statsFrom--;
   new iStatsMax = statsFrom + STATS_NUM;
   new iMax = get_statsnum();
   new izStats[8], izBody[8];
   new iLen = 0, iOldLen = 0;
     
   if(iStatsMax > iMax)
    iStatsMax = iMax;
     
   iLen = format( sBuffer, MAX_BUFFER_LENGTH,
   "<body bgcolor=#000000><font color=#FFB000><pre>" );
   iLen += format( sBuffer[iLen], MAX_BUFFER_LENGTH - iLen,
   "%2s %-22.22s %9s %9s %9s %9s %4s %4s %4s^n",
   "#",
   "Nick",
   "Kills",
   "Deaths",
   "Hits",
   "Shots",
   "HS",
   "Eff.",
   "Acc.");
   for(new i = statsFrom; i < iStatsMax && MAX_BUFFER_LENGTH - iLen > 0; i++) {
    get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH);
    iOldLen = iLen
    iLen += format( sBuffer[iLen], MAX_BUFFER_LENGTH - iLen,
    "%2d %-22.22s %9d %9d %9d %9d %4d %3.0f%% %3.0f%%^n", i+1, t_sName,
    izStats[STATS_KILLS], izStats[STATS_DEATHS], izStats[STATS_HITS],
    izStats[STATS_SHOTS], izStats[STATS_HS],
    effec( izStats ), accuracy( izStats ) );
    while(MAX_BUFFER_LENGTH-iLen > 2 && replace(sBuffer[iOldLen], MAX_BUFFER_LENGTH-iOldLen, "<", "<")) {
     iLen += 3;
    }
   }
}

Можно совместить эти функции (или как правильно не знаю)?

Вот какой у меня получился statsx.sma
з.ы видимо тема порулила в "Помощь по скриптингу" ... не сердчайте модераторы

Добавлено (2008-05-06, 7:53 Pm)
---------------------------------------------
Вай вай вай плохой ucoz, исходники не залились. 404 Not Found :(

Добавлено (2008-05-07, 0:27 Am)
---------------------------------------------
Все впринципе и так разобрался. Просто сменил команду в TopX B)

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

Прикрепления: topx.sma (3.2 Kb) · statsx.sma (50.4 Kb) · statsx.sma (51.0 Kb)


One death is a Tragedy
One million is a Statistic...


Сообщение отредактировал Joker - Вторник, 06.05.2008, 19:34:51
 
DaTaДата: Среда, 07.05.2008, 00:58:47 | Сообщение # 2
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
может я конечно тугой, но ты дал плохое описание того, что хочешь воплотить

ты хочешь вмонтировать topx.sma в statsx.sma, но как именно? может тебе просто нужно заблокировать команду в
statsx.sma

залей файлы на нормальных файловых хостинг и расскажи подробнее

 
JokerДата: Среда, 07.05.2008, 01:05:39 | Сообщение # 3
Генерал-майор
Группа: Пользователи
Сообщений: 375
Репутация: 5
Статус: Не в сети
DaTa, прошу прощения за бардак в посте. Спешил.

Quote
может тебе просто нужно заблокировать команду в
statsx.sma

Пожалуй... ведь TopX не хотел работать из-за того, что использовал команду say /top
Я хотел просто стату на любой ранк (это и есть TopX), но к сожалению topx работает только с statsx. Вообщем ладно я уже добился желаемого результата :)


One death is a Tragedy
One million is a Statistic...
 
RockonДата: Четверг, 29.05.2008, 04:16:59 | Сообщение # 4
Подполковник
Группа: Скриптеры
Сообщений: 137
Репутация: 1
Статус: Не в сети
Может тебе поможет - поправил я сам :)
Функция проста - если человек пишет топ15 - ему выводиться топ15 сервера, если же нет, то выводиться тот топ, который он написал

Code
public hookSay(id)    
{
    new args[128]
    read_args(args, 127)
    remove_quotes(args)
    if (equal(args, "/top15", 6))
    {
     format_top151(g_sBuffer)
     show_motd(id, g_sBuffer, "Top 15")
    }
    else if (equal(args, "/top", 4)) {
             new szStatsFrom[16]
             copy(szStatsFrom, 15, args[4])
             new statsFrom = str_to_num(szStatsFrom)
             new iMax = get_statsnum();
             if ( 0 < statsFrom < iMax ) {
                  format_top15(g_sBuffer, statsFrom)
                  show_motd(id, g_sBuffer, "Top")
             }
    }
    return PLUGIN_CONTINUE
}

Ну а дальше я разместил функцию, стыренную из топх(она называеться format_top15) и ту, что была по умолчанию( format_top151). Извиняюсь за бардак с названиями :)
Причём строчка (args, "/top15", 6)) - означает, что не читаеться первые 6 символов. Я так понял, что у тебя была ошибка именно из-за этого..
Тебе надо было всего то в топХ вот эту строчку:
(equal(args, "/top", 4))
исправить на
(equal(args, "top", 3))
И всё бы заработало :)))

Сообщение отредактировал Rockon - Четверг, 29.05.2008, 04:19:53
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2025