|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
TopX совместить с statsX
|
|
Joker | Дата: Среда, 07.05.2008, 00:27:13 | Сообщение # 1 |
 Генерал-майор
Группа: Пользователи
Сообщений: 375
Статус: Не в сети
| Дело обстоит вот как. Есть палигн 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 Можно закрывать, но если кто желает сделать вышеупомянутое буду только благодарен.
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
Статус: Не в сети
| может я конечно тугой, но ты дал плохое описание того, что хочешь воплотить ты хочешь вмонтировать topx.sma в statsx.sma, но как именно? может тебе просто нужно заблокировать команду в statsx.sma залей файлы на нормальных файловых хостинг и расскажи подробнее
|
|
| |
Joker | Дата: Среда, 07.05.2008, 01:05:39 | Сообщение # 3 |
 Генерал-майор
Группа: Пользователи
Сообщений: 375
Статус: Не в сети
| 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
Статус: Не в сети
| Может тебе поможет - поправил я сам Функция проста - если человек пишет топ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 |
|
| |
 | AMX Mod X Russian Community © 2006-2025  |  |
|
| |