AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Solved VIP MENU (https://forums.alliedmods.net/showthread.php?t=318391)

decayed66 08-28-2019 18:45

VIP MENU
 
Hi everybody, I have a problem I want to make this plugin to work just once per round because I make it to work by comand not at 3 round. I tried but I don't figure out. Thanks a lot

PHP Code:

#define DAMAGE_RECIEVED
#include <amxmodx>
#include <amxmisc>
#include <csdm>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>

static const COLOR[] = "^x04" //green
static const CONTACT[] = ""
new maxplayers
new gmsgSayText
new mpdmkbmhb
new g_MsgSync
new health_add
new health_hs_add
new health_max
new nKiller
new nKiller_hp
new nHp_add
new nHp_max
new g_awp_active
new g_menu_active
new CurrentRound
new bool:HasC4[33]

//Auto refill

#define m_iId                43
#define m_iPrimaryAmmoType    49
#define m_fInReload            54

#define m_flNextAttack    83
#define m_pActiveItem    373
#define m_rgAmmo_Player_Slot0    376

#define IsPlayer(%1)    ( 1 <= %1 <= g_iMaxPlayers )

const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))

new 
g_iMaxPlayers

new const g_weapons[] =
{
CSW_P228,
CSW_SCOUT,
CSW_XM1014,
CSW_MAC10,
CSW_AUG,
CSW_ELITE,
CSW_FIVESEVEN,
CSW_UMP45,
CSW_SG550,
CSW_GALI,
CSW_GALIL,
CSW_FAMAS,
CSW_USP,
CSW_GLOCK18,
CSW_AWP,
CSW_MP5NAVY,
CSW_M249,
CSW_M3,
CSW_M4A1,
CSW_TMP,
CSW_G3SG1,
CSW_DEAGLE,
CSW_SG552,
CSW_AK47,
CSW_P90
}

new const 
g_max_clip[] =
{
13,
10,
7,
30,
30,
30,
20,
25,
30,
35,
35,
25,
12,
20,
10,
30,
100,
8,
30,
30,
20,
7,
30,
30,
50
}

new const 
g_other_weapons[] =
{
CSW_KNIFE,
CSW_HEGRENADE,
CSW_C4
}
//
#define Keysrod (1<<0)|(1<<1)|(1<<9) // Keys: 1234567890
#if defined DAMAGE_RECIEVED
    
new g_MsgSync2
#endif

public plugin_init()
{
    
register_plugin("VIP Eng Version""3.0""Dunno")
    
mpd register_cvar("money_per_damage","3")
    
mkb register_cvar("money_kill_bonus","200")
    
mhb register_cvar("money_hs_bonus","500")
    
health_add register_cvar("amx_vip_hp""15")
    
health_hs_add register_cvar("amx_vip_hp_hs""30")
    
health_max register_cvar("amx_vip_max_hp""100")
    
g_awp_active register_cvar("awp_active""1")
    
g_menu_active register_cvar("menu_active""1")
    
register_event("Damage","Damage","b")
    
register_event("DeathMsg","death_msg","a")
    
register_menucmd(register_menuid("rod"), Keysrod"Pressedrod")
    
register_clcmd("awp","HandleCmd")
  
register_clcmd("sg550","HandleCmd")
  
register_clcmd("g3sg1","HandleCmd")
    
register_clcmd("say /vreauvip","ShowMotd")
    
maxplayers get_maxplayers()
    
gmsgSayText get_user_msgid("SayText")
    
register_clcmd("say""handle_say")
    
register_cvar("amx_contactinfo"CONTACTFCVAR_SERVER)
    
register_logevent("LogEvent_RoundStart"2"1=Round_Start" );
    
register_event("TextMsg","Event_RoundRestart","a","2&#Game_w")
    
register_event("TextMsg","Event_RoundRestart","a","2&#Game_C");
    
register_event("DeathMsg""hook_death""a""1>0")
    
register_event("Damage""on_damage""b""2!0""3=0""4!0")
    
register_concmd("vip","Showrod"//Vip menu Comand
    
g_MsgSync CreateHudSyncObj()
#if defined DAMAGE_RECIEVED
    
g_MsgSync2 CreateHudSyncObj()
#endif    
}

public 
on_damage(id)
{
    new 
attacker get_user_attacker(id)

#if defined DAMAGE_RECIEVED
    // id should be connected if this message is sent, but lets check anyway
    
if ( is_user_connected(id) && is_user_connected(attacker) )
    if (
get_user_flags(attacker) & ADMIN_LEVEL_H)
    {
        new 
damage read_data(2)

        
set_hudmessage(255000.450.5020.14.00.10.1, -1)
        
ShowSyncHudMsg(idg_MsgSync2"%i^n"damage)
#else
    
if ( is_user_connected(attacker) && if (get_user_flags(attacker) & ADMIN_LEVEL_H) )
    {
        new 
damage read_data(2)
#endif
        
set_hudmessage(0100200, -1.00.5520.14.00.020.02, -1)
        
ShowSyncHudMsg(attackerg_MsgSync"%i^n"damage)
    }
}

public 
Damage(id)
{
    new 
weaponhitpointattacker get_user_attacker(id,weapon,hitpoint)
    if(
attacker<=maxplayers && is_user_alive(attacker) && attacker!=id)
    if (
get_user_flags(attacker) & ADMIN_LEVEL_H
    {
        new 
money read_data(2) * get_pcvar_num(mpd)
        if(
hitpoint==1money += get_pcvar_num(mhb)
        
cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
    }
}


public 
death_msg()
{
    if(
read_data(1)<=maxplayers && read_data(1) && read_data(1)!=read_data(2)) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(mkb) - 300)
}

public 
LogEvent_RoundStart()
{
    
CurrentRound++;
    new 
players[32], playerpnum;
    
get_players(playerspnum"a");
    for(new 
0pnumi++)
    {
        
player players[i];
        if(
is_user_alive(player) && get_user_flags(player) & ADMIN_LEVEL_H)
        {
            
give_item(player"weapon_hegrenade")
            
give_item(player"weapon_flashbang")
            
give_item(player"weapon_flashbang")
            
give_item(player"weapon_smokegrenade")
            
give_item(player"item_assaultsuit")
            
give_item(player"item_thighpack")
            
            if (!
get_pcvar_num(g_menu_active))
                return 
PLUGIN_CONTINUE
            
        
//if(CurrentRound >= 0)
        //{
            //Showrod(player);
            //}
        
}
    }
    return 
PLUGIN_HANDLED
 
}

public 
Event_RoundRestart()
{
    
CurrentRound=0;
}

public 
hook_death()
{
   
// Killer id
   
nKiller read_data(1)
   
   if ( (
read_data(3) == 1) && (read_data(5) == 0) )
   {
      
nHp_add get_pcvar_num (health_hs_add)
   }
   else
      
nHp_add get_pcvar_num (health_add)
   
nHp_max get_pcvar_num (health_max)
   
// Updating Killer HP
   
if(!(get_user_flags(nKiller) & ADMIN_LEVEL_H))
   return;

   
nKiller_hp get_user_health(nKiller)
   
nKiller_hp += nHp_add
   
// Maximum HP check
   
if (nKiller_hp nHp_maxnKiller_hp nHp_max
   set_user_health
(nKillernKiller_hp)
   
// Hud message "Healed +15/+30 hp"
   
set_hudmessage(02550, -1.00.1501.01.00.10.1, -1)
   
show_hudmessage(nKiller"Healed +%d hp"nHp_add)
   
// Screen fading
   
message_begin(MSG_ONEget_user_msgid("ScreenFade"), {0,0,0}, nKiller)
   
write_short(1<<10)
   
write_short(1<<10)
   
write_short(0x0000)
   
write_byte(0)
   
write_byte(0)
   
write_byte(200)
   
write_byte(75)
   
message_end()
 
}

public 
Showrod(id) {

    
show_menu(idKeysrod"\r VIP GUNS MENU^n^n1. M\w4A1 + DEAGLE^n\r^n2. A\wK47 + DEAGLE^n", -1"rod"// Display menu
    
return PLUGIN_CONTINUE;
}
public 
Pressedrod(idkey) {
    
/* Menu:
    * VIP Menu
    * 1. Get M4A1+Deagle
    * 2. Get AK47+Deagle
    * 0. Exit
    */
    
switch (key) {
        case 
0: { 
            if (
user_has_weapon(idCSW_C4) && get_user_team(id) == 1)
                
HasC4[id] = true;
            else
                
HasC4[id] = false;
                
            
strip_user_weapons (id)
            
give_item(id,"weapon_m4a1")
            
give_item(id,"ammo_556nato")
            
give_item(id,"ammo_556nato")
            
give_item(id,"ammo_556nato")
            
give_item(id,"weapon_deagle")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"weapon_knife")
            
give_item(id,"weapon_hegrenade")
            
give_item(id"weapon_flashbang");
            
give_item(id"weapon_flashbang");
            
give_item(id"weapon_smokegrenade");
            
give_item(id"item_assaultsuit");
            
give_item(id"item_thighpack");
            
client_print(idprint_center"You get free weapons.")
    
            if (
HasC4[id])
            {
                
give_item(id"weapon_c4");
                
cs_set_user_plantid );
            }
        
            }
        case 
1: { 
            if (
user_has_weapon(idCSW_C4) && get_user_team(id) == 1)
                
HasC4[id] = true;
            else
                
HasC4[id] = false;
            
            
strip_user_weapons (id)
            
give_item(id,"weapon_ak47")
            
give_item(id,"ammo_762nato")
            
give_item(id,"ammo_762nato")
            
give_item(id,"ammo_762nato")
            
give_item(id,"weapon_deagle")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"ammo_50ae")
            
give_item(id,"weapon_knife")
            
give_item(id,"weapon_hegrenade")
            
give_item(id"weapon_flashbang");
            
give_item(id"weapon_flashbang");
            
give_item(id"weapon_smokegrenade");
            
give_item(id"item_assaultsuit");
            
give_item(id"item_thighpack");
            
client_print(idprint_center"You get free weapons.")
            if (
HasC4[id])
            {
                
give_item(id"weapon_c4");
                
cs_set_user_plantid );
            }

            

            }
        case 
9: {
        
        }
    
    }
    return 
PLUGIN_CONTINUE
}

//Auto Refill
public Player_Killed(iVictimiKilleriGib)
{
    if( 
IsPlayer(iKiller) && is_user_alive(iKiller) && get_user_flagsiKiller ) & ADMIN_LEVEL_H )
    {
        new 
iWeapon get_pdata_cbase(iKillerm_pActiveItem)
        if(    
iWeapon 0
        
&&    !( NOCLIP_WPN_BS & (1<<get_pdata_int(iWeaponm_iId4)) )    )
        {
            new 
Float:flNextAttack get_pdata_float(iKillerm_flNextAttack5)
            
set_pdata_float(iKillerm_flNextAttack, -0.0015)

            new 
iButton pev(iKillerpev_button)
            
set_pev(iKillerpev_buttoniButton & ~(IN_ATTACK|IN_ATTACK2|IN_RELOAD))
            
set_pdata_int(iWeaponm_fInReload14)
            
ExecuteHamB(Ham_Item_PostFrameiWeapon)

            
set_pdata_int(iKillerm_rgAmmo_Player_Slot0 get_pdata_int(iWeaponm_iPrimaryAmmoType4), 200)
            
set_pdata_float(iKillerm_flNextAttackflNextAttack5)
            
set_pev(iKillerpev_buttoniButton)
        }
    }
}
///

public HandleCmd(id){
    if (!
get_pcvar_num(g_awp_active))
      return 
PLUGIN_CONTINUE
    
if(get_user_flags(id) & ADMIN_LEVEL_H
        return 
PLUGIN_CONTINUE
    client_print
(idprint_center"Sniper's Only For VIP's")
    return 
PLUGIN_HANDLED
}

public 
ShowMotd(id)
{
 
show_motd(id"vip.txt")
}
public 
client_authorized(id)
{
 
set_task(30.0"PrintText" ,id)
}
public 
PrintText(id)
{
 
client_print(idprint_chat"[VIP] write /wantvip and u will see how get VIP and VIP privilegies.")
}

public 
handle_say(id) {
    new 
said[192]
    
read_args(said,192)
    if( ( 
containi(said"who") != -&& containi(said"admin") != -) || contain(said"/vips") != -)
        
set_task(0.1,"print_adminlist",id)
    return 
PLUGIN_CONTINUE
}

public 
print_adminlist(user
{
    new 
adminnames[33][32]
    new 
message[256]
    new 
contactinfo[256], contact[112]
    new 
idcountxlen
    
    
for(id id <= maxplayers id++)
        if(
is_user_connected(id))
            if(
get_user_flags(id) & ADMIN_LEVEL_H)
                
get_user_name(idadminnames[count++], 31)

    
len format(message255"%s VIP ONLINE: ",COLOR)
    if(
count 0) {
        for(
count x++) {
            
len += format(message[len], 255-len"%s%s "adminnames[x], < (count-1) ? ", ":"")
            if(
len 96 ) {
                
print_message(usermessage)
                
len format(message255"%s ",COLOR)
            }
        }
        
print_message(usermessage)
    }
    else {
        
len += format(message[len], 255-len"No VIP online.")
        
print_message(usermessage)
    }
    
    
get_cvar_string("amx_contactinfo"contact63)
    if(
contact[0])  {
        
format(contactinfo111"%s Contact Server Admin -- %s"COLORcontact)
        
print_message(usercontactinfo)
    }
}

print_message(idmsg[]) {
    
message_begin(MSG_ONEgmsgSayText, {0,0,0}, id)
    
write_byte(id)
    
write_string(msg)
    
message_end()
}


/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1063\\ f0\\ fs16 \n\\ par }
*/ 


DON KHAN 1 08-29-2019 04:27

Re: VIP MENU
 
u want to make it work by /vip chat command?

decayed66 08-29-2019 05:00

Re: VIP MENU
 
It's work by command bind cmd vip, but I can't make it work once per round. It's work permanently, it's okay with say /vip coomand. But I want to can use the comand once per round not everytime.

LearninG 08-29-2019 05:49

Re: VIP MENU
 
1- declare a bool :
PHP Code:

new boolg_check[33

2- set it "false" on new round function :
PHP Code:

g_check[id] = false 

3- after giving weapons to vip , set the bool to true :
PHP Code:

g_check[id] = true 

4- on menu_handler function or before show_menu native , check if bool is false :
PHP Code:

if (g_check[id] == false )
{
       
//code


or
PHP Code:

if (g_check[id] == true )
{
      
client_print(idprint_chat "[AMXX] You can use menu only once per round!")
      return 
PLUGIN_HANDLED
}
else
{
      
//code



decayed66 08-30-2019 04:44

Re: VIP MENU
 
Thanks a lot it's work.


All times are GMT -4. The time now is 06:21.

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