Попадание в канистру.

alexmy

Участник
Сообщения
284
Реакции
13
Всем привет. Не могу сообразить как отловить, если пуля игрока попала в канистру. Пробовал что то типа такого... Код вообще кривой, не могу понять, с чего начинать...
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

#pragma newdecls required

public void OnClientPutInServer(int client)
{
    SDKHook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost);
}

public void OnTakeDamagePost(int victim, int attacker, int inflictor, float damage, int damagetype)
{
    if (IsValidEdict(attacker))
    {
        char weapon[64];
        GetEventString(attacker, "weapon", weapon, sizeof(weapon));
        if(StrEqual(weapon, "gascan")) PrintToChatAll("Игрок %s попал в канистру!", attacker);
    }
}
--- Добавлено позже ---
Вот сам плагин,
PHP:
#pragma semicolon 1
#pragma newdecls required

public void OnPluginStart()
{
    HookEvent("weapon_fire", weapon_fire);
    HookEvent("player_hurt", player_hurt);
}

public void weapon_fire(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    {
        char Name[64];
        char weapon[64];
        GetClientName(client, Name, sizeof(Name));
        GetEventString(event, "weapon", weapon, sizeof(weapon));
        {
            if(StrEqual(weapon, "molotov")) PrintToChatAll("Игрок %s бросил молотов!", Name);
            else if(StrEqual(weapon, "pipe_bomb")) PrintToChatAll("Игрок %s бросил бомбу!", Name);
            else if(StrEqual(weapon, "gascan")) PrintToChatAll("Игрок %s бросил канистру!", Name);
            else if(StrEqual(weapon, "vomitjar")) PrintToChatAll("Игрок %s бросил рвоту толстяка", Name);
        }
    }   
}
public void player_hurt(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("attacker"));
    {
        char Name[64];
        char weapon[64];
        GetClientName(client, Name, sizeof(Name));
        GetEventString(event, "weapon", weapon, sizeof(weapon));
        {
            if(StrEqual(weapon, "gascan")) PrintToChatAll("Игрок %s поджог канистру!", Name);
        }
    }   
}
 

Webman

Nevermind
Сообщения
803
Реакции
330
Попробуй:

PHP:
new weapon = GetEntPropEnt(attacker, Prop_Send, "m_hActiveWeapon");
new String:classname[64];
GetEntityClassname(weapon, classname, sizeof(classname));
if(StrEqual(cls, "weapon_gascan", false))
{
   // попал в канистру
}

Да и вообще, проверять попадание можно в событии TraceAttack.
 
Сверху Снизу