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

M

MihailM

Кто нибудь , доработайте этот плагин DOD:S Team Balancer - AlliedModders . Чтобы он не так часто игроков перекидывал. То есть чтобы он срабатывал не так часто типа через 15-60 сек , а то он может перекидывать , одного и того же игрока по нескольку раз. Желательно через квар, чтобы можно настроить было .
Заранее благодарен !
 

skv

Участник
Сообщения
4
Реакции
0
Добрый вечер, может кто-то написать плагин для сервера Left 4 Dead, при помощи которого можно изменить цвет ведьме при sv_cheats 0
 

skv

Участник
Сообщения
4
Реакции
0
Привет, а как его можно изменить при sv_cheats 1?

public OnClientPutInServer(client)
{
ClientCommand(client, "cl_witch_light_brightness 10"); // яркость
ClientCommand(client, "cl_witch_light_color_r 50"); // красный
ClientCommand(client, "cl_witch_light_color_g 100"); // зеленый
ClientCommand(client, "cl_witch_light_color_b 200"); // синий
}
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
PHP:
public OnClientPutInServer(client)
{
    ClientCommand(client, "cl_witch_light_brightness 10");   // яркость
    ClientCommand(client, "cl_witch_light_color_r 50");       // красный
    ClientCommand(client, "cl_witch_light_color_g 100");     // зеленый
    ClientCommand(client, "cl_witch_light_color_b 200");    // синий
}
А что если использовать
PHP:
SetCommandFlags("cl_witch_light_brightness",    GetCommandFlags("cl_witch_light_brightness")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_r",    GetCommandFlags("cl_witch_light_color_r")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_g",    GetCommandFlags("cl_witch_light_color_g")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_b",    GetCommandFlags("cl_witch_light_color_b")    &~ FCVAR_CHEAT);
в public OnPluginStart()?
 

skv

Участник
Сообщения
4
Реакции
0
А что если использовать
PHP:
SetCommandFlags("cl_witch_light_brightness",    GetCommandFlags("cl_witch_light_brightness")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_r",    GetCommandFlags("cl_witch_light_color_r")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_g",    GetCommandFlags("cl_witch_light_color_g")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_b",    GetCommandFlags("cl_witch_light_color_b")    &~ FCVAR_CHEAT);
в public OnPluginStart()?

Спасибо за совет, завтра вечером попробую.
--- Добавлено позже ---
А что если использовать
PHP:
SetCommandFlags("cl_witch_light_brightness",    GetCommandFlags("cl_witch_light_brightness")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_r",    GetCommandFlags("cl_witch_light_color_r")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_g",    GetCommandFlags("cl_witch_light_color_g")    &~ FCVAR_CHEAT);
SetCommandFlags("cl_witch_light_color_b",    GetCommandFlags("cl_witch_light_color_b")    &~ FCVAR_CHEAT);
в public OnPluginStart()?

Не выходит, консоль клиента выдает:
Can't use cheat cvar cl_witch_light_brightness in multiplayer, unless the server has sv_cheats set to 1.
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Спасибо за совет, завтра вечером попробую.
--- Добавлено позже ---


Не выходит, консоль клиента выдает:
Can't use cheat cvar cl_witch_light_brightness in multiplayer, unless the server has sv_cheats set to 1.
Это и не сработает никогда на клиент сайд квары.
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
А если так:
PHP:
public OnClientPutInServer(client)
{
 SetConVarBool(FindConVar("sv_cheats"), true, true, false);
 ClientCommand(client, "cl_witch_light_brightness 10"); // яркость
 ClientCommand(client, "cl_witch_light_color_r 50"); // красный
 ClientCommand(client, "cl_witch_light_color_g 100"); // зеленый
 ClientCommand(client, "cl_witch_light_color_b 200"); // синий
 SetConVarBool(FindConVar("sv_cheats"), false, true, false);
}
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
А о каком свете идёт речь? Когда ведьма сидит и над ней такой по дефолту красоватый? Или имеется ввиду glow вокруг ведьмы?
 

m9c0

Участник
Сообщения
159
Реакции
72
Доброго времени суток, друзья!
Необходимо дописать плагин - [CS:GO] Simple Connect Message - AlliedModders

Нужно, чтобы плагин писал логи в addons/sourcemod/logs/connectmessage/

А сами логи бы разделялись по дате
например:
cm-2016-03-17.txt
cm-2016-03-18.txt
cm-2016-03-19.txt
и так далее...

Содержимое логов:
"Игрок %s (%s) подключился к серверу из %s с IP %s", name, authid, Country, IP
"Игрок %s (%s) отключился от сервера из %s с IP %s", name, authid, Country, IP

Пытался сам, не имея знаний в sourcepawn - не получилось.
кто сможет дописать?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
PHP:
#include <sourcemod>
#include <geoip>
#pragma tabsize 0

new Handle:h_connectmsg = INVALID_HANDLE;
new Handle:h_disconnectmsg = INVALID_HANDLE;

public Plugin:myinfo = 
{
	name = "Connect MSG",
	author = "Crazy",
	description = "Provides Info of the player when he joins",
	version = "1.0Logs",
	url = ""
};

public OnPluginStart()
{	
	h_connectmsg = CreateConVar("sm_connectmsg", "1", "Shows a connect message in the chat once a player joins.", FCVAR_NOTIFY | FCVAR_DONTRECORD);
	h_disconnectmsg = CreateConVar("sm_disconnectmsg", "1", "Shows a disconnect message in the chat once a player leaves.", FCVAR_NOTIFY | FCVAR_DONTRECORD);
}

public OnClientPutInServer(client)
{
	new Connect = GetConVarInt(h_connectmsg);
	if(Connect == 1)
	{
		new String:name[99], String:authid[99], String:IP[99], String:Country[99];
		
		GetClientName(client, name, sizeof(name));
		
		GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
		
		GetClientIP(client, IP, sizeof(IP), true);
		
    if(!GeoipCountry(IP, Country, sizeof Country))
    {
        Country = "Unknown Country";
    }
        PrintToChatAll(" \x04[CONNECT]\x03 %s (%s) has joined the server from [%s]", name, authid, Country);
		WriteDataLog(client, authid, Country, IP, true);
        
    } else {
  
    CloseHandle(h_connectmsg);
   }
}

public OnClientDisconnect(client)
{
	new Disconnect = GetConVarInt(h_disconnectmsg);
	if(Disconnect == 1)
	
	{
		new String:name[99], String:authid[99], String:IP[99], String:Country[99];
		
		GetClientName(client, name, sizeof(name));
		
		GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
		
		GetClientIP(client, IP, sizeof(IP), true);
		
	if(!GeoipCountry(IP, Country, sizeof Country))
	
    {
        Country = "Unknown Country";
    }
        PrintToChatAll(" \x04[DISCONNECT]\x03 %s (%s) has left the server from [%s]", name, authid, Country);
		WriteDataLog(client, authid, Country, IP);
        
    } else {
    
    CloseHandle(h_disconnectmsg);
}

}

/*Ниже код, включающий логирование для любого плагина*/
#define LOG_PATH_DIR	"addons/sourcemod/logs/connectmessage"

stock WriteDataLog(client, const String:authid[], const String:Country[], const String:IP[], bool:connect = false)
{
	decl String:buffer[PLATFORM_MAX_PATH], String:data[11];
	FormatTime(data, sizeof(data), "%Y-%m-%d");
	FormatEx(buffer, PLATFORM_MAX_PATH, "%s/cm-%s.txt", LOG_PATH_DIR, data);
	LogToFileEx(buffer, "Игрок %N (%s) %s из %s с IP %s", client, authid, connect ? "подключился к серверу":"отключился от сервера", Country, IP);
}
Все папки должны быть созданы/существовать (вручную)!
 

m9c0

Участник
Сообщения
159
Реакции
72
@AlmazON, спасибо. Но тот код, который Вы написали - не работает. Логи не пишутся.

Код, который вы добавили в конец sp файла, был мною вставлен в sp файл и скомпилирован.
Далее создал папку addons/sourcemod/logs/connectmessage/ ;
Дал права на эту папку;
Перезапустил сервер.

Результат: Логи так и не пишутся
--- Добавлено позже ---
но мне помог ваш код, я допилил и теперь все работает.
единственный минус в том, что теперь записываются подключения\отключения игроков при смене карты

PHP:
#include <sourcemod>
#include <geoip>
#pragma tabsize 0

new Handle:h_connectmsg = INVALID_HANDLE;
new Handle:h_disconnectmsg = INVALID_HANDLE;

public Plugin:myinfo = 
{
    name = "Connect MSG",
    author = "Crazy",
    description = "Provides Info of the player when he joins",
    version = "1.0",
    url = ""
};

public OnPluginStart()
{   
    h_connectmsg = CreateConVar("sm_connectmsg", "1", "Shows a connect message in the chat once a player joins.", FCVAR_NOTIFY | FCVAR_DONTRECORD);
    h_disconnectmsg = CreateConVar("sm_disconnectmsg", "1", "Shows a disconnect message in the chat once a player leaves.", FCVAR_NOTIFY | FCVAR_DONTRECORD);
}

public OnClientPutInServer(client)
{
    new Connect = GetConVarInt(h_connectmsg);
    if(Connect == 1)
    {
        new String:name[99], String:authid[99], String:IP[99], String:Country[99];
       
        GetClientName(client, name, sizeof(name));
       
        GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
       
        GetClientIP(client, IP, sizeof(IP));
       
    if(!GeoipCountry(IP, Country, sizeof Country))
    {
        Country = "Неизвестная страна";
    }  
        PrintToChatAll(" \x03[CONNECT]\x01 Игрок\x04 %s (%s)\x01 подключился к серверу из\x04 %s\x01 с IP\x04 %s", name, authid, Country, IP);
           
            decl String:path[PLATFORM_MAX_PATH], String:data[11];
            FormatTime(data, sizeof(data), "%Y-%m-%d");
            BuildPath(PathType:Path_SM, path, sizeof(path), "logs/connectmessage/cm_%s.log", data);
            LogToFile(path, "Игрок %s (%s) подключился к серверу из %s с IP %s", name, authid, Country, IP);
       
    } else {
    CloseHandle(h_connectmsg);
   }
}

public OnClientDisconnect(client)
{
    new Disconnect = GetConVarInt(h_disconnectmsg);
    if(Disconnect == 1)
   
    {
        new String:name[99], String:authid[99], String:IP[99], String:Country[99];
       
        GetClientName(client, name, sizeof(name));
       
        GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid));
       
        GetClientIP(client, IP, sizeof(IP));
       
    if(!GeoipCountry(IP, Country, sizeof Country))
   
    {
        Country = "Неизвестная страна";
    }
   
        PrintToChatAll(" \x03[DISCONNECT]\x01 Игрок\x04 %s (%s)\x01 отключился от сервера из\x04 %s\x01 с IP\x04 %s", name, authid, Country, IP);
   
            decl String:path[PLATFORM_MAX_PATH], String:data[11];
            FormatTime(data, sizeof(data), "%Y-%m-%d");
            BuildPath(PathType:Path_SM, path, sizeof(path), "logs/connectmessage/cm_%s.log", data);
            LogToFile(path, "Игрок %s (%s) отключился от сервера из %s с IP %s", name, authid, Country, IP);
   
    } else {
   
    CloseHandle(h_disconnectmsg);
}

}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Код, который вы добавили в конец sp файла
А функцию передачи для преобразования кто добавлять будет?
WriteDataLog(client, authid, Country, IP, true);
WriteDataLog(client, authid, Country, IP);
Дан же полный код, никто не виноват, что вам лень посмотреть несколько десятков строк.
Ничего подобного, ботов исправно записывало. Оффтоп
 

m9c0

Участник
Сообщения
159
Реакции
72
извините, не увидел
--- Добавлено позже ---
@AlmazON, спасибо Вам за помощь. Все работает!
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
единственный минус в том, что теперь записываются подключения\отключения игроков при смене карты
Это уже надо весь Connect MSG переписывать. Оффтоп
Ну, наконец-то. :biggrin:
 

skv

Участник
Сообщения
4
Реакции
0
А о каком свете идёт речь? Когда ведьма сидит и над ней такой по дефолту красоватый? Или имеется ввиду glow вокруг ведьмы?

Да, свет который по дефолту красноватый
--- Добавлено позже ---
А если так:
PHP:
public OnClientPutInServer(client)
{
SetConVarBool(FindConVar("sv_cheats"), true, true, false);
ClientCommand(client, "cl_witch_light_brightness 10"); // яркость
ClientCommand(client, "cl_witch_light_color_r 50"); // красный
ClientCommand(client, "cl_witch_light_color_g 100"); // зеленый
ClientCommand(client, "cl_witch_light_color_b 200"); // синий
SetConVarBool(FindConVar("sv_cheats"), false, true, false);
}
Попробую - отпишусь, спасибо.
--- Добавлено позже ---
А если так:
PHP:
public OnClientPutInServer(client)
{
SetConVarBool(FindConVar("sv_cheats"), true, true, false);
ClientCommand(client, "cl_witch_light_brightness 10"); // яркость
ClientCommand(client, "cl_witch_light_color_r 50"); // красный
ClientCommand(client, "cl_witch_light_color_g 100"); // зеленый
ClientCommand(client, "cl_witch_light_color_b 200"); // синий
SetConVarBool(FindConVar("sv_cheats"), false, true, false);
}
Тоже не катит :(
 
Последнее редактирование:

tsmae

Участник
Сообщения
9
Реакции
0
До сих пор бесплатно плагины тут пишут?:D
Можно мне для csgo плагин,который по команде в чат !usp выдает usp,при этом в чате будет писаться "Админинстратор выдал вам usp :) "
 

Черная вдова

Участник
Сообщения
2,795
Реакции
670
C-подобный:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
//#include <csgo_colors>

public OnPluginStart()
{
    RegConsoleCmd("sm_usp", TestVIP_CMD);
}

public Action:TestVIP_CMD(client, args)
{
    if (client && IsPlayerAlive(client))
    {
        GivePlayerItem(client, "weapon_usp_silencer");
        PrintToChat(client, "Админинстратор выдал вам usp :)");
    }
    return Plugin_Handled;
}
Будет выдавать p2000 если он выбран клиентом
 
Сверху Снизу