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

cors

Участник
Сообщения
58
Реакции
2
Пробуй
PHP:
#include <sourcemod>
#include <sdktools>

#define MODEL "models/items/healthkit.mdl"
#define HEALTH 25

public Plugin:myinfo = 
{
    name    = "Health Kit",
    author    = "wS / Schmidt",
    version    = "1.1",
    url        = "http://world-source.ru/"
};

public OnPluginStart()
{
    RegConsoleCmd("hl", CallBack)
}

public OnConfigsExecuted()
{
    PrecacheModel(MODEL, true);
}

public Action:CallBack(client, args)
{
    if (client > 0)
    {
        if (GetClientTeam(client) > 1)
        {
            if (IsPlayerAlive(client))
            {
                new ent = CreateEntityByName("prop_physics");
                if (ent > 0)
                {
                    decl Float:pos[3];
                    GetClientAbsOrigin(client, pos);

                    pos[0] += 35.0; pos[2] += 75.0;

                    DispatchKeyValue(ent, "model", MODEL);
                    DispatchKeyValueVector(ent, "origin", pos);
                    DispatchKeyValue(ent, "solid", "6");
                    DispatchKeyValue(ent, "spawnflags", "18");
                    DispatchSpawn(ent);

                    HookSingleEntityOutput(ent, "OnStartTouch", OnStartTouch);
                }
            }
        }
    }

    return Plugin_Handled;
}

public OnStartTouch(const String:output[], ent, client, Float:delay)
{
    if (0 < client <= MaxClients)
    {
        SetEntProp(client, Prop_Send, "m_iHealth", GetClientHealth(client) + HEALTH);
    }
}

p.s. Использован код wS

Добавлено через 45 минут
Идея из темы http://hlmod.ru/forum/counter-strike-source/19029-plagin-kotoryi-zabiraet-adminku.html

Пробуем
PHP:
#include <sourcemod>

#define FILE "addons/sourcemod/configs/admin_time.cfg"

new Handle:KeyValues = INVALID_HANDLE;

new String:date[][] = {"YEAR", "MONTH", "DAY", "HOUR", "MINUTE"},
    String:char[][] = {"%Y", "%m", "%d", "%H", "%M"};

public OnPluginStart()
{
    KeyValues = CreateKeyValues("ADMIN_TIME");
} 

public OnMapStart()
{
    if (!FileToKeyValues(KeyValues, FILE))
    {
        SetFailState("File '%s' not found!", FILE);
    }
}

public OnClientPostAdminCheck(client)
{
    new AdminId:admin = GetUserAdmin(client);

    if (admin != INVALID_ADMIN_ID)
    {
        decl String:buffer[30];
        if (GetClientAuthString(client, buffer, sizeof(buffer)))
        {
            if (KvJumpToKey(KeyValues, buffer, false))
            {
                decl String:time[256];
                for (new i = 0; i < 5; i++)
                {
                    KvGetString(KeyValues, date[i], buffer, sizeof(buffer));
                    FormatTime(time, sizeof(time), char[i]);

                    if (StringToInt(time) > StringToInt(buffer))
                    {
                        RemoveAdmin(admin);
                        break;
                    }
                }
            }
        }
    }
}

Путь до файла: addons/sourcemod/configs/admin_time.cfg

Примерное заполнение файла:
PHP:
"ADMIN_TIME"
{
    "STEAM_0:0:1" // SteamID игрока
    {
        "YEAR"        "2013"    // Год
        "MONTH"        "12"    // Месяц
        "DAY"        "31"    // День
        "HOUR"        "15"    // Час
        "MINUTE"    "30"    // Минута
    }
}

Спасибо огромное,а то мне в той теме не совсем помогли.А не подскажете как можно сделать чтобы в правом нижнем углу выводилось когда закончится время админки.
Например через этот плагин http://hlmod.ru/forum/plaginy-dlya-sourcemod/5211-hud-info-v1-2-a.html что туда нужно писать.
И еще вопрос 1,какой литературой пользуешься?Есть какой нибудь учебник на русском?
 
Последнее редактирование:

cors

Участник
Сообщения
58
Реакции
2
ну или просто чтобы в админке сверху писалось дата окончания действия админки.
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
На счет админки - потом. Учился в основном не на учебниках (мануалах). Обучал, можно сказать так, wS
 
Сообщения
1
Реакции
0
ALЬTAIR
PHP:
#include <sourcemod> 
#include <sdktools> 
#include <sdkhooks> 

new g_hVisible[MAXPLAYERS + 1] = {1, ...};
new g_iIsConnectedOffset = -1;

public Plugin:myinfo = 
{
	name = "HideMe",
	author = "blodia, LordMarqus",
    description = "",
    version = "1.0.0",
    url = "http://www.sourcemod.net/"
}

public OnPluginStart()
{
	RegAdminCmd("hide", CallBack, ADMFLAG_BAN);
}

public OnMapStart() 
{
	g_iIsConnectedOffset = FindSendPropOffs("CCSPlayerResource", "m_bConnected");
	if (g_iIsConnectedOffset == -1)
	{
		SetFailState("CCSPlayerResource.m_bConnected offset is invalid");
	}

	new CSPlayerManager = FindEntityByClassname(-1, "cs_player_manager");

	if (CSPlayerManager > 0)
	{
		SDKHook(CSPlayerManager, SDKHook_ThinkPost, OnThinkPost);
	}
} 

public OnThinkPost(entity) 
{
	decl isConnected[65];
	
	GetEntDataArray(entity, g_iIsConnectedOffset, isConnected, 65);
	for (new i = 1; i <= MaxClients; ++i)
	{
		if (IsClientInGame(i))
		{
			isConnected[i] = g_hVisible[i];
		}
	}
	SetEntDataArray(entity, g_iIsConnectedOffset, isConnected, 65);
}

public Action:CallBack(client, args)
{
	if (client > 0)
	{
		g_hVisible[client] = !g_hVisible[client];
	}
	
	return Plugin_Handled;
}
У меня не компилиться помогите!
 

Иван Сидоров

Участник
Сообщения
1
Реакции
0
Добрый день. Сможешь написать плагин, в котором атакующему даётся +2 фрага за убийство, если он из команды КТ и +1 фраг если из команды Т.
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Иван Сидоров
PHP:
#include <sourcemod>

public OnPluginStart()
{
	HookEvent("player_death", Event_OnPlayerDeath);
}

public Event_OnPlayerDeath(Handle:event, const String:name[], bool:silent)
{
	new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));

	if (attacker > 0)
	{
		new client = GetClientOfUserId(GetEventInt(event, "userid"));

		if (client > 0)
		{
			new team = GetClientTeam(attacker);

			if (team != GetClientTeam(client))
			{
				SetEntProp(attacker, Prop_Send, "m_iFrags", GetEntProp(attacker, Prop_Send, "m_iFrags", 4) + (team == 2 ? 1 : 2));
			}
		}
	}
}
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
The End Is Near..., по идее team == 2 ? 0 : 1, +1 ведь и так стандартно уже дается
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
Уважаемый, нужна твоя помощь. Есть плагин Гангейма v.1.9.1. Есть кусок кода, дописанный другим кодером, добавляющий голосовалку во время разогрева за выбор режима игры (применяет те или иные gungame.config и gungame.equip; задействуются после разминки) для текущей мапы. Есть версия Гангейма 1.12, куда всё это добро надо допилить, чтобы было, как раньше.
Я не кодер. Копипаста с подгонкой констант и прочего недостающего (на мой взгляд) - не компилится, где-то что-то упускаю, видимо.
Подсоби, а?
Уже 5 человек, занимающиеся написанием плагинов, по тем или иным причинам отказались сделать. Уже и не знаю, к кому обращаться....
 

DJ Cool Spot

Участник
Сообщения
80
Реакции
6
The End Is Near..., Привет:) Напиши пожалуйста плагин, который будет оставлять след (трейл) за игроком (желательно чтобы выбор цвета был из меню, а цвета которые в меню выводились из файла:)
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
The End Is Near..., GetClientTeam(i) > 1 - зачем? (если только не плагин для возможности поднимания бомбы КТ), проще ==2
если на респе, то лучше сделать OnPlayerSpawn делать флаг true и как только игрок начинает двигаться false - меньше обработки

А если игрок сдвинулся с места и стал афк? А насчет бомбы: бомба может быть не только у TR
 

cors

Участник
Сообщения
58
Реакции
2
можешь написать такой плагин?Мне нужно чтобы после начала РАУНДА через 30 сек. включался другой плагин.Ведь админ же может спомощью кваров включать и выключать плагин.И по началу ноового раунда плагин снова выключался и через 30 сек. включался.И если игрок будет писать команду которая относится к плагину который включается и выключается то чтобы ему в чате писалось то что этот плагин будет работать через 30 сек. после начала раунда.

Надеюсь понятно описал то что мне нужно.
Буду очень благодарен.
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
cors
Какая команда у плагина? Скинь сюда или в лс лучше плагин этот
 

Lev

Добрая душа
Сообщения
360
Реакции
319
Можно написать плагин чтоб админку давал на время можно по примеру Admins Manager v1.2.1
или новый чтоб можно было настроить на сколько дать админку например на месяц и по истечению
она снималась. можно добавить эту возможность в плагин Admins Manager
И чтоб писалось при определенной команде в чат сколько осталось до окончание админки
Если невозможно сделать то хотя бы что нибудь подобное на усмотрения автора
 

cors

Участник
Сообщения
58
Реакции
2
он подобный сделал на 11 странице 158 пост.Я вот жду когда он сделает чтобы в админку выводилась дата,сказал что потом займется,а так админка по истечению времени перестает работать.
 

Lev

Добрая душа
Сообщения
360
Реакции
319
Я то просил чтоб он его попробовал в меню закрепить по типу админ менеджер или как полноценная замена админ менеджер чтоб прямо из админки можно было выбрать функцию управления админами добавить админа и там подразделы на месяц на всегда на год на день на час и тому подобное чтоб он удалял админов из admine_simple.ini и из Admins.cfg и чтоб в меню при нажатии редактировать админов было написано сколько у каждого осталось времени до окончания админки, чтоб сам админ который купил админку написал например в чат какую нибудь команду на усмотрение создателя и увидел сколько ему времени осталось до окончания
Вот вроде бы всё изложил что хотел если не хватит интузиазма и стимула готов отблагодарить за роботу деньгами.
За ранее спасибо.
 
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
можешь написать такой плагин?Мне нужно чтобы после начала РАУНДА через 30 сек. включался другой плагин.Ведь админ же может спомощью кваров включать и выключать плагин.И по началу ноового раунда плагин снова выключался и через 30 сек. включался.И если игрок будет писать команду которая относится к плагину который включается и выключается то чтобы ему в чате писалось то что этот плагин будет работать через 30 сек. после начала раунда.

Надеюсь понятно описал то что мне нужно.
Буду очень благодарен.

Пробуй
 

Вложения

  • tripmines-control.zip
    5.8 КБ · Просмотры: 36

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Лев
Какой плагин стоит, снимающий администраторские права в срок?
 

cors

Участник
Сообщения
58
Реакции
2
-88693455.jpg
получается вот такое и цифры в минус уходят.
И мины не ставятся после окончания времени.
 
Последнее редактирование:
Сверху Снизу