Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <cstrike>
- #include <adv_vault>
- #include <engine>
- #include <hamsandwich>
- #define MAX_PETS sizeof( g_szPets )
- #define FLAG_GEMAS ADMIN_CVAR
- #define PET_NONE -1
- #if AMXX_VERSION_NUM < 183
- #define MAX_PLAYERS 32
- #define client_disconnected(%1) client_disconnect(%1)
- #endif
- new g_Tag[ ] = "[ AMXX ]";
- new g_dtbase[ ] = "AMX-Pets"
- enum _:DT_PETS
- {
- NAME[20],
- MODEL_DIR[60],
- IMG[60],
- GEMAS,
- HABILIDAD[100]
- }
- new iPlugin[ ][ ] =
- {
- "AMXX - Sistema de mascotas",
- "1.0",
- "Alejandro-. & Chema"
- }
- new g_szPets[ ][ DT_PETS ] =
- {
- {"BB-8", "models/VLP-Pets/BB-8.mdl", "http://imgfz.com/i/mwhD3ap.jpeg", 10, "Habilidad"},
- {"Browser JR", "models/VLP-Pets/bowser_jr.mdl", "http://imgfz.com/i/mijsO1Y.jpeg", 10, "Habilidad"},
- {"Pequeño Freddy", "models/VLP-Pets/fredy.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"},
- {"Fritz Smith", "models/VLP-Pets/fredy2.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"},
- {"Minion", "models/VLP-Pets/minion.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"},
- {"Planta", "models/VLP-Pets/plant.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"},
- {"Girasol", "models/VLP-Pets/sunflower.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"}
- }
- new g_szPetSound[ ] = "sounds/VLP-Pets/getpet_effect.mp3";
- new g_iGemas[ MAX_PLAYERS + 1 ];
- new bool:g_bPets[ MAX_PLAYERS + 1 ][ MAX_PETS ];
- new bool:g_bEquip[ MAX_PLAYERS + 1 ][ MAX_PETS ];
- new g_Item[ MAX_PLAYERS + 1 ];
- new g_Campos[ 3 ][ MAX_PETS ];
- new g_vault, g_playername[ MAX_PLAYERS + 1 ][ 32 ];
- new g_VaultGema;
- new g_iMaxPlayers[ 1 char ];
- new g_iPetEntity[ MAX_PLAYERS + 1 ];
- new bool:g_bCamera[ MAX_PLAYERS + 1 ];
- new g_iPetSelected[ MAX_PLAYERS + 1 ];
- new g_SavePet;
- public plugin_init( )
- {
- register_plugin( iPlugin[ 0 ], iPlugin[ 1 ], iPlugin[ 2 ] );
- register_clcmd( "say /pets", "menu_pets" );
- register_concmd( "amx_gemas", "cmd_gemas", FLAG_GEMAS, "[ NOMBRE ] [ GEMAS ]" );
- register_clcmd( "say /cam", "ClientCommand_ChangeCamera" );
- RegisterHam( Ham_Spawn, "player", "OnPlayer_SpawnPost", true );
- new szBuffer[ 15 ];
- g_vault = adv_vault_open( g_dtbase, false );
- for(new i = 0; i<MAX_PETS; i++)
- {
- format( szBuffer, 14, "Pet-%d", i + 1 );
- g_Campos[ 0 ][ i ] = adv_vault_register_field( g_vault, szBuffer );
- format( szBuffer, 14, "EquipPet-%d", i + 1 );
- g_Campos[ 1 ][ i ] = adv_vault_register_field( g_vault, szBuffer );
- }
- g_VaultGema = adv_vault_register_field( g_vault, "Gemas" );
- g_SavePet = adv_vault_register_field( g_vault, "SelectPet" );
- adv_vault_init( g_vault );
- g_iMaxPlayers{0} = get_maxplayers( );
- }
- public ClientCommand_ChangeCamera( const iId ) {
- if( !is_user_connected( iId ) )
- return PLUGIN_CONTINUE;
- g_bCamera[ iId ] =! g_bCamera[ iId ];
- g_bCamera[ iId ] ? set_view ( iId, CAMERA_3RDPERSON ) : set_view ( iId, CAMERA_NONE );
- return PLUGIN_HANDLED;
- }
- public OnPlayer_SpawnPost( const iId ) {
- if( is_user_alive( iId ) ) {
- if( g_iPetSelected[ iId ] == PET_NONE )
- return;
- if( is_valid_ent( g_iPetEntity[ iId ] ) ) {
- remove_entity( g_iPetEntity[ iId ] );
- g_iPetEntity[ iId ] = 0;
- }
- g_iPetEntity[ iId ] = create_entity( "info_target" );
- if( !is_valid_ent( g_iPetEntity[ iId ] ) )
- return;
- entity_set_int( g_iPetEntity[ iId ], EV_INT_movetype, MOVETYPE_FOLLOW );
- entity_set_edict( g_iPetEntity[ iId ], EV_ENT_aiment, iId );
- entity_set_int( g_iPetEntity[ iId ], EV_INT_rendermode, kRenderNormal );
- entity_set_model( g_iPetEntity[ iId ], g_szPets[ g_iPetSelected[ iId ] ][ MODEL_DIR ] );
- client_cmd( iId, "mp3 play ^"%s^"", g_szPetSound );
- }
- }
- public plugin_precache( )
- {
- for( new i = 0; i < sizeof g_szPets; i++) {
- precache_model( g_szPets[ i ][ MODEL_DIR ] );
- }
- precache_model( "models/rpgrocket.mdl" );
- precache_generic( g_szPetSound );
- }
- public cmd_gemas( id, level, cid )
- {
- if( !cmd_access( id, level, cid, 3 ) )
- return PLUGIN_HANDLED;
- new arg[ 32 ], arg2[ 10 ];
- read_argv( 1, arg, charsmax( arg ) )
- read_argv( 2, arg2, charsmax( arg2 ) )
- static iNameAdmin[ 33 ];
- get_user_name( id, iNameAdmin, charsmax( iNameAdmin ) );
- new Player = cmd_target( id, arg, 0 )
- if( !Player )
- {
- console_print(id, "%s Jugador no encontrado.", g_Tag);
- return PLUGIN_HANDLED;
- }
- new Gem = str_to_num( arg2 )
- new name[32]; get_user_name(Player, name, charsmax(name));
- g_iGemas[ Player ] += Gem;
- client_print_color( Player, print_team_default, "^4%s^1 El dueño^4 %s^1 %s:^3 %d^1 gemas.", g_Tag, iNameAdmin, arg2[0] == '-' ? "Te quito" : "Te dio", Gem );
- client_print_color( id, print_team_default, "^4%s^1 %s^4 %d ^1gemas ah ^4%s", g_Tag, arg2[0] == '-' ? "Le quitaste" : "Le diste", Gem, name );
- return PLUGIN_HANDLED;
- }
- public client_putinserver( id )
- {
- get_user_name( id, g_playername[ id ], 31 )
- g_Item[ id ] = -1;
- g_iGemas[ id ] = 0;
- g_bCamera[ id ] = false;
- g_iPetSelected[ id ] = PET_NONE;
- for( new i = 0; i <MAX_PETS; i++ )
- {
- g_bPets[ id ][ i ] = false;
- g_bEquip[ id ][ i ] = false;
- }
- Cargar( id );
- }
- public client_disconnected( id )
- {
- if( is_valid_ent( g_iPetEntity[ id ] ) )
- remove_entity( g_iPetEntity[ id ] );
- g_iPetEntity[ id ] = 0;
- Guardar( id );
- }
- public menu_pets( id )
- {
- new iPets = get_player_pets( id );
- new szBuffer[ 150 ];
- formatex( szBuffer, 149, "\y%s\w Mascotas: \y%d/%d\w.^nMis gemas:\y %d\w.", g_Tag, iPets, MAX_PETS, g_iGemas[ id ] );
- new menu = menu_create( szBuffer, "Handler_Pets" );
- for( new i = 0; i <MAX_PETS; i++ )
- {
- if( g_bEquip[ id ][ i ] ) formatex( szBuffer, 49, "%s \r(\yEquipada\r)", g_szPets[ i ][ NAME ] );
- else if( g_bPets[ id ][ i ] ) formatex( szBuffer, 49, "%s \r(\yComprada\r)", g_szPets[ i ][ NAME ] );
- else formatex( szBuffer, 49, "\w%s - \y(Gemas: %s%d\y)", g_szPets[ i ][ NAME ], g_iGemas[ id ] < g_szPets[ i ][ GEMAS ] ? "\r" : "\w",g_szPets[ i ][ GEMAS ] );
- menu_additem( menu, szBuffer );
- }
- menu_setprop( menu, MPROP_NEXTNAME, "Pag. Siguiente" );
- menu_setprop( menu, MPROP_BACKNAME, "Pag. Volver" );
- menu_setprop( menu, MPROP_EXITNAME, "Pag. Salir" );
- menu_display( id, menu );
- }
- public Handler_Pets( id, menu, item )
- {
- if( item == MENU_EXIT )
- {
- menu_destroy( menu );
- return PLUGIN_HANDLED;
- }
- g_Item[ id ] = item;
- view_pet( id );
- menu_destroy( menu );
- return PLUGIN_HANDLED;
- }
- public view_pet( id )
- {
- new szBuffer[ 150 ];
- if( g_bEquip[ id ][ g_Item[ id ] ] ) formatex( szBuffer, 149, "\y%s\w Mascota: \y%s\w^nEstado: \yEquipada.", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ] );
- else if( g_bPets[ id ][ g_Item[ id ] ] ) formatex( szBuffer, 149, "\y%s\w Mascota: \y%s\w^nEstado: \yComprada.", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ] );
- else formatex( szBuffer, 149, "\y%s\w Mascota: \y%s\w^nPrecio: \y%d\w^nMis gemas:\y %d^n\wHabilidad: \y%s", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ], g_szPets[ g_Item[ id ] ][ GEMAS ], g_iGemas[ id ], g_szPets[ g_Item[ id ] ][ HABILIDAD ] );
- new menu = menu_create( szBuffer, "Handler_ViewPet" );
- menu_additem( menu, "Vista previa" );
- if( g_bEquip[ id ][ g_Item[ id ] ] ) formatex( szBuffer, 49, "Desequipar" );
- else if( g_bPets[ id ][ g_Item[ id ] ] ) formatex( szBuffer, 49, "Equipar" );
- else formatex( szBuffer, 49, "Comprar", g_iGemas[ id ] < g_szPets[ g_Item[ id ] ][ GEMAS ] );
- menu_additem(menu, szBuffer);
- menu_setprop( menu, MPROP_EXITNAME, "Pag. Volver" );
- menu_display( id, menu );
- }
- public Handler_ViewPet( id, menu, item )
- {
- if( item == MENU_EXIT )
- {
- menu_pets( id );
- return PLUGIN_HANDLED;
- }
- switch( item )
- {
- case 0: preview_pet( id, g_Item[ id ] );
- case 1:
- {
- if( g_bEquip[ id ][ g_Item[ id ] ] )
- {
- g_bEquip[ id ][ g_Item[ id ] ] = false;
- g_iPetSelected[ id ] = PET_NONE;
- client_print_color( id, print_team_default, "^4%s^1 Desequipaste la mascota:^4 %s", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ] );
- return PLUGIN_HANDLED;
- }
- else if( g_bPets[ id ][ g_Item[ id ] ] )
- {
- for( new i = 0; i <MAX_PETS; i++ )
- g_bEquip[ id ][ i ] = false;
- g_iPetSelected[ id ] = g_Item[ id ];
- g_bEquip[ id ][ g_Item[ id ] ] = true;
- client_print_color( id, print_team_default, "^4%s^1 Equipaste la mascota:^4 %s", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ] );
- return PLUGIN_HANDLED;
- }
- else
- {
- if( g_iGemas[ id ] < g_szPets[ g_Item[ id ] ][ GEMAS ] )
- {
- view_pet( id );
- client_print_color( id, print_team_default, "^4%s^1 No tienes suficiente dinero para comprar esta mascota", g_Tag )
- return PLUGIN_HANDLED;
- }
- g_iGemas[ id ] -= g_szPets[ g_Item[ id ] ][ GEMAS ];
- g_bPets[ id ][ g_Item[ id ] ] = true;
- view_pet( id );
- client_print_color( id, print_team_default, "^4%s^1 Compraste la mascota:^4 %s", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ] )
- }
- }
- }
- menu_destroy( menu );
- return PLUGIN_HANDLED;
- }
- public preview_pet( id, Pet )
- {
- new motd[ 1536 ];
- formatex( motd, charsmax( motd ), "<body><style>body{background:url(^"%s^");background-position: center center;background-repeat: no-repeat;background-attachment: fixed;background-size: cover}</style></body>", g_szPets[ Pet ][ IMG ] );
- new M[ 30 ];
- formatex( M, charsmax( M ), "Mascota: %s", g_szPets[ id ][ NAME ]);
- show_motd( id, motd, M );
- }
- get_player_pets( id )
- {
- static Count = 0;
- for( new i = 0; i <MAX_PETS; i++ )
- {
- if(!g_bPets[ id ][ i ])
- continue;
- Count++;
- }
- return Count;
- }
- public Guardar( id )
- {
- if( !is_user_connected( id ) )
- return;
- adv_vault_set_start( g_vault )
- for(new i = 0; i<MAX_PETS; i++)
- {
- adv_vault_set_field( g_vault, g_Campos[ 0 ][ i ], g_bPets[ id ][ i ] );
- adv_vault_set_field( g_vault, g_Campos[ 1 ][ i ], g_bEquip[ id ][ i ] );
- }
- adv_vault_set_field( g_vault, g_VaultGema, g_iGemas[ id ] );
- adv_vault_set_field( g_vault, g_SavePet, g_iPetSelected[ id ] );
- adv_vault_set_end( g_vault, 0, g_playername[ id ] )
- }
- public Cargar( id )
- {
- if( !adv_vault_get_prepare( g_vault, _, g_playername[ id ] ) )
- return;
- for(new i = 0; i<MAX_PETS; i++)
- {
- g_bPets[ id ][ i ] = bool:adv_vault_get_field(g_vault, g_Campos[ 0 ][ i ]);
- g_bEquip[ id ][ i ] = bool:adv_vault_get_field(g_vault, g_Campos[ 1 ][ i ]);
- }
- g_iGemas[ id ] = adv_vault_get_field(g_vault, g_VaultGema );
- g_iPetSelected[ id ] = adv_vault_get_field(g_vault, g_SavePet );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement