[AMXX] Folosirea creditelor într-un meniu (SHOP)

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
Hades Ownage
Membru eXtream
Membru eXtream
Posts: 3182
Joined: 22 Oct 2008, 10:12
Detinator Steam: Da
Detinator server CS: jb.clutch.ro
SteamID: hades-source
Reputatie: Fost Super Moderator
Fost Scripter eXtreamCS
Nume anterior: hadesownage
Location: Iasi
Has thanked: 324 times
Been thanked: 406 times

21 Aug 2013, 17:00

Descriere: M-a rugat un user ( nu mai ştiu care, scuze :)) ) să-i arăt cum face un shop cu credite. Păi simplu, avem nevoie de 2 native ( cele din plugin-ul cu credite ) şi de un meniu.
Am să fac imediat un tutorial despre meniuri.

1. Bun, voi face un meniu ( shop ) cu două arme, deci vom avea nevoie de modulul fun şi cstrike:

Code: Select all

#include <  fun  >
#include <  cstrike  > 
Acum adăugăm nativele plugin-ului de credite:

Code: Select all

native get_user_credits ( id );
native set_user_credits ( id, credits ); 
2. În init ( plugin_init ) creeăm un clcmd:

Code: Select all

register_clcmd ( "say /shop", "ShowShopMenu" ); 
- /shop » comanda în chat
- ShowShopMenu » numele public-ului unde comanda va acţiona, în cazul nostru public-ul cu meniu.
3. Creeăm public-ul ShowShopMenu cu param-ul id iar în el vom adăuga următoarele:

Code: Select all

new menu = menu_create ( "Nume Meniu", "Menu_Giver" ); // nume meniu si numele public-ului care va actiona ( handler-ul )
    menu_additem ( menu, "AK47 - 2 credite", "1", 0 ); // slot 1
    menu_additem ( menu, "M4A1 - 3 credite", "2", 0 ); // slot
    
    menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL ); // butonul exit
    menu_display ( id, menu, 0 ); // afiseaza meniul
    
    return 1; 
4. Acum creeăm Menu_Giver, handler-ul, el va arăta aşa:

Code: Select all

public Menu_Giver ( id, menu, item ) { // param-urile
    
    if( item == MENU_EXIT ) // daca butonul apasat este cel EXIT, plugin-ul sa se opreasca
    {
        return 1;
    }
    
    new data [ 6 ], szName [ 64 ]; // variabile
    new access, callback; // variabile
    menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback ); // cautam detalii despre meniu
    new key = str_to_num ( data ); // butonul pe care apasa
    
    switch ( key ) // aici va veni pe CAZURI, cazul 1, cazul 2 ( pe ce buton apasa )
    {
        case 1:
        {
            new iCredits = get_user_credits ( id ) - 2; // cauta creditele jucatorului si scade 2
            
            if ( iCredits < 0 ) { // daca nu are destule credite ( 2 ) atunci ii va aparea un mesaj
                
                client_print ( id, print_chat, "Nu ai destule credite, necesare 2 !" ); // mesaj
                return 1; // plugin-ul se opreste
                
            }
            
            else {
                give_item ( id, "weapon_ak47" ); // ii dam arma ( ak47 )
                cs_set_user_bpammo ( id, CSW_AK47, 90 ); // ii setam gloantele ( 90 )
                
                set_user_credits ( id, iCredits ); // ii setam noile credite ( -2 )
                return 1; // plugin-ul se opreste
            }
        }
        
        case 2:
        {
            new iCredits = get_user_credits ( id ) - 3; // cauta creditele jucatorului si scade 3
            
            if ( iCredits < 0 ) { // daca nu are destule credite ( 3 ) atunci ii va aparea un mesaj
                
                client_print ( id, print_chat, "Nu ai destule credite, necesare 3 !" ); // mesaj
                return 1; // plugin-ul se opreste
                
            }
            
            else {
                give_item ( id, "weapon_m4a1" ); // ii dam arma ( m4a1 )
                cs_set_user_bpammo ( id, CSW_M4A1, 90 ); // ii setam gloantele ( 90 )
                
                set_user_credits ( id, iCredits ); // ii setam noile credite ( -3 )
                return 1; // plugin-ul se opreste
            }
        }
        
    }
    
    menu_destroy ( menu ); // distruge meniul
    return 1; // plugin-ul se opreste
    
} 
Explicaţiile le găsiţi în cod.
Plugin-ul dvs. trebuie să arate aşa:

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <  amxmodx  >
#include <  fun  >
#include <  cstrike  >

#define PLUGIN "Plug-in Nou"
#define VERSION "0.1"
#define AUTHOR "hadesownage"

native get_user_credits ( id );
native set_user_credits ( id, credits );

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd ( "say /shop", "ShowShopMenu" );
}

public ShowShopMenu ( id ) {
    
    new menu = menu_create ( "Nume Meniu", "Menu_Giver" ); // nume meniu si numele public-ului care va actiona ( handler-ul )
    menu_additem ( menu, "AK47 - 2 credite", "1", 0 ); // slot 1
    menu_additem ( menu, "M4A1 - 3 credite", "2", 0 ); // slot
    
    menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL ); // butonul exit
    menu_display ( id, menu, 0 ); // afiseaza meniul
    
    return 1;
}

public Menu_Giver ( id, menu, item ) { // param-urile
    
    if( item == MENU_EXIT ) // daca butonul apasat este cel EXIT, plugin-ul sa se opreasca
    {
        return 1;
    }
    
    new data [ 6 ], szName [ 64 ]; // variabile
    new access, callback; // variabile
    menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback ); // cautam detalii despre meniu
    new key = str_to_num ( data ); // butonul pe care apasa
    
    switch ( key ) // aici va veni pe CAZURI, cazul 1, cazul 2 ( pe ce buton apasa )
    {
        case 1:
        {
            new iCredits = get_user_credits ( id ) - 2; // cauta creditele jucatorului si scade 2
            
            if ( iCredits < 0 ) { // daca nu are destule credite ( 2 ) atunci ii va aparea un mesaj
                
                client_print ( id, print_chat, "Nu ai destule credite, necesare 2 !" ); // mesaj
                return 1; // plugin-ul se opreste
                
            }
            
            else {
                give_item ( id, "weapon_ak47" ); // ii dam arma ( ak47 )
                cs_set_user_bpammo ( id, CSW_AK47, 90 ); // ii setam gloantele ( 90 )
                
                set_user_credits ( id, iCredits ); // ii setam noile credite ( -2 )
                return 1; // plugin-ul se opreste
            }
        }
        
        case 2:
        {
            new iCredits = get_user_credits ( id ) - 3; // cauta creditele jucatorului si scade 3
            
            if ( iCredits < 0 ) { // daca nu are destule credite ( 3 ) atunci ii va aparea un mesaj
                
                client_print ( id, print_chat, "Nu ai destule credite, necesare 3 !" ); // mesaj
                return 1; // plugin-ul se opreste
                
            }
            
            else {
                give_item ( id, "weapon_m4a1" ); // ii dam arma ( m4a1 )
                cs_set_user_bpammo ( id, CSW_M4A1, 90 ); // ii setam gloantele ( 90 )
                
                set_user_credits ( id, iCredits ); // ii setam noile credite ( -3 )
                return 1; // plugin-ul se opreste
            }
        }
        
    }
    
    menu_destroy ( menu ); // distruge meniul
    return 1; // plugin-ul se opreste
    
} 
Dacă întâlniti probleme puteţi să lăsaţi reply în topic şi o să vă răspund cât pot de repede.
Exprimăţi recunoştinţa dacă ţi-a fost de folos acest tutorial !
RoyalServer 2
M3taph0riK
Membru eXtream
Membru eXtream
Posts: 2127
Joined: 16 Jan 2013, 12:55
Detinator Steam: Da
CS Status: Utilizator Serios
SteamID: Utilizator Serios
Reputatie: Restrictie moderator
Nume anterior: RzV24
Utilizator neserios (tepar)
Has thanked: 60 times
Been thanked: 250 times

21 Aug 2013, 17:29

Vad ca tot mai multa lume isi da interesul in a crea tutoriale scripting in romana + explicatii si acest lucru aduce doar beneficii. Ar trebui facuta o sectiune unde sa adunam toate aceste tutoriale.
Cosmin
Fost moderator
Fost moderator
Posts: 9362
Joined: 06 Jul 2013, 22:08
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn
Has thanked: 492 times
Been thanked: 547 times

22 Aug 2013, 15:42

Multumim pentru tot ce faci,explici incat sa intelegem cu totii.
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

25 Aug 2013, 17:17

Mutat in Prima pagină » eXtream - Counter-Strike 1.6 » Programarea CS-ului » Scripting
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
PoSSede
Membru, skill 0
Membru, skill 0
Posts: 13
Joined: 11 Jun 2013, 15:22
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Has thanked: 7 times
Contact:

06 Jun 2014, 08:28

as dori sal fac in bani normal si sa adaug niste bani ma puteti ajuta ?
www.***Reclama*** - promovare online gratuita.
User avatar
evanescencedany
Membru, skill 0
Membru, skill 0
Posts: 78
Joined: 24 Dec 2014, 10:58
Detinator Steam: Nu
Detinator server CS: FURYEN.CS1.RO
Fond eXtream: 0
Location: Iasi

22 Mar 2015, 17:43

Eu nu inteleg un singur lucru.
Ce este acela handler ?
Contact YIM [email protected]
Nu fiti copiatori, fit originali. Doar asa veti capata respect si onoare.
User avatar
Nubo
Fost moderator
Fost moderator
Posts: 2734
Joined: 11 Jul 2012, 18:45
Detinator Steam: Da
CS Status: [əˈnɒn.ɪ.məs]
Reputatie: Fost scripter eXtreamCS
Fost eXtream Mod
Has thanked: 8 times
Been thanked: 27 times

22 Mar 2015, 19:48

evanescencedany wrote:Eu nu inteleg un singur lucru.
Ce este acela handler ?
Numele functiei care prelucreaza butonul ales. (mai simplu: publicul in care se ofera iteme/bani/beneficii/etc. incluse in meniu)
Cand nu merge acest forum sunt online aici:
  • * Skype: nubo_cs
    * Y!M ID: nubo_cs
User avatar
LOLpgl
Membru, skill +3
Membru, skill +3
Posts: 1127
Joined: 16 Dec 2013, 21:01
Detinator Steam: Da
SteamID: ionutcruso
Location: Rm.Valcea
Has thanked: 19 times
Been thanked: 15 times

22 Mar 2015, 20:46

Frumos,elegant cat de cat :troll
User avatar
FloPPy_
Membru, skill 0
Membru, skill 0
Posts: 5
Joined: 11 Sep 2014, 12:06
Detinator Steam: Nu
CS Status: I'm well ...
Detinator server CS: Da.
Fond eXtream: 0
Location: Brasov
Contact:

22 Mar 2015, 20:53

Explici foarte bne si iti meriti gradul de Scripter pentru activitate. GJ !
Image
Contact:
- Messenger: [email protected]
- Skype: FloPPy_3
Image

Image
User avatar
Dragos. #
Membru, skill 0
Membru, skill 0
Posts: 92
Joined: 10 Mar 2015, 21:08
Detinator Steam: Nu
Fond eXtream: 0

27 Mar 2015, 22:33

Mi-a fost de folos !!!
ReaD1nG
Membru, skill +1
Membru, skill +1
Posts: 237
Joined: 26 Jul 2013, 17:48
Detinator Steam: Da
Has thanked: 65 times
Been thanked: 13 times

05 Aug 2015, 05:22

Mi-a fost de folos și mie.
Image
dannyd08
Membru, skill 0
Membru, skill 0
Posts: 77
Joined: 01 Nov 2015, 00:22
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: Da
Fond eXtream: 0
Contact:

26 Nov 2015, 16:09

foarte bun gj dar ar fi bine sa se faca o sectiune despre tutoriale de scripting pentru ca aceste ajuta mai mult decat atunci cand ii dai pluginul facut..asa il face cum doreste fiecare cu ajutorul acestor tutoriale.Eu apreciaz pe cei care fac tutoriale incercand sa ajute
| Afiseaza codul
Connect 89.33.242.182:27015
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 15 guests