AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Nightvision NEED SMALL HELP! (https://forums.alliedmods.net/showthread.php?t=233344)

myusername 01-13-2014 10:13

Nightvision NEED SMALL HELP!
 
Hello all, how do i check if player has nightvision and also if it enabled?

I need this really really fast. Thank you :bacon!:

YamiKaitou 01-13-2014 11:23

Re: Nightvision NEED SMALL HELP!
 
Quote:

Originally Posted by myusername (Post 2085366)
how do i check if player has nightvision

cs_get_user_nvg

myusername 01-13-2014 13:48

Re: Nightvision NEED SMALL HELP!
 
Yes cs_set_user_nvg( id, 1 ) works but it has a problem.

Example on zombie server: Human has a nightvision. And it was enabled. Then human becomes zombie.
Problem: I give nightvision on zombie infect (and its enabled by auto like client_cmd nightvision). So if human has nightvision it will turned off because off i've enabling nightvision in client_cmd.

So how can i solve this?
I think i need to check human has nightvision then if has remove and regive? Also how can i give nightvision to spec's?


Here is the code ive got so far... (some code token from drop nvg)
PHP Code:

#include <amxmodx>
#include <fakemeta>
#include <zp50_core>

#define HAS_NVGS        (1<<0)
#define USES_NVGS        (1<<8)
#define get_user_nvg(%1)    (get_pdata_int(%1,OFFSET_NVGOGGLES) & HAS_NVGS)

const OFFSET_NVGOGGLES 129;
const 
LINUX_OFFSET_DIFF 5;

new 
bHasNVG33 ];
new 
gMessageNVG;

public 
plugin_init()   
{
    
gMessageNVG get_user_msgid"NVGToggle" );


public 
zp_fw_core_infect_post(idattacker)
{
    
EnableNightVision(id)
}

public 
zp_fw_core_cure_post(idattacker)
{
    
DisableNightVision(id)
}

EnableNightVision(id)
{        
    
bHasNVGid ] = true;
    
set_user_nvgid);
    
client_cmd(id"nightvision")
}

DisableNightVision(id)
{
    
bHasNVGid ] = false;
    
remove_user_nvgid );
}

stock set_user_nvgindexnvgoggles )
{
    if( 
nvgoggles )
    {
        
set_pdata_intindexOFFSET_NVGOGGLESget_pdata_intindexOFFSET_NVGOGGLES ) | HAS_NVGS );
    }

    else
    {
        
set_pdata_intindexOFFSET_NVGOGGLESget_pdata_intindexOFFSET_NVGOGGLES ) & ~HAS_NVGS );
    }
}
    
stock remove_user_nvgindex )
{
    new 
iNvgs get_pdata_intindexOFFSET_NVGOGGLESLINUX_OFFSET_DIFF );

    if( !
iNvgs )
    {
        return;
    }

    if( 
iNvgs USES_NVGS )
    {
        
emessage_beginMSG_ONE_UNRELIABLEgMessageNVG_index );
        
ewrite_byte);
        
emessage_end();
    }

    
set_pdata_intindexOFFSET_NVGOGGLES0LINUX_OFFSET_DIFF );



ConnorMcLeod 01-14-2014 00:17

Re: Nightvision NEED SMALL HELP!
 
Try this :

Instead of remove_user_nvg, use set_user_nvg(id, 0)
To force nvg ON, use set_user_nvg(id, 1, 1)

PHP Code:

const HAS_NVGS 1<<0;
const 
USES_NVGS 1<<8;
const 
OFFSET_NVGOGGLES 129;
const 
m_flNextNightVisionTime 619

set_user_nvg(idnvgoggles 0turnon 0)
{
    new 
nvg get_pdata_int(idOFFSET_NVGOGGLES);
    if( 
nvgoggles )
    {
        if( 
nvg HAS_NVGS )
        {
            if( 
turnon && ~nvg USES_NVGS )
            {
                
force_client_use_nvg(id);
            }
        }
        else
        {
            
set_pdata_int(idOFFSET_NVGOGGLESHAS_NVGS);
            
force_client_use_nvg(id);
        }
    }
    else
    {
        if( 
nvg HAS_NVGS )
        {
            if( 
nvg USES_NVGS )
            {
                
force_client_use_nvg(id);
            }
            
set_pdata_int(OFFSET_NVGOGGLES0);
        }
    }
}

force_client_use_nvg(id)
{
    
set_pdata_float(idm_flNextNightVisionTime0.0);
    
engclient_cmd(id"nightvision");



myusername 01-14-2014 07:47

Re: Nightvision NEED SMALL HELP!
 
That gives me this error.
PHP Code:

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c1997-2013 ITB CompuPhaseAMX Mod X Team

Error
Invalid symbol name "" on line 12
Error
Invalid symbol name "" on line 13
Error
Number of arguments does not match definition on line 68

3 Errors



Or did i put somewhere wrong? Here is the code.
PHP Code:

#include <amxmodx>
#include <fakemeta>
#include <zp50_core>

#define HAS_NVGS        (1<<0)
#define USES_NVGS        (1<<8)
#define get_user_nvg(%1)    (get_pdata_int(%1,OFFSET_NVGOGGLES) & HAS_NVGS)

const OFFSET_NVGOGGLES 129;
const 
LINUX_OFFSET_DIFF 5;

const 
HAS_NVGS 1<<0;
const 
USES_NVGS 1<<8;
const 
OFFSET_NVGOGGLES 129;
const 
m_flNextNightVisionTime 619

new 
bHasNVG33 ];

public 
zp_fw_core_infect_post(idattacker)
{
    
EnableNightVision(id)
}

public 
zp_fw_core_cure_post(idattacker)
{
    
DisableNightVision(id)
}

EnableNightVision(id)
{        
    
bHasNVGid ] = true;
    
set_user_nvgid);
    
client_cmd(id"nightvision")
}

DisableNightVision(id)
{
    
bHasNVGid ] = false;
    
set_user_nvg(id0)
}

set_user_nvg(idnvgoggles 0turnon 0)
{
    new 
nvg get_pdata_int(idOFFSET_NVGOGGLES);
    if( 
nvgoggles )
    {
        if( 
nvg HAS_NVGS )
        {
            if( 
turnon && ~nvg USES_NVGS )
            {
                
force_client_use_nvg(id);
            }
        }
        else
        {
            
set_pdata_int(idOFFSET_NVGOGGLESHAS_NVGS);
            
force_client_use_nvg(id);
        }
    }
    else
    {
        if( 
nvg HAS_NVGS )
        {
            if( 
nvg USES_NVGS )
            {
                
force_client_use_nvg(id);
            }
            
set_pdata_int(OFFSET_NVGOGGLES0);
        }
    }
}

force_client_use_nvg(id)
{
    
set_pdata_float(idm_flNextNightVisionTime0.0);
    
engclient_cmd(id"nightvision");



ConnorMcLeod 01-14-2014 13:00

Re: Nightvision NEED SMALL HELP!
 
You've put define and const with same name

myusername 01-15-2014 10:04

Re: Nightvision NEED SMALL HELP!
 
Thank you Connor. Problem solved.

@MOD: Close.


All times are GMT -4. The time now is 10:12.

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