Русское сообщество по скриптингу

Info Connect | Ic

Утвержденные плагины для AMX Mod X администратором/модератором форума.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только работоспособных плагинов для AMX Mod X. Новые плагины нужно выкладывать в разделе "Новые плагины".

Re: Info Connect | Ic

Сообщение liFe iS GoOD » 23 мар 2016, 22:50

Subb98 , Pain96 , создайте себе отдельный топик для этого выяснения , ибо как-то несерьёзно это.
Аватара пользователя
liFe iS GoOD
Модератор
 
Сообщения: 1416
Зарегистрирован: 24 май 2012, 19:48
Благодарил (а): 116 раз.
Поблагодарили: 472 раз.

Re: Info Connect | Ic

Сообщение Juli » 23 мар 2016, 22:53

liFe iS GoOD, это относится непосредственно к данному плагину.
Аватара пользователя
Juli
 
Сообщения: 661
Зарегистрирован: 09 июн 2013, 00:13
Благодарил (а): 140 раз.
Поблагодарили: 250 раз.
Опыт программирования: Больше трех лет

Re: Info Connect | Ic

Сообщение Asmodai » 23 мар 2016, 22:58

Угадайте чо будет при message = "%s%s%s%s%s%s%s%s". Оно еще и из юзер-инпут данных поступает, вообще шик.
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Re: Info Connect | Ic

Сообщение vrw23197vrw23197 » 23 мар 2016, 23:16

Asmodai писал(а):Угадайте чо будет при message = "%s%s%s%s%s%s%s%s". Оно еще и из юзер-инпут данных поступает, вообще шик.

А клиент с последним билдом вообще отлетит.
Аватара пользователя
vrw23197vrw23197
 
Сообщения: 15
Зарегистрирован: 23 мар 2016, 23:15
Забанен
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Info Connect | Ic

Сообщение Fedcomp » 24 мар 2016, 09:37

что, вальвовцы этот косяк так и не исправили? ололо.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: Info Connect | Ic

Сообщение RevCrew » 24 мар 2016, 19:14

Добавлено спустя 32 секунды:
Subb98 писал(а):
Pain96 писал(а):1.
Код: Выделить всё
ChatColor(0, "%s", Message

Почему бы не (?):
Код: Выделить всё
ChatColor(0, Message

RevCrew писал(а):Pain96, насчет первого, так как вы написали делать небезопасно.

Всё-таки, хочется увидеть информацию по данному заявлению. Мой опыт показывает, что "небезопасным" является как раз такой:

Код: Выделить всё
ChatColor(0, "%s", Message

вариант и может работать некорректно в некоторых случаях (в каких именно - сейчас затрудняюсь ответить, нужно тестировать).


Да да. Я вспомнил. Как раз про это и говорилось. Надо поменять значит. (Писал плагин давно, так что...)

Добавлено спустя 2 минуты 10 секунд:
Asmodai, это уже не про этот плагин

Добавлено спустя 5 минут 54 секунды:
Pain96 писал(а):Subb98, тут скорее нет логики, я поэтому и обратила на это внимание. Если бы аргументов было несколько, то форматирование строки имело бы место быть, а здесь же мы содержим уже готовый буфер с отформатированным сообщением, который уже можно использовать, но автор отнесся к моему совету как к критике, почему-то.

Пример, где это "имеет место быть":
Код: Выделить всё
ChatColor(0, "^4[Некий префикс]^1 %s", Message)

Спасибо за пример, я надеюсь он был не мне.))(как бы я знаю про это, нов данном случае, по незнанию того что писал мне Subb98, я сделал именно так)
Где я сказал что это была критика?
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: Info Connect | Ic

Сообщение Asmodai » 24 мар 2016, 19:27

Не надо ничего менять. Если напрямую послать свою строку вместо формата, то при наличии в ней всяких %s, аргументы будут тянуться со стека вслепую. Которые ты в функцию не отправлял. И будет тебе сегфолт при попытке прочитать строку. Я не удивлюсь, если в амхх это учтено, но вот в сишке этой фичей не только крашнуть, но и похекать могут. Можно использовать только ("%s", string).
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Re: Info Connect | Ic

Сообщение mOba » 21 фев 2017, 10:18

UP-ну, пользуюсь плагином. Добавил ещё чтобы город отображало при заходе, ловлю такие ошибки

Код: Выделить всё
L 02/20/2017 20:34:24Start of error session.
L 02/20/2017 20:34:24Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20170220.log")
L 02/20/2017 20:34:24replace() buffer not big enough (98>=97)
L 02/20/2017 20:34:24: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 20:34:24: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 20:34:24: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 20:34:24: [AMXX]    [1info_connect.sma::ReplaceMessage (line 150)
L 02/20/2017 20:34:24: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 20:54:59Start of error session.
L 02/20/2017 20:54:59Info (map "de_inferno_2x2") (file "addons/amxmodx/logs/error_20170220.log")
L 02/20/2017 20:54:59replace() buffer not big enough (98>=97)
L 02/20/2017 20:54:59: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 20:54:59: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 20:54:59: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 20:54:59: [AMXX]    [1info_connect.sma::ReplaceMessage (line 150)
L 02/20/2017 20:54:59: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 21:11:29Start of error session.
L 02/20/2017 21:11:29Info (map "css_cache") (file "addons/amxmodx/logs/error_20170220.log")
L 02/20/2017 21:11:29replace() buffer not big enough (98>=97)
L 02/20/2017 21:11:29: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 21:11:29: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 21:11:29: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 21:11:29: [AMXX]    [1info_connect.sma::ReplaceMessage (line 150)
L 02/20/2017 21:11:29: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 21:21:57Start of error session.
L 02/20/2017 21:21:57Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20170220.log")
L 02/20/2017 21:21:57replace() buffer not big enough (98>=97)
L 02/20/2017 21:21:57: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 21:21:57: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 21:21:57: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 21:21:57: [AMXX]    [1info_connect.sma::ReplaceMessage (line 150)
L 02/20/2017 21:21:57: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 21:22:53Start of error session.
L 02/20/2017 21:22:53Info (map "cs_globalstrike") (file "addons/amxmodx/logs/error_20170220.log")
L 02/20/2017 21:22:53replace() buffer not big enough (98>=97)
L 02/20/2017 21:22:53: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 21:22:53: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 21:22:53: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 21:22:53: [AMXX]    [1info_connect.sma::ReplaceMessage (line 150)
L 02/20/2017 21:22:53: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 21:38:52Start of error session.
L 02/20/2017 21:38:52Info (map "awp_india") (file "addons/amxmodx/logs/error_20170220.log")
L 02/20/2017 21:38:52replace() buffer not big enough (16>=15)
L 02/20/2017 21:38:52: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 21:38:52: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 21:38:52: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 21:38:52: [AMXX]    [1info_connect.sma::ReplaceMessage (line 145)
L 02/20/2017 21:38:52: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 21:40:31replace() buffer not big enough (88>=86)
L 02/20/2017 21:40:31: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 21:40:31: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 21:40:31: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 21:40:31: [AMXX]    [1info_connect.sma::ReplaceMessage (line 150)
L 02/20/2017 21:40:31: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 21:43:31Start of error session.
L 02/20/2017 21:43:31Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20170220.log")
L 02/20/2017 21:43:31replace() buffer not big enough (16>=15)
L 02/20/2017 21:43:31: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 21:43:31: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 21:43:31: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 21:43:31: [AMXX]    [1info_connect.sma::ReplaceMessage (line 145)
L 02/20/2017 21:43:31: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 21:43:46replace() buffer not big enough (88>=86)
L 02/20/2017 21:43:46: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 21:43:46: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 21:43:46: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 21:43:46: [AMXX]    [1info_connect.sma::ReplaceMessage (line 150)
L 02/20/2017 21:43:46: [AMXX]    [2info_connect.sma::client_putinserver (line 119)
L 02/20/2017 22:04:31replace() buffer not big enough (98>=97)
L 02/20/2017 22:04:31: [AMXXDisplaying debug trace (plugin "info_connect.amxx"version "1.1")
L 02/20/2017 22:04:31: [AMXXRun time error 10native error (native "replace")
L 02/20/2017 22:04:31: [AMXX]    [0string.inc::replace_all (line 906)
L 02/20/2017 22:04:31: [AMXX]    [1info_connect.sma::ReplaceMessage (line 150)
L 02/20/2017 22:04:31: [AMXX]    [2info_connect.sma::client_putinserver (line 119)  


Добавлю сам плагин

Код: Выделить всё
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <geoip>

#define PLUGIN "InfoConnect"
#define VERSION "1.1"
#define AUTHOR "revcrew"

#define PLUGIN_NAME "connect load"

#define get_user_state(%1,%2)         ( %1 &   1 << ( %2 & 31 ) )
#define add_user_state(%1,%2)         ( %1 |=  ( 1 << ( %2 & 31 ) ) )
#define remove_user_state(%1,%2)    ( %1 &= ~( 1 << ( %2 & 31 ) ) )

new g_user_steam

const MAX_LENGHT 25
const PLAYERS 32

/*     Cvars        */
enum _:pCvars 
{
    
CVAR_SOUND,
    
CVAR_CONNECT,
    
CVAR_PUTIN,
    
CVAR_DISC,
    
CVAR_CONNECT_M,
    
CVAR_PUTIN_M,
    
CVAR_DISC_M,
}

static 
gCvar[pCvars]

enum INFO
{
    
NAME,
    
STEAMID,
    
IP,
    
COUNTRY,
    
CITY
}
new 
InfoChat[PLAYERS 1][INFO][MAX_LENGHT]
new 
MSGid
public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
MSGid get_user_msgid("SayText")
    
server_print("%s RUN",PLUGIN_NAME)
    
RegisterCvars()
}

RegisterCvars()
{
      static 
value[64]
    
get_configsdir(value,63)
    
    
gCvar[CVAR_SOUND] = register_cvar("ic_enable_sound","1")
    
    
gCvar[CVAR_CONNECT] = register_cvar("ic_enable_connect","1")
    
gCvar[CVAR_PUTIN] = register_cvar("ic_enable_putin","1")
    
gCvar[CVAR_DISC] = register_cvar("ic_enable_disc","1")
    
    
gCvar[CVAR_CONNECT_M] = register_cvar("ic_enable_connect_m","")
    
gCvar[CVAR_PUTIN_M] = register_cvar("ic_enable_putin_m","")
    
gCvar[CVAR_DISC_M] = register_cvar("ic_enable_disc_m","")
    
    
formatex(value63"%s/infochat.cfg",value)
    if(
file_exists(value))
    {
        
server_cmd("exec %s",value)
        
server_exec();
    }
        
    
}

public 
client_connect(id)
{
    
is_user_steam(id) ? add_user_state(g_user_steamid) : remove_user_state(g_user_steamid)
    
get_user_name(id,InfoChat[id][NAME], charsmax(InfoChat[][]))
    
get_user_authid(id,InfoChat[id][STEAMID], charsmax(InfoChat[][]))
    
get_user_ip(id,InfoChat[id][IP], charsmax(InfoChat[][]), 1)
    
    
geoip_country(InfoChat[id][IP], InfoChat[id][COUNTRY], charsmax(InfoChat[][]))
    
    
geoip_city(InfoChat[id][IP], InfoChat[id][CITY], charsmax(InfoChat[][]))
    
    if(!
get_pcvar_num(gCvar[CVAR_CONNECT]))
        return;
        
    static 
Message[160]
    
get_pcvar_string(gCvar[CVAR_CONNECT_M], Messagecharsmax(Message))
    
    if(!
Message[0])
        return;
        
    
ReplaceMessage(id,Message,charsmax(Message))
    
ChatColor(0"%s"Message)
}
public 
client_putinserver(id)
{
    static 
szNum];

    if(
get_pcvar_num(gCvar[CVAR_SOUND]))
        
client_cmd(0,"spk buttons/bell1.wav")
        
    if(!
get_pcvar_num(gCvar[CVAR_PUTIN]))
        return;
        
    static 
Message[160]
    
get_pcvar_string(gCvar[CVAR_PUTIN_M], Messagecharsmax(Message))
    
    if(!
Message[0])
        return;
        
    
replace_all(Message,charsmax(Message),"%connect%"szNum)    
    
    
ReplaceMessage(id,Message,charsmax(Message))
    
ChatColor(0"%s"Message)
}
public 
client_disconnected(id)
{    
    if(
get_pcvar_num(gCvar[CVAR_SOUND]))
         
client_cmd(0,"spk buttons/blip1.wav")
        
    if(!
get_pcvar_num(gCvar[CVAR_DISC]))
        return;
        
    static 
Message[160]
    
get_pcvar_string(gCvar[CVAR_DISC_M], Messagecharsmax(Message))
    
    if(!
Message[0])
        return;
        
    
ReplaceMessage(id,Message,charsmax(Message))
    
ChatColor(0"%s"Message)
}
ReplaceMessage(id,msg[], len)
{
    
replace_all(msg,len,"%name%"InfoChat[id][NAME])
    
replace_all(msg,len,"%steamid%"InfoChat[id][STEAMID])
    
replace_all(msg,len,"%ip%"InfoChat[id][IP])
    
replace_all(msg,len,"%country%"InfoChat[id][COUNTRY])
    
replace_all(msg,len,"%city%"InfoChat[id][CITY])
    
    if( 
get_user_state(g_user_steamid) )
        
replace_all(msg,len,"%steam%""STEAM")
    else
        
replace_all(msg,len,"%steam%""NON-STEAM")
        
    
replace_all(msg,len,"%4%""^4")
    
replace_all(msg,len,"%3%""^3")
    
replace_all(msg,len,"%1%""^1")
}
stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
    if (
idplayers[0] = id; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            { 
                
message_begin(MSG_ONE_UNRELIABLEMSGid_players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
                
            }
        }
    }
    return 
1;
}
stock bool:is_user_steam(id)
{
// Author Sh0oter
        
static dp_pointer
        
if(dp_pointer || (dp_pointer get_cvar_pointer("dp_r_id_provider")))
        {
            
server_cmd("dp_clientinfo %d"id)
            
server_exec()
            return (
get_pcvar_num(dp_pointer) == 2) ? true false
        
}
        return 
false
}
stock get_configsdir(name[],len)
{
    return 
get_localinfo("amxx_configsdir",name,len);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 


Строки входа и выхода

Код: Выделить всё
ic_enable_putin_m   "%4%[qq] %1%игрок %4%%name% %1%(%3%%steam%%1%) зашёл на сервер из %1%(%4%%country%%1%) %1%(%4%%city%%1%)"
ic_enable_disc_m    "%4%[Бай-бай] %1%игрок %4%%name% %1%вышел с сервера" 
Аватара пользователя
mOba
 
Сообщения: 10
Зарегистрирован: 11 ноя 2016, 13:31
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: C#

Re: Info Connect | Ic

Сообщение nanako25 » 25 дек 2017, 13:17

Текста нету, только звук !!! :-\
Аватара пользователя
nanako25
 
Сообщения: 18
Зарегистрирован: 01 авг 2013, 22:10
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Info Connect | Ic

Сообщение RevCrew » 25 дек 2017, 13:24

nanako25, Скачайте последнюю версию на Вы должны зарегистрироваться, чтобы видеть ссылки., там все работает
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Пред.След.

Вернуться в Утвержденные плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9