AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Last Choosen Weapon Menu (https://forums.alliedmods.net/showthread.php?t=215844)

m4m3ts 05-12-2013 23:46

Last Choosen Weapon Menu
 
1 Attachment(s)
i have a simple weapon menu:

PHP Code:

#include <amxmodx>
#include <hamsandwich>

public plugin_init()
{
    
RegisterHam(Ham_Spawn"player""PlayerSpawn"1);
    
register_clcmd("say xp""MyMenu")
}

public 
PlayerSpawn(id)
{
    
client_cmd(id"say xp")
}
public 
MyMenu (id)
{
    new 
menu menu_create("Weapon Menu","menu_handler")
    
menu_additem(menu"Skull4","1",0);
    
menu_additem(menu"Skulllss4","2",0);
    
menu_additem(menu"Skoll4","3",0);
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
menu_display(idmenu0);
    return 
PLUGIN_HANDLED
}

public 
menu_handler(idmenuitem)
{
    new 
data[6], szName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    new 
key str_to_num(data);
    switch(
key)
    {
        case 
1:
        {
                
client_cmd(id"skull4")
        }
        case 
2:
        {
                
client_cmd(id"say OK")
        }
        case 
3:
        {
                
client_cmd(id"say Yes")
        }
    }


I've trouble creating Previous Setup menu, in weapon menu.
can someone help me creating it in my menu ??

I want like CSDM Gun menu:
-----------------------------------------
1. New Weapons
2. Previous Setup
3. Don't Show this menu again.

Type /guns to enable this menu again
-----------------------------------------

thanks b4....

Unkolix 05-13-2013 00:43

Re: Last Choosen Weapon Menu
 
You can see how I did it:
PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>

#define PLUGIN "CSDM Gun Menu"
#define VERSION "1.0"
#define AUTHOR "Unkolix"

new HasDgl[33], HasUsp[33], HasAWP[33], HasAK47[33], HasM4A1[33], ShowMenu[33] = true;

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say .guns""WeaponMenuOn")
    
    
RegisterHam(Ham_Spawn"player""fwHamPlayerSpawnPost"1);
}

public 
fwHamPlayerSpawnPost(id)
{
    if(
is_user_alive(id)) 
    {
        if(
ShowMenu[id])
        {
            
weapons(id)
        }
        else
        {
            
GiveLastWeapons(id)
            
set_task(2.0"WriteGuns"id)
        }
    }
}

public 
WriteGuns(id)
{
    
client_print(idprint_chat"Noredamas vel matyti apsilimo meniu, rasyk .guns")
}

public 
WeaponMenuOn(id)
{
    
ShowMenu[id] = true;
}

public 
weapons(id) {
    new 
menu menu_create("Apsilimo Meniu:""weaponsrod");
    
    
menu_additem(menu"Ginklai""1"0);
    
menu_additem(menu"Paskutinis pasirinkimas""2"0);
    
menu_additem(menu"2 + Nerodyti Sito Meniu""3"0);
    
    
menu_setprop(menuMPROP_EXITNAME"Iseiti.")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
weaponsrod(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], szName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    new 
key str_to_num(data);
    switch(
key)
    {
    case 
1: {                                  
            
weapons2(id)
        }
    case 
2: {     
            
GiveLastWeapons(id)
        }
    case 
3: {
            
ShowMenu[id] = false;
            
GiveLastWeapons(id)
        }
    }
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE
}

public 
GiveLastWeapons(id)
{
    
strip_user_weapons(id)
    
give_item(id"weapon_knife")
    
give_item(id"item_assaultsuit");
    
give_item(id"weapon_hegrenade");
    
give_item(id"weapon_flashbang");
    
give_item(id"weapon_flashbang");
    
give_item(id"weapon_smokegrenade");
    
    if(
HasUsp[id])
    {
        
give_item(id"weapon_usp");
        
cs_set_user_bpammo(idCSW_USP100);
    }
    else if(
HasDgl[id])
    {
        
give_item(id"weapon_deagle");
        
cs_set_user_bpammo(idCSW_DEAGLE35);
    }
    
    if(
HasM4A1[id])
    {
        
give_item(id"weapon_m4a1");
        
cs_set_user_bpammo(idCSW_M4A190);
    }
    else if(
HasAK47[id])
    {
        
give_item(id"weapon_ak47");
        
cs_set_user_bpammo(idCSW_AK4790);
    }
    else if(
HasAWP[id])
    {
        
give_item(id"weapon_awp");
        
cs_set_user_bpammo(idCSW_AWP30);
    }
}

public 
weapons2(id) {
    new 
menu menu_create("Apsilimo Ginklu Meniu 1/2:""weapons2rod");
    
    
menu_additem(menu"Desert Eagle""1"0);
    
menu_additem(menu"USP""2"0);
    
    
menu_setprop(menuMPROP_EXITNAME"Iseiti.")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
weapons2rod(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], szName[64];
    new 
accesscallback;
    
HasDgl[id] = false;
    
HasUsp[id] = false;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    new 
key str_to_num(data);
    switch(
key)
    {
    case 
1: {                                  
            
HasDgl[id] = true;
        }
    case 
2: {     
            
HasUsp[id] = true;
        }
    }
    
GiveLastWeapons(id)
    
weapons3(id)
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE
}

public 
weapons3(id) {
    new 
menu menu_create("Apsilimo Ginklu Meniu 2/2:""weaponsrod3");
    
    
menu_additem(menu"M4A1""1"0);
    
menu_additem(menu"AK47""2"0);
    
menu_additem(menu"AWP""3"0);
    
    
menu_setprop(menuMPROP_EXITNAME"Iseiti.")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
weaponsrod3(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], szName[64];
    new 
accesscallback;
    
HasM4A1[id] = false;
    
HasAK47[id] = false;
    
HasAWP[id] = false;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    
    new 
key str_to_num(data);
    switch(
key)
    {
    case 
1: {
            
HasM4A1[id] = true;
        }
    case 
2: {     
            
HasAK47[id] = true;
        }
    case 
3: {
            
HasAWP[id] = true;
        }
    }
    
GiveLastWeapons(id)
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE


But I believe it's a poor way :D

ConnorMcLeod 05-13-2013 00:49

Re: Last Choosen Weapon Menu
 
Quote:

But I believe it's a poor way :D
Yes it is.


Have a look at csdm plugins sources.

m4m3ts 05-13-2013 00:58

Re: Last Choosen Weapon Menu
 
Quote:

Originally Posted by Unkolix (Post 1950962)
You can see how I did it:

Quote:

Originally Posted by ConnorMcLeod (Post 1950966)
Have a look at csdm plugins sources.

thanks for the example...but it is difficult to understand you'rs, or csdm plugin cz it's more complicated then my menu.

for newbie like me, i hope you modify my simple menu and add a simple code of "previous Setup" menu.
thanks.

bcause i'll add a weapon from other plugin.

ConnorMcLeod 05-13-2013 01:10

Re: Last Choosen Weapon Menu
 
First, don't use client_cmd in PlayerSpawn, this show your little skill ;)
Directly call MyMenu(id), is better, also, check that player is alive in spawn event, else you gonna have error logs.

Same in menu handler, use client_print, not client_cmd, GOD !!

So, in menu handler, use player choice to store in a variable (has to be an array)


In menu creation, if player variable is filled, add to 2 options at the end of the menu.

In menu handler, if player chooses last or last and don't ask, use the stored choice variable to give items.
And if choice is last and don't ask, store it in another global variable

So in PlayerSpawn, if that other global variable is set, give directly items instead of showing menu.



If you can't do this because it is too difficult, then post a request in the appropriated forum.

Blizzard_87 05-13-2013 02:50

Re: Last Choosen Weapon Menu
 
Quote:

Originally Posted by Unkolix (Post 1950962)
You can see how I did it:
PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>

#define PLUGIN "CSDM Gun Menu"
#define VERSION "1.0"
#define AUTHOR "Unkolix"

new HasDgl[33], HasUsp[33], HasAWP[33], HasAK47[33], HasM4A1[33], ShowMenu[33] = true;

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say .guns""WeaponMenuOn")
    
    
RegisterHam(Ham_Spawn"player""fwHamPlayerSpawnPost"1);
}

public 
fwHamPlayerSpawnPost(id)
{
    if(
is_user_alive(id)) 
    {
        if(
ShowMenu[id])
        {
            
weapons(id)
        }
        else
        {
            
GiveLastWeapons(id)
            
set_task(2.0"WriteGuns"id)
        }
    }
}

public 
WriteGuns(id)
{
    
client_print(idprint_chat"Noredamas vel matyti apsilimo meniu, rasyk .guns")
}

public 
WeaponMenuOn(id)
{
    
ShowMenu[id] = true;
}

public 
weapons(id) {
    new 
menu menu_create("Apsilimo Meniu:""weaponsrod");
    
    
menu_additem(menu"Ginklai""1"0);
    
menu_additem(menu"Paskutinis pasirinkimas""2"0);
    
menu_additem(menu"2 + Nerodyti Sito Meniu""3"0);
    
    
menu_setprop(menuMPROP_EXITNAME"Iseiti.")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
weaponsrod(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], szName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    new 
key str_to_num(data);
    switch(
key)
    {
    case 
1: {                                  
            
weapons2(id)
        }
    case 
2: {     
            
GiveLastWeapons(id)
        }
    case 
3: {
            
ShowMenu[id] = false;
            
GiveLastWeapons(id)
        }
    }
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE
}

public 
GiveLastWeapons(id)
{
    
strip_user_weapons(id)
    
give_item(id"weapon_knife")
    
give_item(id"item_assaultsuit");
    
give_item(id"weapon_hegrenade");
    
give_item(id"weapon_flashbang");
    
give_item(id"weapon_flashbang");
    
give_item(id"weapon_smokegrenade");
    
    if(
HasUsp[id])
    {
        
give_item(id"weapon_usp");
        
cs_set_user_bpammo(idCSW_USP100);
    }
    else if(
HasDgl[id])
    {
        
give_item(id"weapon_deagle");
        
cs_set_user_bpammo(idCSW_DEAGLE35);
    }
    
    if(
HasM4A1[id])
    {
        
give_item(id"weapon_m4a1");
        
cs_set_user_bpammo(idCSW_M4A190);
    }
    else if(
HasAK47[id])
    {
        
give_item(id"weapon_ak47");
        
cs_set_user_bpammo(idCSW_AK4790);
    }
    else if(
HasAWP[id])
    {
        
give_item(id"weapon_awp");
        
cs_set_user_bpammo(idCSW_AWP30);
    }
}

public 
weapons2(id) {
    new 
menu menu_create("Apsilimo Ginklu Meniu 1/2:""weapons2rod");
    
    
menu_additem(menu"Desert Eagle""1"0);
    
menu_additem(menu"USP""2"0);
    
    
menu_setprop(menuMPROP_EXITNAME"Iseiti.")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
weapons2rod(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], szName[64];
    new 
accesscallback;
    
HasDgl[id] = false;
    
HasUsp[id] = false;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    new 
key str_to_num(data);
    switch(
key)
    {
    case 
1: {                                  
            
HasDgl[id] = true;
        }
    case 
2: {     
            
HasUsp[id] = true;
        }
    }
    
GiveLastWeapons(id)
    
weapons3(id)
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE
}

public 
weapons3(id) {
    new 
menu menu_create("Apsilimo Ginklu Meniu 2/2:""weaponsrod3");
    
    
menu_additem(menu"M4A1""1"0);
    
menu_additem(menu"AK47""2"0);
    
menu_additem(menu"AWP""3"0);
    
    
menu_setprop(menuMPROP_EXITNAME"Iseiti.")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}

public 
weaponsrod3(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    new 
data[6], szName[64];
    new 
accesscallback;
    
HasM4A1[id] = false;
    
HasAK47[id] = false;
    
HasAWP[id] = false;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    
    new 
key str_to_num(data);
    switch(
key)
    {
    case 
1: {
            
HasM4A1[id] = true;
        }
    case 
2: {     
            
HasAK47[id] = true;
        }
    case 
3: {
            
HasAWP[id] = true;
        }
    }
    
GiveLastWeapons(id)
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE


But I believe it's a poor way :D

this could be optimised alot. maybe even by half.

EDIT:

check this plugin out. https://forums.alliedmods.net/showpo...39&postcount=6

it shows you better way to do weapons menu with remember last choice.


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

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