AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Get the gun owner (https://forums.alliedmods.net/showthread.php?t=300731)

Tripaloski 08-27-2017 13:59

Get the gun owner
 
Hello guys.
When a player picks up a fallen weapon, is it possible to know who was the player who bought it?
And who dropped it?

CrazY. 08-27-2017 14:07

Re: Get the gun owner
 
Ham_Touch (weaponbox) or Ham_Item_AddToPlayer (dropped weapons) and Ham_Item_Drop (when weapon is dropped).

Tripaloski 08-27-2017 14:18

Re: Get the gun owner
 
What I wanted was this.
When a player picks up a fallen weapon, a message will appear saying, "You got the gun from the 'Name of person who bought it' ".

PRoSToTeM@ 08-27-2017 14:50

Re: Get the gun owner
 
You can get only the last owner of the weapon (weaponbox owner).

KiLLeR. 08-27-2017 15:27

Re: Get the gun owner
 
Or maybe he can manually keep the owners for every weapon entity?!?

siriusmd99 08-27-2017 17:23

Re: Get the gun owner
 
RegisterHam(Ham_CS_Item_CanDrop, "weapon_name", "Ham_Item_Can_Drop", 0)

new owner = fm_get_weapon_owner(ent) //player who dropped the weapon
set_pev(entity, pev_iuser2, owner)

Pev iuser 2 is not used by weapons and you save owners ID there.

Then use ham item deploy with the same way but instead you get owner ID from pev.

public ham_deploy(entity)

new owner = pev(entity, pev_iuser2)

//next do what you need with owner


If you want to save the very first owner who bought the weapon then before saving pev iuser, check if pev user2 is null so that you don't overwrite the original owner with the player who picks up and then drops that weapon.

Like :
if(pev(entity, pev_iuser2) == 0)
set_pev(entity, pev_iuser2, owner)
This way you check if dropped weapon didn't have owner before which means that current owner bought this weapon.


If you have difficulties with that, I will give u the code tomorrow (on phone creepy to write :))

Tripaloski 08-27-2017 19:45

Re: Get the gun owner
 
Thank you for your help!
I'll try tomorrow.

siriusmd99 08-28-2017 14:24

Re: Get the gun owner
 
PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Weapon's Owner Displayer"
#define VERSION "1.0"
#define AUTHOR "siriusmd99"

new const WEAPONENTNAMES[][] = 
{   
"""weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
    
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
    
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
    
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
    
"weapon_ak47""weapon_knife""weapon_p90" 
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    for (new 
1sizeof WEAPONENTNAMESi++)
    {
        if (
WEAPONENTNAMES[i][0]) 
        {
          
RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "OnItemDeployPost"1);
          
RegisterHam(Ham_CS_Item_CanDropWEAPONENTNAMES[i], "OnItemDropPre"0)
        }
    }
}


public 
OnItemDropPre(ent)
{
    static 
ownerowner fm_cs_get_weapon_ent_owner(ent);
    
    if(
owner && !pev(entpev_iuser2) )
        
set_pev(entpev_iuser2get_user_userid(owner))  
}

public 
OnItemDeployPost(ent)
{
    
    static 
holderholder fm_cs_get_weapon_ent_owner(ent);
    
    if(
holder
    {
        new 
owner pev(entpev_iuser2);
        
        if(
owner)
        {
            new 
owner_id find_player("k"owner)
        
            if(
owner_id)
            {
              new 
szName[32]
              
get_user_name(owner_idszNamecharsmax(szName))
           
              
client_print(holderprint_center"[AMXX] You got the gun from %s !"szName)
            }
            else
          {
            
set_pev(entpev_iuser20)
          } 
        } 
    }
}    

fm_cs_get_weapon_ent_owner(ent)
{
    return (
pev_valid(ent) != 2) ? get_pdata_cbase(ent414);



KiLLeR. 08-28-2017 14:57

Re: Get the gun owner
 
Quote:

Originally Posted by siriusmd99 (Post 2544951)
PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Weapon's Owner Displayer"
#define VERSION "1.0"
#define AUTHOR "siriusmd99"

new const WEAPONENTNAMES[][] = 
{   
"""weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
    
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
    
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
    
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
    
"weapon_ak47""weapon_knife""weapon_p90" 
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    for (new 
1sizeof WEAPONENTNAMESi++)
    {
        if (
WEAPONENTNAMES[i][0]) 
        {
          
RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "OnItemDeployPost"1);
          
RegisterHam(Ham_CS_Item_CanDropWEAPONENTNAMES[i], "OnItemDropPre"0)
        }
    }
}


public 
OnItemDropPre(ent)
{
    static 
ownerowner fm_cs_get_weapon_ent_owner(ent);
    
    if(
owner && !pev(entpev_iuser2) )
        
set_pev(entpev_iuser2get_user_userid(owner))  
}

public 
OnItemDeployPost(ent)
{
    
    static 
holderholder fm_cs_get_weapon_ent_owner(ent);
    
    if(
holder
    {
        new 
owner pev(entpev_iuser2);
        
        if(
owner)
        {
            new 
owner_id find_player("k"owner)
        
            if(
owner_id)
            {
              new 
szName[32]
              
get_user_name(owner_idszNamecharsmax(szName))
           
              
client_print(holderprint_center"[AMXX] You got the gun from %s !"szName)
            }
            
            
set_pev(entpev_iuser20)
        } 
    }
}    

fm_cs_get_weapon_ent_owner(ent)
{
    return (
pev_valid(ent) != 2) ? get_pdata_cbase(ent414);



Why did not keep the id instead of userid? Also why you setting iuser2 to 0 when someone pick up the weapon? If weapon is droped again and someone another pick it up, the real buyer is lost.

PRoSToTeM@ 08-28-2017 15:48

Re: Get the gun owner
 
Quote:

Originally Posted by KiLLeR. (Post 2544965)
Why did not keep the id instead of userid?

Because player can disconnect and another connecting player can get his slot.


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

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