[CSGO] Не выдаются оружия.

burden boy

Участник
Сообщения
98
Реакции
4
Здравствуйте, имеется плагин - он должен забирать оружия, и выдавать другие. Но он не делает, ни того, ни другого. Плагин проверял, он подключен - но не выполняет должных функций.

PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <vip_core>

int g_iGrenadeOffsets[] = {15, 17, 16, 14, 18, 17};

public Plugin:myinfo =
{
    name = "Name",
    author = "Author",
    version = "0.1"
};

new const String:g_sFeature[] = "DefenderGun";

public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, BOOL);

    VIP_HookClientSpawn(OnPlayerSpawn);
}

public OnPlayerSpawn(iClient, iTeam, bool:bIsVIP)
{
    if(bIsVIP && VIP_IsClientFeatureUse(iClient, g_sFeature))
    {
        WeaponDelete(iClient);
        GivePlayerItem(iClient, "weapon_ump45");
        GivePlayerItem(iClient, "weapon_knife");
        GivePlayerItem(iClient, "weapon_usp_silencer");
        GivePlayerItem(iClient, "weapon_decoy");
    }
}

public void WeaponDelete(int iClient)
{
    for (int i = 0; i < 4; ++i)
    {
        if (i == 3)
        {
            RemoveNades(iClient);
        }
        else
        {
            RemoveWeaponBySlot(iClient, i);
        }
    }
}

stock void RemoveNades(int iClient)
{
    while (RemoveWeaponBySlot(iClient, 3))
    {
        for (int i = 0; i < 6; i++)
        {
            SetEntProp(iClient, Prop_Send, "m_iAmmo", 0, _, g_iGrenadeOffsets[i]);
        }
    }
}

stock bool RemoveWeaponBySlot(int iClient, int slot)
{
    int entity = GetPlayerWeaponSlot(iClient, slot);
    if(IsValidEdict(entity))
    {
        RemovePlayerItem(iClient, entity);
        AcceptEntityInput(entity, "Kill");
        return true;
    }
    
    return false;
}
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
Здравствуйте, имеется плагин - он должен забирать оружия, и выдавать другие. Но он не делает, ни того, ни другого. Плагин проверял, он подключен - но не выполняет должных функций.

PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <vip_core>

int g_iGrenadeOffsets[] = {15, 17, 16, 14, 18, 17};

public Plugin:myinfo =
{
    name = "Name",
    author = "Author",
    version = "0.1"
};

new const String:g_sFeature[] = "DefenderGun";

public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, BOOL);

    VIP_HookClientSpawn(OnPlayerSpawn);
}

public OnPlayerSpawn(iClient, iTeam, bool:bIsVIP)
{
    if(bIsVIP && VIP_IsClientFeatureUse(iClient, g_sFeature))
    {
        WeaponDelete(iClient);
        GivePlayerItem(iClient, "weapon_ump45");
        GivePlayerItem(iClient, "weapon_knife");
        GivePlayerItem(iClient, "weapon_usp_silencer");
        GivePlayerItem(iClient, "weapon_decoy");
    }
}

public void WeaponDelete(int iClient)
{
    for (int i = 0; i < 4; ++i)
    {
        if (i == 3)
        {
            RemoveNades(iClient);
        }
        else
        {
            RemoveWeaponBySlot(iClient, i);
        }
    }
}

stock void RemoveNades(int iClient)
{
    while (RemoveWeaponBySlot(iClient, 3))
    {
        for (int i = 0; i < 6; i++)
        {
            SetEntProp(iClient, Prop_Send, "m_iAmmo", 0, _, g_iGrenadeOffsets[i]);
        }
    }
}

stock bool RemoveWeaponBySlot(int iClient, int slot)
{
    int entity = GetPlayerWeaponSlot(iClient, slot);
    if(IsValidEdict(entity))
    {
        RemovePlayerItem(iClient, entity);
        AcceptEntityInput(entity, "Kill");
        return true;
    }
   
    return false;
}
OnPlayerSpawn замени на VIP_OnPlayerSpawn и VIP_HookClientSpawn удали.
 

burden boy

Участник
Сообщения
98
Реакции
4
OnPlayerSpawn замени на VIP_OnPlayerSpawn и VIP_HookClientSpawn удали.
PHP:
public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, BOOL);

    VIP_OnPlayerSpawn(iClient, iTeam, bool:bIsVIP);
}

public VIP_OnPlayerSpawn(iClient, iTeam, bool:bIsVIP)
{
    if(bIsVIP && VIP_IsClientFeatureUse(iClient, g_sFeature))
    {
        WeaponDelete(iClient);
        GivePlayerItem(iClient, "weapon_ump45");
        GivePlayerItem(iClient, "weapon_knife");
        GivePlayerItem(iClient, "weapon_usp_silencer");
        GivePlayerItem(iClient, "weapon_decoy");
    }
}

Так? Поглядел include vip_core, но ошибку при компиляции выдает.
 

burden boy

Участник
Сообщения
98
Реакции
4
PHP:
public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, BOOL);

    VIP_OnPlayerSpawn(iClient, iTeam, bool:bIsVIP); <<
}
Удали)
IuXrSsh6RJCwPhsbNQmp9w.png

--- Добавлено позже ---
PHP:
public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, BOOL);

    VIP_OnPlayerSpawn(iClient, iTeam, bool:bIsVIP); <<
}
Удали)
Ошибка та-же, как и ожидалось. ; не влияет на это, а закрывает код.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
ExplodeMessage/
 
Последнее редактирование модератором:

burden boy

Участник
Сообщения
98
Реакции
4
Видимо это было за гранью понимания.
Изначально, я так и сделал. Но в итоге, не работает.
--- Добавлено позже ---
update:
Дает оружия, но не там где нужно - добавил проверку, но почему то пишет что bEnable не используется, хотя используется.
В итоге работает везде, как исправить?

PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <vip_core>

int g_iGrenadeOffsets[] = {15, 17, 16, 14, 18, 17};
new bool:bEnable;

public Plugin:myinfo =
{
    name = "Name",
    author = "Author",
    version = "0.1"
}

public void OnMapStart()
{
    char sMap[32];
    GetCurrentMap(sMap, sizeof(sMap));
    bEnable = (StrContains(sMap, "mg_towerdefence_minecraft_v3") == 0);
}

new const String:g_sFeature[] = "DefenderGun";

public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, BOOL);
}

public VIP_OnPlayerSpawn(iClient, iTeam, bool:bIsVIP)
{
    if(bIsVIP && VIP_IsClientFeatureUse(iClient, g_sFeature))
    {
        WeaponDelete(iClient);
        GivePlayerItem(iClient, "weapon_ump45");
        GivePlayerItem(iClient, "weapon_knife");
        GivePlayerItem(iClient, "weapon_usp_silencer");
        GivePlayerItem(iClient, "weapon_decoy");
    }
}

public void WeaponDelete(int iClient)
{
    for (int i = 0; i < 4; ++i)
    {
        if (i == 3)
        {
            RemoveNades(iClient);
        }
        else
        {
            RemoveWeaponBySlot(iClient, i);
        }
    }
}

stock void RemoveNades(int iClient)
{
    while (RemoveWeaponBySlot(iClient, 3))
    {
        for (int i = 0; i < 6; i++)
        {
            SetEntProp(iClient, Prop_Send, "m_iAmmo", 0, _, g_iGrenadeOffsets[i]);
        }
    }
}

stock bool RemoveWeaponBySlot(int iClient, int slot)
{
    int entity = GetPlayerWeaponSlot(iClient, slot);
    if(IsValidEdict(entity))
    {
        RemovePlayerItem(iClient, entity);
        AcceptEntityInput(entity, "Kill");
        return true;
    }
   
    return false;
}
 
Последнее редактирование:
Сверху Снизу