Замораживание при попадание

Сообщения
45
Реакции
0
Нужен плагин,чтобы КТ замораживались при нанесение урона Т с ножа на 2-3 сек.
Так же добавить анимацию,что они заморожены.

Буду безумно благодарен.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
AlmazON, не влияет. По сути, должно работать.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Проблема наверное в том, что в CSGO прозрачность в Render не работает (На 192 стоит в коде). Мб из-за этого не красит, и кажется, что не замораживает? :D
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
AlmazON, не работает только прозрачность, смена цвета работает.
SetEntityRenderColor(victim, 0, 128, 255, 255);
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
ServerCommand("sm_freeze #%d", GetClientUserId(client));

%D0%B2%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BF%D0%B5%D1%80%D0%B5%D0%BF%D0%B8%D1%81%D0%BA%D0%B0-%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0-593631.jpeg
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
ServerCommand("sm_freeze #%d", GetClientUserId(client));
Создавать таймер на определенное кол-во времени а после
PHP:
ServerCommand("sm_unfreeze #%d", GetClientUserId(client));

\scripting\funcommands\ice.sp
FreezeClient()
C-подобный:
FreezeClient(client, time)
{
	if (g_FreezeSerial[client] != 0)
	{
		UnfreezeClient(client);
		return;
	}
	SetEntityMoveType(client, MOVETYPE_NONE);
	SetEntityRenderColor(client, 0, 128, 255, 192);

	if (g_FreezeSound[0])
	{
		new Float:vec[3];
		GetClientEyePosition(client, vec);
		EmitAmbientSound(g_FreezeSound, vec, client, SNDLEVEL_RAIDSIREN);
	}

	g_FreezeTime[client] = time;
	g_FreezeSerial[client] = ++ g_Serial_Gen;
	CreateTimer(1.0, Timer_Freeze, client | (g_Serial_Gen << 7), DEFAULT_TIMER_FLAGS);
}

UnfreezeClient()
C-подобный:
UnfreezeClient(client)
{
	g_FreezeSerial[client] = 0;
	g_FreezeTime[client] = 0;

	if (IsClientInGame(client))
	{
		if (g_FreezeSound[0])
		{
			new Float:vec[3];
			GetClientAbsOrigin(client, vec);
			vec[2] += 10;	
			
			GetClientEyePosition(client, vec);
			EmitAmbientSound(g_FreezeSound, vec, client, SNDLEVEL_RAIDSIREN);
		}

		SetEntityMoveType(client, MOVETYPE_WALK);
		
		SetEntityRenderColor(client, 255, 255, 255, 255);
	}
}

Если убрать всё то, что не интересно для нас, то получим
FreezeClient()
C-подобный:
SetEntityMoveType(client, MOVETYPE_NONE);
SetEntityRenderColor(client, 0, 128, 255, 192);

UnfreezeClient()
C-подобный:
SetEntityMoveType(client, MOVETYPE_WALK);
SetEntityRenderColor(client, 255, 255, 255, 255);

Единственное что, если цвет не меняется, я бы еще попробовал добавить
C-подобный:
SetEntityRenderMode(client, RENDER_TRANSCOLOR);
 

EPacker2

3D-моделист
Сообщения
1,040
Реакции
759
Хорошо. Вот только от каждого удара ножом всё начнётся сначала, похоже)Я там и смотрел.
Ну ты сказал на 2-3 секунды, я так и поставил. Это чтобы не мучаться. А если делать чистый код, без использования других плагинов - мучайся. :):blush2:

Добавлено через 54 секунды
И спама идёт море...
Ну это да.. Тогда обрезай дефолтный плагин заморозки)
 
Последнее редактирование:

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Может так можно?
PHP:
new bool:g_FreezeSerial[MAXPLAYERS+1] = false;

public OnPluginStart() HookEvent("player_hurt", Event_PlayerHurt); 

public Event_PlayerHurt(Handle:event,String:name[],bool:dontBroadcast) 
{ 
    decl String:weapon[7]; 
    GetEventString(event, "weapon", weapon, 7); 
    if(strcmp(weapon, "knife") == 0) 
    {
        new attacker=GetClientOfUserId(GetEventInt(event, "attacker"));
        if(attacker && GetClientTeam(attacker) == 3)
        {
            if(GetClientTeam(attacker))
			{
				if(g_FreezeSerial[attacker]){
					SetEntityMoveType(attacker, MOVETYPE_NONE);
					SetEntityRenderColor(attacker, 0, 128, 255, 192);
					CreateTimer(2.0, UnFreeze, any:attacker);}
			}
        } 
    } 
}

public Action:UnFreeze(Handle:timer, any:attacker)
{
	if(IsClientConnected(attacker)&&IsClientInGame(attacker))
	{
		SetEntityMoveType(attacker, MOVETYPE_NONE);
		SetEntityRenderColor(attacker, 0, 128, 255, 135);
		g_FreezeSerial[attacker]=true;
	}
}
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Эта часть перестанет работать, как только клиент выйдет с сервера до окончания таймера.
Ну да зря написал это =)


Уже не будет работать.
Ошибся в начале.

=))

Наоборот сделал + разрешил резать этой команде друг друга с заморозкой.
Не понял =(
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
AlmazON, так тогда?
PHP:
new bool:g_FreezeSerial[MAXPLAYERS+1] = true;

public OnPluginStart() 
{
	HookEvent("player_hurt", Event_PlayerHurt); 
}

public Event_PlayerHurt(Handle:event,String:name[],bool:dontBroadcast) 
{ 
    decl String:weapon[7]; 
    GetEventString(event, "weapon", weapon, 7); 
    if(strcmp(weapon, "knife") == 0) 
    {
        new attacker=GetClientOfUserId(GetEventInt(event, "attacker"));
        if(attacker && GetClientTeam(attacker) == 2)
        {
            if(attacker)
			{
				if(!g_FreezeSerial[attacker])
				{
					SetEntityMoveType(attacker, MOVETYPE_NONE);
					SetEntityRenderColor(attacker, 0, 128, 255, 192);
					g_FreezeSerial[attacker] = true;
					CreateTimer(2.0, UnFreeze, any:attacker);
				}
			}
        } 
    } 
}

public Action:UnFreeze(Handle:timer, any:attacker)
{
	if(IsClientInGame(attacker))
	{
		SetEntityMoveType(attacker, MOVETYPE_NONE);
		SetEntityRenderColor(attacker, 0, 128, 255, 135);
		g_FreezeSerial[attacker]=false;
	}
}
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
А если КТ стоят кучей, то получается, что одного ты "разрешаешь" заморозить, а другие пусть свободно гуляют 2 секунды, сколько бы их не резал Т?
Не понял =))
PHP:
new bool:g_FreezeSerial[MAXPLAYERS+1] = true;

public OnPluginStart() 
{
	HookEvent("player_hurt", Event_PlayerHurt); 
}

public Event_PlayerHurt(Handle:event,String:name[],bool:dontBroadcast) 
{ 
    decl String:weapon[7]; 
    GetEventString(event, "weapon", weapon, 7); 
    if(strcmp(weapon, "knife") == 0) 
    {
        new attacker=GetClientOfUserId(GetEventInt(event, "attacker"));
        new victim=GetClientOfUserId(GetEventInt(event,"userid")); 
        if(attacker && attacker!=victim && GetClientTeam(attacker) == 2)
        {
			if(!g_FreezeSerial[attacker])
			{
				SetEntityMoveType(attacker, MOVETYPE_NONE);
				SetEntityRenderColor(attacker, 0, 128, 255, 192);
				g_FreezeSerial[attacker] = true;
				CreateTimer(2.0, UnFreeze, any:attacker);
			}
			else
			{
					
			}
        } 
    } 
}

public Action:UnFreeze(Handle:timer, any:attacker)
{
	if(IsClientConnected(attacker)&&IsClientInGame(attacker))
	{
		SetEntityMoveType(attacker, MOVETYPE_NONE);
		SetEntityRenderColor(attacker, 0, 128, 255, 135);
		g_FreezeSerial[attacker]=false;
	}
}

Добавлено через 1 минуту
Атакующий выйдет = сбой (неработоспособность) кода для нового игрока с таким же индексом.
Хм добавить что ли: else g_FreezeSerial[attacker]=false; ?
 
Последнее редактирование:
Сверху Снизу