[AMXX] Special Pets
#1
Video 
[AMXX] Special Pets 1.0b


Informacion del plugin:
  • Sistema de gemas, solo los STAFF pueden dar gemas a los usuarios!
  • Con las gemas podes comprar los pets mochilas, son permanentes después de comprarlos!
  • Usa guardado adv_vault
  • Este plugin fue creado por @Chema y mi persona hace ya un largo tiempo...

Creditos:

Requerimientos: Imagenes :
[Imagen: 1.png]
[Imagen: 2.png]
[Imagen: 3.png]

Codigo:
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <adv_vault>
#include <engine>
#include <hamsandwich>
 
#define MAX_PETS sizeof( g_sPets )
#define GIVE_FLAGS ADMIN_CVAR
#define PET_NONE -1
 
#if AMXX_VERSION_NUM < 183
 
#define MAX_PLAYERS 32
#define client_disconnected(%1) client_disconnect(%1)
 
#define client_print_color client_print 
#define print_team_default print_chat 

#endif

new const g_sPluginName[ ] = "Special Pets!";
new const 
g_sPluginVersion[ ] = "1.0b";
new const 
g_sPluginAuthor[ ] = "Alejandro & Chema @ AMXMODX-ES.COM";
 
new const 
g_sChatPrefix[ ] = "^4[AMXX]^1";
new const 
g_sConsolePrefix[ ] = "[AMXX]";
new const 
g_sWebsiteUrl[ ] = "www.amxmodx-es.com";
 
new 
g_sDatabase[ ] = "AMX-Pets";
 
enum _:ePets_Struct {
 
    
PET_NAME32 ],
    
MODEL_DIR35 ],
    
PET_GEMS
};
 
new const 
g_sPets[ ][ _:ePets_Struct ] = {
 
    { 
"BB-8",                "models/AMXX-Pets/BB-8.mdl",        10 },
    { 
"Browser JR",          "models/AMXX-Pets/bowser_jr.mdl",   10 },
    { 
"Pequeño Freddy",      "models/AMXX-Pets/fredy.mdl",       10 },
    { 
"Fritz Smith",         "models/AMXX-Pets/fredy2.mdl",      10 },
    { 
"Minion",              "models/AMXX-Pets/minion.mdl",      10 },
    { 
"Planta",              "models/AMXX-Pets/plant.mdl",       10 },
    { 
"Girasol",             "models/AMXX-Pets/sunflower.mdl",   10 }
};
  
new 
g_iPetEntityMAX_PLAYERS ],
    
g_iPetSelectedMAX_PLAYERS ],
    
g_iPurchasedPetsMAX_PLAYERS ],
    
g_iSelectedItemMAX_PLAYERS ];
 
new 
g_sPlayerNameMAX_PLAYERS ][ 32 ];
new 
g_iGemsMAX_PLAYERS ];
 
new 
bool:g_bPetsMAX_PLAYERS ][ MAX_PETS ],
    
g_bEquippedMAX_PLAYERS ][ MAX_PETS ],
    
g_bCameraMAX_PLAYERS ];
 
new 
g_sFields][ MAX_PETS ];
 
new 
g_iVault,
    
g_vPurchasedPets,
    
g_vGems,
    
g_vPets;
 
new 
g_iMaxPlayers1 char ];
 
public 
plugin_init( ) {
 
    
/* Register Plugin & Cvars */
    
register_pluging_sPluginNameg_sPluginVersiong_sPluginAuthor );
 
    
/* Client-related Stuff */
    
register_clcmd"say /pets""ShowMenu_PetsShop" );
    
register_clcmd"say /cam""ClientCommand_ChangeCamera" );
    
register_concmd"sp_gems""ClientCommand_GiveGems"GIVE_FLAGS"< name > < gems >" );
 
    
/* Hamsandwich's */
    
RegisterHamHam_Spawn"player""OnPlayer_SpawnPost"true );
 
    
/* Storage System */
    
new sBuffer15 ];
    
g_iVault adv_vault_openg_sDatabasefalse );
 
    for( new 
0iMAX_PETSi++ ) {
 
        
formatsBuffer14"Pet-%d");
        
g_sFields][ ] = adv_vault_register_fieldg_iVaultsBuffer );
 
        
formatsBuffer14"EquipPet-%d");
        
g_sFields][ ] = adv_vault_register_fieldg_iVaultsBuffer );
    }
 
    
g_vPurchasedPets adv_vault_register_fieldg_iVault"PurchasedPets" );
    
g_vGems adv_vault_register_fieldg_iVault"Gems" );
    
g_vPets adv_vault_register_fieldg_iVault"SelectedPet" );
    
adv_vault_initg_iVault );
 
    
g_iMaxPlayers{0} = get_maxplayers( );
}
 
public 
plugin_precache( ) {
 
    
precache_model"models/rpgrocket.mdl" );
 
    for( new 
0sizeof g_sPetsi++ )
        
precache_modelg_sPets][ MODEL_DIR ] );
}

public 
ClientCommand_ChangeCamera( const iId ) {
 
    if( !
is_user_connectediId ) )
        return 
PLUGIN_CONTINUE;
 
    
g_bCameraiId ] =! g_bCameraiId ];
    
g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
    return 
PLUGIN_HANDLED;
}
 
public 
ClientCommand_GiveGems( const iId, const iLevel, const iCid ) {
 
    if( !
cmd_accessiIdiLeveliCid) )
        return 
PLUGIN_HANDLED;
 
    new 
sArgs32 ], sNumber10 ];
    
read_argv1sArgscharsmaxsArgs ) );
    
read_argv2sNumbercharsmaxsNumber ) );
 
    static 
sStaffName33 ];
    
get_user_nameiIdsStaffNamecharsmaxsStaffName ) );
 
    new 
iTarget cmd_targetiIdsArgs);
 
    if( !
iTarget ) {
 
        
console_printiId"%s Jugador no encontrado."g_sConsolePrefix );
        return 
PLUGIN_HANDLED;
    }
 
    new 
iGems str_to_numsNumber );
    new 
sTargetName32 ]; get_user_nameiTargetsTargetNamecharsmaxsTargetName ) );
 
    
g_iGemsiTarget ] += iGems;
 
    
client_print_coloriTarget0"%s ^3STAFF ^4%s^1 %s ^3%d^1 gemas."g_sChatPrefixsStaffNamesNumber[0] == '-' "te quitó" "te regaló"iGems );
    return 
PLUGIN_HANDLED;
}
 
public 
OnPlayer_SpawnPost( const iId ) {
 
    if( 
is_user_aliveiId ) ) {
 
        if( 
g_iPetSelectediId ] == PET_NONE )
            return;
 
        if( 
is_valid_entg_iPetEntityiId ] ) ) {
 
            
remove_entityg_iPetEntityiId ] );
            
g_iPetEntityiId ] = 0;
        }
 
        
g_iPetEntityiId ] = create_entity"info_target" );
 
        if( !
is_valid_entg_iPetEntityiId ] ) )
            return;
 
        
entity_set_intg_iPetEntityiId ], EV_INT_movetypeMOVETYPE_FOLLOW );
        
entity_set_edictg_iPetEntityiId ], EV_ENT_aimentiId );
        
entity_set_intg_iPetEntityiId ], EV_INT_rendermodekRenderNormal );
        
entity_set_modelg_iPetEntityiId ], g_sPetsg_iPetSelectediId ] ][ MODEL_DIR ] );
    }
}
 
public 
client_putinserveriId ) {
 
    
get_user_nameiIdg_sPlayerNameiId ], charsmaxg_sPlayerName ) );
 
    
g_iSelectedItemiId ] = PET_NONE;
    
g_iPetSelectediId ] = PET_NONE;
    
g_iPurchasedPetsiId ] = 0;
    
g_iGemsiId ] = 0;
    
g_bCameraiId ] = false;
 
    for( new 
0MAX_PETSi++ ) {
 
        
g_bPetsiId ][ ] = false;
        
g_bEquippediId ][ ] = false;
    }
 
    
AdvancedVault_LoadDataiId );
}
 
public 
client_disconnectediId ) {
 
    if( 
is_valid_entg_iPetEntityiId ] ) )
        
remove_entityg_iPetEntityiId ] );
 
    
g_iPetEntityiId ] = 0;
    
AdvancedVault_SaveDataiId );
}
 
public 
ShowMenu_PetsShop( const iId ) {
 
    new 
sBuffer150 ];
    
formatexsBuffer149"\d%s^n\yTIENDA DE MASCOTAS!^n\yAdquiridas: \w%d/%d^n\yGemas: \w%d"g_sWebsiteUrlg_iPurchasedPetsiId ], MAX_PETSg_iGemsiId ] );
 
    new 
iMenu menu_createsBuffer"HandlerMenu_PetsShop" );
 
    for( new 
0MAX_PETSi++ ) {
 
        if( 
g_bEquippediId ][ ] )
            
formatexsBuffer49"\d%s \r[EQUIPADA]"g_sPets][ PET_NAME ] );
        else if( 
g_bPetsiId ][ ] )
            
formatexsBuffer49"\d%s \r[ADQUIRIDA]"g_sPets][ PET_NAME ] );
        else if( !
g_bPetsiId ][ ] )
            
formatexsBuffer49"\w%s \r[COMPRAR]"g_sPets][ PET_NAME ] );
        else
            
formatexsBuffer49"%s%s %s[GEMAS %d]"g_iGemsiId ] < g_sPets][ PET_GEMS ] ? "\d" "\w"g_sPets][ PET_NAME ], g_iGemsiId ] < g_sPets][ PET_GEMS ] ? "\d" "\r"g_sPets][ PET_GEMS ] );
 
        
menu_additemiMenusBuffer );
    }
 
    
menu_setpropiMenuMPROP_NUMBER_COLOR"\r" );
    
menu_setpropiMenuMPROP_NEXTNAME"Siguiente" );
    
menu_setpropiMenuMPROP_BACKNAME"Atrás" );
    
menu_setpropiMenuMPROP_EXITNAME"Cerrar" );
    
menu_displayiIdiMenu );
}
 
public 
HandlerMenu_PetsShop( const iId, const iMenu, const iItem ) {
 
    if( 
iItem == MENU_EXIT ) {
 
        
menu_destroyiMenu );
        return 
PLUGIN_HANDLED;
    }
 
    
client_cmdiId"spk ^"Ui/buttonclickrelease.wav^"" );
    
g_iSelectedItemiId ] = iItem;
    
ShowMenu_PreviewPetsiId );
    
menu_destroyiMenu );
    return 
PLUGIN_HANDLED;
}
 
public 
ShowMenu_PreviewPets( const iId ) {
 
    new 
sBuffer150 ];
 
    if( 
g_bEquippediId ][ g_iSelectedItemiId ] ] )
        
formatexsBuffer149"\d%s^n\yVISTRA PREVIA DE \w%s^n\yEstado: \rEQUIPADA"g_sWebsiteUrlg_sPetsg_iSelectedItemiId ] ][ PET_NAME ] );
    else if( 
g_bPetsiId ][ g_iSelectedItemiId ] ] )
        
formatexsBuffer149"\d%s^n\yVISTRA PREVIA DE \w%s^n\yEstado: \rADQUIRIDA"g_sWebsiteUrlg_sPetsg_iSelectedItemiId ] ][ PET_NAME ] );
    else
        
formatexsBuffer149"\d%s^n\yVISTRA PREVIA DE \w%s^n\yPrecio: \w%d^n\yGemas: \r%d"g_sWebsiteUrlg_sPetsg_iSelectedItemiId ] ][ PET_NAME ], g_sPetsg_iSelectedItemiId ] ][ PET_GEMS ], g_iGemsiId ] );
 
    new 
iMenu menu_createsBuffer"Handler_ViewPet" );
 
    if( 
g_bEquippediId ][ g_iSelectedItemiId ] ] )
        
formatexsBuffer49"Desequipar" );
    else if( 
g_bPetsiId ][ g_iSelectedItemiId ] ] )
        
formatexsBuffer49"Equipar" );
    else
        
formatexsBuffer49"Comprar"g_iGemsiId ] < g_sPetsg_iSelectedItemiId ] ][ PET_GEMS ] );
    
menu_additemiMenusBuffer );
 
    
menu_setpropiMenuMPROP_NUMBER_COLOR"\r" );
    
menu_setpropiMenuMPROP_EXITNAME"Atrás" );
    
menu_displayiIdiMenu );
}
 
public 
Handler_ViewPet( const iId, const iMenu, const iItem ) {
 
    if( 
iItem == MENU_EXIT ) {
 
        
ShowMenu_PetsShopiId );
        return 
PLUGIN_HANDLED;
    }
 
    switch( 
iItem ) {
        case 
0: {
 
            if( 
g_bEquippediId ][ g_iSelectedItemiId ] ] ) {
 
                
g_bEquippediId ][ g_iSelectedItemiId ] ] = false;
                
g_iPetSelectediId ] = PET_NONE;
                
client_print_coloriId0"%s Desequipaste la mascota ^4%s^1."g_sChatPrefixg_sPetsg_iSelectedItemiId ] ][ PET_NAME ] );
                return 
PLUGIN_HANDLED;
            }
            else if( 
g_bPetsiId ][ g_iSelectedItemiId ] ] ) {
 
                for( new 
0<MAX_PETSi++ )
                    
g_bEquippediId ][ ] = false;
 
                
g_iPetSelectediId ] = g_iSelectedItemiId ];
                
g_bEquippediId ][ g_iSelectedItemiId ] ] = true;
                
client_print_coloriId0"%s Equipaste la mascota ^4%s^1"g_sChatPrefixg_sPetsg_iSelectedItemiId ] ][ PET_NAME ] );
                return 
PLUGIN_HANDLED;
            }
            else {
 
                if( 
g_iGemsiId ] < g_sPetsg_iSelectedItemiId ] ][ PET_GEMS ] ) {
 
                    
ShowMenu_PreviewPetsiId );
                    
client_print_coloriId0"%s No tienes suficientes gemas para adquirir esta mascota!"g_sChatPrefix );
                    return 
PLUGIN_HANDLED;
                }
 
                
g_iGemsiId ] -= g_sPetsg_iSelectedItemiId ] ][ PET_GEMS ];
                
g_bPetsiId ][ g_iSelectedItemiId ] ] = true;
                
ShowMenu_PreviewPetsiId );
                
client_print_coloriId0"%s Adquiriste la mascota ^4%s^1."g_sChatPrefixg_sPetsg_iSelectedItemiId ] ][ PET_NAME ] );
                
g_iPurchasedPetsiId ]++;
            }      
        }
    }
 
    
client_cmdiId"spk ^"Ui/buttonclickrelease.wav^"" );
    
menu_destroyiMenu );
    return 
PLUGIN_HANDLED;
}
public 
AdvancedVault_SaveData( const iId ) {
 
    if( !
is_user_connectediId ) )
        return;
 
    
adv_vault_set_startg_iVault );
 
    for( new 
0MAX_PETSi++ ) {
 
        
adv_vault_set_fieldg_iVaultg_sFields][ ], g_bPetsiId ][ ] );
        
adv_vault_set_fieldg_iVaultg_sFields][ ], g_bEquippediId ][ ] );
    }
 
    
adv_vault_set_fieldg_iVaultg_vPurchasedPetsg_iPurchasedPetsiId ] );
    
adv_vault_set_fieldg_iVaultg_vGemsg_iGemsiId ] );
    
adv_vault_set_fieldg_iVaultg_vPetsg_iPetSelectediId ] );
 
    
adv_vault_set_endg_iVault0g_sPlayerNameiId ] );
}
 
public 
AdvancedVault_LoadData( const iId ) {
 
    if( !
adv_vault_get_prepareg_iVault_g_sPlayerNameiId ] ) )    
        return;
 
    for( new 
0MAX_PETSi++ ) {
 
        
g_bPetsiId ][ ] = bool:adv_vault_get_field(g_iVaultg_sFields][ ]);
        
g_bEquippediId ][ ] = bool:adv_vault_get_field(g_iVaultg_sFields][ ]);
    }
 
    
g_iPurchasedPetsiId ] = adv_vault_get_fieldg_iVaultg_vPurchasedPets );
    
g_iGemsiId ] = adv_vault_get_fieldg_iVaultg_vGems );
    
g_iPetSelectediId ] = adv_vault_get_fieldg_iVaultg_vPets );



Archivos adjuntos
.sma   Descargar AMXX / AMX-SpecialPets.sma (Tamaño: 12.01 KB / Descargas: 14)
.rar   Models.rar (Tamaño: 1.87 MB / Descargas: 17)
Responder
#2
Uh que crack! Te quedo muy bueno.
[Imagen: b_350_20_692108_381007_ffffff_000000.png]
Responder
#3
y que guarda la mochila ?
Responder
#4
(23/05/2020, 12:35 AM)MR10 escribió: Uh que crack! Te quedo muy bueno.

Gracias!!

(23/05/2020, 12:52 AM)GeX~\ escribió: y que guarda la mochila ?

No guarda nada, así se llaman los modelos mascotas mochila, ya que van en la espalda del jugador, con un poco más de código se puede hacer muchas otras cosas, pero aquí solo pienso mostrar algo basico.
Responder
#5
Hablemos un poco sobre las líneas... Lo haces a propósito o como?

Código PHP:
public ClientCommand_ChangeCamera( const iId ) {
 
    if( !
is_user_connectediId ) )
        return 
PLUGIN_CONTINUE;
 
    
g_bCameraiId ] =! g_bCameraiId ];
    
g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
    return 
PLUGIN_HANDLED;


Le falta tabulación, podría estar mejor así:
Código PHP:
public ClientCommand_ChangeCamera( const iId ) {
     
    if( !
is_user_connectediId ) )
    return 
PLUGIN_CONTINUE;
     
    
g_bCameraiId ] =! g_bCameraiId ];
    
g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
    return 
PLUGIN_HANDLED;


Saludos.
[Imagen: giphy.gif]

[Imagen: 76561198874394515.png]
Responder
#6
(23/05/2020, 01:07 AM)Nazy.- escribió: Hablemos un poco sobre las líneas... Lo haces a propósito o como?

Código PHP:
public ClientCommand_ChangeCamera( const iId ) {
 
    if( !is_user_connectediId ) )
        return PLUGIN_CONTINUE;
 
    g_bCameraiId ] =! g_bCameraiId ];
    g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
    return PLUGIN_HANDLED;


Le falta tabulación, podría estar mejor así:
Código PHP:
public ClientCommand_ChangeCamera( const iId ) {
 
 if( !
is_user_connectediId ) )
 return 
PLUGIN_CONTINUE;
 
 
g_bCameraiId ] =! g_bCameraiId ];
 
g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
 return 
PLUGIN_HANDLED;


Saludos.

No tienes idea amigo...
[Imagen: ZPChileOficial.png]

[Imagen: b_350_20_323957_202743_f19a15_111111.png]
Zombie Plague Chile

Discord AMXX: Click URL invitación
Venta Jailbreak: Click aca
Responder
#7
(23/05/2020, 01:07 AM)Nazy.- escribió: Hablemos un poco sobre las líneas... Lo haces a propósito o como?

Código PHP:
public ClientCommand_ChangeCamera( const iId ) {
 
    if( !is_user_connectediId ) )
        return PLUGIN_CONTINUE;
 
    g_bCameraiId ] =! g_bCameraiId ];
    g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
    return PLUGIN_HANDLED;


Le falta tabulación, podría estar mejor así:
Código PHP:
public ClientCommand_ChangeCamera( const iId ) {
 
 if( !
is_user_connectediId ) )
 return 
PLUGIN_CONTINUE;
 
 
g_bCameraiId ] =! g_bCameraiId ];
 
g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
 return 
PLUGIN_HANDLED;


Saludos.

????? Dafuq
Responder
#8
(23/05/2020, 01:20 AM)Alejandro escribió: ????? Dafuq

No le hagas caso, esta un poco mal de la cabeza, igual buen plugin bro

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook

[Imagen: w8565u-4.png]
Responder
#9
(23/05/2020, 02:12 AM)kikizon2 escribió: No le hagas caso, esta un poco mal de la cabeza, igual buen plugin bro
Roflmao Roflmao, Gracias bro!
Responder
#10
Como sugerencia para futuras publicaciones, tambien publica el codigo, da alta paja descargar un archivo para ver que sugerencias/fix se pueden sugerir

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook

[Imagen: w8565u-4.png]
Responder
#11
(23/05/2020, 02:34 AM)kikizon2 escribió: Como sugerencia para futuras publicaciones, tambien publica el codigo, da alta paja descargar un archivo para ver que sugerencias/fix se pueden sugerir

Gracias por la sugerencia, de igual forma publicare el código igual!
Responder
#12
(23/05/2020, 01:07 AM)Nazy.- escribió: Hablemos un poco sobre las líneas... Lo haces a propósito o como?

Código PHP:
public ClientCommand_ChangeCamera( const iId ) {
 
    if( !
is_user_connectediId ) )
        return 
PLUGIN_CONTINUE;
 
    
g_bCameraiId ] =! g_bCameraiId ];
    
g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
    return 
PLUGIN_HANDLED;


Le falta tabulación, podría estar mejor así:
Código PHP:
public ClientCommand_ChangeCamera( const iId ) {
     
    if( !
is_user_connectediId ) )
    return 
PLUGIN_CONTINUE;
     
    
g_bCameraiId ] =! g_bCameraiId ];
    
g_bCameraiId ] ? set_view iIdCAMERA_3RDPERSON ) : set_view iIdCAMERA_NONE );
    return 
PLUGIN_HANDLED;


Saludos.
Xd
Responder
#13
Whatever
No contesto mensajes de soporte. Pregunta en los foros.
Si buscas algún trabajo privado, envíame un MP.
www.HZNCOMMUNITY.net
Responder
#14
Muy bonito Sonrisa Excelente aporte como siempre.
"Deja a un lobo vivo y las ovejas nunca estarán a salvo."
[Imagen: 76561198371193937.png]
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]
Responder
#15
(23/05/2020, 03:05 PM)rojedafeik escribió: Muy bonito Sonrisa Excelente aporte como siempre.

Feel like a sir Lml
Responder
#16
Hola Alejandro, muy buen plugin!, como haría para que no este tan pegado el pets al terro/ct?, sino que este un poco las lejos del jugador?

No tendrás un par de skins más?
Responder
#17
(28/05/2020, 06:04 PM)Spirit escribió: Hola Alejandro, muy buen plugin!, como haría para que no este tan pegado el pets al terro/ct?, sino que este un poco las lejos del jugador?

No tendrás un par de skins más?
https://forums.alliedmods.net/showthread.php?t=50960

ese sistema la mascota te persigue es re divertido, capas te sirve.
Panda Nuestro

Sistema de Cuentas

No ayudo por privado
Responder
#18
muchas gracias r0ma Rainbow
Responder
#19
(28/05/2020, 06:33 PM)r0ma\ escribió: https://forums.alliedmods.net/showthread.php?t=50960

ese sistema la mascota te persigue es re divertido, capas te sirve.

Sera probar este, ya que el que se trabajo aquí son tipo hats
Responder
#20
Perdón por la ignorancia, pero si el server esta 32/32 y todos tienen los pets, puede que lagee?
Responder
#21
(28/05/2020, 06:49 PM)Spirit escribió: Perdón por la ignorancia, pero si el server esta 32/32 y todos tienen los pets, puede que lagee?

No, es como que tuvieran hats me entiendes!
Bueno hablo por el de este post
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)