Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.38 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <adv_vault>
  5. #include <engine>
  6. #include <hamsandwich>
  7.  
  8. #define MAX_PETS sizeof( g_szPets )
  9. #define FLAG_GEMAS ADMIN_CVAR
  10. #define PET_NONE -1
  11.  
  12. #if AMXX_VERSION_NUM < 183
  13.  
  14. #define MAX_PLAYERS 32
  15. #define client_disconnected(%1) client_disconnect(%1)
  16.  
  17. #endif
  18.  
  19. new g_Tag[ ] = "[ AMXX ]";
  20. new g_dtbase[ ] = "AMX-Pets"
  21. enum _:DT_PETS
  22. {
  23. NAME[20],
  24. MODEL_DIR[60],
  25. IMG[60],
  26. GEMAS,
  27. HABILIDAD[100]
  28. }
  29.  
  30. new iPlugin[ ][ ] =
  31. {
  32. "AMXX - Sistema de mascotas",
  33. "1.0",
  34. "Alejandro-. & Chema"
  35. }
  36.  
  37. new g_szPets[ ][ DT_PETS ] =
  38. {
  39. {"BB-8", "models/VLP-Pets/BB-8.mdl", "http://imgfz.com/i/mwhD3ap.jpeg", 10, "Habilidad"},
  40. {"Browser JR", "models/VLP-Pets/bowser_jr.mdl", "http://imgfz.com/i/mijsO1Y.jpeg", 10, "Habilidad"},
  41. {"Pequeño Freddy", "models/VLP-Pets/fredy.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"},
  42. {"Fritz Smith", "models/VLP-Pets/fredy2.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"},
  43. {"Minion", "models/VLP-Pets/minion.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"},
  44. {"Planta", "models/VLP-Pets/plant.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"},
  45. {"Girasol", "models/VLP-Pets/sunflower.mdl", "http://imgfz.com/i/WSo0R3s.jpeg", 10, "Habilidad"}
  46. }
  47.  
  48. new g_szPetSound[ ] = "sounds/VLP-Pets/getpet_effect.mp3";
  49.  
  50. new g_iGemas[ MAX_PLAYERS + 1 ];
  51. new bool:g_bPets[ MAX_PLAYERS + 1 ][ MAX_PETS ];
  52. new bool:g_bEquip[ MAX_PLAYERS + 1 ][ MAX_PETS ];
  53. new g_Item[ MAX_PLAYERS + 1 ];
  54. new g_Campos[ 3 ][ MAX_PETS ];
  55. new g_vault, g_playername[ MAX_PLAYERS + 1 ][ 32 ];
  56. new g_VaultGema;
  57. new g_iMaxPlayers[ 1 char ];
  58. new g_iPetEntity[ MAX_PLAYERS + 1 ];
  59. new bool:g_bCamera[ MAX_PLAYERS + 1 ];
  60. new g_iPetSelected[ MAX_PLAYERS + 1 ];
  61. new g_SavePet;
  62.  
  63. public plugin_init( )
  64. {
  65. register_plugin( iPlugin[ 0 ], iPlugin[ 1 ], iPlugin[ 2 ] );
  66.  
  67. register_clcmd( "say /pets", "menu_pets" );
  68. register_concmd( "amx_gemas", "cmd_gemas", FLAG_GEMAS, "[ NOMBRE ] [ GEMAS ]" );
  69. register_clcmd( "say /cam", "ClientCommand_ChangeCamera" );
  70.  
  71. RegisterHam( Ham_Spawn, "player", "OnPlayer_SpawnPost", true );
  72.  
  73. new szBuffer[ 15 ];
  74. g_vault = adv_vault_open( g_dtbase, false );
  75. for(new i = 0; i<MAX_PETS; i++)
  76. {
  77. format( szBuffer, 14, "Pet-%d", i + 1 );
  78. g_Campos[ 0 ][ i ] = adv_vault_register_field( g_vault, szBuffer );
  79. format( szBuffer, 14, "EquipPet-%d", i + 1 );
  80. g_Campos[ 1 ][ i ] = adv_vault_register_field( g_vault, szBuffer );
  81. }
  82. g_VaultGema = adv_vault_register_field( g_vault, "Gemas" );
  83. g_SavePet = adv_vault_register_field( g_vault, "SelectPet" );
  84. adv_vault_init( g_vault );
  85.  
  86. g_iMaxPlayers{0} = get_maxplayers( );
  87.  
  88. }
  89.  
  90. public ClientCommand_ChangeCamera( const iId ) {
  91.  
  92. if( !is_user_connected( iId ) )
  93. return PLUGIN_CONTINUE;
  94.  
  95. g_bCamera[ iId ] =! g_bCamera[ iId ];
  96. g_bCamera[ iId ] ? set_view ( iId, CAMERA_3RDPERSON ) : set_view ( iId, CAMERA_NONE );
  97.  
  98. return PLUGIN_HANDLED;
  99. }
  100.  
  101. public OnPlayer_SpawnPost( const iId ) {
  102.  
  103. if( is_user_alive( iId ) ) {
  104.  
  105. if( g_iPetSelected[ iId ] == PET_NONE )
  106. return;
  107.  
  108. if( is_valid_ent( g_iPetEntity[ iId ] ) ) {
  109.  
  110. remove_entity( g_iPetEntity[ iId ] );
  111. g_iPetEntity[ iId ] = 0;
  112. }
  113.  
  114. g_iPetEntity[ iId ] = create_entity( "info_target" );
  115.  
  116. if( !is_valid_ent( g_iPetEntity[ iId ] ) )
  117. return;
  118.  
  119. entity_set_int( g_iPetEntity[ iId ], EV_INT_movetype, MOVETYPE_FOLLOW );
  120. entity_set_edict( g_iPetEntity[ iId ], EV_ENT_aiment, iId );
  121. entity_set_int( g_iPetEntity[ iId ], EV_INT_rendermode, kRenderNormal );
  122. entity_set_model( g_iPetEntity[ iId ], g_szPets[ g_iPetSelected[ iId ] ][ MODEL_DIR ] );
  123. client_cmd( iId, "mp3 play ^"%s^"", g_szPetSound );
  124. }
  125. }
  126.  
  127. public plugin_precache( )
  128. {
  129. for( new i = 0; i < sizeof g_szPets; i++) {
  130.  
  131. precache_model( g_szPets[ i ][ MODEL_DIR ] );
  132. }
  133.  
  134. precache_model( "models/rpgrocket.mdl" );
  135. precache_generic( g_szPetSound );
  136. }
  137.  
  138. public cmd_gemas( id, level, cid )
  139. {
  140. if( !cmd_access( id, level, cid, 3 ) )
  141. return PLUGIN_HANDLED;
  142.  
  143. new arg[ 32 ], arg2[ 10 ];
  144. read_argv( 1, arg, charsmax( arg ) )
  145. read_argv( 2, arg2, charsmax( arg2 ) )
  146.  
  147. static iNameAdmin[ 33 ];
  148. get_user_name( id, iNameAdmin, charsmax( iNameAdmin ) );
  149.  
  150. new Player = cmd_target( id, arg, 0 )
  151.  
  152. if( !Player )
  153. {
  154. console_print(id, "%s Jugador no encontrado.", g_Tag);
  155. return PLUGIN_HANDLED;
  156. }
  157.  
  158. new Gem = str_to_num( arg2 )
  159. new name[32]; get_user_name(Player, name, charsmax(name));
  160.  
  161. g_iGemas[ Player ] += Gem;
  162.  
  163. 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 );
  164. 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 );
  165. return PLUGIN_HANDLED;
  166. }
  167.  
  168. public client_putinserver( id )
  169. {
  170. get_user_name( id, g_playername[ id ], 31 )
  171. g_Item[ id ] = -1;
  172. g_iGemas[ id ] = 0;
  173. g_bCamera[ id ] = false;
  174. g_iPetSelected[ id ] = PET_NONE;
  175.  
  176. for( new i = 0; i <MAX_PETS; i++ )
  177. {
  178. g_bPets[ id ][ i ] = false;
  179. g_bEquip[ id ][ i ] = false;
  180. }
  181. Cargar( id );
  182. }
  183.  
  184. public client_disconnected( id )
  185. {
  186. if( is_valid_ent( g_iPetEntity[ id ] ) )
  187. remove_entity( g_iPetEntity[ id ] );
  188.  
  189. g_iPetEntity[ id ] = 0;
  190. Guardar( id );
  191. }
  192. public menu_pets( id )
  193. {
  194. new iPets = get_player_pets( id );
  195.  
  196. new szBuffer[ 150 ];
  197. formatex( szBuffer, 149, "\y%s\w Mascotas: \y%d/%d\w.^nMis gemas:\y %d\w.", g_Tag, iPets, MAX_PETS, g_iGemas[ id ] );
  198.  
  199. new menu = menu_create( szBuffer, "Handler_Pets" );
  200.  
  201. for( new i = 0; i <MAX_PETS; i++ )
  202. {
  203. if( g_bEquip[ id ][ i ] ) formatex( szBuffer, 49, "%s \r(\yEquipada\r)", g_szPets[ i ][ NAME ] );
  204. else if( g_bPets[ id ][ i ] ) formatex( szBuffer, 49, "%s \r(\yComprada\r)", g_szPets[ i ][ NAME ] );
  205. 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 ] );
  206. menu_additem( menu, szBuffer );
  207. }
  208.  
  209. menu_setprop( menu, MPROP_NEXTNAME, "Pag. Siguiente" );
  210. menu_setprop( menu, MPROP_BACKNAME, "Pag. Volver" );
  211. menu_setprop( menu, MPROP_EXITNAME, "Pag. Salir" );
  212. menu_display( id, menu );
  213. }
  214.  
  215. public Handler_Pets( id, menu, item )
  216. {
  217. if( item == MENU_EXIT )
  218. {
  219. menu_destroy( menu );
  220. return PLUGIN_HANDLED;
  221. }
  222.  
  223. g_Item[ id ] = item;
  224. view_pet( id );
  225. menu_destroy( menu );
  226. return PLUGIN_HANDLED;
  227. }
  228.  
  229. public view_pet( id )
  230. {
  231. new szBuffer[ 150 ];
  232. 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 ] );
  233. 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 ] );
  234. 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 ] );
  235. new menu = menu_create( szBuffer, "Handler_ViewPet" );
  236.  
  237. menu_additem( menu, "Vista previa" );
  238. if( g_bEquip[ id ][ g_Item[ id ] ] ) formatex( szBuffer, 49, "Desequipar" );
  239. else if( g_bPets[ id ][ g_Item[ id ] ] ) formatex( szBuffer, 49, "Equipar" );
  240. else formatex( szBuffer, 49, "Comprar", g_iGemas[ id ] < g_szPets[ g_Item[ id ] ][ GEMAS ] );
  241. menu_additem(menu, szBuffer);
  242.  
  243. menu_setprop( menu, MPROP_EXITNAME, "Pag. Volver" );
  244. menu_display( id, menu );
  245. }
  246.  
  247. public Handler_ViewPet( id, menu, item )
  248. {
  249. if( item == MENU_EXIT )
  250. {
  251. menu_pets( id );
  252. return PLUGIN_HANDLED;
  253. }
  254.  
  255. switch( item )
  256. {
  257. case 0: preview_pet( id, g_Item[ id ] );
  258. case 1:
  259. {
  260. if( g_bEquip[ id ][ g_Item[ id ] ] )
  261. {
  262. g_bEquip[ id ][ g_Item[ id ] ] = false;
  263. g_iPetSelected[ id ] = PET_NONE;
  264. client_print_color( id, print_team_default, "^4%s^1 Desequipaste la mascota:^4 %s", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ] );
  265. return PLUGIN_HANDLED;
  266. }
  267. else if( g_bPets[ id ][ g_Item[ id ] ] )
  268. {
  269. for( new i = 0; i <MAX_PETS; i++ )
  270. g_bEquip[ id ][ i ] = false;
  271. g_iPetSelected[ id ] = g_Item[ id ];
  272. g_bEquip[ id ][ g_Item[ id ] ] = true;
  273. client_print_color( id, print_team_default, "^4%s^1 Equipaste la mascota:^4 %s", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ] );
  274. return PLUGIN_HANDLED;
  275. }
  276. else
  277. {
  278. if( g_iGemas[ id ] < g_szPets[ g_Item[ id ] ][ GEMAS ] )
  279. {
  280. view_pet( id );
  281. client_print_color( id, print_team_default, "^4%s^1 No tienes suficiente dinero para comprar esta mascota", g_Tag )
  282. return PLUGIN_HANDLED;
  283. }
  284.  
  285. g_iGemas[ id ] -= g_szPets[ g_Item[ id ] ][ GEMAS ];
  286. g_bPets[ id ][ g_Item[ id ] ] = true;
  287. view_pet( id );
  288. client_print_color( id, print_team_default, "^4%s^1 Compraste la mascota:^4 %s", g_Tag, g_szPets[ g_Item[ id ] ][ NAME ] )
  289. }
  290. }
  291. }
  292.  
  293. menu_destroy( menu );
  294. return PLUGIN_HANDLED;
  295. }
  296.  
  297. public preview_pet( id, Pet )
  298. {
  299. new motd[ 1536 ];
  300. 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 ] );
  301. new M[ 30 ];
  302. formatex( M, charsmax( M ), "Mascota: %s", g_szPets[ id ][ NAME ]);
  303. show_motd( id, motd, M );
  304. }
  305.  
  306. get_player_pets( id )
  307. {
  308. static Count = 0;
  309.  
  310. for( new i = 0; i <MAX_PETS; i++ )
  311. {
  312. if(!g_bPets[ id ][ i ])
  313. continue;
  314.  
  315. Count++;
  316. }
  317. return Count;
  318. }
  319.  
  320. public Guardar( id )
  321. {
  322. if( !is_user_connected( id ) )
  323. return;
  324.  
  325. adv_vault_set_start( g_vault )
  326.  
  327. for(new i = 0; i<MAX_PETS; i++)
  328. {
  329. adv_vault_set_field( g_vault, g_Campos[ 0 ][ i ], g_bPets[ id ][ i ] );
  330. adv_vault_set_field( g_vault, g_Campos[ 1 ][ i ], g_bEquip[ id ][ i ] );
  331. }
  332. adv_vault_set_field( g_vault, g_VaultGema, g_iGemas[ id ] );
  333. adv_vault_set_field( g_vault, g_SavePet, g_iPetSelected[ id ] );
  334.  
  335. adv_vault_set_end( g_vault, 0, g_playername[ id ] )
  336. }
  337.  
  338. public Cargar( id )
  339. {
  340. if( !adv_vault_get_prepare( g_vault, _, g_playername[ id ] ) )
  341. return;
  342.  
  343. for(new i = 0; i<MAX_PETS; i++)
  344. {
  345. g_bPets[ id ][ i ] = bool:adv_vault_get_field(g_vault, g_Campos[ 0 ][ i ]);
  346. g_bEquip[ id ][ i ] = bool:adv_vault_get_field(g_vault, g_Campos[ 1 ][ i ]);
  347. }
  348. g_iGemas[ id ] = adv_vault_get_field(g_vault, g_VaultGema );
  349. g_iPetSelected[ id ] = adv_vault_get_field(g_vault, g_SavePet );
  350. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement