AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Vip Menu Deathrun Respawn (https://forums.alliedmods.net/showthread.php?t=232690)

Deliric 01-03-2014 11:23

Vip Menu Deathrun Respawn
 
I have a Deathrun Respawn server, as well as a VIP Menu plugin. I want to implement an option in the menu which would memorize your choice, so that you dont have to select your choice everytime you spawn.

Code:

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <xs>
#include <engine>

#define FLAG ADMIN_IMMUNITY

new const VIP[] = "DeathRunVip"
new const VIP_MODEL[] = "models/player/DeathRunVip/DeathRunVip.mdl"

new const MENU_OK[] = "misc/DeathRunVip/vip_menu_ok.wav"
new const VIP_CONNECT[] = "misc/DeathRunVip/vip_connect.wav"

#define TASKID_SHOWHUD        2931
#define TASKID_MODEL                3810

new player_model[33][32]
new Float: g_counter
new bool: g_model[33]
new g_hudsync
new cvar_gravity
new cvar_speed
new SayTxT

new gCylinderSprite;

public plugin_precache()
{
        precache_model(VIP_MODEL)
        precache_sound(VIP_CONNECT)

        precache_sound(MENU_OK)

        gCylinderSprite = precache_model( "sprites/shockwave.spr" );
}

public plugin_init()
{
        register_plugin("Deathrun V.I.P", "1.0", "DoviuX")

        cvar_gravity = register_cvar("dr_vip_gravity", "500")
        cvar_speed = register_cvar("dr_vip_speed", "500")

        RegisterHam(Ham_Spawn, "player", "bacon_spawn", 1)
        register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
        register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")

        g_hudsync = CreateHudSyncObj()
        SayTxT = get_user_msgid("SayText");
}

public client_connect(client)
{
        if(get_user_flags(client) & FLAG)
        {
                client_cmd(client, "spk %s", VIP_CONNECT)

                    new name[32];
                    get_user_name(client, name, 31);
                set_hudmessage( 0, 255, 0, -1.0, 0.29, 0, 6.0, 12.0 );
                show_hudmessage( 0, "V.I.P-ul %s se conecteaza.", name);
        }
}

public bacon_spawn(id)
{
    if (!is_user_alive(id))
        return
   
    static CsTeams: team ; team = cs_get_user_team(id)
   
    if (team == CS_TEAM_T && (get_user_flags(id) & FLAG))
    { 
        set_task(2.0, "T_menu", id)

            new iOrigin[ 3 ];
            get_user_origin( id, iOrigin );

            Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
            Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
            Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

        copy(player_model[id], 31, VIP)
               
        new currentmodel[32];
        fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
               
        if(!equal(currentmodel, player_model[id]))
        {
                Task_Model(id + TASKID_MODEL)
                g_counter += 0.1;
        }

        if(!task_exists(TASKID_SHOWHUD + id))
          set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

        set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25)
    }
    else if (team == CS_TEAM_CT && (get_user_flags(id) & FLAG))
    {
        set_task(2.0, "CT_menu", id)

            new iOrigin[ 3 ];
            get_user_origin( id, iOrigin );

            Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
            Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
            Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

        copy(player_model[id], 31, VIP)

        strip_user_weapons(id)
        give_item(id, "weapon_knife")
               
        new currentmodel[32];
        fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
               
        if(!equal(currentmodel, player_model[id]))
        {
                Task_Model(id + TASKID_MODEL)
                g_counter += 0.1;
        }

        if(!task_exists(TASKID_SHOWHUD + id))
          set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

        set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25)
    }
}

public T_menu(id)
{
        if(!is_user_alive(id))
          return PLUGIN_HANDLED
               
            new gmenu = menu_create("\yV.I.P Menu" , "Vip_Handler");
            menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
            menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
        menu_additem(gmenu ,"\wDeagle cu \r2 gloante", "3" , 0);
            menu_additem(gmenu ,"\wGrenada HE", "4" , 0);
            menu_additem(gmenu ,"\wGravitatie", "5" , 0);
 
            menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
            menu_display(id , gmenu , 0);

        return PLUGIN_CONTINUE
}

public CT_menu(id)
{
        if(!is_user_alive(id))
          return PLUGIN_HANDLED
               
        new gmenu = menu_create("\yV.I.P Menu" , "VipCt_Handler");
            menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
            menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
        menu_additem(gmenu ,"\wGrenada HE", "3" , 0);
            menu_additem(gmenu ,"\wGravitatie", "4" , 0);
 
            menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
            menu_display(id , gmenu , 0);

        return PLUGIN_CONTINUE
}

public Vip_Handler(id, gmenu, item, player)
{
  if (item == MENU_EXIT)
  {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
  }

  new data[6], iName[64]
  new access, callback
  menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
 
  new key = str_to_num(data)
 
  switch(key)
  {
      case 1:
      {
        client_cmd(id, "spk %s", MENU_OK)

        set_user_health(id, 200)
        client_printcolor(player, "/g[V.I.P]/y: Ai ales /w100 /gviata in plus!")
      }

      case 2:
      {
        client_cmd(id, "spk %s", MENU_OK)

        set_user_armor(id, 200)
        client_printcolor(player, "/g[V.I.P]/y: Ai ales /w200 /garmura!")
      }

        case 3:
      {
        give_item(id, "weapon_deagle")

        new weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
        if(weapon_id)
        {
                cs_set_weapon_ammo(weapon_id, 2);
        }

        client_cmd(id, "spk %s", MENU_OK)

        client_printcolor(player, "/g[V.I.P]/y: Ai ales un deagle cu /g2 /ygloante!")
      }
     
      case 4:
      {
        give_item(id, "weapon_hegrenade")

        client_cmd(id, "spk %s", MENU_OK)

        client_printcolor(player, "/g[V.I.P]/y: Ai ales /gHe /yGrenade!")
      }

      case 5:
      {
        set_user_gravity(id, 500)

        client_cmd(id, "spk %s", MENU_OK)

        client_printcolor(player, "/g[V.I.P]/y: Ai ales gravitatie!")
      }
  }
  menu_destroy(gmenu)
  return PLUGIN_HANDLED;
}

public VipCt_Handler(id, gmenu, item, player)
{
  if (item == MENU_EXIT)
  {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
  }

  new data[6], iName[64]
  new access, callback
  menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
 
  new key = str_to_num(data)
 
  switch(key)
  {
      case 1:
      {
        client_cmd(id, "spk %s", MENU_OK)

        set_user_health(id, 255)
        client_printcolor(player, "/g[V.I.P]/y: Ai ales /w255 /gviata!")
      }

      case 2:
      {
        client_cmd(id, "spk %s", MENU_OK)

        set_user_armor(id, 255)
        client_printcolor(player, "/g[V.I.P]/y: Ai ales /w255 /garmura!")
      }

      case 3:
   
      {
        give_item(id, "weapon_hegrenade")

        client_cmd(id, "spk %s", MENU_OK)

        client_printcolor(player, "/g[V.I.P]/y: Ai ales /gHe /yGrenade!")
      }

      case 6:
      {
        set_user_gravity(id, 450)

        client_cmd(id, "spk %s", MENU_OK)

        client_printcolor(player, "/g[V.I.P]/y: Ai ales gravitatie!")
      }
  }
  menu_destroy(gmenu)
  return PLUGIN_HANDLED;
}

public Task_ShowHUD(task)
{
        new id = task - TASKID_SHOWHUD
       
        if(!is_user_alive(id))
                return PLUGIN_HANDLED
       
        static health, armour
        health = get_user_health(id)
        armour = get_user_armor(id)
       
        set_hudmessage(150, 150, 150, 0.40, 0.92, 0, 0.0, 0.3, 0.0, 0.0)
        ShowSyncHudMsg(id, g_hudsync , "Viata: %d -|V.I.P - DR.TREISUTE.RO|- Armura: %d", health, armour)
       
        set_task(0.1, "Task_ShowHUD", TASKID_SHOWHUD + id)               
       
        return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
    if(is_user_alive(id))
    {
        if(get_user_flags(id) & FLAG)
        {
           
            new oldbuttons = get_user_oldbutton(id);
       
           
            oldbuttons &= ~IN_JUMP;
            entity_set_int(id, EV_INT_oldbuttons, oldbuttons);
        }
    }


public Task_Model(task)
{
        new id = task - TASKID_MODEL
       
        fm_set_user_model(id, player_model[id])
}

stock Create_BeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
        message_begin( MSG_PVS, SVC_TEMPENTITY, origin );
        write_byte( TE_BEAMCYLINDER );
        write_coord( origin[ 0 ] );
        write_coord( origin[ 1 ] );
        write_coord( origin[ 2 ] );
        write_coord( origin[ 0 ] );
        write_coord( origin[ 1 ] );
        write_coord( origin[ 2 ] + addrad );
        write_short( sprite );
        write_byte( startfrate );
        write_byte( framerate );
        write_byte(life );
        write_byte( width );
        write_byte( amplitude );
        write_byte( red );
        write_byte( green );
        write_byte( blue );
        write_byte( brightness );
        write_byte( speed );
        message_end();
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness)
{
        message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
        write_byte(TE_SPRITE)
        write_coord(floatround(origin[0]))
        write_coord(floatround(origin[1]))
        write_coord(floatround(origin[2]))
        write_short(sprite)
        write_byte(scale)
        write_byte(brightness)
        message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul)
{
        new Float:fLen = xs_vec_len(fIn)
        xs_vec_copy(fIn, fOut)
       
        fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
        fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

public fw_SetClientKeyValue(id, infobuffer, key[], value[])

        if (g_model[id] && equal(key, "model"))
                return FMRES_SUPERCEDE
       
        return FMRES_IGNORED
}

public fw_ClientUserInfoChanged(id, infobuffer)

        if (!g_model[id])
                return FMRES_IGNORED
       
        new currentmodel[32];
        fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
       
        if(!equal(currentmodel, player_model[id]))
                fm_set_user_model(id, player_model[id])
       
        return FMRES_IGNORED
}

stock fm_set_user_model(player, modelname[])

        engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)
       
        g_model[player] = true
}

stock fm_get_user_model(player, model[], len)

        engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)
}

stock fm_reset_user_model(player)
{       
        g_model[player] = false
       
        dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))
}

stock client_printcolor(const id, const input[], any:...)
{
        new count = 1, players[32];
        static msg[191];
        vformat(msg,190,input,3);
        replace_all(msg,190,"/g","^4");// green txt
        replace_all(msg,190,"/y","^1");// orange txt
        replace_all(msg,190,"/ctr","^3");// team txt
        replace_all(msg,190,"/w","^0");// team txt
        if (id) players[0] = id; else get_players(players,count,"ch");
        for (new i = 0; i < count; i++)
                if (is_user_connected(players[i]))
                {
                        message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players[i]);
                        write_byte(players[i]);
                        write_string(msg);
                        message_end();
                }
}

Thanks!


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

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