Проблем с компилиране на Hook

Въпроси и проблеми свързани с AMXModX.
Аватар
Lethality
Извън линия
VHE Mapper
VHE Mapper
Мнения: 211
Регистриран на: 06 Яну 2020, 15:41
Местоположение: Германия
Се отблагодари: 34 пъти
Получена благодарност: 50 пъти
Обратна връзка:

Проблем с компилиране на Hook

Мнение от Lethality » 30 Дек 2020, 21:56

Здравейте,
натъквам се на следния проблем при компилиране на следния код:

Код за потвърждение: Избери целия код

// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(89) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(101) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(108) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(111) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(115) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(167) : warning 233: symbol "client_disconnect" is marked as deprecated: Use client_disconnected() instead.
//
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(377) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(381) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(385) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(389) : warning 217: loose indentation
// D:\Steam\steamapps\common\Half-Life\cstrike\addons\amxmodx\scripting\new_hook.sma(372) : warning 204: symbol is assigned a value that is never used: "HSpeed"

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <amxmisc>
#include <engine>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <colorchat>

#define HOOK_LEVEL ADMIN_LEVEL_A   // Уровен доступа

#define TRAIL_LIFE        10        // Жизнь полосы
#define TRAIL_WIDTH       10		// Ширина полосы
#define TRAIL_RED         0		// Цвет: Красный 		
#define TRAIL_GREEN       255 	    // Цвет: Зелёный
#define TRAIL_BLUE        0			// Цвет: Голубой
#define TRAIL_BRIGTHNESS  220		// Яркость

#define TRAIL_LIF        10         // Жизнь полосы
#define TRAIL_WIDT       10			// Ширина полосы
#define TRAIL_RE         0			// Цвет: Красный 		
#define TRAIL_GREE       255 	    	// Цвет: Зелёный
#define TRAIL_BLU        255		// Цвет: Голубой
#define TRAIL_BRIGTHNES  220		// Яркость

#pragma tabsize 0

new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]

new Enable
new Glow, GlowRandom, GlowR, GlowG, GlowB
new Fade, FadeRandom, fadeR, fadeG, fadeB
new gTrail
new HookSpeed
new g_iBeamSprite
new g_speed[33]
new g_shortSpr[6];
new g_short[6][] = 
{
	"sprites/3dmflared.spr",
	"sprites/3dmflaora.spr" ,
	"sprites/frostgib.spr" ,
	"sprites/ledglow.spr" ,
	"sprites/pink.spr" ,
	"sprites/star_gib.spr"
}


public plugin_init() {
	register_plugin("Hook","2.0","holy show")
	
	register_plugin( "get_user_info", "0.0.1", "holy" );
	register_concmd( "amx_getinfo1", "CmdGetInfo", ADMIN_USER, "<name> <info key>" );
	register_clcmd("+hook","hook_on",HOOK_LEVEL)
	register_clcmd("-hook","hook_off",HOOK_LEVEL)
	register_clcmd("hook_speed","Menu_hook")
	register_clcmd("hook_give","give_hook",HOOK_LEVEL,"<name|#userid|steamid|@ALL> <on/off>") // Дать/отнять хук
	
	Enable			=	register_cvar( "hook_enable", "1" )				// Вкл./Выкл. Плагин (По умолчанию Вкл)
	Glow			=	register_cvar( "hook_glow", "1" )				// Аура при полете Вкл./Выкл. (По умолчанию Вкл)
	GlowRandom		=	register_cvar( "hook_glow_random", "1" )		// Рандомная подсветка
	GlowR			=	register_cvar( "hook_glow_r", "255" )			// Цвет свечения(красный)
	GlowG			=	register_cvar( "hook_glow_g", "255" )			// Цвет свечения(зеленый)
	GlowB			=	register_cvar( "hook_glow_b", "255" )			// Цвет свечения(синий)
	Fade			=	register_cvar( "hook_screenfade", "0" )			// Затемнение экрана при полете Вкл./Выкл. (По умолчанию Вкл)
	FadeRandom		=	register_cvar( "hook_screenfade_random", "1" )	// Использовать рандомный цвет (1 - да, 2 -нет)(По умолчанию 1)
	fadeR			= 	register_cvar( "hook_fade_r", "255" )			// Цвет затемнения экрана при полете(красный)
	fadeG 			= 	register_cvar( "hook_fade_g", "255" )			// Цвет затемнения экрана при полете(зеленый)
	fadeB 			= 	register_cvar( "hook_fade_b", "255" )			// Цвет затемнения экрана при полете(синий)
	HookSpeed		=	register_cvar( "hook_speed", "450" )			// Скорость (По умолчанию: 350)
}

public plugin_precache() {
	for(new i=0;i<sizeof(g_short);i++)
		g_shortSpr[i] = precache_model(g_short[i]);
	g_iBeamSprite = precache_model("sprites/lgtning.spr");
	gTrail     =   precache_model("sprites/vselennaya.spr")
	precache_sound("action_game/tok.wav")
	
}

public Menu_hook(id)
{
  if(get_user_flags(id) & ADMIN_LEVEL_A)
  {
	new menu = menu_create("\r(.::\yПаутинка\r::.) \wНастройка скорости паутинки \y!^n\r(.::\yПаутинка\r::.) \wПаутинка Администрации \y<3^n\r(.::\yПаутинка\r::.) \wНе балуйся \y!","menu_hook")
    if(g_speed[id] == 0)
	{
	menu_additem(menu,"Низкая \d[\yВкл\d]", "1", 0)
	}else{
	menu_additem(menu,"Низкая \d[\rВыкл\d]", "1", 0)
	}
    if(g_speed[id] == 1)
	{
	menu_additem(menu,"Стандартная \d[\yВкл\d]", "2", 0)
	}else{
	menu_additem(menu,"Стандартная \d[\rВыкл\d]", "2", 0)
	}
	if(g_speed[id] == 2)
	{
	menu_additem(menu,"Высокая \d[\yВкл\d]", "3", 0)
	}else{
	menu_additem(menu,"Высокая \d[\rВыкл\d]", "3", 0)
	}
	menu_setprop(menu , MPROP_NEXTNAME, "Далее")
    menu_setprop(menu , MPROP_BACKNAME, "Назад")
    menu_setprop(menu , MPROP_EXITNAME, "Выход")
    menu_setprop(menu , MPROP_EXIT, MEXIT_ALL)
	menu_display(id, menu) 
  }else{
  ColorChat(id,BLUE,"^4(.::Паутинка::.) ^3У тебя нет паутины. Хотите купить ? обратитесь к ^4Гл.Админу...") 
  }  
 return PLUGIN_HANDLED
}
public menu_hook(id, menu, key)
{
  if(key == MENU_EXIT)
  {
  	menu_destroy(menu)
	return PLUGIN_HANDLED
  }
  new accss, clbck, data[6], name[64], itm
  menu_item_getinfo(menu, key, accss, data, 5, name, 63, clbck)
  itm = str_to_num(data)
	
  switch(itm)
  {	 
	case 1:
	{
	  if(g_speed[id] == 0)
	  {
	    ColorChat(id,BLUE,"^3(.::Паутинка::.) ^4Уже установлено.")
	    Menu_hook(id)
	  }else{
	    g_speed[id] = 0
	    ColorChat(id,BLUE,"^3(.::Паутинка::.) ^4Вы выбрали скорость паутины: ^3низкая.")  
	  }
	}  
	case 2:
	{
	  if(g_speed[id] == 1)
	  {
	    ColorChat(id,BLUE,"^3(.::Паутинка::.) ^4Уже установлено.")
	    Menu_hook(id)
	  }else{
	    g_speed[id] = 1
	    ColorChat(id,BLUE,"^3(.::Паутинка::.) ^4Вы выбрали скорость паутины: ^3стандартная.")  
	  }
	}  
	case 3:
	{
	  if(g_speed[id] == 2)
	  {
	    ColorChat(id,BLUE,"^3(.::Паутинка::.) ^4Уже установлено.")
	    Menu_hook(id)
	  }else{
	    g_speed[id] = 2
	    ColorChat(id,BLUE,"^3(.::Паутинка::.) ^4Вы выбрали скорость паутины: ^3высокая.")  
	  }
	}  
  }
  return PLUGIN_HANDLED
}

public client_disconnect(id) {
	remove_hook(id)
	g_speed[id] = 1
}

public client_putinserver(id) {
	remove_hook(id)
	g_speed[id] = 1
}

public CmdGetInfo( iPlayer, iLevel, iCId ) {
    if( !cmd_access( iPlayer, iLevel, iCId, 3 ) ) {
        return PLUGIN_HANDLED;
    }
    
    new szArg[ 35 ];
    read_argv( 1, szArg, 34 );
    
    new iTarget = cmd_target( iPlayer, szArg, ( CMDTARGET_NO_BOTS | CMDTARGET_OBEY_IMMUNITY ) );
    if( !iTarget ) {
        return PLUGIN_HANDLED;
    }
    
    read_argv( 2, szArg, 34 );
    
    new szData[ 64 ];
    get_user_info( iTarget, szArg, szData, 63 );
    
    new szName[ 32 ];
    get_user_name( iTarget, szName, 31 );
    
    console_print( iPlayer, "Player: %s", szName );
    console_print( iPlayer, "setinfo ^"%s^" ^"%s^"", szArg, szData );
    
    return PLUGIN_HANDLED;
}

// =================================================================================================

public give_hook(id,level,cid) {
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED
			
	new name[32]
	get_user_name(id,name,32)
		
	new szarg1[32], szarg2[8], bool:mode
	read_argv(1,szarg1,32)
	read_argv(2,szarg2,32)
	if(equal(szarg2,"on"))
		mode = true
		
	if(equal(szarg1,"@ALL")) {
		for(new i=1;i<=get_maxplayers();i++) {
			if(is_user_connected(i) && is_user_alive(i)) {
				canusehook[i-1] = mode
				if(mode) {
					client_print(i,print_chat,"(.::Паутинка::.) Админ %s дал возможность возможность использовать hook",name)
					client_print(i,print_chat,"(.::Паутинка::.) Забиндите '+hook' на кнопку")
				}
				else
					client_print(i,print_chat,"(.::Паутинка::.) Админ %s отнял возможность возможность использовать hook",name)
			}
		}
	}
	else {
		new pid = cmd_target(id,szarg1,2)
		if(pid > 0) {
			canusehook[pid-1] = mode
			if(mode) {
				client_print(pid,print_chat,"(.::Паутинка::.) Админ %s дал возможность возможность использовать hook",name)
				client_print(pid,print_chat,"(.::Паутинка::.) Забиндите '+hook' на кнопку")
			}
			else
				client_print(pid,print_chat,"(.::Паутинка::.) Админ %s отнял возможность возможность использовать hook",name)
		}
	}
	
	return PLUGIN_HANDLED
}

// =================================================================================================

public hook_on(id,level,cid)
{
	if( get_pcvar_num( Enable ) )
	{
	if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
		return PLUGIN_HANDLED
	
	if(get_user_flags(id) & ADMIN_KICK)
	{
	get_user_origin(id,hookorigin[id-1],3)
	
	if(callfunc_begin("detect_cheat","prokreedz.amxx") == 1) {
		callfunc_push_int(id)
		callfunc_push_str("Hook")
		callfunc_end()
	}
	
	ishooked[id-1] = true
	
	emit_sound(id,CHAN_STATIC,"action_game/tok.wav",1.0,ATTN_NORM,0,PITCH_NORM)
	set_task(0.1,"hook_task",id,"",0,"ab")
	hook_task(id)
	func_break(id)
	}      
	if( is_user_alive( id ) && get_pcvar_num( Glow ) )
    {
		if( is_user_alive( id ) && get_pcvar_num( GlowRandom ) )
		{
		set_user_rendering(id, kRenderFxGlowShell,  random_num( 0,255 ),  random_num( 0,255 ),  random_num( 0,255 ), kRenderNormal, 16 )
		}
		else
		{
		set_user_rendering(id, kRenderFxGlowShell, ( get_pcvar_num( GlowR ) ),  ( get_pcvar_num( GlowG ) ),  ( get_pcvar_num( GlowB ) ), kRenderNormal, 16 )
		}
    }
	
	}
	else
	{
	ColorChat(id, RED,"(.::Паутинка::.) ^4Функция отключена!")
	}
	
	if( get_pcvar_num( Fade ) )
	{
		if( get_pcvar_num( FadeRandom ) )
		{
		message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
		write_short( 10<<12 )
		write_short( 10<<16 )
		write_short( 1<<1 )
		write_byte random_num( 0,255 )
		write_byte random_num( 0,255 )
		write_byte random_num( 0,255 )
		write_byte( 255 )
		message_end()
		}
		else
		{
		message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
		write_short( 10<<12 )
		write_short( 10<<16 )
		write_short( 1<<1 )
		write_byte ( get_pcvar_num( fadeR ) )
		write_byte ( get_pcvar_num( fadeG ) )
		write_byte ( get_pcvar_num( fadeB ) )
		write_byte( 255 )
		message_end()
		}
	}
	
	return PLUGIN_HANDLED
}

// =================================================================================================

public is_hooked(id) {
	return ishooked[id-1]
}

// =================================================================================================

public hook_off(id) {

	remove_hook(id)
	if( is_user_alive( id ) && get_pcvar_num( Glow ) )
	{
	set_user_rendering(id, kRenderFxGlowShell,  random_num( 0,0 ),  random_num( 0,0 ),  random_num( 0,0 ), kRenderNormal, 16 )
	}
	
	if( get_pcvar_num( Fade ) )
	{
	message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
	write_short( 10<<12 )
	write_short( 10<<16 )
	write_short( 1<<1 )
	write_byte ( 255 )
	write_byte ( 255 )
	write_byte ( 255 )
	write_byte( 255 )
	message_end()
	}
	
	return PLUGIN_HANDLED
}

// =================================================================================================

public hook_task(id) {
	if(!is_user_connected(id) || !is_user_alive(id))
		remove_hook(id)
	
	remove_beam(id)
	f(id)
	func_trail(id)
	func_trail_ct(id)
	
	new origin[3], Float:velocity[3]
	get_user_origin(id,origin) 
	new distance = get_distance(hookorigin[id-1],origin)
	
	new Float:HSpeed = get_pcvar_float(HookSpeed)
	
	if(distance > 25)
	{ 
				if(g_speed[id] == 0)
	            {
				  velocity[0] = (hookorigin[id-1][0] - origin[0]) * (4.0 * 100 / distance)
                  velocity[1] = (hookorigin[id-1][1] - origin[1]) * (4.0 * 100 / distance)
                  velocity[2] = (hookorigin[id-1][2] - origin[2]) * (4.0 * 100 / distance)
				}else if(g_speed[id] == 1){
				  velocity[0] = (hookorigin[id-1][0] - origin[0]) * (4.0 * 200 / distance)
                  velocity[1] = (hookorigin[id-1][1] - origin[1]) * (4.0 * 200 / distance)
                  velocity[2] = (hookorigin[id-1][2] - origin[2]) * (4.0 * 200 / distance)
				}else if(g_speed[id] == 2){
				  velocity[0] = (hookorigin[id-1][0] - origin[0]) * (4.0 * 300 / distance)
                  velocity[1] = (hookorigin[id-1][1] - origin[1]) * (4.0 * 300 / distance)
                  velocity[2] = (hookorigin[id-1][2] - origin[2]) * (4.0 * 300 / distance)
				} 
		
		entity_set_vector(id,EV_VEC_velocity,velocity)
	} 
	else {
		entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
		remove_hook(id)
	}
}

// =================================================================================================

public f(id)
{
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMENTPOINT);
        write_short(id);             //Индекс entity
        write_coord(hookorigin[id-1][0]);          //Конечная точка x
        write_coord(hookorigin[id-1][1]);         //Конечная точка y
        write_coord(hookorigin[id-1][2]);          //Конечная точка z
        write_short(g_iBeamSprite);         //Индекс спрайта 
        write_byte(0)                 //Стартовый кадр
        write_byte(1);                 //Скорость анимации
        write_byte(1);                //Врмея существования
        write_byte(42);    //Толщина луча
        write_byte(30);  //Искажение
         
        switch(random(10))
        {
            case 0:
            {
                write_byte(255);    //Цвет красный
                write_byte(255);        //Цвеи зеленый
                write_byte(0);        //Цвет синий
            }
             
            case 1:
            {
                write_byte(0);        //Цвет красный
                write_byte(255);    //Цвеи зеленый
                write_byte(255);        //Цвет синий
            }
			
            case 2:
            {
                write_byte(255);        //Цвет красный
                write_byte(0);    //Цвеи зеленый
                write_byte(255);        //Цвет синий
            }
			
            case 3:
            {
                write_byte(75);        //Цвет красный
                write_byte(0);    //Цвеи зеленый
                write_byte(130);        //Цвет синий
            }
			
            case 4:
            {
                write_byte(0);        //Цвет красный
                write_byte(255);    //Цвеи зеленый
                write_byte(0);        //Цвет синий
            }
			
            case 5:
            {
                write_byte(0);        //Цвет красный
                write_byte(0);    //Цвеи зеленый
                write_byte(255);        //Цвет синий
            }
			
            case 6:
            {
                write_byte(255);        //Цвет красный
                write_byte(0);    //Цвеи зеленый
                write_byte(0);        //Цвет синий
            }
			
            case 7:
            {
                write_byte(255);        //Цвет красный
                write_byte(192);    //Цвеи зеленый
                write_byte(203);        //Цвет синий
            }
			
            case 8:
            {
                write_byte(255);        //Цвет красный
                write_byte(20);    //Цвеи зеленый
                write_byte(147);        //Цвет синий
            }
			
            case 9:
            {
                write_byte(0);        //Цвет красный
                write_byte(128);    //Цвеи зеленый
                write_byte(128);        //Цвет синий
            }
        }
         
        write_byte(2000);            //Яркость
        write_byte(0);                //...
        message_end();
}

// =================================================================================================

public func_break(id)
{
	for(new j=0;j<sizeof(g_shortSpr);j++)
	{
		new origin[3]
   
		get_user_origin(id,origin,3)
   
		message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0},id)
		write_byte(TE_SPRITETRAIL) //Спрайт захвата
		write_coord(origin[0])
		write_coord(origin[1])
		write_coord(origin[2]+20)
		write_coord(origin[0])
		write_coord(origin[1])
		write_coord(origin[2]+80)
		write_short(g_shortSpr[j]);
		write_byte(1)
		write_byte(20)
		write_byte(4)		
		write_byte(20)
		write_byte(10)
		message_end()
	}
}

// =================================================================================================

public func_trail(id)

if(cs_get_user_team(id) == CS_TEAM_T)

{	
	{
	    {
	
			message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte (TE_BEAMFOLLOW)
			write_short (id)
			write_short (gTrail)
			write_byte (TRAIL_LIFE)
			write_byte (TRAIL_WIDTH)
			write_byte (TRAIL_RED)
			write_byte (TRAIL_GREEN)
			write_byte (TRAIL_BLUE)
			write_byte (TRAIL_BRIGTHNESS)
			
		
			message_end()
		}		
	}
}

public func_trail_ct(id)

if(cs_get_user_team(id) == CS_TEAM_CT)

{	
	{
	    {
	
			message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte (TE_BEAMFOLLOW)
			write_short (id)
			write_short (gTrail)
			write_byte (TRAIL_LIF)
			write_byte (TRAIL_WIDT)
			write_byte (TRAIL_RE)
			write_byte (TRAIL_GREE)
			write_byte (TRAIL_BLU)
			write_byte (TRAIL_BRIGTHNES)
			message_end()
		}		
	}
}

// =================================================================================================

public remove_hook(id) {
	if(task_exists(id))
		remove_task(id)
	remove_beam(id)
	ishooked[id-1] = false
}

// =================================================================================================

public remove_beam(id) {
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(99) // TE_KILLBEAM
	write_short(id)
	message_end()
}
В крайна сметка, компилирането е успешно и плъгина функционира, но отчасти. Cvar hook_speed не функционира, бързината не се променя. Моля за съдействие..

Благодаря предварително!

Аватар
zolfeca
Извън линия
Администратор
Администратор
Мнения: 417
Регистриран на: 10 Окт 2016, 23:48
Се отблагодари: 24 пъти
Получена благодарност: 92 пъти

Проблем с компилиране на Hook

Мнение от zolfeca » 30 Дек 2020, 22:39

Логично да не работи, то си пише де.
warning 204: symbol is assigned a value that is never used: "HSpeed"
Съмнявам се това да е оригиналния код, ти ли си пипал нещо?

Аватар
Lethality
Извън линия
VHE Mapper
VHE Mapper
Мнения: 211
Регистриран на: 06 Яну 2020, 15:41
Местоположение: Германия
Се отблагодари: 34 пъти
Получена благодарност: 50 пъти
Обратна връзка:

Проблем с компилиране на Hook

Мнение от Lethality » 30 Дек 2020, 22:49

Това е оригиналния код. Не изглежда добре изобщо. Не разбирам, грешките на какво се дължат и защо не работят cvar-овете. Единствено ADMIN_LEVEL съм пипнал.

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Проблем с компилиране на Hook

Мнение от gadinkata » 30 Дек 2020, 23:17

new Float:HSpeed = get_pcvar_float(HookSpeed) HSpeed не,се използва никъде в плъгина,за това нямаш тоя speed,пробвай да промениш ред 372if(distance > 25) на if(distance > HSpeed)
ето,компилира се без грешки,но не съм сигурен,че се намира HSpeed тук if(distance > HSpeed) за това,ако някой знае да каже,а ти тествай и виж. и ако може кажи от де си го свалил

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <amxmisc>
#include <engine>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <colorchat>

#define HOOK_LEVEL ADMIN_LEVEL_A   // ??N€?????µ?? ????N?N‚N????°

#define TRAIL_LIFE        10        // ?–???·??N? ?????»??N?N‹
#define TRAIL_WIDTH       10		// ????N€?????° ?????»??N?N‹
#define TRAIL_RED         0		// ?¦???µN‚: ?sN€?°N???N‹?? 		
#define TRAIL_GREEN       255 	    // ?¦???µN‚: ?—?µ?»N‘??N‹??
#define TRAIL_BLUE        0			// ?¦???µN‚: ?“???»N??±????
#define TRAIL_BRIGTHNESS  220		// ??N€????N?N‚N?

#define TRAIL_LIF        10         // ?–???·??N? ?????»??N?N‹
#define TRAIL_WIDT       10			// ????N€?????° ?????»??N?N‹
#define TRAIL_RE         0			// ?¦???µN‚: ?sN€?°N???N‹?? 		
#define TRAIL_GREE       255 	    	// ?¦???µN‚: ?—?µ?»N‘??N‹??
#define TRAIL_BLU        255		// ?¦???µN‚: ?“???»N??±????
#define TRAIL_BRIGTHNES  220		// ??N€????N?N‚N?

#pragma tabsize 0

new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]

new Enable
new Glow, GlowRandom, GlowR, GlowG, GlowB
new Fade, FadeRandom, fadeR, fadeG, fadeB
new gTrail
new HookSpeed
new g_iBeamSprite
new g_speed[33]
new g_shortSpr[6];
new g_short[6][] = 
{
"sprites/3dmflared.spr",
"sprites/3dmflaora.spr" ,
"sprites/frostgib.spr" ,
"sprites/ledglow.spr" ,
"sprites/pink.spr" ,
"sprites/star_gib.spr"
}


public plugin_init() {
register_plugin("Hook","2.0","holy show")

register_plugin( "get_user_info", "0.0.1", "holy" );
register_concmd( "amx_getinfo1", "CmdGetInfo", ADMIN_USER, "<name> <info key>" );
register_clcmd("+hook","hook_on",HOOK_LEVEL)
register_clcmd("-hook","hook_off",HOOK_LEVEL)
register_clcmd("hook_speed","Menu_hook")
register_clcmd("hook_give","give_hook",HOOK_LEVEL,"<name|#userid|steamid|@ALL> <on/off>") // ?”?°N‚N?/??N‚??N?N‚N? N…N???

Enable			=	register_cvar( "hook_enable", "1" )				// ?’???»./?’N‹???». ?Y?»?°?????? (?Y?? N??????»N‡?°????NZ ?’???»)
Glow			=	register_cvar( "hook_glow", "1" )				// ??N?N€?° ??N€?? ?????»?µN‚?µ ?’???»./?’N‹???». (?Y?? N??????»N‡?°????NZ ?’???»)
GlowRandom		=	register_cvar( "hook_glow_random", "1" )		// ? ?°???????????°N? ??????N????µN‚???°
GlowR			=	register_cvar( "hook_glow_r", "255" )			// ?¦???µN‚ N????µN‡?µ????N?(??N€?°N???N‹??)
GlowG			=	register_cvar( "hook_glow_g", "255" )			// ?¦???µN‚ N????µN‡?µ????N?(?·?µ?»?µ??N‹??)
GlowB			=	register_cvar( "hook_glow_b", "255" )			// ?¦???µN‚ N????µN‡?µ????N?(N?????????)
Fade			=	register_cvar( "hook_screenfade", "0" )			// ?—?°N‚?µ?????µ?????µ N???N€?°???° ??N€?? ?????»?µN‚?µ ?’???»./?’N‹???». (?Y?? N??????»N‡?°????NZ ?’???»)
FadeRandom		=	register_cvar( "hook_screenfade_random", "1" )	// ??N??????»N??·?????°N‚N? N€?°??????????N‹?? N†???µN‚ (1 - ???°, 2 -???µN‚)(?Y?? N??????»N‡?°????NZ 1)
fadeR			= 	register_cvar( "hook_fade_r", "255" )			// ?¦???µN‚ ?·?°N‚?µ?????µ????N? N???N€?°???° ??N€?? ?????»?µN‚?µ(??N€?°N???N‹??)
fadeG 			= 	register_cvar( "hook_fade_g", "255" )			// ?¦???µN‚ ?·?°N‚?µ?????µ????N? N???N€?°???° ??N€?? ?????»?µN‚?µ(?·?µ?»?µ??N‹??)
fadeB 			= 	register_cvar( "hook_fade_b", "255" )			// ?¦???µN‚ ?·?°N‚?µ?????µ????N? N???N€?°???° ??N€?? ?????»?µN‚?µ(N?????????)
HookSpeed		=	register_cvar( "hook_speed", "450" )			// ??????N€??N?N‚N? (?Y?? N??????»N‡?°????NZ: 350)
}

public plugin_precache() {
	for(new i=0;i<sizeof(g_short);i++)
	{
		g_shortSpr[i] = precache_model(g_short[i]);
		g_iBeamSprite = precache_model("sprites/lgtning.spr");
		gTrail     =   precache_model("sprites/vselennaya.spr")
		precache_sound("action_game/tok.wav")
	}
	
}

public Menu_hook(id)
{
	if(get_user_flags(id) & ADMIN_LEVEL_A)
	{
		new menu = menu_create("\r(.::\y?Y?°N?N‚???????°\r::.) \w???°N?N‚N€???????° N?????N€??N?N‚?? ???°N?N‚???????? \y!^n\r(.::\y?Y?°N?N‚???????°\r::.) \w?Y?°N?N‚???????° ????????????N?N‚N€?°N†???? \y<3^n\r(.::\y?Y?°N?N‚???????°\r::.) \w???µ ?±?°?»N???N?N? \y!","menu_hook")
		if(g_speed[id] == 0)
		{
			menu_additem(menu,"?????·???°N? \d[\y?’???»\d]", "1", 0)
			}else{
			menu_additem(menu,"?????·???°N? \d[\r?’N‹???»\d]", "1", 0)
		}
		if(g_speed[id] == 1)
		{
			menu_additem(menu,"??N‚?°?????°N€N‚???°N? \d[\y?’???»\d]", "2", 0)
			}else{
			menu_additem(menu,"??N‚?°?????°N€N‚???°N? \d[\r?’N‹???»\d]", "2", 0)
		}
		if(g_speed[id] == 2)
		{
			menu_additem(menu,"?’N‹N??????°N? \d[\y?’???»\d]", "3", 0)
			}else{
			menu_additem(menu,"?’N‹N??????°N? \d[\r?’N‹???»\d]", "3", 0)
		}
		menu_setprop(menu , MPROP_NEXTNAME, "?”?°?»?µ?µ")
		menu_setprop(menu , MPROP_BACKNAME, "???°?·?°??")
		menu_setprop(menu , MPROP_EXITNAME, "?’N‹N…????")
		menu_setprop(menu , MPROP_EXIT, MEXIT_ALL)
		menu_display(id, menu) 
		}else{
		ColorChat(id,BLUE,"^4(.::?Y?°N?N‚???????°::.) ^3?? N‚?µ?±N? ???µN‚ ???°N?N‚????N‹. ????N‚??N‚?µ ??N?????N‚N? ? ???±N€?°N‚??N‚?µN?N? ?? ^4?“?».??????????N?...") 
	}  
	return PLUGIN_HANDLED
}
public menu_hook(id, menu, key)
{
	if(key == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	new accss, clbck, data[6], name[64], itm
	menu_item_getinfo(menu, key, accss, data, 5, name, 63, clbck)
	itm = str_to_num(data)
	
	switch(itm)
	{	 
		case 1:
		{
			if(g_speed[id] == 0)
			{
				ColorChat(id,BLUE,"^3(.::?Y?°N?N‚???????°::.) ^4???¶?µ N?N?N‚?°???????»?µ????.")
				Menu_hook(id)
				}else{
				g_speed[id] = 0
				ColorChat(id,BLUE,"^3(.::?Y?°N?N‚???????°::.) ^4?’N‹ ??N‹?±N€?°?»?? N?????N€??N?N‚N? ???°N?N‚????N‹: ^3?????·???°N?.")  
			}
		}  
		case 2:
		{
			if(g_speed[id] == 1)
			{
				ColorChat(id,BLUE,"^3(.::?Y?°N?N‚???????°::.) ^4???¶?µ N?N?N‚?°???????»?µ????.")
				Menu_hook(id)
				}else{
				g_speed[id] = 1
				ColorChat(id,BLUE,"^3(.::?Y?°N?N‚???????°::.) ^4?’N‹ ??N‹?±N€?°?»?? N?????N€??N?N‚N? ???°N?N‚????N‹: ^3N?N‚?°?????°N€N‚???°N?.")  
			}
		}  
		case 3:
		{
			if(g_speed[id] == 2)
			{
				ColorChat(id,BLUE,"^3(.::?Y?°N?N‚???????°::.) ^4???¶?µ N?N?N‚?°???????»?µ????.")
				Menu_hook(id)
				}else{
				g_speed[id] = 2
				ColorChat(id,BLUE,"^3(.::?Y?°N?N‚???????°::.) ^4?’N‹ ??N‹?±N€?°?»?? N?????N€??N?N‚N? ???°N?N‚????N‹: ^3??N‹N??????°N?.")  
			}
		}  
	}
	return PLUGIN_HANDLED
}

public client_disconnected(id) {
	remove_hook(id)
	g_speed[id] = 1
}

public client_putinserver(id) {
	remove_hook(id)
	g_speed[id] = 1
}

public CmdGetInfo( iPlayer, iLevel, iCId ) {
	if( !cmd_access( iPlayer, iLevel, iCId, 3 ) ) {
		return PLUGIN_HANDLED;
	}
	
	new szArg[ 35 ];
	read_argv( 1, szArg, 34 );
	
	new iTarget = cmd_target( iPlayer, szArg, ( CMDTARGET_NO_BOTS | CMDTARGET_OBEY_IMMUNITY ) );
	if( !iTarget ) {
		return PLUGIN_HANDLED;
	}
	
	read_argv( 2, szArg, 34 );
	
	new szData[ 64 ];
	get_user_info( iTarget, szArg, szData, 63 );
	
	new szName[ 32 ];
	get_user_name( iTarget, szName, 31 );
	
	console_print( iPlayer, "Player: %s", szName );
	console_print( iPlayer, "setinfo ^"%s^" ^"%s^"", szArg, szData );
	
	return PLUGIN_HANDLED;
}

// =================================================================================================

public give_hook(id,level,cid) {
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED
	
	new name[32]
	get_user_name(id,name,32)
	
	new szarg1[32], szarg2[8], bool:mode
	read_argv(1,szarg1,32)
	read_argv(2,szarg2,32)
	if(equal(szarg2,"on"))
		mode = true
	
	if(equal(szarg1,"@ALL")) {
		for(new i=1;i<=get_maxplayers();i++) {
			if(is_user_connected(i) && is_user_alive(i)) {
				canusehook[i-1] = mode
				if(mode) {
					client_print(i,print_chat,"(.::?Y?°N?N‚???????°::.) ?????????? %s ???°?» ?????·?????¶????N?N‚N? ?????·?????¶????N?N‚N? ??N??????»N??·?????°N‚N? hook",name)
					client_print(i,print_chat,"(.::?Y?°N?N‚???????°::.) ?—?°?±????????N‚?µ '+hook' ???° ??????????N?")
				}
				else
					client_print(i,print_chat,"(.::?Y?°N?N‚???????°::.) ?????????? %s ??N‚??N??» ?????·?????¶????N?N‚N? ?????·?????¶????N?N‚N? ??N??????»N??·?????°N‚N? hook",name)
			}
		}
	}
	else {
		new pid = cmd_target(id,szarg1,2)
		if(pid > 0) {
			canusehook[pid-1] = mode
			if(mode) {
				client_print(pid,print_chat,"(.::?Y?°N?N‚???????°::.) ?????????? %s ???°?» ?????·?????¶????N?N‚N? ?????·?????¶????N?N‚N? ??N??????»N??·?????°N‚N? hook",name)
				client_print(pid,print_chat,"(.::?Y?°N?N‚???????°::.) ?—?°?±????????N‚?µ '+hook' ???° ??????????N?")
			}
			else
				client_print(pid,print_chat,"(.::?Y?°N?N‚???????°::.) ?????????? %s ??N‚??N??» ?????·?????¶????N?N‚N? ?????·?????¶????N?N‚N? ??N??????»N??·?????°N‚N? hook",name)
		}
	}
	
	return PLUGIN_HANDLED
}

// =================================================================================================

public hook_on(id,level,cid)
{
	if( get_pcvar_num( Enable ) )
	{
		if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
			return PLUGIN_HANDLED
		
		if(get_user_flags(id) & ADMIN_KICK)
		{
			get_user_origin(id,hookorigin[id-1],3)
			
			if(callfunc_begin("detect_cheat","prokreedz.amxx") == 1) {
				callfunc_push_int(id)
				callfunc_push_str("Hook")
				callfunc_end()
			}
			
			ishooked[id-1] = true
			
			emit_sound(id,CHAN_STATIC,"action_game/tok.wav",1.0,ATTN_NORM,0,PITCH_NORM)
			set_task(0.1,"hook_task",id,"",0,"ab")
			hook_task(id)
			func_break(id)
		}      
		if( is_user_alive( id ) && get_pcvar_num( Glow ) )
		{
			if( is_user_alive( id ) && get_pcvar_num( GlowRandom ) )
			{
				set_user_rendering(id, kRenderFxGlowShell,  random_num( 0,255 ),  random_num( 0,255 ),  random_num( 0,255 ), kRenderNormal, 16 )
			}
			else
			{
				set_user_rendering(id, kRenderFxGlowShell, ( get_pcvar_num( GlowR ) ),  ( get_pcvar_num( GlowG ) ),  ( get_pcvar_num( GlowB ) ), kRenderNormal, 16 )
			}
		}
		
	}
	else
	{
		ColorChat(id, RED,"(.::?Y?°N?N‚???????°::.) ^4?¤N?????N†??N? ??N‚???»NZN‡?µ???°!")
	}
	
	if( get_pcvar_num( Fade ) )
	{
		if( get_pcvar_num( FadeRandom ) )
		{
			message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
			write_short( 10<<12 )
			write_short( 10<<16 )
			write_short( 1<<1 )
			write_byte random_num( 0,255 )
			write_byte random_num( 0,255 )
			write_byte random_num( 0,255 )
			write_byte( 255 )
			message_end()
		}
		else
		{
			message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
			write_short( 10<<12 )
			write_short( 10<<16 )
			write_short( 1<<1 )
			write_byte ( get_pcvar_num( fadeR ) )
			write_byte ( get_pcvar_num( fadeG ) )
			write_byte ( get_pcvar_num( fadeB ) )
			write_byte( 255 )
			message_end()
		}
	}
	
	return PLUGIN_HANDLED
}

// =================================================================================================

public is_hooked(id) {
	return ishooked[id-1]
}

// =================================================================================================

public hook_off(id) {
	
	remove_hook(id)
	if( is_user_alive( id ) && get_pcvar_num( Glow ) )
	{
		set_user_rendering(id, kRenderFxGlowShell,  random_num( 0,0 ),  random_num( 0,0 ),  random_num( 0,0 ), kRenderNormal, 16 )
	}
	
	if( get_pcvar_num( Fade ) )
	{
		message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
		write_short( 10<<12 )
		write_short( 10<<16 )
		write_short( 1<<1 )
		write_byte ( 255 )
		write_byte ( 255 )
		write_byte ( 255 )
		write_byte( 255 )
		message_end()
	}
	
	return PLUGIN_HANDLED
}

// =================================================================================================

public hook_task(id) {
	if(!is_user_connected(id) || !is_user_alive(id))
		remove_hook(id)
	
	remove_beam(id)
	f(id)
	func_trail(id)
	func_trail_ct(id)
	
	new origin[3], Float:velocity[3]
	get_user_origin(id,origin) 
	new distance = get_distance(hookorigin[id-1],origin)
	
	new Float:HSpeed = get_pcvar_float(HookSpeed)
	
	if(distance > HSpeed)
	{ 
		if(g_speed[id] == 0)
		{
			velocity[0] = (hookorigin[id-1][0] - origin[0]) * (4.0 * 100 / distance)
			velocity[1] = (hookorigin[id-1][1] - origin[1]) * (4.0 * 100 / distance)
			velocity[2] = (hookorigin[id-1][2] - origin[2]) * (4.0 * 100 / distance)
			}else if(g_speed[id] == 1){
			velocity[0] = (hookorigin[id-1][0] - origin[0]) * (4.0 * 200 / distance)
			velocity[1] = (hookorigin[id-1][1] - origin[1]) * (4.0 * 200 / distance)
			velocity[2] = (hookorigin[id-1][2] - origin[2]) * (4.0 * 200 / distance)
			}else if(g_speed[id] == 2){
			velocity[0] = (hookorigin[id-1][0] - origin[0]) * (4.0 * 300 / distance)
			velocity[1] = (hookorigin[id-1][1] - origin[1]) * (4.0 * 300 / distance)
			velocity[2] = (hookorigin[id-1][2] - origin[2]) * (4.0 * 300 / distance)
		} 
		
		entity_set_vector(id,EV_VEC_velocity,velocity)
	} 
	else {
		entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
		remove_hook(id)
	}
}

// =================================================================================================

public f(id)
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BEAMENTPOINT);
	write_short(id);             //???????µ??N? entity
	write_coord(hookorigin[id-1][0]);          //?s?????µN‡???°N? N‚??N‡???° x
	write_coord(hookorigin[id-1][1]);         //?s?????µN‡???°N? N‚??N‡???° y
	write_coord(hookorigin[id-1][2]);          //?s?????µN‡???°N? N‚??N‡???° z
	write_short(g_iBeamSprite);         //???????µ??N? N???N€?°??N‚?° 
	write_byte(0)                 //??N‚?°N€N‚????N‹?? ???°??N€
	write_byte(1);                 //??????N€??N?N‚N? ?°???????°N†????
	write_byte(1);                //?’N€???µN? N?N?N‰?µN?N‚???????°????N?
	write_byte(42);    //?????»N‰?????° ?»N?N‡?°
	write_byte(30);  //??N????°?¶?µ?????µ
	
	switch(random(10))
	{
		case 0:
		{
			write_byte(255);    //?¦???µN‚ ??N€?°N???N‹??
			write_byte(255);        //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(0);        //?¦???µN‚ N?????????
		}
		
		case 1:
		{
			write_byte(0);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(255);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(255);        //?¦???µN‚ N?????????
		}
		
		case 2:
		{
			write_byte(255);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(0);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(255);        //?¦???µN‚ N?????????
		}
		
		case 3:
		{
			write_byte(75);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(0);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(130);        //?¦???µN‚ N?????????
		}
		
		case 4:
		{
			write_byte(0);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(255);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(0);        //?¦???µN‚ N?????????
		}
		
		case 5:
		{
			write_byte(0);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(0);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(255);        //?¦???µN‚ N?????????
		}
		
		case 6:
		{
			write_byte(255);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(0);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(0);        //?¦???µN‚ N?????????
		}
		
		case 7:
		{
			write_byte(255);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(192);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(203);        //?¦???µN‚ N?????????
		}
		
		case 8:
		{
			write_byte(255);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(20);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(147);        //?¦???µN‚ N?????????
		}
		
		case 9:
		{
			write_byte(0);        //?¦???µN‚ ??N€?°N???N‹??
			write_byte(128);    //?¦???µ?? ?·?µ?»?µ??N‹??
			write_byte(128);        //?¦???µN‚ N?????????
		}
	}
	
	write_byte(2000);            //??N€????N?N‚N?
	write_byte(0);                //...
	message_end();
}

// =================================================================================================

public func_break(id)
{
	for(new j=0;j<sizeof(g_shortSpr);j++)
	{
		new origin[3]
		
		get_user_origin(id,origin,3)
		
		message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0},id)
		write_byte(TE_SPRITETRAIL) //????N€?°??N‚ ?·?°N…???°N‚?°
		write_coord(origin[0])
		write_coord(origin[1])
		write_coord(origin[2]+20)
		write_coord(origin[0])
		write_coord(origin[1])
		write_coord(origin[2]+80)
		write_short(g_shortSpr[j]);
		write_byte(1)
		write_byte(20)
		write_byte(4)		
		write_byte(20)
		write_byte(10)
		message_end()
	}
}

// =================================================================================================

public func_trail(id)
	
if(cs_get_user_team(id) == CS_TEAM_T)
	
{	
{
{

message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (TE_BEAMFOLLOW)
write_short (id)
write_short (gTrail)
write_byte (TRAIL_LIFE)
write_byte (TRAIL_WIDTH)
write_byte (TRAIL_RED)
write_byte (TRAIL_GREEN)
write_byte (TRAIL_BLUE)
write_byte (TRAIL_BRIGTHNESS)


message_end()
}		
}
}

public func_trail_ct(id)

if(cs_get_user_team(id) == CS_TEAM_CT)

{	
{
{

message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (TE_BEAMFOLLOW)
write_short (id)
write_short (gTrail)
write_byte (TRAIL_LIF)
write_byte (TRAIL_WIDT)
write_byte (TRAIL_RE)
write_byte (TRAIL_GREE)
write_byte (TRAIL_BLU)
write_byte (TRAIL_BRIGTHNES)
message_end()
}		
}
}

// =================================================================================================

public remove_hook(id) {
if(task_exists(id))
remove_task(id)
remove_beam(id)
ishooked[id-1] = false
}

// =================================================================================================

public remove_beam(id) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(99) // TE_KILLBEAM
write_short(id)
message_end()
}

ColorChat(id,BLUE,"^4(.::?Y?°N?N‚???????°::.) ^3?? N‚?µ?±N? ???µN‚ ???°N?N‚????N‹. ????N‚??N‚?µ ??N?????N‚N? ? ???±N€?°N‚??N‚?µN?N? ?? ^4?“?».??????????N?...") и какви са тия маймуняци ?руски ли е

Аватар
stambeto2006
Извън линия
Модератор
Модератор
Мнения: 505
Регистриран на: 06 Окт 2016, 15:44
Се отблагодари: 53 пъти
Получена благодарност: 45 пъти
Обратна връзка:

Проблем с компилиране на Hook

Мнение от stambeto2006 » 31 Дек 2020, 00:16

Тествай!
Прикачени файлове
new_hook.sma
(17.43 KiB) Свалено 90 пъти
new_hook.sma
(17.43 KiB) Свалено 90 пъти

Аватар
Lethality
Извън линия
VHE Mapper
VHE Mapper
Мнения: 211
Регистриран на: 06 Яну 2020, 15:41
Местоположение: Германия
Се отблагодари: 34 пъти
Получена благодарност: 50 пъти
Обратна връзка:

Проблем с компилиране на Hook

Мнение от Lethality » 31 Дек 2020, 16:00

Благодаря! :lock:

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 10 госта