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

Нужен скриптер для доработки публичного плагина

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

В данном разделе форума разрешено создавать темы только с поиском исполнителя или заказчика.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Нужен скриптер для доработки публичного плагина

Сообщение ryazpv » 21 окт 2018, 04:00

Добрый день.
Есть публичный плагин выдачи флагов игрокам со стимклиентами auto_steam_vip
#include <amxmodx>
#include <amxmisc>
#include <colorchat>

#define PLUGIN "Auto VIP [STEAM]"
#define VERSION "1.1"
#define AUTHOR "ArtHa"

new bool:steam[33];
new vipaccess[32];
new defaccess[32];

new check_time, amx_vip_access, amx_default_access, steam_check;

new const PREFIX[] = "^4[VIP]^1";

public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR )
register_dictionary( "auto_steam_vip.txt" )

check_time = register_cvar( "amx_check_after", "10.0" )
amx_vip_access = register_cvar( "amx_vip_access", "t" )
amx_default_access = register_cvar( "amx_default_access", "z" )
steam_check = register_cvar( "amx_steam_check", "1" )

register_clcmd("say", "handle_say")
}

public plugin_cfg( )
{
new cfgdir[ 32 ]
get_configsdir( cfgdir, charsmax( cfgdir ) )

server_cmd( "exec %s/auto_steam_vip.cfg", cfgdir )
}

public client_putinserver( id )
{
set_task( get_pcvar_float( check_time ), "check_access", id )
}

public check_access( id )
{
steam[ id ] = ( is_user_steam( id ) )

get_pcvar_string( amx_vip_access, vipaccess, 31 )
get_pcvar_string( amx_default_access, defaccess, 31 )

new defaccess2 = read_flags( defaccess )
new vipaccess2 = read_flags( vipaccess )

if( is_user_connected( id ) )
{
if( steam[ id ] )
{
if ( defaccess2 )
{
remove_user_flags( id, defaccess2 )
set_user_flags( id, vipaccess2 )

ChatColor( id, "%L", id, "GIVE_VIP", PREFIX )
ChatColor( id, "%L", id, "GOOD_LUCK", PREFIX )
}
}
}
}

public handle_say( id )
{
new said[192]
read_args( said,192 )

if( get_pcvar_num( steam_check ) == 1 )
{
if( containi(said, "/steam") != -1 )
show_users( id )
}

return PLUGIN_CONTINUE
}

public show_users( user )
{
new steamnames[32][33]
new message[256]
new id, count, x, len

new players[32], playersnum
get_players( players, playersnum, "ch" )
for( --playersnum; playersnum >= 0; playersnum-- )
{
id = players[playersnum]

if( steam[ id ] )
{
get_user_name( id, steamnames[count++], charsmax(steamnames[]) )
}
}

len = formatex(message, charsmax(message), "%L", user, "STEAM_ONLINE" )
if( count > 0 )
{
for( x = 0 ; x < count ; x++ )
{
len += formatex(message[len], charsmax(message)-len, "^3 %s%s", steamnames[x], x < (count-1) ? ", ":"." )
if( len > 96 )
{
ChatColor( user, message )
len = format( message, 255, "^4" )
}
}
ChatColor( user, message )
}
else
{
len += format( message[len], 255-len, " %L", user, "STEAM_OFFLINE" )
ChatColor( user, message )
}
}

stock bool:is_user_steam( id )
{
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 ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[192]
vformat(msg, 191, input, 3)

replace_all(msg, 191, "!g", "^4") // Green Color
replace_all(msg, 191, "!y", "^1") // Default Color
replace_all(msg, 191, "!t", "^3") // Team Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


Нужно сделать так, чтобы выдача флага игрокам со стимом делалась каждый раунд, а не только при коннекте, как это реализовано здесь изначально, потому что в следующем раунде эту разовую выдачу "затирают" другие плагины (типа армиранка) выдающие свои "бонусные" флаги.
Аватара пользователя
ryazpv
 
Сообщения: 5
Зарегистрирован: 07 май 2013, 17:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Нужен скриптер для доработки публичного плагина

Сообщение ryazpv » 21 окт 2018, 16:35

Спасибо всем, кто обратил внимание.
Решение найдено!
Аватара пользователя
ryazpv
 
Сообщения: 5
Зарегистрирован: 07 май 2013, 17:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Нужен скриптер для доработки публичного плагина

Сообщение Fedcomp » 21 окт 2018, 23:25

ryazpv писал(а):Спасибо всем, кто обратил внимание.
Решение найдено!

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


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

Re: Нужен скриптер для доработки публичного плагина

Сообщение ryazpv » 24 окт 2018, 23:48

Fedcomp писал(а):
ryazpv писал(а):Спасибо всем, кто обратил внимание.
Решение найдено!

Расписывать его вы конечно же не будете.

Я немного не так выразился)
Просто отозвался человек, который этим занялся
Аватара пользователя
ryazpv
 
Сообщения: 5
Зарегистрирован: 07 май 2013, 17:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Нужен скриптер для доработки публичного плагина

Сообщение ryazpv » 25 окт 2018, 20:52

Собственно, вопрос остался открытым и вот почему:
не удалось "побороть" главную проблему. Не видно выдаваемого флага.
Теперь не знаю в какую тему и писать, но я продолжу, а админ меня поправит, если что.
Есть вот так:
плагин vip_custom, который выдает плюшки по флагу t
плагин армиранк (от Скальпеля), который выдает сами флаги
плагин auto_steam_vip, который выдает флаг всем стимам
Так вот, флаги, которые выдает армиранк и флаги из амиксбанса видно по команде amx_who, и с этим проблем нет, а вот флаги плагина auto_steam_vip, который я представил в первом посте, нет по этой команде, хотя функции плагина vip_custom становятся доступны (то есть он видит выдаваемый стимам флаг), но флагов не видит армиранк, который управляет чатом согласно флагов и по команде amx_who нет присвоенного стимам флага.
Как такое может быть? Кто сможет помочь решить этот вопрос?
Аватара пользователя
ryazpv
 
Сообщения: 5
Зарегистрирован: 07 май 2013, 17:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Нужен скриптер для доработки публичного плагина

Сообщение Fedcomp » 26 окт 2018, 13:52

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


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

Re: Нужен скриптер для доработки публичного плагина

Сообщение ryazpv » 26 окт 2018, 22:17

Fedcomp писал(а):а не может такого быть что какой то плагин перебивает флаги другого плагина? в одиночку плагин нормально работает?

Ну ты ж сам видишь, я расписал все, что происходит
У плагина скльпеля запись флагов ведется в какой-то один массив, который вызывается общими командами, а в плагине, который я и хотел переделать - нет
как это происходит - так никто и не понимает, в этом и загвоздка
Аватара пользователя
ryazpv
 
Сообщения: 5
Зарегистрирован: 07 май 2013, 17:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Нужен скриптер для доработки публичного плагина

Сообщение rve11543 » 28 окт 2018, 16:24

Там из-за ужасного кода в самом army ranks, пришлось костылить:

Вы должны зарегистрироваться, чтобы видеть ссылки.
Аватара пользователя
rve11543
 
Сообщения: 1
Зарегистрирован: 28 окт 2018, 16:21
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Больше трех лет


Вернуться в Поиск исполнителей / заказчиков

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

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