AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting (https://forums.alliedmods.net/forumdisplay.php?f=107)
-   -   Simple Drop weapon (https://forums.alliedmods.net/showthread.php?t=143335)

Shouldercannon 11-18-2010 08:20

Simple Drop weapon
 
Помогите пожалуйста написать простейший код выброса оружия по событию
Please collect the aid of a simple code release arms on the event
PHP Code:

public Action:Event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast

Так похоже бесполезно делать
So it seems useless to do
PHP Code:

...
new 
String:weapon[64];
...
GetEventString(event"weapon"weaponsizeof(weapon));
...
if (
StrContains("weapon_glock|weapon_usp|weapon_p228|weapon_deagle|weapon_fiveseven|weapon_elite"weapon) > -1)
// Бросить оружие/Drop weapon 


FaTony 11-18-2010 08:52

Re: Simple Drop weapon
 
Арррр... Нельзя так. StrContains ищет только одну строку. Тебе лучше всего Закинуть все "плохие" пушки в Trie и потом искать в ней. Пушку лучше всего бросать
OnPlayerRunCmd, добавив в битовую строку кпонок кнопку выброса пушки.

Как работать с Trie: http://docs.sourcemod.net/api/index....ad=file&id=46&

Как работать с OnPlayerRunCmd: http://forums.alliedmods.net/showthread.php?t=94187

Shouldercannon 11-18-2010 09:03

Re: Simple Drop weapon
 
Quote:

Originally Posted by FaTony (Post 1351810)
Арррр... Нельзя так. StrContains ищет только одну строку. Тебе лучше всего Закинуть все "плохие" пушки в Trie и потом искать в ней. Пушку лучше всего бросать
OnPlayerRunCmd, добавив в битовую строку кпонок кнопку выброса пушки.

Как работать с Trie: http://docs.sourcemod.net/api/index....ad=file&id=46&

Как работать с OnPlayerRunCmd: http://forums.alliedmods.net/showthread.php?t=94187

PHP Code:

if (StrContains("weapon_glock|weapon_usp|weapon_p228|weapon_deagle|weapon_fiveseven|weapon_elite"weapon) > -1

Это я использовал для отлова оружия, которым был убит игрок, чтобы вызвать соответсвующее действие. Если с Trie, можно будет сделать так же, то я буду только рад.

Дело в том, что плагин должен сам выбрасывать оружие. Нужно это для: если игрок атакует своих, то после трёх попаданий выбросить оружие, которым он наносит урон.

FaTony 11-19-2010 07:10

Re: Simple Drop weapon
 
Хоть одно оружие отловил? OnPlayerRunCmd "сам" выбросит пушку за игрока.

Shouldercannon 11-19-2010 07:49

Re: Simple Drop weapon
 
Quote:

Originally Posted by FaTony (Post 1352286)
Хоть одно оружие отловил? OnPlayerRunCmd "сам" выбросит пушку за игрока.

С помощью Trie? С OnPlayerRunCmd ни как не разберусь в плане выброса оружия.

FaTony 11-19-2010 14:05

Re: Simple Drop weapon
 
Нет, с помощью "пушка1|пушка2", т.к. такая штука не должна работать. Я лично советую держать весь код в OnPlayerRunCmd, хоты ты можешь его раскидать как хочешь. Кнопка добавляется вот так:
PHP Code:

buttons |= << n

Где n - значение смещения. Значение смещения ищется эмпирически (степень двойки, в которую надо возвести число, которое получается, когда ты нажимаешь кнопку выброса оружия).

Shouldercannon 11-19-2010 16:18

Re: Simple Drop weapon
 
Пытался выбросить всё оружие так
PHP Code:

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

new Handle:hRemoveAllItems INVALID_HANDLE;
new 
Handle:hGameConf INVALID_HANDLE;
...
public 
OnPluginStart()
{
    
HookEvent("player_hurt"Event_PlayerHurt);

    
// Грузим нужные инструменты из файла
    
hGameConf LoadGameConfigFile("plugin.ut1999_sneers");

    
// Отвечает за drop оружия у игрока
    
StartPrepSDKCall(SDKCall_Player);
    
PrepSDKCall_SetFromConf(hGameConfSDKConf_Virtual"RemoveAllItems");
    
hRemoveAllItems EndPrepSDKCall();
}

public 
Action:Event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
{
    new 
victimId GetEventInt(event"userid");
    new 
attackerId GetEventInt(event"attacker");
    
GetEventString(event"weapon"weaponnamesizeof(weaponname));
     
    new 
username GetClientOfUserId(victimId);
    
GetClientName(usernamevictimnamesizeof(victimname));
    new 
attacker GetClientOfUserId(attackerId);
    
// ===========================
    // Killed by the world. Suicide!
    // ===========================
    
if (attacker == 0
    {
        return;
    } 
    
GetClientName(attackerattackernamesizeof(attackername));

    
// Get Client "Victim"
    
new victimid GetClientOfUserId(GetEventInt(event"userid"));
    
// Get Client "Attacker"
    
new attackerid GetClientOfUserId(GetEventInt(event"attacker"));
    
// Get Victim's Team
    
new victimTeam GetClientTeam(victimid);
    
// Get Attacker's Team
    
new attackerTeam GetClientTeam(attackerid);

    
// ===========================
    // Огонь по своим
    // ===========================
    
if (victimTeam == attackerTeam)
    {
        if (
victimid != attackerid)
        {
            
RemoveAllPlayersWeapons(attackerid);
        }
    }
}

public 
RemoveAllPlayersWeapons(client)
{
    
SDKCall(hRemoveAllItemsclient);
    
//GivePlayerItem(client,"weapon_knife");


plugin.ut1999_sneers.txt
Code:

"Games"
{
        "cstrike"
        {
                "Offsets"
                {
                        "RemoveAllItems"
                        {
                                "windows"                "283"
                                "linux"                "284"
                        }
                }
        }
}

При первой же атаке игрока из своей команды сервер падает и не показывает перед этим никаких ошибок.

FaTony 11-19-2010 16:27

Re: Simple Drop weapon
 
Чего, чего, чего?

Shouldercannon 11-19-2010 17:03

Re: Simple Drop weapon
 
Quote:

Originally Posted by FaTony (Post 1352556)
Чего, чего, чего?

Непонял. Было сделано опираясь на Zombie Reloaded, если я не ошибаюсь.

Leonardo 11-20-2010 01:35

Re: Simple Drop weapon
 
pwnd


All times are GMT -4. The time now is 20:00.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.