Команды для игрока.

ThreshHNS

Участник
Сообщения
248
Реакции
87
Добрый день,
Помогите пожалуйста сделать следующий плагин:
1. При команде !block от игрока включает для него mp_solid,чтобы он мог проходить и через него могли проходить игроки. Так же и обратно !block выключает mp_solid.
Прошу добавить еще оповещение в чат,что через него могут проходить игроки/не могут проходить игроки.
(по умолчанию стоит mp_solid 0)
2. Нужно сделать,чтобы при команде !noclip клиент мог включать !noclip и также выключать его.

Команды для всех игроков (не по флагам).
Большое спасибо за ранее!
 

ThreshHNS

Участник
Сообщения
248
Реакции
87
AlmazON, в чем заключается нарушение физики игры? И при нажатие на кнопку E только ты проходишь или все?

Добавлено через 1 минуту
AlmazON, если все так как есть,может переделать его под команду?
 
Последнее редактирование:

ThreshHNS

Участник
Сообщения
248
Реакции
87
AlmazON, насчет физики не важно (пропсов не каких нет)
Для трикс серверов,зажимать и прыгать не удобно. Буду рад,если переделаешь и добавишь оповещение в чат.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
Команды для игрока: !block и !noclip

Буду рад,если переделаешь и добавишь оповещение в чат
PHP:
#include <sdkhooks>

new bool:g_bNoclip[MAXPLAYERS+1], g_iBlock[MAXPLAYERS+1] = {3}, g_offsCollisionGroup;

public OnPluginStart()
{
	RegConsoleCmd("sm_noclip", CommandNoclip);
	if((g_offsCollisionGroup = FindSendPropOffs("CBaseEntity", "m_CollisionGroup")) != -1) RegConsoleCmd("sm_block", CommandBlock);
	else LogError("The command block is not valid (offset 'CBaseEntity::m_CollisionGroup' not found).");
}

public OnClientDisconnect_Post(client) g_iBlock[client] = g_bNoclip[client] = false;

public Action:CommandNoclip(client, args)
{
	if(g_bNoclip[client])
	{
		SetEntProp(client, Prop_Data, "m_MoveType", MOVETYPE_WALK);
		g_bNoclip[client] = false;
		PrintToChat(client, "\x01 \x03Noclip \x05выключен\x01!");
	}else if(client)
	{
		SetEntProp(client, Prop_Data, "m_MoveType", MOVETYPE_NOCLIP);
		g_bNoclip[client] = true;
		PrintToChat(client, "\x01 \x05Включён \x03Noclip\x01!");
	}
	return Plugin_Handled;
}
public Action:CommandBlock(client, args)
{
	switch(g_iBlock[client])
	{
		case 0,1:
		{
			SDKHook(client, SDKHook_Touch, PlayerTouch);
			g_iBlock[client] = 2;
			SetEntData(client, g_offsCollisionGroup, 1, 4, true);
			PrintToChat(client, "\x01 \x05Включён \x03No Block\x01!");
		}case 2:
		{
			SDKUnhook(client, SDKHook_Touch, PlayerTouch);
			SetEntData(client, g_offsCollisionGroup, 5, 4, true);
			g_iBlock[client] = 0;
			PrintToChat(client, "\x01 \x03No Block \x05выключен\x01!");
		}
	}
	return Plugin_Handled;
}

public Action:PlayerTouch(client, entity)
{
	if(entity <= MaxClients) if(g_iBlock[entity] == 0)
	{
		SetEntData(entity, g_offsCollisionGroup, 1, 4, true);
		CreateTimer(0.5, PlayerBlock, entity);
		g_iBlock[entity] = 1;
	}
	return Plugin_Continue;
}

public Action:PlayerBlock(Handle:timer, any:client)
{
	if(g_iBlock[client] == 1)
	{
		SetEntData(client, g_offsCollisionGroup, 5, 4, true);
		g_iBlock[client] = 0;
	}
	return Plugin_Stop;
}
Сделал достаточно просто - не проверяется ни "живность" игрока и нет сохранения при новом раунде.
 
Последнее редактирование:

ThreshHNS

Участник
Сообщения
248
Реакции
87
AlmazON, не работает noclip как надо. Прописываешь !noclip - взлетаешь,прописываешь еще раз !noclip чтобы убрать его,ты остаешься на месте и не можешь двигаться.
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
ThreshHNS, Попробуй так:
C-подобный:
#include <sdkhooks>

new bool:g_bNoclip[MAXPLAYERS+1], g_iBlock[MAXPLAYERS+1] = {3}, g_offsCollisionGroup;

public OnPluginStart()
{
    RegConsoleCmd("sm_noclip", CommandNoclip);
    if((g_offsCollisionGroup = FindSendPropOffs("CBaseEntity", "m_CollisionGroup")) != -1) RegConsoleCmd("sm_block", CommandBlock);
    else LogError("The command block is not valid (offset 'CBaseEntity::m_CollisionGroup' not found).");
}

public OnClientDisconnect_Post(client) g_iBlock[client] = g_bNoclip[client] = false;

public Action:CommandNoclip(client, args)
{
    if(g_bNoclip[client])
    {
        SetEntProp(client, Prop_Data, "m_MoveType", [COLOR="Red"][B]MOVETYPE_WALK[/B][/COLOR]);
        g_bNoclip[client] = false;
        PrintToChat(client, "\x01 \x03Noclip \x05выключен\x01!");
    }else if(client)
    {
        SetEntProp(client, Prop_Data, "m_MoveType", 8);
        g_bNoclip[client] = true;
        PrintToChat(client, "\x01 \x05Включён \x03Noclip\x01!");
    }
    return Plugin_Handled;
}
public Action:CommandBlock(client, args)
{
    switch(g_iBlock[client])
    {
        case 0:
        {
            SDKHook(client, SDKHook_Touch, PlayerTouch);
            g_iBlock[client] = 2;
            SetEntData(client, g_offsCollisionGroup, 2, 4, true);
            PrintToChat(client, "\x01 \x05Включён \x03No Block\x01!");
        }
        case 2:
        {
            SDKUnhook(client, SDKHook_Touch, PlayerTouch);
            SetEntData(client, g_offsCollisionGroup, 5, 4, true);
            g_iBlock[client] = 0;
            PrintToChat(client, "\x01 \x03No Block \x05выключен\x01!");
        }
    }
    return Plugin_Handled;
}

public Action:PlayerTouch(client, entity)
{
    if(entity <= MaxClients) if(g_iBlock[entity] == 0)
    {
        SetEntData(entity, g_offsCollisionGroup, 2, 4, true);
        CreateTimer(1.0, PlayerBlock, entity);
        g_iBlock[entity] = 1;
    }
    return Plugin_Continue;
}

public Action:PlayerBlock(Handle:timer, any:client)
{
    g_iBlock[client] = 0;
    SDKUnhook(client, SDKHook_Touch, PlayerTouch);
    if(IsClientInGame(client)) SetEntData(client, g_offsCollisionGroup, 5, 4, true);
    return Plugin_Stop;
}
 

ThreshHNS

Участник
Сообщения
248
Реакции
87
AlmazON, все так же,после отключения остаешься неподвижным.
 

ThreshHNS

Участник
Сообщения
248
Реакции
87
AlmazON, нет,я прекрасно понимаю,как работает noclip,я летаю на юнитов 10 выше земли,все равно не отпускает. В noclip из админки все прекрасно работает

Добавлено через 23 часа 58 минут
Саша Шеин, большое спасибо,работает. Спасибо большое так же Almazon! :)
 
Последнее редактирование:
Сверху Снизу