AMX MOD X
Пятница, 26.04.2024, 16:26:35



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Блокировка сообщений от определенных игроков с опред. тагом
Блокировка сообщений от определенных игроков с опред. тагом
xaeroДата: Вторник, 10.02.2009, 02:42:15 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Не в сети
Привет всем, если написал не в тот раздел тогда перенесите :)
Значит проблема вот в чем:
Идея заключаеться в том что используя плагин Teamspeak show users который позволяет заходить их кс-а в тимспик автоматический посредством команды /ts2
так вот сделать так чтобы команда (будь то наример /ts2) была доступна не всем, а только игрокам кто на сервере играет с определенным тагом ну например GG.nick , то есть чтобы когда игроки противоположной команды писали /ts2 они не заходили в ту же комнату что и противоположная тим.
Помогите плиз, буду очень признателен.
 
draftДата: Вторник, 10.02.2009, 11:31:25 | Сообщение # 2
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
Code
// в глобальные переменные (до самих функций) добавляешь
new clanteg_cvar

// в plugin_init добавляешь
clanteg_cvar = register_cvar("ts_clanteg", "[clan]")

// Это нужно добавить в функции, которая хукает "say /ts2"
static name[40], clantag[40]
get_user_name(id, name, 39)
get_pcvar_string(clanteg_cvar, clantag, 39)
if(containi(name, clantag) == -1)
return PLUGIN_CONTINUE
// если клантег отсутствует в имени игрока, то ничего не делаем. В остальной части кода выполняется уже вход на teamspeak (выполняется, соответственно, только для тех, кто в клане)

Если требуется сделать, чтобы одна команда шла на один teamspeak, то тогда проверять нужно не на отсутствие (containi == -1), а на присутствие клантега ( != -1 ), причём переменных будет уже две, так как и клантегов два. И потом в теле функции if выполняешь для каждой команды заход на определённый TS

Сообщение отредактировал draft - Вторник, 10.02.2009, 11:33:31
 
xaeroДата: Вторник, 10.02.2009, 14:13:52 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Не в сети
хм ну вот собсна почему то выдает ошибку, помоги плиз
Вот код:
/***
Simple teamspeak plugin by hackziner

hackziner@gmail.com

cvars:
ts_ip
ts_virtual_server
ts_superadmin
ts_superadmin_password
Commands:
/ teamspeak online //show who is on the teamspeak server
/teamspeak calladmin msg //send a test msg to the teamspeak server
/teamspeak reset //reset request flag
***/

#include <amxmodx>
#include <amxmisc>
#include <sockets>

#define PLUGIN "Ts"
#define VERSION "0.1"
#define AUTHOR "hackziner"

#define QUERYPORT 51234

new tcp_socket
new ts_ip[32]
new ts_virtual_server[32]
new ts_superadmin[32]
new ts_superadmin_password[32]
new status
new format_msg[128]
new clanteg_cvar

new ts_connection_trigger[32]

new request
new request_failover

public plugin_init() {

register_plugin(PLUGIN, VERSION, AUTHOR)

//Yes I know how cvar work, and I won't use PCVAR !
register_cvar("ts_version",VERSION,FCVAR_SERVER)
register_cvar("ts_ip","212.1.226.164",FCVAR_SERVER)
register_cvar("ts_virt ual _se rve r","7656",FCVAR_SERVER)
register_cvar("ts_superadmin","username",FCVAR_PROTECTED)
register_cvar("ts_superadmin_password","password ", FC VA R_PROTECTED)
register_cvar("ts_connection_trigger","/ts2",FCVAR_SERVER)
register_cvar("clanteg_cvar ", "[GG]")

get_cvar_string("ts_ip",ts_ip,31)
get_cvar_string("ts_virtual_server",ts_virtual_server,31)
get_cvar_string("ts_s upera dmin" ,ts_s uperadmin,31)
get_cvar_string("ts_superadmin_password",ts_superadmin_password,31)
get_cvar_string("ts_connection_trigger",ts_conne ct io n_ trigger,31)

register_clcmd("say", "handle_say")

tcp_socket=socket_open(ts_ip,QUERYPORT,SOCKET_TCP,status)
if(status!=0)
{
server_pri nt("TS Module, Connection to TS server FAILED !")
return PLUGIN_CONTINUE
}

set_task(1.0,"get_msg",0,"",0,"b")
request_failover=0;
return PLUGIN_CONTINUE
}

public get_msg(){
static buffer[5012]
static des[5012]
if(socket_change(tcp_socket,1))
{
socket_recv(tcp_socket,buffer,5011)
if(containi(buffer,"[TS]")==0)
{
request=1
format(format_msg,64,"slogin %s %s^n",ts_superadmin,ts_superadmin_password)
socket_send(tcp_socket,format_msg,63)
}
if(containi(buffer,"OK")==0)
{
i f( reque st==1)
{
client_print(0,print_chat,"TS: Superadmin login OK")
server_print("TS: Superadmin login OK")
format(format_msg,64,"sel %s ^n",ts_virtual_server)
socket_send(tcp_socket,format_msg,63)
request=3
}
if(request==3)
{
cli ent_pr int(0, print_ chat,"TS: Virtual server select OK")
server_print("TS: Virtual server select OK")
request=0
}
if(request==4)
{
client_print(0,print_chat,"TS: msg send to ts OK")
server_print("TS: msg send to ts OK")
request=0
}
}
if(request==2)
{
new i
new list[196]
static parse[64]
strtok(buffer,des,5012,buffer,5012,'^n')
format(list,196,"Players in Ts: ")
while(containi(buffer,"^n")>-1)
{
strtok(buffer,des,5012,buffer,5012,'^n')
for(i=0;i<15;i++)
strtok(des,parse,63,des,5012,'^t')
format(list,196,"%s, %s",list,parse)
}
client_print(0,print_chat,"%s",list)
server_print("%s",list)
request=0
}

}
}

public handle_say(id){
static said[192]
read_args(said,192)
if(containi(name, clantag) == -1)
{
static name[40], clantag[40]
get_user_name(id, name, 39)
get_pcvar_string(clanteg_cvar, clantag, 39)
return PLUGIN_CONTINUE
    }

if(containi(said,ts_connection_trigger)>-1)
{
new html_code[1024];
new username[32];
get_user_name(id, username, 31);
format(html_code,1023,"<HTML><META HTTP-EQUIV=^"Refresh^" CONTENT=^"0; URL=teamspeak://%s:%s?channel=pspsps?nickname=%s^"><BODY bgcolor='black' text='#FFB000'><br><br><br><center>Connecting to Ts-Server, please wait...</center></BODY></HTML>",ts_ip,ts_virtual_server,username);
show_motd(id,html_code,"TeamSpeak2 Connection");
client_print(0,print_chat,"A Player on the server is connecting to teamspeak")
}

if(containi(said,"/teamspeak reset")>-1)
request=0
if (request==0)
{
if(containi(said,"/teamspeak online")>-1)
{
request=2
format(format_msg,64,"pl %s ^n",ts_virtual_server)
socket_send(tcp_socket,format_msg,63)
}

if(containi(said,"/teamspeak calladmin")>-1)
{
new pname[32]
request=2
get_user_name(id,pname,31)
format(format_msg,127,"msg %s %s call an admin '%s'^n",ts_virtual_server,pname,said)
socket_send(tcp_socket,format_msg,63)
request=4
}
}
else
{
c lient_ print(i d,print _chat,"Please retry in few second, there is already a request")
if(request_failover==0)request_failover=1
else
{
request_failover=0;
request=0;
client_print(id,print_chat,"Status Token has been reset, please retry")
}
}
}

public plugin_end ()
{
socket_close(tcp_socket)
}

Сообщение отредактировал xaero - Вторник, 10.02.2009, 14:51:00
 
draftДата: Вторник, 10.02.2009, 16:37:42 | Сообщение # 4
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
Так, во-первых, register_cvar("clanteg_cvar ", "[GG]") ты не сопоставил с clanteg_cvar
clanteg_cvar = register_cvar("clanteg_cvar", "[GG]")

Далее
public handle_say(id){
static said[192]
read_args(said,192)
// считали аргументы, что написал игрок, всё правильно. А дальше
// if(containi(name, clantag) == -1)
// Когда у нас даже не введены переменные name и clantag. Ты вначале их получаешь, потом сравниваешь, а не наоборот

В итоге функция должна выглядеть так:

Code
public handle_say(id){
static said[192], name[40], clantag[40]
read_args(said, 192)
remove_quotes(said)
get_user_name(id, name, 39)
get_pcvar_string(clanteg_cvar, clantag, 39)
if(containi(name, clantag) == -1)
return PLUGIN_CONTINUE     
}
 
xaeroДата: Суббота, 14.02.2009, 15:56:15 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Не в сети
во , спс тебе большое, все работает
тока вот почему то в конце пишет
ts.sma(188) : warning 209
: function "handle_say" should return a value

это последняя строка вроде все проверил все норм с handle_say, хз почему , ну да ладно и так норм все пашет.
Терь возникла новая проблема, присоединил команды ts_ip и ts_virtual_server к стороннему .cfg файлу

Code
server_cmd("exec addons/amxmodx/configs/team-speak/teamspeak.cfg")

в configs делаю teamspeak.cfg в енм вписываю (к примеру)
ts_ip ts.rekrut.ru
ts_virtual_server 8767

=========
когда перезагружаю сервер , в консоле piwu rcon ts_ip "стоит тот айпи который я указал в teamspeak.cfg" но почему то когда ввожу /ts2 то конектиться на тот айпи который в .amxx стоит, и только после rcon restart конектиться на тот айпи который в .cfg /и так каждый раз\ Почему так я хз :\\

:(

Сообщение отредактировал xaero - Суббота, 14.02.2009, 22:26:36
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Блокировка сообщений от определенных игроков с опред. тагом
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024