[TUT] Como hacer un SHOP para ambos team
#1
Hola, que tal muchachos, soy nuevo en el foro y vengo a hacer un pequeño aporte de como hacer un MENU shop distinto para ambos team.

Código PHP:
#include <amxmodx>

#define PLUGIN "Shop"
#define VERSION "1.0"
#define AUTHOR "karma.IN"


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("chooseteam""principal")    // Cuando aprete la "M" lo dirige al Menu Principal


    // Add your code here...
}

public 
principal(id)   
{   
    new 
team get_user_team(id)  
    
    if(
team == || team == 2// Si el team es TT o CT
    

        
menu(id);  // lo manda al menu principal
    
}  
    else 
//de no se asi
    

        return 
PLUGIN_HANDLED
    
}  
    return 
PLUGIN_HANDLED;  
}  

public 
menu(id//Creamos el menu principal
{                  
    new 
Menu menu_create("\wMenu Principal""menu_handler")   //El nombre del menu y dsp el handler
         
    
if(get_user_team(id) == 1//si el team es 1 va a mostrar este Item
    
menu_additem(Menu"\wShop TT"   "1"0)  
    else if(
get_user_team(id) == 2//si el team es 2 va a mostrar este item
    
menu_additem(Menu"\Shop CT",     "1"0)             
                 
    
menu_setprop(MenuMPROP_EXITNAME,"Salir"
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL); 
         
    
menu_display(idMenu0);              
}   

public 
menu_handler(idmenuitem)
{      
    if(
item == MENU_EXIT
    { 
        
menu_destroy(menu);         
        return 
PLUGIN_HANDLED 
    

    new 
data[6], iName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata5iName63callback);   

    new 
key str_to_num(data);
    
    switch(
key)
    {         
        case 
1:  shop(id);                        
        
    }
    return 
PLUGIN_HANDLED;
}

public 
shop(id)   
{   
    if(
is_user_alive(id)) // Si el usuario esta vivo
    
{
        new 
team get_user_team(id)  
        {
            if(
team == 1// si el team es TT lo manda al shop TT
            

                
shopTT(id);  
            }  
            else if(
team == 2// Si el team es CT lo manda al shop CT
            

                
shopCT(id);
            }          
            else if(
team == 3// de no se asi, returnea
            
{
                return 
PLUGIN_CONTINUE
            
}
        }        
    }
    else 
// de no estar vivo
    
{
        
client_print(idprint_center"NECESITAS ESTAR VIVO PARA ACCEDER AL SHOP")    //Manda este print
        
return PLUGIN_HANDLED
    
}
    return 
PLUGIN_HANDLED


EDITADO:
-----------Otra manera de hacerlo.
Código PHP:
#include <amxmodx>
#include <fun>
#include <cstrike>

#define PLUGIN "Shop"
#define VERSION "1.0"
#define AUTHOR "karma.IN"


public plugin_init() //Al comienzo del plugin registramos nuestros comandos / eventos ,etc
 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /shop""shop"//Registramos el comando /shop y esto lo enviara al public "shop"
}

public 
shop(id)   //creamos el public "shop" y establecemos que :
{   
    if(
is_user_alive(id)) // Si el usuario esta vivo
    
{
        new 
team get_user_team(id)  
        {
            if(
team == 1// si el team es TT 
            

                
shopTT(id);  // lo manda al shop de TT
            
}  
            else if(
team == 2// Si el team es CT
            

                
shopCT(id); // Lo manda al shop del CT
            
}          
            else if(
team == 3// De ser SPECTADOR no abrira el menu
            
{
                return 
PLUGIN_HANDLED
            
}
        }        
    }
    else 
// de no estar vivo
    
{
        
client_print(idprint_center"NECESITAS ESTAR VIVO PARA ACCEDER AL SHOP")    //Manda este print
        
return PLUGIN_HANDLED
    
}
    return 
PLUGIN_HANDLED
}  

public 
shopTT(id//EJ: Creamos un shop del TT
{                  
        new 
Menu menu_create("\wHola soy un shop""shop_handler")   // Creamos la nueva variable "Menu" que usaremos aqui
         
        
menu_additem(Menu"\w200hp"   "1"0)  //Opcion 1 
        
menu_additem(Menu"\wSmokeGrenade"      "2"0)  //Opcion 2
        
menu_additem(Menu"\wDeagle 1 Bala"   "3"0)    //Opcion 3
                 
        
menu_setprop(MenuMPROP_EXITNAME,"Salir"
        
menu_setprop(MenuMPROP_EXITMEXIT_ALL); 
         
        
menu_display(idMenu0);              
}   

public 
shop_handler(idmenuitem//aca se determinan las acciones de cada Opcion anterior
{      
    if(
item == MENU_EXIT//Si el item es EXIT, destruye el menu
    

        
menu_destroy(menu);         
        return 
PLUGIN_HANDLED 
    

    new 
data[6], iName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata5iName63callback);   

    new 
key str_to_num(data); 
    
    switch(
key)
    {         
        case 
1//opcion 1
        
{
            
set_user_health(id,200//Otorga 200 de hp
        
}
        case 
2//opcion 2
        
{
            
give_item(id,"weapon_smokegrenade"//Da una SG
            
cs_set_user_bpammo(idCSW_SMOKEGRENADE1// Aca seteamos que le va a dar 1 Sola sg
        
}
        case 
3//opcion 3
        
{
            
cs_set_weapon_ammo(give_item(id"weapon_glock18"), 1// Le damos una glock con 1 bala
        
}
        
        
    }
    return 
PLUGIN_HANDLED;
}

public 
shopCT(id// Lo mismo hacemos para el SHOP del CT
{                  
        new 
Menu menu_create("\wHola soy un shop""shopCT_handler")   // Nunca usamos el mismo handler par el mismo menu
         
        
menu_additem(Menu"\w200hp"   "1"0)  //Opcion 1 
        
menu_additem(Menu"\wSmokeGrenade"      "2"0)  //Opcion 2
        
menu_additem(Menu"\wDeagle 1 Bala"   "3"0)    //Opcion 3
                 
        
menu_setprop(MenuMPROP_EXITNAME,"Salir"
        
menu_setprop(MenuMPROP_EXITMEXIT_ALL); 
         
        
menu_display(idMenu0);              
}   

public 
shop_handler(idmenuitem//aca se determinan las acciones de cada Opcion anterior
{      
    if(
item == MENU_EXIT//Si el item es EXIT, destruye el menu
    

        
menu_destroy(menu);         
        return 
PLUGIN_HANDLED 
    

    new 
data[6], iName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata5iName63callback);   

    new 
key str_to_num(data); 
    
    switch(
key)
    {         
        case 
1
        {
            
set_user_health(id,200
        }
        case 
2//opcion 2
        
{
            
give_item(id,"weapon_smokegrenade"
            
cs_set_user_bpammo(idCSW_SMOKEGRENADE1
        }
        case 
3//opcion 3
        
{
            
cs_set_weapon_ammo(give_item(id"weapon_glock18"), 1
        }
        
        
    }
    return 
PLUGIN_HANDLED;

Responder
#2
1. Ponlo en etiquetas php.
2. Porque llamas tantos menu's?
3. No explicas nada... esto no puede llamarse tutorial.
4. No es necesario el include amxmisc.
5. Tienes que hookear jointeam.
6. menu_handler tiene codigo demas.

observaciones que vi asi a simple vista ademas dice hacer SHOP y en que momento haces el shop? esto vendria a ser mas como hacer los menus cosa que ya hay un tutorial bien explicado para esto...
Responder
#3
(06/04/2014, 06:06 PM)3mcy daimont escribió: 1. Ponlo en etiquetas php.
2. Porque llamas tantos menu's?
3. No explicas nada... esto no puede llamarse tutorial.
4. No es necesario el include amxmisc.
5. Tienes que hookear jointeam.
6. menu_handler tiene codigo demas.

observaciones que vi asi a simple vista ademas dice hacer SHOP y en que momento haces el shop? esto vendria a ser mas como hacer los menus cosa que ya hay un tutorial bien explicado para esto...

Si queres, puedo no llamar a tantos menos y hacer un simple /shop q mande a un TT a un shopo y al CT al otro, pero esta es la manera que creo que es mas comoda, ya que la mayoria lo mete en un menu. , el include ni lo mire ya que puse "New Plugin" y ni lo vi".
¿Porque hookear el Jointeam?,
y no entendi lo de menu_handler tiene codigo demas .. :_
Responder
#4
Código PHP:
/* Esto no es un tutorial completo solo es un ejemplo de una mejor forma la cual puedes hacer para tu tutorial. */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define PLUGIN "Shop" // no tiene nada de shop
#define VERSION "1.0" // version del plugin la cual ira subiendo segun las mejoras de bugs o complementaciones proximas
#define AUTHOR "rA1N" // author
#define dead "Necesitas estar vivo" // define para facilitar los mensajes que enviaremos.( para no ponerlos a cada rato.

public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR// registramos de las cosas definidas anteriormente
    
register_clcmd("chooseteam""principal")    // llamamos el menu con chooseteam.
}

public 
principal(id)   { // llamamos principal a la sección la cual ocuparemos para distrivuir los 2 menus
    
if(cs_get_user_team(id) == CS_TEAM_CT// team ct
        
menuCT(id)                       // lo redireccionamos al menuCT
    
else                                        // else es todo lo contrario en este caso CS_TEAM_T
        
menuTT(id)                       // lo redireccionamos a menuTT
    
}
public 
menuCT(id)   
{                  
    new 
Menu menu_create("\wMenu De Policias""menu_handler1"//titulo
    
menu_additem(Menu"\wOpcion 1"   "1"0)   // opción 1
    
menu_additem(Menu"\wOpcion 2"   "2"0)   // opción 2           
    
menu_setprop(MenuMPROP_EXITNAME,"Salir")    // definimos el nombre que ocupara el boton exit
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL);       // mas..   
    
    
menu_display(idMenu0);              // numero que ocuparemos para salir del menu
}   

// lo mismo con el otro menu
public menuTT(id
{                  
    new 
Menu menu_create("\wMenu De Terroristas""menu_handler2")    
    
menu_additem(Menu"\wOpcion 1"   "1"0)  
    
menu_additem(Menu"\wOpcion 2"   "2"0)             
    
menu_setprop(MenuMPROP_EXITNAME,"Salir"
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL); 
    
    
menu_display(idMenu0);              
}   

// aqui pones las cases..... etc.. "next" 
solo es un ejemplo de como puedes explicar mas cosas y otras formas las cuales puedes hacerlo .

* Te Falta mas explicacion

Código PHP:
public shop(id)   {   
    if(
cs_get_user_team(id) == CS_TEAM_CT)
        
shopTT(id)
    else 
        
shopCT(id);    
//.... 
Responder
#5
Gracias Pipa Roja, ahi edite y puse otra manera de hacerlo, por supuesto igual muchas gracias por el ejemplo
Responder
#6
get_user_team puede dar falsos positivos en cs
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#7
Por ahora todavia nunca me tiro un falso, pero puede ser ._.
Existe alguna otra manera Raulitop?
Responder
#8
(06/04/2014, 07:17 PM)karma.IN escribió: Por ahora todavia nunca me tiro un falso, pero puede ser ._.
Existe alguna otra manera Raulitop?
ya que usas cstrike te combiene:
cs_get_user_team(index)

Cita:observaciones que vi asi a simple vista ademas dice hacer SHOP y en que momento haces el shop? esto vendria a ser mas como hacer los menus cosa que ya hay un tutorial bien explicado para esto...
ohh stop you :$
Fuck yeah
Responder
#9
(06/04/2014, 07:26 PM)[Anti] escribió:
Cita:observaciones que vi asi a simple vista ademas dice hacer SHOP y en que momento haces el shop? esto vendria a ser mas como hacer los menus cosa que ya hay un tutorial bien explicado para esto...
ohh stop you :$
Fuck yeah

justamente me referia a tú tutorial... ._.
Responder
#10
Lei esto y no lei mas
Código PHP:
else //de no se asi
    

        return 
PLUGIN_HANDLED
    
}  
    return 
PLUGIN_HANDLED
Código PHP:
if(is_user_alive(id))
else if(
team == 3// De ser SPECTADOR no abrira el menu
            
{
                return 
PLUGIN_HANDLED
            

Whatdone
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#11
jaja
perdon...
estaba mirando otro thread similar y postie mi critica acá nada que ver! jaja
Responder
#12
(06/04/2014, 09:28 PM)3mcy daimont escribió:
(06/04/2014, 07:26 PM)[Anti] escribió:
Cita:observaciones que vi asi a simple vista ademas dice hacer SHOP y en que momento haces el shop? esto vendria a ser mas como hacer los menus cosa que ya hay un tutorial bien explicado para esto...
ohh stop you :$
Fuck yeah

justamente me referia a tú tutorial... ._.

por eso digo jajaja, fíjense si quieren dividí los menus y puse otra forma mas, si quieren peguen se una vuelta por el tuto
saludoss
Responder
#13
La primera forma que pusiste está mal, mejor deja solo la segunda.

Hablando solo de la segunda forma:
no entiendo porque pones tantos return PLUGIN_HANDLED en public shop, con el del final sobra
mejor es hacer un switch con la variable team
menu_item_getinfo no hace falta en absoluto, bórralos en los 2 menús y empieza el switch(item) desde 0

(06/04/2014, 07:17 PM)karma.IN escribió: Por ahora todavia nunca me tiro un falso, pero puede ser ._.
Existe alguna otra manera Raulitop?

Código PHP:
new team get_user_team(id
-->
Código PHP:
new CsTeams:team cs_get_user_team(id
obviamente tienes que cambiar en los demás también
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#14
[PHP] // Nunca usamos el mismo handler para el mismo menú [PHP]
Whatdone
Tanto cuesta leer mi tutorial???
Responder
#15
(16/04/2014, 01:26 AM)[Anti] escribió: [PHP] // Nunca usamos el mismo handler para el mismo menú [PHP]
Whatdone
Tanto cuesta leer mi tutorial???

Me parece q lo que cuesta es no hacer tutoriales, es decir por q no esperar a entender todo bien y dsp hacer el tuto
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)