Иконка ресурса

tikki

Участник
Сообщения
20
Реакции
8
я изменить изменил, а вот компиляция для меня, это пока еще неизвестная процедурка..)
 

kleuser

Участник
Сообщения
1,838
Реакции
732
@Shaabin попробуй так. должно работать.
C-подобный:
#pragma semicolon 1

#include <sourcemod>
#include <vip_core>

public Plugin:myinfo =
{
    name = "[VIP] Medkit",
    author = "R1KO",
    version = "1.0"
};

static const String:g_sFeature[] = "Medkit";

new g_iUsed[MAXPLAYERS+1];

new g_iMinHP, g_iHP;

new m_iHealth;

public OnPluginStart()
{
    m_iHealth     = FindSendPropInfo("CCSPlayer", "m_iHealth");

    HookEventEx("round_start", Event_RoundStart, EventHookMode_PostNoCopy);

    RegConsoleCmd("med", Medkit_CMD);
    RegConsoleCmd("medic", Medkit_CMD);

    new Handle:hCvar = CreateConVar("sm_vip_medkit_min_health", "30", "Сколько у игрока должно быть хп чтобы он мог использовать аптечку", 0, true, 1.0);
    g_iMinHP = GetConVarInt(hCvar);
    HookConVarChange(hCvar, OnMinHPChange);
   
    hCvar = CreateConVar("sm_vip_medkit_health", "100", "До скольки хп должна восстанавливать аптечка", 0, true, 1.0);
    g_iHP = GetConVarInt(hCvar);
    HookConVarChange(hCvar, OnHPChange);
   
    AutoExecConfig(true, "vip_medkit", "vip");

    LoadTranslations("vip_modules.phrases");
    LoadTranslations("vip_core.phrases");

    if(VIP_IsVIPLoaded())
    {
        VIP_OnVIPLoaded();
    }
}

public OnMinHPChange(Handle:hCvar, const String:oldValue[], const String:newValue[])    g_iMinHP = GetConVarInt(hCvar);
public OnHPChange(Handle:hCvar, const String:oldValue[], const String:newValue[])    g_iHP = GetConVarInt(hCvar);

public OnPluginEnd()
{
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
    {
        VIP_UnregisterFeature(g_sFeature);
    }
}

public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, INT, SELECTABLE, OnSelectItem, OnDisplayItem, OnDrawItem);
}

public bool:OnSelectItem(iClient, const String:sFeatureName[])
{
    MedkitClient(iClient);
    return true;
}

public bool:OnDisplayItem(iClient, const String:sFeatureName[], String:sDisplay[], maxlen)
{
    if(VIP_GetClientFeatureStatus(iClient, sFeatureName) == ENABLED)
    {
        FormatEx(sDisplay, maxlen, "%T [%T]", sFeatureName, iClient, "Left", iClient, (VIP_GetClientFeatureInt(iClient, g_sFeature)-g_iUsed[iClient]));
        return true;
    }

    return false;
}

public OnDrawItem(iClient, const String:sFeatureName[], iStyle)
{
    if(VIP_GetClientFeatureStatus(iClient, sFeatureName) != NO_ACCESS )
    {
        if(g_iUsed[iClient] >= VIP_GetClientFeatureInt(iClient, g_sFeature))
        {
            return ITEMDRAW_DISABLED;
        }
    }

    return iStyle;
}

public Action:Medkit_CMD(iClient, args)
{
    if(iClient)
    {
        if(VIP_IsClientVIP(iClient) && VIP_IsClientFeatureUse(iClient, g_sFeature))
        {
            MedkitClient(iClient);
        }
        else
        {
            VIP_PrintToChatClient(iClient, "%t", "COMMAND_NO_ACCESS");
        }
    }
    return Plugin_Handled;
}

public Event_RoundStart(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
    for(new i = 1; i <= MaxClients; i++) g_iUsed[i] = 0;
}

public OnClientPutInServer(iClient)
{
    g_iUsed[iClient] = 0;
}

MedkitClient(iClient)
{
    if(!IsPlayerAlive(iClient))
    {
        VIP_PrintToChatClient(iClient, "Вы должны быть живы!");
        return;
    }

    if(GetClientTeam(iClient) < 2)
    {
        VIP_PrintToChatClient(iClient, "Вы должны быть в команде!");
        return;
    }

    if(g_iUsed[iClient] >= VIP_GetClientFeatureInt(iClient, g_sFeature))
    {
        PrintToChat(iClient, "%tДостигнут лимит использований за раунд!", "VIP_CHAT_PREFIX");
        return;
    }

    if(GetEntData(iClient, m_iHealth) > g_iMinHP)
    {
        VIP_PrintToChatClient(iClient, "У вас слишком много хп!");
        return;
    }

    ++g_iUsed[iClient];

    SetEntData(iClient, m_iHealth, g_iHP);
    VIP_PrintToChatClient(iClient, "Здоровье восстановлено!");
}

компиль сам т.к файлы загружать сейчас нельзя на форум, какая-то ошибка вылазит.
 

sladerev

Участник
Сообщения
323
Реакции
29
Изменить в RegConsoleCmd("med", Medkit_CMD) и скомпилировать
я изменить изменил, а вот компиляция для меня, это пока еще неизвестная процедурка..)
А что на счет, чтобы выводилось потом сообщения, о успешном пополнении?
 

mauzer199

Участник
Сообщения
31
Реакции
2
а союзников можно лечить? допустим стреляешь и у них хп пополняется
 

XDSTYLE

Участник
Сообщения
400
Реакции
279
у меня есть отдельный модуль, лечить игроков стреляя в них (но вроде без исходника)
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
У меня уже есть такой модуль, готовый если интересно, отпиши в лс
 

BloodyAngel

Участник
Сообщения
30
Реакции
15
1. Переведён на новый синтаксис.
2. Добавлена переменная вкл./выкл. плагина.
2. Добавлена переменная, позволяющая выбрать, устанавливать ли указанное значение здоровья или добавлять к текущему здоровью.
P.S.: перед установкой удалить конфиг от предыдущей версии модуля.
 

Вложения

  • VIP_Medkit_1.0.sp
    5.2 КБ · Просмотры: 11
Сверху Снизу