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

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

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

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

Top SayPrefix приставка Топ-игрок

, переделать плагин.
Статус пользователя MrTsar
сообщение 25.10.2017, 11:54
Сообщение #1


Стаж: 13 лет

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

Есть плагин который добавляет в чате приставку перед ником ТОП-игрок n-количеству игроков (настраивается).
Можно ли сделать так, что бы плагин давал приставку с конкретным местом в топе игроку? Не всем n-игрокам "ТОП-игрок", а обозначал место в топе каждого.
Код:
/* 
CSTRIKE Top Say v. 0.3
by serfreeman1337 http://gf.hldm.org/

Thanks to:
damilurg for testing

v. 0.3 07.04.14
- optimization
- back-end compatibility with other plugins
v. 0.2 31.12.13
- added colored translit plugin support
v. 0.1 29.12.13
- adds prefix for top players in chat
*/

#include <amxmodx>
#include <csstats>

//#define CT_SUPPORT // uncomment for enable colored translit support

#define PLUGIN "Top SayPrefix"
#define VERSION "0.3"
#define AUTHOR "serfreeman1337"

#define TOP_RANK 5

#define TOP_PREFIX "^1[^4TOP Р?РіСЂРѕРє^1]"
#define T_TAG "(Terrorist)"
#define CT_TAG "(CT)"
#define SPEC_TAG "(Spectator)"
#define DEAD_TAG "*DEAD*"

#if !defined CT_SUPPORT
new Trie:g_ChatOpts
new g_maxplayers

new msgHolder[191],msgLastId,Float:msgLastTime,bool:notRankedYet
#else
#include <colored_translit>
#endif

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

#if !defined CT_SUPPORT
register_message(get_user_msgid("SayText"),"Msg_SayText")

g_ChatOpts = TrieCreate()

TrieSetCell(g_ChatOpts,"#Cstrike_Chat_All",1)
TrieSetCell(g_ChatOpts,"#Cstrike_Chat_T",2)
TrieSetCell(g_ChatOpts,"#Cstrike_Chat_CT",3)
TrieSetCell(g_ChatOpts,"#Cstrike_Chat_AllDead",4)
TrieSetCell(g_ChatOpts,"#Cstrike_Chat_T_Dead",5)
TrieSetCell(g_ChatOpts,"#Cstrike_Chat_CT_Dead",6)
TrieSetCell(g_ChatOpts,"#Cstrike_Chat_AllSpec",7)

g_maxplayers = get_maxplayers()
#endif
}

#if !defined CT_SUPPORT
public Msg_SayText(MsgID,MsgDEST,MsgPLAYER){
if(MsgDEST != MSG_ONE)
return PLUGIN_CONTINUE

new id = get_msg_arg_int(1)

if(!id || id > g_maxplayers)
return PLUGIN_CONTINUE

new paramsCount = get_msg_args()

// проверяем кеш
if(msgLastId == id && msgLastTime == get_gametime()){
if(notRankedYet) // игрок без тега
return PLUGIN_CONTINUE

// сообщение из кеша
set_msg_arg_string(2,msgHolder)

// азазаза
if(paramsCount == 4)
set_msg_arg_string(4,"")

return PLUGIN_CONTINUE
}

new st[8]
new rank = get_user_stats(id,st,st)

// проверяем на ТОП
if(rank > TOP_RANK){ // игрок не топ игрок
// записываем данные в кеш
notRankedYet = true

msgLastId = id
msgLastTime = get_gametime()

return PLUGIN_CONTINUE
}else // игрок ТОП, сбрасываем указатель
notRankedYet = false

new name[32]
get_user_name(id,name,31)

new chatIndefer[191],sayText[191],chatPointer
get_msg_arg_string(2,chatIndefer,190)
get_msg_arg_string(4,sayText,190)

TrieGetCell(g_ChatOpts,chatIndefer,chatPointer)


new buff[192],len

len += formatex(buff[len],191-len,TOP_PREFIX)

if(chatPointer && paramsCount == 4){ // стандартное сообщение движка
switch(chatPointer){
case 1:{
len += formatex(buff[len],191-len," ^3%s^1",name)
}
case 2:{
len += formatex(buff[len],191-len," %s ^3%s^1",T_TAG,name)
}
case 3:{
len += formatex(buff[len],191-len," %s ^3%s^1",CT_TAG,name)
}
case 4:{
len += formatex(buff[len],191-len," %s ^3%s^1",DEAD_TAG,name)
}
case 5:{
len += formatex(buff[len],191-len," %s%s ^3%s^1",DEAD_TAG,T_TAG,name)
}
case 6:{
len += formatex(buff[len],191-len," %s%s ^3%s^1",DEAD_TAG,CT_TAG,name)
}
case 7:{
len += formatex(buff[len],191-len," %s ^3%s^1",SPEC_TAG,name)
}
default: return PLUGIN_CONTINUE
}

len += formatex(buff[len],191-len," : %s",sayText)
}else{ // сообщение, измененное другим плагином
len += formatex(buff[len],191-len," %s",chatIndefer)
}

set_msg_arg_string(2,buff)

if(paramsCount == 4)
set_msg_arg_string(4,"")

// сохраняем наше сообщение в кеш
if(msgLastId != id || msgLastTime != get_gametime()){
msgLastId = id
msgLastTime = get_gametime()

copy(msgHolder,190,buff)
}

return PLUGIN_CONTINUE
}
#else
public ct_message_format(id){
new st[8]

if(get_user_stats(id,st,st) <= TOP_RANK)
ct_add_to_msg(CT_MSGPOS_PREFIX,TOP_PREFIX)
}
#endif


Прошу прощения, тему можно удалить.
Решение нашел.
Top SayPrefix
Просто был не внимателен.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: