Соеденить 2 плагина

Сообщения
69
Реакции
3
Добрый день ребята!
Мод сервера - DOD
Имеется два плагина:

Первый плагин "Connect Announce", с ограниченным функционалом, при подключении игрока проигрывает звук как в HL и пишет в чат сообщение вида:
Player (STEAM_0:0:1190045352) connected

Второй плагин "Country On Connect", многофункционален, пишет как Hud сообщения так и обычные, все функции можно посмотреть в исходнике.
Пишет hud и чат - сообщения вида:
Player is playing from: Russia Federation

Помогите соеденить функционал плагинов, а именно добавить возможности ПЕРВОГО плагина ВО ВТОРОЙ, т.е.
добавить прогрывание звука и сделать чтобы сообщение выглядело так:
Player (STEAM_0:0:1190045352) connected from: Russia Federation

исходники:
Посмотреть вложение connect_announce.sma
Посмотреть вложение country_connect.sma
 

Danyas

Модератор
Сообщения
2,033
Реакции
811
Вроде так

PHP:
#include <amxmodx>
#include <amxmisc>
#include <geoip>


#define ADMIN ADMIN_IMMUNITY

new g_szSoundFile[] = "buttons/blip1.wav";
new p_connect, p_admins, p_bots, p_users, p_default, p_msg, p_msgmode
new p_red, p_green, p_blue, p_position, p_position_x, p_position_y

public plugin_precache()
{
	precache_sound(g_szSoundFile);
}

public plugin_init()
{
	register_plugin("Country Connect Announce", "1.4", "diamond-optic, v3x, Danyas")
	
	p_connect = register_cvar("amx_country_connect","0")
	
	p_users = register_cvar("amx_country_connect_users","1")
	p_admins = register_cvar("amx_country_connect_admins","1")
	p_bots = register_cvar("amx_country_connect_bots","1")
	
	p_default = register_cvar("amx_country_connect_default","United States")
	
	p_msg = register_cvar("amx_country_connect_msg"," * $name ($sid) connected from: $country")
	
	p_msgmode = register_cvar("amx_country_connect_msgmode","1")
	
	p_position = register_cvar("amx_country_connect_hudpos","1")
	p_position_x = register_cvar("amx_country_connect_hudx","-1.0")
	p_position_y = register_cvar("amx_country_connect_hudy","-1.0")
	
	p_red = register_cvar("amx_country_connect_hudred","255")
	p_green = register_cvar("amx_country_connect_hudgreen","255")
	p_blue = register_cvar("amx_country_connect_hudblue","255")
}

public client_putinserver(id)
{
	if(!get_pcvar_num(p_connect) || !is_user_connected(id) || (access(id,ADMIN) && !get_pcvar_num(p_admins)) || (is_user_bot(id) && !get_pcvar_num(p_bots)) || (!is_user_bot(id) && !access(id,ADMIN) && !get_pcvar_num(p_users)))
		return PLUGIN_CONTINUE
	
	
	new msg[128]
	get_pcvar_string(p_msg,msg,127)
		
	new szAuthID[33];
	get_user_authid(id , szAuthID , 32);
	
	new name[32]
	get_user_name(id,name,31)
	
	replace(msg,127,"$name",name)
	replace(msg,127,"$sid",szAuthID)
	
	
	new country[46]
	
	if(is_user_bot(id))
		get_pcvar_string(p_default,country,45)
	else	
		{
		new ip[17]
		
		get_user_ip(id,ip,16,1)
		geoip_country(ip,country,45)
		
		if(equali(country,"error"))
			formatex(country,45,"Unknown")
		}

	replace(msg,127,"$country",country)
		
	switch(get_pcvar_num(p_msgmode))
		{
		case 1: client_print(0,print_chat,"%s",msg)
		case 2: {
			new color[3]
			color[0] = get_pcvar_num(p_red)
			color[1] = get_pcvar_num(p_green)
			color[2] = get_pcvar_num(p_blue)
				
			switch(get_pcvar_num(p_position))
				{
				case 1: set_hudmessage(color[0],color[1],color[2], -1.0, 0.25, 0, 4.0, 4.0, 0.5, 0.3, 4)
				case 2: set_hudmessage(color[0],color[1],color[2], 0.05, 0.67, 0, 4.0, 4.0, 0.5, 0.3, 4)
				case 3: set_hudmessage(color[0],color[1],color[2], -1.0, 0.82, 0, 4.0, 4.0, 0.5, 0.3, 4)
				case 4: set_hudmessage(color[0],color[1],color[2], get_pcvar_float(p_position_x), get_pcvar_float(p_position_y), 0, 4.0, 4.0, 0.5, 0.3, 4)
				}
			
			show_hudmessage(0,"%s",msg)
			}
		}
		
	new iPlayers[32], iNum, i;
	get_players(iPlayers, iNum);
	for(i = 0; i <= iNum; i++)
	{
		new x = iPlayers[i];
		if(!is_user_connected(x) || is_user_bot(x)) continue;
		client_cmd(x, "spk %s", g_szSoundFile);
	}	
	return PLUGIN_CONTINUE
}
 

Вложения

  • 5.7 KB Просмотры: 0
  • 3.1 KB Просмотры: 3
Сообщения
69
Реакции
3
SteamID по-прежнему не печатается
- Виноват Danyas! Я забыл что квар надо и в конфиге записать...
Все пучком)))
Спасибо за помощь!

 
Последнее редактирование:
Сообщения
69
Реакции
3
Danyas, может еще кто-нибудь, помогите сделать финальную версию этого плагина!
Имеются плагины, которые
помимо модуля GeoIP используют еще и модуль GeoIPse (база городов)
пример использования модуля в плагинах:

1. Посмотреть вложение players_info.sma
2. Посмотреть вложение CityConnectAnnouncer.sma

нужно добавить использование этого модуля в исправленный плагин от Danyas, чтобы сообщение выглядело так:
$name ($sid) connected from: $city, $country

также в плагине есть исправление для неизвестных стран (error заменяется на unknown)
вроде это
if(equali(country,"error"))
formatex(country,45,"Unknown")
нужно это сделать и для городов

модуль Geoipcity
база geoipcity
 
Сообщения
228
Реакции
49
Может так, не пробывал amx'e писать ниразу
PHP:
#include <amxmodx>
#include <amxmisc>
#include <geoipse>
#include <geoip>


#define ADMIN ADMIN_IMMUNITY

new g_szSoundFile[] = "buttons/blip1.wav";
new p_connect, p_admins, p_bots, p_users, p_default, p_msg, p_msgmode
new p_red, p_green, p_blue, p_position, p_position_x, p_position_y

public plugin_precache()
{
    precache_sound(g_szSoundFile);
}

public plugin_init()
{
    register_plugin("Country Connect Announce", "1.4", "diamond-optic, v3x, Danyas")
    
    p_connect = register_cvar("amx_country_connect","0")
    
    p_users = register_cvar("amx_country_connect_users","1")
    p_admins = register_cvar("amx_country_connect_admins","1")
    p_bots = register_cvar("amx_country_connect_bots","1")
    
    p_default = register_cvar("amx_country_connect_default","United States")
    
    p_msg = register_cvar("amx_country_connect_msg"," * $name ($sid) connected from: $city, $country")
    
    p_msgmode = register_cvar("amx_country_connect_msgmode","1")
    
    p_position = register_cvar("amx_country_connect_hudpos","1")
    p_position_x = register_cvar("amx_country_connect_hudx","-1.0")
    p_position_y = register_cvar("amx_country_connect_hudy","-1.0")
    
    p_red = register_cvar("amx_country_connect_hudred","255")
    p_green = register_cvar("amx_country_connect_hudgreen","255")
    p_blue = register_cvar("amx_country_connect_hudblue","255")
}

public client_putinserver(id)
{
    if(!get_pcvar_num(p_connect) || !is_user_connected(id) || (access(id,ADMIN) && !get_pcvar_num(p_admins)) || (is_user_bot(id) && !get_pcvar_num(p_bots)) || (!is_user_bot(id) && !access(id,ADMIN) && !get_pcvar_num(p_users)))
        return PLUGIN_CONTINUE
    
    
    new msg[128]
    get_pcvar_string(p_msg,msg,127)
        
    new szAuthID[33];
    get_user_authid(id , szAuthID , 32);
    
    new name[32]
    get_user_name(id,name,31)
    
    replace(msg,127,"$name",name)
    replace(msg,127,"$sid",szAuthID)
    
    
    new country[46], city[46]
    city = "New York"
    
    if(is_user_bot(id))
        get_pcvar_string(p_default,country,45)
    else    
    {
        new ip[17]
        
        get_user_ip(id,ip,16,1)
        geoip_country(ip,country)
		geoip_city(ip, city)
         
		if( equal(country, "error") ) 
		{
			if( !contain(ip, "192.168.") || !contain(ip, "10. ") || !contain(ip, "172.") || equal(ip, "127.0.0.1") )country = "LAN";
			else if( equal(ip, "loopback")) country = "LAN Owner";
			else country = "Unknown Country";
		}
	}

    replace(msg,127,"$country",country)
    replace(msg,127,"$city",city)    
    switch(get_pcvar_num(p_msgmode))
        {
        case 1: client_print(0,print_chat,"%s",msg)
        case 2: {
            new color[3]
            color[0] = get_pcvar_num(p_red)
            color[1] = get_pcvar_num(p_green)
            color[2] = get_pcvar_num(p_blue)
                
            switch(get_pcvar_num(p_position))
                {
                case 1: set_hudmessage(color[0],color[1],color[2], -1.0, 0.25, 0, 4.0, 4.0, 0.5, 0.3, 4)
                case 2: set_hudmessage(color[0],color[1],color[2], 0.05, 0.67, 0, 4.0, 4.0, 0.5, 0.3, 4)
                case 3: set_hudmessage(color[0],color[1],color[2], -1.0, 0.82, 0, 4.0, 4.0, 0.5, 0.3, 4)
                case 4: set_hudmessage(color[0],color[1],color[2], get_pcvar_float(p_position_x), get_pcvar_float(p_position_y), 0, 4.0, 4.0, 0.5, 0.3, 4)
                }
            
            show_hudmessage(0,"%s",msg)
            }
        }
        
    new iPlayers[32], iNum, i;
    get_players(iPlayers, iNum);
    for(i = 0; i <= iNum; i++)
    {
        new x = iPlayers[i];
        if(!is_user_connected(x) || is_user_bot(x)) continue;
        client_cmd(x, "spk %s", g_szSoundFile);
    }    
    return PLUGIN_CONTINUE
}
 
Сверху