Raised This Month: $51 Target: $400
 12% 

My First Attempt to make a menu! part2


Post New Thread Reply   
 
Thread Tools Display Modes
RollerBlades
Senior Member
Join Date: Feb 2011
Location: Sweden
Old 06-08-2011 , 01:40   Re: My First Attempt to make a menu! part2
Reply With Quote #11

Quote:
Originally Posted by G-Dog View Post
LMAO i fail alot

Last edited by RollerBlades; 06-08-2011 at 01:50.
RollerBlades is offline
The Art of War
Veteran Member
Join Date: Dec 2009
Location: Sweden Rock Festival
Old 06-08-2011 , 04:07   Re: My First Attempt to make a menu! part2
Reply With Quote #12

@G-Dog: Lol, sorry then. I just thought of the exemplary code and the great comments (and in the back of my mind I thought you wrote it) to be your awesome handiwork. Well, again, I'm sorry :p
__________________

Last edited by The Art of War; 06-08-2011 at 05:39.
The Art of War is offline
RollerBlades
Senior Member
Join Date: Feb 2011
Location: Sweden
Old 06-08-2011 , 05:01   Re: My First Attempt to make a menu! part2
Reply With Quote #13

Quote:
Originally Posted by The Art of War View Post
Lol, sorry then. I just thought of the exemplary code and the great comments (and in the back of my mind I thought you wrote it) to be your awesome handiwork. Well, again, I'm sorry :p
whut???
RollerBlades is offline
G-Dog
Senior Member
Join Date: Dec 2005
Location: Thunderstorm Central
Old 06-08-2011 , 09:37   Re: My First Attempt to make a menu! part2
Reply With Quote #14

Quote:
Originally Posted by The Art of War View Post
@G-Dog: Lol, sorry then. I just thought of the exemplary code and the great comments (and in the back of my mind I thought you wrote it) to be your awesome handiwork. Well, again, I'm sorry :p
didn't you see part1 of this menu thing? Several of the comments where done by me.

back on topic: read_data is used when you want to retrieve data from game events(when you have register_event blah blah in plugin_init) see http://wiki.amxmodx.org/Half-Life_1_Game_Events for more info on game events. So in this case your read_data in the fw_TakeDamage does nothing. Instead we need to use get_user_weapon. Unfortunately grenade makes this a little more complicated since we would have to add in a way to detect when it explodes(I suggest looking through zombie plague if you want an example of how). Instead of going through the trouble we'll switch to an alternate method of applying extra damage that is easier with grenades.
PHP Code:
// Menu - Basics

#define M3MULT 3.0        // damage multiplier for Ultimate M3 # admin only.
#define HEMULT 4.0        // damage multiplier for Super HE # admin only.

#include <superheromod>

#define AMMOX_HEGRENADE 12

new bool:grenadetrail[SH_MAXSLOTS+1];
new 
bool:extradmg[SH_MAXSLOTS+1]; 
new 
bool:extrafragdmg[SH_MAXSLOTS+1];
new 
gTrail;

new const 
itemcost[7] = { 300030004000600050000};
new const 
HEGrenade[] = "models/w_hegrenade.mdl";

public 
plugin_init()
{
    
    
register_plugin("WeaponMenu""1.1""RB");
    
    
register_clcmd("say /buy""cmd_menu");
    
register_clcmd("say_team /buy""cmd_menu");
    
    
register_event("AmmoX""super_grenade""b");
}

public 
plugin_precache()
{
    
gTrail precache_model("sprites/zbeam5.spr");
}

public 
client_damage(attackeriddamageweaponbodypart)    //switching extra damamge methods cause ham module seems a little too complex for you, besides this method is easier to deal with grenade extra damage
{
    if ( !
sh_is_active() || !is_user_alive(id) || !is_user_connected(attacker) ) return;

    new 
headshot bodypart == 0

    
if ( extradmg[attacker] && weapon == CSW_M3 )
    {
        
// do extra damage
        
new extraDamage floatround(damage M3MULT damage);
        if (
extraDamage 0sh_extra_damage(idattackerextraDamage"Super M3"headshot);
    }
    if ( 
extrafragdmg[attacker] && weapon == CSW_HEGRENADE )
    {
        
// do extra damage
        
new extraDamage floatround(damage HEMULT damage);
        if (
extraDamage 0sh_extra_damage(idattackerextraDamage"grenade"headshot);
        
extrafragdmg[attacker] = false;        //we only want the extra dmg to work on our one nade
    
}
}

/*======================================================================
DAMAGE MULT OPTIONS
======================================================================*/
public client_disconnect(id)
{
    
extradmg[id] = false;
    
extrafragdmg[id] = false;
}

// if the damage mult should dissapear upon the player's death then uncomment this function

public sh_client_death(victimattackerheadshot, const wpnDescription[])
{
    
extradmg[victim] = false;
    
extrafragdmg[victim] = false;
}

/* if the damage mult should only last 1 round then uncomment this function

public sh_round_new()
    arrayset(extradmg, false, SH_MAXSLOTS+1);
*/
/*======================================================================
DAMAGE MULT OPTIONS 
======================================================================*/

public cmd_menu(id)
{
    
    if ( 
is_user_alive(id) )
    {
        new 
menu menu_create("Choose Your Weapon Set""menu_handler");
        
menu_additem(menu"/yBuy M4A1 + HE""0"0);
        
menu_additem(menu"/yBuy AK47 + HE""1"0);
        
menu_additem(menu"/yBuy AWP + Kevlar""2"0);
        
menu_additem(menu"/yBuy M249 + Deagle/Flash""3"0);
        
menu_additem(menu"/yBuy CSW_G3SG1""4"0);
        
        new 
buffer[18];    //allows us to format the color based on admin or not
        
formatex(buffercharsmax(buffer), "%sBuy Ultimate M3", (get_user_flags(id) & ADMIN_ADMIN) ? "/y" "/w");
        
menu_additem(menubuffer"5");
        
        
formatex(buffercharsmax(buffer), "%sBuy Super HE", (get_user_flags(id) & ADMIN_ADMIN) ? "/y" "/w");
        
menu_additem(menubuffer"6");
        
        
        
menu_setprop(menuMPROP_EXITMEXIT_ALL);
        
        
menu_display(idmenu0); 
    } else 
client_print(idprint_chat"[AMXX] You Have To Be Alive To Use The Menu(if you want an item meant for a zombie go play a zombie server)."); //this insult brought to you by 1 random guy :P
}

public 
menu_handler(idmenuitem)
{
    
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    if ( !
is_user_alive(id) )    //in case a player waits till they die and then chooses an option
    
{
        
menu_destroy(menu);
        
client_print(idprint_chat"[AMXX] Died while looking at the menu eh?");
        return 
PLUGIN_HANDLED;
    } 
    
    new 
data[2], accescallbackkey;
    
menu_item_getinfo(menuitemaccesdata1__callback);
    
    
key str_to_num(data);
    
    if ( 
<= key )
    {
        new 
usermoney cs_get_user_money(id);
        new 
cost itemcost[key];
        if ( 
usermoney >= cost )
        {
            
cs_set_user_money(idusermoney cost1);
            if ( 
key == client_print(idprint_chat"[AMXX] Bought Ultimate M3(who bought what?  oo you used your admin powers you cheating bastard)"); //this insult brought to you by 1 random guy :P
            
if ( key == client_print(idprint_chat"[AMXX] Bought Super HE(may you forget to throw after pulling the pin)"); //this insult brought to you by 1 random guy :P
            
else client_print(idprint_chat"[AMXX] Bought Weapon Set %i"key+1);
            
            switch(
key)
            {
                case 
0// M4A1 + HE
                
{
                    
sh_give_weapon(idCSW_M4A1true);
                    
sh_give_weapon(idCSW_HEGRENADE);
                }
                case 
1// AK47 + HE
                
{
                    
sh_give_weapon(idCSW_AK47true);
                    
sh_give_weapon(idCSW_HEGRENADE);
                }
                
                case 
2// AWP + Kevlar
                
{
                    
sh_give_weapon(idCSW_AWPtrue);
                    
set_user_armor(id100);
                }
                
                case 
3// M249 + Deagle/Flash
                
{
                    
sh_give_weapon(idCSW_M249true);
                    
sh_give_weapon(idCSW_DEAGLE);
                    
sh_give_weapon(idCSW_FLASHBANG);
                }
                
                case 
4sh_give_weapon(idCSW_G3SG1true); // G3SG1
                    
                
case 56//since we are repeating a check between 5 and 6 I just rolled them together
                
{
                    if ( !(
get_user_flags(id) & ADMIN_ADMIN) )
                    {
                        
client_print(idprint_chat"[AMXX] Only the admins get to use this option, cause they're cool(more like they sux)."); //this insult brought to you by 1 random guy :P
                        
menu_destroy(menu);
                        
cmd_menu(id);
                        return 
PLUGIN_HANDLED;
                    }
                    if ( 
key == )
                    {
                        if ( 
cs_get_user_bpammo(idCSW_HEGRENADE) >= )    //get_user_weapon only checks current weapon so instead we check if the user has a nade with this code
                        
{
                            
client_print(idprint_chat"[AMXX] You Already Have A Greande.  And plugin doesn't like giving out extra's"); 
                            
menu_destroy(menu);
                            
cmd_menu(id);
                            return 
PLUGIN_HANDLED;                    
                        }
                        
sh_give_weapon(idCSW_HEGRENADE);
                        
grenadetrail[id] = true;
                        
extrafragdmg[id] = true;    
                    } else {
                        
sh_give_weapon(idCSW_M3true);
                        
extradmg[id] = true;
                    }
                }
            }        
        } else 
client_print(idprint_chat"[AMXX] You Don't Have Enough Money(You Cheap Bastard).");    //this insult brought to you by 1 random guy :P
    
}
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}   

public 
client_putinserver(id)
{
    
set_hudmessage(000, -0.00.000.00.00.00.00);
    
show_hudmessage(id"Type /Buy <Weapon Menu>");
}

public 
super_grenade(id)
{
    if ( !
sh_is_active() || !is_user_alive(id) ) return;
    
    if ( 
read_data(1) == AMMOX_HEGRENADE 
    {                
        if ( 
grenadetrail[id] ) 
        {
            new 
iCurrent = -1
            
while ( ( iCurrent engfunc(EngFunc_FindEntityByStringiCurrent"classname""grenade") ) > 
            {
                new 
string[32]
                
pev(iCurrentpev_classnamestring31)

                if ( 
id == pev(iCurrentpev_owner) && equali(HEGrenadestring)) //sorry, i'm in the habit of using fakemeta over engine.  Engine gave me alot of trouble when I started out and I have a grudge cause of that
                
{
                    
// Make the nade glow
                    
sh_set_rendering(iCurrent225020100kRenderFxGlowShellkRenderTransAlpha);    //vittu didn't waste time adding natives for no reason
                    
                    // Make a trail
                    
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
                    
write_byte(22);            //TE_BEAMFOLLOW
                    
write_short(iCurrent);    // entity:attachment to follow
                    
write_short(gTrail);    // sprite index
                    
write_byte(10);        // life in 0.1's
                    
write_byte(10);        // line width in 0.1's
                    
write_byte(225);    // colour
                    
write_byte(90);
                    
write_byte(102);
                    
write_byte(255);    // brightness
                    
message_end();    
                    
                    
grenadetrail[id] = false;    //trail is already attached to our current nade so it's safe to remove our status here before user gets another        
                    
break;    //found our nade so no reason to continue looping through others                    
                
}    
            }
        }
    }
}   

public 
sh_client_spawn(id)
        
grenadetrail[id] = false
__________________
If at first you don't succeed, then skydiving isn't for you.
G-Dog is offline
Send a message via AIM to G-Dog
RollerBlades
Senior Member
Join Date: Feb 2011
Location: Sweden
Old 06-08-2011 , 11:00   Re: My First Attempt to make a menu! part2
Reply With Quote #15

i thought read_data(1) checks if the player has that weapon in hand lol.......

i read that somewhere.........

you made the chat prints funny??.........

you made case 5 and 6 together???.........................

you made grenadetrail false at the end of code beacuse the person throwed a grenade?????......

you deleted unecessery stuff and renewed the whole shit?...............

life is boring....................................... ......... though your not.........

Last edited by RollerBlades; 06-08-2011 at 11:06.
RollerBlades is offline
Fr33m@n
Veteran Member
Join Date: May 2008
Location: France Marne
Old 06-08-2011 , 11:07   Re: My First Attempt to make a menu! part2
Reply With Quote #16

wow... since when people get back to sh... i mean it was dead 1 month ago.

But sadly, no good new coders.
Fr33m@n is offline
RollerBlades
Senior Member
Join Date: Feb 2011
Location: Sweden
Old 06-08-2011 , 11:10   Re: My First Attempt to make a menu! part2
Reply With Quote #17

hay!!! im actually learning here!!! im sorry im not as good as you at coding

G-dog = Mentor and Teacher
RollerBlades is offline
Jelle
[b]MOAR CANDY[/b]
Join Date: Aug 2009
Location: Denmark
Old 06-08-2011 , 11:24   Re: My First Attempt to make a menu! part2
Reply With Quote #18

G-Dog, I was just looking at the code you wrote just out of curiosity.

You are using sh_set_rendering.

From your comment I assume there is something different than what set_user_rendering can do, or is it simplified? I can't really figure out what the difference is.
__________________
No idea what to write here...
Jelle is offline
Send a message via MSN to Jelle
RollerBlades
Senior Member
Join Date: Feb 2011
Location: Sweden
Old 06-08-2011 , 11:30   Re: My First Attempt to make a menu! part2
Reply With Quote #19

PHP Code:
public client_damage(attackervictimdamagewpnindex

    if ( !
sh_is_active() ) return 
    if ( !
is_user_connected(victim) || !is_user_alive(attacker) ) return 
    
    new 
armorCsArmorType:armortype 
    armor 
cs_get_user_armor(victimarmortype
    
    if (
gHasBreaker[attacker] && random_float(0.011.00) <= get_pcvar_float(pCvarChance)) 
    { 
        new 
slot sh_get_weapon_slot(wpnindex
        
        if (
slot == || slot == 2
        {     
            
cs_set_user_armor (victimmax(armor get_pcvar_num(pCvarDeduct), 0), armortype
            
            
sh_set_rendering(victim025525550kRenderFxGlowShellkRenderGlow) <<<<<<why?
            
            
set_task(1.0"remove_rendering"victim
        } 
    } 
}  
//------------------------------------------------------------------------------------------------
public remove_rendering(victim)
{
    
set_user_rendering(victimHAHAHA THE VALUES WHERE DELETED BEACUSE YOU LOOK UGLY IN THE GLOW MR.FUGLY)<<< why?

RollerBlades is offline
G-Dog
Senior Member
Join Date: Dec 2005
Location: Thunderstorm Central
Old 06-08-2011 , 11:40   Re: My First Attempt to make a menu! part2
Reply With Quote #20

Quote:
Originally Posted by Jelle View Post
G-Dog, I was just looking at the code you wrote just out of curiosity.

You are using sh_set_rendering.

From your comment I assume there is something different than what set_user_rendering can do, or is it simplified? I can't really figure out what the difference is.
set_user_rendering is restricted to player entities, to set the render on other objects(in this case a grenade) you can either use the engine stock set_rendering or the superhero stock sh_set_rendering or manually
__________________
If at first you don't succeed, then skydiving isn't for you.
G-Dog is offline
Send a message via AIM to G-Dog
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 02:17.


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