Как выдавать снежки?

FolkiDev

Участник
Сообщения
38
Реакции
2
Доброе утро, как выдавать снежки?! И включить снег?
 

Черная вдова

Участник
Сообщения
2,795
Реакции
670
То есть если вкл. То снежки можно будет поднимать? На той же самой awp_lego_2 Про снег просто, как его включить
Скорее всего только для стандартных карт
Но может там есть что то типо weapon_snowball добавлено в обновлении
И можно например плагином выдавать каждому снежок
 

FolkiDev

Участник
Сообщения
38
Реакции
2

komashchenko

Идиот
Сообщения
916
Реакции
2,569
Не думаю что за раунд выкинут 999 снежков

"ammo_grenade_limit_snowballs" = "3" game replicated
"sv_snowball_strength" = "12.0" min. 2.000000 max. 64.000000 game replicated - Snowball strength
 

Вложения

  • endless_snowballs.sp
    1,006 байт · Просмотры: 136

valerike

Участник
Сообщения
57
Реакции
1
после прописывания команды !snow сервер падает после обновы!!!!!!!!
 

FolkiDev

Участник
Сообщения
38
Реакции
2
Друзья, а как кучку снежков заспавнить?!
 

ANDROKOR

Участник
Сообщения
3
Реакции
0
как увиличить урон от снежков не -5,а больше ?
 

Hustle29

Участник
Сообщения
109
Реакции
4
Не думаю что за раунд выкинут 999 снежков

"ammo_grenade_limit_snowballs" = "3" game replicated
"sv_snowball_strength" = "12.0" min. 2.000000 max. 64.000000 game replicated - Snowball strength
А можно убрать эффект от снежков? когда в тебя попали и не видно ничего на пару сек. А то у меня на bhop сервере будут друг другу в лицо кидать уверен)
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Я тут почудил слегка...

PHP:
#include <sdkhooks>
#include <sdktools_entinput>
#include <sdktools_functions>

public Plugin myinfo =
{
    name = "Snowball",
    author = "Drumanid",
    version = "1.0.0",
    url = "Discrod: Drumanid#9108 | Telegram: t.me/drumanid"
};

int     g_iCvarSnowball,
        g_iCvarTeam,
        g_iCountSnowball[MAXPLAYERS +1];

float   g_fCvarDamage;

public APLRes AskPluginLoad2(Handle hMySelf, bool bLate, char[] sError, int iErrMax)
{
    if(GetEngineVersion() != Engine_CSGO) SetFailState("Only available for CS:GO");
    LoadTranslations("snowball.phrases.txt");
}

#define CHOOK(%0,%1) %0.AddChangeHook(view_as<ConVarChanged>(%1))
public void OnPluginStart()
{
    ConVar hCvar = CreateConVar("snowball_count", "3", "Сколько выдавать снежков? | -1 - не выдавать / 0 - игрок сможет взять на спавне / > 0 - выдаваемое кол-во снежков");
    CHOOK(hCvar, CvarHookSnowball); g_iCvarSnowball = hCvar.IntValue;
    hCvar = CreateConVar("snowball_team", "0", "Какой команде выдавать снежки? | 0 - всем / 2 - только т / 3 - только кт");
    CHOOK(hCvar, CvarHookTeam); g_iCvarTeam = hCvar.IntValue;
    hCvar = CreateConVar("snowball_damage", "50", "Каков урон от снежка? | 0.0 - запретить урон");
    CHOOK(hCvar, CvarHookDamage); g_fCvarDamage = hCvar.FloatValue;
    AutoExecConfig(true, "snowball");

    HookEvent("player_spawn", view_as<EventHook>(PlayerSpawn));
}

void CvarHookSnowball(ConVar hCvar) { g_iCvarSnowball = hCvar.IntValue; }
void CvarHookTeam(ConVar hCvar) { g_iCvarTeam = hCvar.IntValue; }
void CvarHookDamage(ConVar hCvar) { g_fCvarDamage = hCvar.FloatValue; }
public void OnConfigsExecuted()
{
    ConVar hCvar = FindConVar("ammo_grenade_limit_snowballs");
    if(hCvar == null) LogError("No found cvar: ammo_grenade_limit_snowballs");
    else hCvar.SetInt(1);
}

public void OnEntityCreated(int iEntity, const char[] sClassname)
{
    if(g_iCvarSnowball != 0 && StrEqual(sClassname, "ent_snowball_pile")) AcceptEntityInput(iEntity, "Kill");
    else if(g_iCvarSnowball != -1 && StrEqual(sClassname, "snowball_projectile")) SDKHook(iEntity, SDKHook_StartTouchPost, StartTouchPost);
}

void StartTouchPost(int iEntity, int iVictim)
{
    int iAttacker = GetEntPropEnt(iEntity, Prop_Send, "m_hThrower");
    if(iAttacker > 0 && IsClientInGame(iAttacker) && IsPlayerAlive(iAttacker))
    {
        if(g_fCvarDamage > 0.0 && iVictim != -1) SDKHooks_TakeDamage(iVictim, iAttacker, iAttacker, g_fCvarDamage);
        if(g_iCvarSnowball > 0 && --g_iCountSnowball[iAttacker] > 0)
        {
            GivePlayerItem(iAttacker, "weapon_snowball");
            FakeClientCommand(iAttacker, "use weapon_snowball");
            PrintHintText(iAttacker, "%t", "Snowballs left", g_iCountSnowball[iAttacker]);
        }
        else PrintHintText(iAttacker, "%t", "No snowballs");
    }

    SDKUnhook(iEntity, SDKHook_StartTouchPost, StartTouchPost);
}

#define SZF(%0) %0, sizeof(%0)
void PlayerSpawn(Event hEvent)
{
    if(g_iCvarSnowball < 1) return;

    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(g_iCvarTeam == 0 || GetClientTeam(iClient) == g_iCvarTeam)
    {
        // ...
        int iCount, iWeapon; char sWeapon[32];
        for(; iCount < 5; ++iCount)
        {
            if((iWeapon = GetPlayerWeaponSlot(iClient, 3)) != -1)
            {
                GetEdictClassname(iWeapon, SZF(sWeapon));
                if(StrEqual(sWeapon, "weapon_snowball"))
                {
                    sWeapon = "+";
                    break;
                }
            }
        }

        if(!StrEqual(sWeapon, "+")) GivePlayerItem(iClient, "weapon_snowball");
        g_iCountSnowball[iClient] = g_iCvarSnowball;
    }
}

public void OnClientDisconnect(int iClient)
{
    g_iCountSnowball[iClient] = g_iCvarSnowball;
}

public Action CS_OnCSWeaponDrop(int iClient, int iWeapon)
{
    char sWeapon[32]; GetEdictClassname(iWeapon, SZF(sWeapon));
    if(StrEqual(sWeapon, "weapon_snowball")) AcceptEntityInput(iWeapon, "Kill");
}

 

Вложения

  • snowball.phrases.txt
    287 байт · Просмотры: 65
  • snowball.sp
    3.8 КБ · Просмотры: 45
  • snowball.smx
    6.7 КБ · Просмотры: 42
Последнее редактирование:

FolkiDev

Участник
Сообщения
38
Реакции
2
Я тут почудил слегка...

PHP:
#include <sdkhooks>
#include <sdktools_entinput>
#include <sdktools_functions>

public Plugin myinfo =
{
    name = "Snowball",
    author = "Drumanid",
    version = "1.0.0",
    url = "Discrod: Drumanid#9108 | Telegram: t.me/drumanid"
};

int     g_iCvarSnowball,
        g_iCvarTeam,
        g_iCountSnowball[MAXPLAYERS +1];

float   g_fCvarDamage;

public APLRes AskPluginLoad2(Handle hMySelf, bool bLate, char[] sError, int iErrMax)
{
    if(GetEngineVersion() != Engine_CSGO) SetFailState("Only available for CS:GO");
    LoadTranslations("snowball.phrases.txt");
}

#define CHOOK(%0,%1) %0.AddChangeHook(view_as<ConVarChanged>(%1))
public void OnPluginStart()
{
    ConVar hCvar = CreateConVar("snowball_count", "3", "Сколько выдавать снежков? | -1 - не выдавать / 0 - игрок сможет взять на спавне / > 0 - выдаваемое кол-во снежков");
    CHOOK(hCvar, CvarHookSnowball); g_iCvarSnowball = hCvar.IntValue;
    hCvar = CreateConVar("snowball_team", "0", "Какой команде выдавать снежки? | 0 - всем / 2 - только т / 3 - только кт");
    CHOOK(hCvar, CvarHookTeam); g_iCvarTeam = hCvar.IntValue;
    hCvar = CreateConVar("snowball_damage", "50", "Каков урон от снежка? | 0.0 - запретить урон");
    CHOOK(hCvar, CvarHookDamage); g_fCvarDamage = hCvar.FloatValue;
    AutoExecConfig(true, "snowball");

    HookEvent("player_spawn", view_as<EventHook>(PlayerSpawn));
}

void CvarHookSnowball(ConVar hCvar) { g_iCvarSnowball = hCvar.IntValue; }
void CvarHookTeam(ConVar hCvar) { g_iCvarTeam = hCvar.IntValue; }
void CvarHookDamage(ConVar hCvar) { g_fCvarDamage = hCvar.FloatValue; }
public void OnConfigsExecuted()
{
    ConVar hCvar = FindConVar("ammo_grenade_limit_snowballs");
    if(hCvar == null) LogError("No found cvar: ammo_grenade_limit_snowballs");
    else hCvar.SetInt(1);
}

public void OnEntityCreated(int iEntity, const char[] sClassname)
{
    if(g_iCvarSnowball != 0 && StrEqual(sClassname, "ent_snowball_pile")) AcceptEntityInput(iEntity, "Kill");
    else if(g_iCvarSnowball != -1 && StrEqual(sClassname, "snowball_projectile")) SDKHook(iEntity, SDKHook_StartTouchPost, StartTouchPost);
}

void StartTouchPost(int iEntity, int iVictim)
{
    int iAttacker = GetEntPropEnt(iEntity, Prop_Send, "m_hThrower");
    if(iAttacker > 0 && IsClientInGame(iAttacker) && IsPlayerAlive(iAttacker))
    {
        if(g_fCvarDamage > 0.0 && iVictim != -1) SDKHooks_TakeDamage(iVictim, iAttacker, iAttacker, g_fCvarDamage);
        if(g_iCvarSnowball > 0 && --g_iCountSnowball[iAttacker] > 0)
        {
            GivePlayerItem(iAttacker, "weapon_snowball");
            FakeClientCommand(iAttacker, "use weapon_snowball");
            PrintHintText(iAttacker, "%t", "Snowballs left", g_iCountSnowball[iAttacker]);
        }
        else PrintHintText(iAttacker, "%t", "No snowballs");
    }

    SDKUnhook(iEntity, SDKHook_StartTouchPost, StartTouchPost);
}

#define SZF(%0) %0, sizeof(%0)
void PlayerSpawn(Event hEvent)
{
    if(g_iCvarSnowball < 1) return;

    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(g_iCvarTeam == 0 || GetClientTeam(iClient) == g_iCvarTeam)
    {
        // ...
        int iCount, iWeapon; char sWeapon[32];
        for(; iCount < 5; ++iCount)
        {
            if((iWeapon = GetPlayerWeaponSlot(iClient, 3)) != -1)
            {
                GetEdictClassname(iWeapon, SZF(sWeapon));
                if(StrEqual(sWeapon, "weapon_snowball"))
                {
                    sWeapon = "+";
                    break;
                }
            }
        }

        if(!StrEqual(sWeapon, "+")) GivePlayerItem(iClient, "weapon_snowball");
        g_iCountSnowball[iClient] = g_iCvarSnowball;
    }
}

public void OnClientDisconnect(int iClient)
{
    g_iCountSnowball[iClient] = g_iCvarSnowball;
}

public Action CS_OnCSWeaponDrop(int iClient, int iWeapon)
{
    char sWeapon[32]; GetEdictClassname(iWeapon, SZF(sWeapon));
    if(StrEqual(sWeapon, "weapon_snowball")) AcceptEntityInput(iWeapon, "Kill");
}

Как и откуда взять такие модельки игроков?!
 
Сверху Снизу