Написание плагинов

M

MihailM

Серый™, Оффтоп
 
Последнее редактирование модератором:

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
SteamM, бессмысленная затея, так как за чистую список карт берётся не из папки, а из текстовых файлов. Обычным перемещением карты, ты тока можешь сделать падения сервера на такую карту.
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Оффтоп
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Ждать чего ? Я говорю про то, что сам способ загрузки карт (я пробовал так), никак не вредит серверу, разве что проблемы буду с совместностью плагинов, которые читают карты из корня папки maps
 

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
Vit_ amin, я имел виду жди того кто тебе напишет такой плагин.
 

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
SteamM, возможно, но много нюансов, например тех плагин которые меняют карту, они список могут брать из конфиг, а не составлять каждый раз из папки карт.
 

Metamoto

Участник
Сообщения
407
Реакции
14
Ребят, напишите пожалуйста простенький плагин, он должен быть на подобии stb2 чтобы через меню админское банить людей и выбирать на сколько времени, а так же, чтобы можно было разбанивать через меню. База данных локальная. Ну и естественно, чтобы при выборе забаненного игрока показывало сколько ему осталось и с какого по какое он забанен, и чтобы была видна причина(но это не обязательно)
 

₮αй₮оβый

Участник
Сообщения
317
Реакции
35
люди добрые, напишите пожалуйста простой плагин, игрок(террорист) пишет команду например !s, у него пропадает нож и все оружие и взять он его уже не может, ну и скин становится черного цвета, когда т пишет !s для него в чат инфа: вы сдались, для кт: игрок (ник) сдался, заранее спс)
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
люди добрые, напишите пожалуйста простой плагин, игрок(террорист) пишет команду например !s, у него пропадает нож и все оружие и взять он его уже не может, ну и скин становится черного цвета, когда т пишет !s для него в чат инфа: вы сдались, для кт: игрок (ник) сдался, заранее спс)

Аж страшно выкладывать плагин, намудрил может чего там. Вообщем проверь.
Команда sm_s или !s
PHP:
#pragma semicolon 1
#include <sdktools>
#include <sdkhooks>

new bool:b_s[MAXPLAYERS + 1];

// Список блокируемого оружия.
new const String:block_weapons_list[][] =
{
    "ak47", "aug", "mp7", "mp9", "scar20", "deagle", "revolver",
    "usp_silencer", "ump-45", "sawedoff", "nova", "negev",
    "m249", "m4a1", "m4a1-silencer", "awp", "g3sg1", "ssg08",
    "glock", "fiveseven", "cz75a", "elite", "decoy", "flashbang",
    "galilar", "galil", "hkp2000", "incgrenade", "molotov", "hegrenade",
    "c4", "smokegrenade", "sg556", "taser", "tec9", "p90", "tmp", "ump45",
    "knife"
};

#define Weapon_Count sizeof(block_weapons_list)

public OnPluginStart()
{
	RegConsoleCmd("sm_s", Cmd_S);
	HookEvent("player_spawn", Player_Spawn);
}

public Action:Cmd_S(client, args)
{
	if (client != 0)
	{
		if (IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2)
		{
			b_s[client] = true;
			RemoveAllPlayersWeapons(client);
			SetEntityRenderColor(client, 0, 0, 0, 255);
			PrintToChatAll("%N сдался!");
		}
	}
}

// Запрещает использовать и поднимать запрещенное оружие.
public Action:WeaponEquip(client, weapon) 
{ 
    if(GetClientTeam(client) == 2 && b_s[client] == true)
    {
        decl String:blockWeapon[32]; 
        GetEntityClassname(weapon, blockWeapon, sizeof(blockWeapon));

        for(new i = 0; i < Weapon_Count; ++i) 
        { 
            if(strcmp(blockWeapon[7], block_weapons_list[i]) == 0)
            {    
                return Plugin_Handled; 
            } 
        } 
    } 
    return Plugin_Continue; 
}

public Player_Spawn(Handle:event, const String:name[], bool:dontBroadcast){
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	
	if(IsClientInGame(client) && !IsFakeClient(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2)
	{
		b_s[client] = false;
	}
}

public OnClientPostAdminCheck(client)
{
	SDKHook(client, SDKHook_WeaponEquip, WeaponEquip);
}

public OnClientDisconnect(client){
	b_s[client] = false;
	
	SDKUnhook(client, SDKHook_WeaponEquip, WeaponEquip);
}

/* Stocks */

stock RemoveAllPlayersWeapons(client)
{
    new weaponindex;
    for (new weaponslot = 0; weaponslot < 5; weaponslot++)
    {
        weaponindex = GetPlayerWeaponSlot(client, weaponslot);
        if (weaponindex != -1)
        {
            Util_RemovePlayerItem(client, weaponindex);
        }
    }
    
    WepLib_GrenadeStripAll(client);
}

stock Util_RemovePlayerItem(client, weaponindex)
{
    RemovePlayerItem(client, weaponindex);
    RemoveEdict(weaponindex);
}

stock WepLib_GrenadeStripAll(client)
{
    new grenade = GetPlayerWeaponSlot(client, 3);
    while (grenade != -1)
    {
        Util_RemovePlayerItem(client, grenade);
        grenade = GetPlayerWeaponSlot(client, 3);
    }
}
 
Последнее редактирование:

₮αй₮оβый

Участник
Сообщения
317
Реакции
35
Вообщем проверь

все работает, но оружие может брать повторно, в принципе можно и так оставить, потому что я слегка тупанул, во время lr им же тоже оружие не дадут, либо надо как-нито исключение на lr ставить
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
!= 0 быстрее.


Может наоброт?

Уже подсказали, исправил.
А ты то и не заметил что я забыл SDKHOOK_WEAPONEQUIP сделать :)

Добавлено через 4 минуты
все работает, но оружие может брать повторно, в принципе можно и так оставить, потому что я слегка тупанул, во время lr им же тоже оружие не дадут, либо надо как-нито исключение на lr ставить

Мне нужна библиотека мода которого ты используешь.
Тогда сделаю так. Если идет !lr, то игроку можно поднимать оружие. (но нужна библиотека, т.е include).
 
Последнее редактирование:
Сверху Снизу