Forum Counter-Strike

Wróć   Forum Counter-Strike > Strefa techniczna > AMX Mod X > Code Snippets/Tutorials




Code Snippets/Tutorials - [Poradnik] Naliczanie XP
Bez zbędnych słów wstępu. Jeśli tworzysz Mod XP musisz zawrzeć najważniejsze moduły. Kod php: #include <amxmodx> ...

Odpowiedz
 
Narzędzia wątku Wygląd
  (#1) stare
Weteran
 
Młody~'s Avatar
 
Grupa: Administrator
Postów: 8,047
Zarejestrowany: Mar 2008
Wiek: 21
Karma: Exclusive

Status: Pracuje
[Poradnik] Naliczanie XP - 10-11-08, 23:37

Bez zbędnych słów wstępu.

Jeśli tworzysz Mod XP musisz zawrzeć najważniejsze moduły.

Kod php:
#include <amxmodx>
#include <amxmisc>
#include <nvault> 
Następnie definujesz klasy.
Tutaj podałem 5, ale możesz np obrobić więcej i bez problemu zwiększyć tą liczbę.
Kod php:
#define MAXCLASSES 5 
Teraz tworzymy zmienna odpowiedzialną za zapisanie i podtrzymanie twojej klasy i LVL

Kod php:
new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
 
//to ejst dla specjalnych zabić (uzyskiwanie XP za zabicie) 
new XP_Kill,XP_Knife,XP_Hs,SaveXP
 
//To odpowiada za zapisywanie XP
 
new g_vault 
Teraz tworzymy zmienną która będzie odpowiadać za nazwy klas.

Kod php:
new const CLASSES[MAXCLASSES][] = {
    
"None",
    
"Dog",
    
"Cat",
    
"Horse",
    
"Cow"

Kolejna zmienna mówi nam ile XP potrzebujemy żeby wbić na kolejny lxl.

Kod php:
new const LEVELS[7] = {
0,
100,//this means you need 100 xp
200,//this means you need 200 xp
400,//this means you need 400 xp
800,//so on
1600,//so on
3200 //so on

Teraz tworzymy plugin_init()

Kod php:
public plugin_init()
{
    
register_plugin("XpMod""1.0""Fxfighter")
 
    
//Potrzebujemy tego żeby sprawdzało twój lvl po zabiciu kogoś
    
register_event("DeathMsg""eDeath""a")
    
//Cavar- Czy XP ma się zapisywać
    
SaveXP register_cvar("SaveXP","1")
    
//Cavar- Ile XP otrzymasz za zabicie?
    
XP_Kill=register_cvar("XP_per_kill""20")
    
//Cavar- Jesli trafisz HS bedzie bonusowe XP
    
XP_Hs=register_cvar("XP_hs_bonus","20")
    
//Cavar- EJsli zabijesz z noza bedzie bonusowe XP
    
XP_Knife=register_cvar("XP_knife_bonus","20")
    
//Otwieramy nowe połączenie dla modułu Nvalut 
    // Powiedzmy ze nazwiemy je animod
    
g_vault nvault_open("animod")
    
// Komenda do zmiany klasy
    
register_clcmd("say /class""ChangeClass")
    
register_clcmd("say_team /class""ChangeClass")
    
//Pokazanie ile XP posiadasz
    
register_clcmd("say /xp""ShowHud")
    
register_clcmd("say_team /xp""ShowHud")

Teraz tworzymy funkcje opowiadająca za dawanie XP

Kod php:
public eDeath( ) //function name 

    
// Jesli gracz nie wybiera zadnej klasy nic sie nie ebdzie dzialo
    
if(PlayerClass[attacker] == 0)
         return 
PLUGIN_CONTINUE
 
    
// Tworzymy zmienna "victim wiec bedzie ona sprawdzac
    // kiedy gracz zabija
    
new iVictim read_data)
    
// Jesli gracz zabije przez HS bedzie odpalany Cavar Xp_Hs
    
new headshot read_data)
 
    
//Ktora bron byla uzyta
    
new clipammoweapon get_user_weapon(id,clip,ammo);
    
PlayerXP[attacker] += get_pcvar_num(XP_Kill
    
//uzyteczne dla xp_hs cvar 
    // sprawdza czy zabojstwo bylo dokonane headshot 
    
if(headshot
    
// Daje jemu/jej bonus xp 
    
PlayerXP[attacker] += get_pcvar_num(XP_Hs
    
// sprawdza czy ofiara nie zostala zabita z noza
    
if(weapon == CSW_KNIFE
        
//Daje jej/jemu Xp baonus 
    
PlayerXP[attacker] += get_pcvar_num(XP_Knife
    
// Ta funkcja sprawdza czy gracz ma wystarczajaco XP zeby wbic na wiekszy LVL
 
     
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) 
    { 
// Odpowiada za stworzenie wiadomosci gratulacyjnej. 
        
client_print(attackerprint_chat"[Animal Mod] Congratulations! You are a level %i %s!"PlayerLevel[attacker],CLASSES[PlayerClass[attacker]]) 
        
// Add his/her level 
        
PlayerLevel[attacker] += 
    

    
// pokazuje graczowi jego lvl 
    
ShowHud(attacker)
 

A tutaj mamy krótką funkcjie pokazującą graczowi jego klasse i xP

Kod php:
public ShowHud(id

    
set_hudmessage(255000.750.0106.015.0
    
show_hudmessage(id"Level: %i^nXP: %i^nClass: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]]) 

Notka ^n oznacza nowa linie

Tutaj tworzymy Menu wyboru. Dokłądniej opsiał to młody http://www.cscenter.pl/scripting/523..._np_sklep.html

Kod php:
public ChangeClass(id
{
    new 
menu menu_create("Class Menu" "Class_Handle");
    
menu_additem(menu ,"Dog""1" 0); 
    
menu_additem(menu ,"Cat""2" 0); 
    
menu_additem(menu ,"Horse""3" 0); 
    
menu_additem(menu ,"Cow""4" 0);
    
menu_setprop(menu MPROP_EXIT MEXIT_ALL);
    
menu_display(id menu 0); 
    return 
PLUGIN_CONTINUE

 
public 
Class_Handle(id menu item

    if(
item == MENU_EXIT
    { 
        
menu_destroy(menu); 
    } 
    new 
szCommand[6] , szName[64]; new access callback
    
menu_item_getinfo(menu item access szCommand szName 63 callback); 
    new 
str_to_num(szCommand
    if(
PlayerClass[id] != i
    { 
        
PlayerClass[id] = i client_print(id,print_chat,"You are now a %s",CLASSES[i]) 
    }
    else 
    { 
        
client_print(id,print_chat,"You are alredy a %s",CLASSES[i]) 
    } 
    
menu_destroy(menu); 
    return 
PLUGIN_CONTINUE 

Teraz funkcjie które działają kiedy gracz łaczy się z serwerem

Kod php:
public client_connect(id
{
    
// Tylko wtedy kiedy Xp jest zapisywane 
    
if(get_pcvar_num(SaveXP) == 1
    { 
        
// Ładuje Xp i klase 
        
LoadData(id
    } 

No i funkcja kiedy gracz rozłancza się z serwera

Kod php:
public client_disconnect(id

// Only does it if xp saving is on 
     
if(get_pcvar_num(SaveXP) == 1
     { 
          
// lets save the data 
          
SaveData(id
     } 

Teraz tworzymy fukcjie do wczytywanie XP

Kod php:
public SaveData(id

    
// Pobiega Steam ID gracza. Potrzbene poniewaz zapis jest na steam ID 
    
new AuthID[35get_user_authid(id,AuthID,34
    new 
vaultkey[64],vaultdata[256
    
// format wat is going to be in the animal mod vault file 
    
format(vaultkey,63,"%s-Mod",AuthID
    
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]) 
    
// save the data 
    
nvault_set(g_vault,vaultkey,vaultdata
    return 
PLUGIN_CONTINUE 

No i fukcja wczytywanie XP

Kod php:
public LoadData(id

    new 
AuthID[35get_user_authid(id,AuthID,34
    new 
vaultkey[64],vaultdata[256
    
// Szukanie
    
format(vaultkey,63,"%s-Mod",AuthID
    
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]) 
    
// Ładowanie
    
nvault_get(g_vault,vaultkey,vaultdata,255
    
replace_all(vaultdata255"#"" "
    new 
playerxp[32], playerlevel[32
    
parse(vaultdataplayerxp31playerlevel31
    
PlayerXP[id] = str_to_num(playerxp
    
PlayerLevel[id] = str_to_num(playerlevel
    return 
PLUGIN_CONTINUE 

No i na końcu cały kod razem.


Kod php:
#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define MAXCLASSES 5

new const CLASSES[MAXCLASSES][] = {
    
"None",
    
"Dog",
    
"Cat",
    
"Horse",
    
"Cow"
}

new const 
LEVELS[6] = {
    
100
    
200
    
400
    
800,
    
1600,
    
3200
}

new 
PlayerXP[33],PlayerLevel[33],PlayerClass[33]
new 
XP_Kill,XP_Knife,XP_Hs,SaveXP,g_vault

public plugin_init()
{
    
register_plugin("XpMod""1.0""Fxfighter")
 
    
register_event("DeathMsg""eDeath""a"
 
    
SaveXP register_cvar("SaveXP","1")
    
XP_Kill=register_cvar("XP_per_kill""20")
    
XP_Hs=register_cvar("XP_hs_bonus","20")
    
XP_Knife=register_cvar("XP_knife_bonus","20")
    
g_vault nvault_open("animod")
 
    
register_clcmd("say /class""ChangeClass")
    
register_clcmd("say_team /class""ChangeClass")
    
register_clcmd("say /xp""ShowHud")
    
register_clcmd("say_team /xp""ShowHud")
}

public 
eDeath(  ) 
{
    new 
iVictim read_data)
    new 
headshot read_data)
    new 
clipammoweapon get_user_weapon(id,clip,ammo);
 
    
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
 
    if(
headshot)
    
PlayerXP[attacker] += get_pcvar_num(XP_Hs)
 
    if(
weapon == CSW_KNIFE)
    
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
 
 
    while(
PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
    {
      
client_print(attackerprint_chat"[Animal Mod] Congratulations! You are a level %i %s!",
      
PlayerLevel[attacker] += 1
    
}
    
ShowHud(attacker)
    
SaveData(attacker)
}

public 
ShowHud(id)
{
    
set_hudmessage(255000.750.0106.015.0)
    
show_hudmessage(id"Level: %i^nXP: %i^nClass: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]])
}

public 
ChangeClass(id)
{
    new 
menu menu_create("Class Menu" "Class_Handle");
    
menu_additem(menu ,"Dog""1" 0);
    
menu_additem(menu ,"Cat""2" 0);
    
menu_additem(menu ,"Horse""3" 0);
    
menu_additem(menu ,"Cow""4" 0);
 
    
menu_setprop(menu MPROP_EXIT MEXIT_ALL);
 
    
menu_display(id menu 0);
 
    return 
PLUGIN_CONTINUE;
}

public 
Class_Handle(id menu item
{
    if(
item == MENU_EXIT
    {
        
menu_destroy(menu);
    }
 
    new 
szCommand[6] , szName[64];
    new 
access callback;
 
    
menu_item_getinfo(menu item access szCommand szName 63 callback);
 
    new 
str_to_num(szCommand)
    if(
PlayerClass[id] != i)
    {
        
PlayerClass[id] = i
        client_print
(id,print_chat,"You are now a %s",CLASSES[i])
    }
    else
    {
        
client_print(id,print_chat,"You are alredy a %s",CLASSES[i])
    }
 
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE
}

public 
client_connect(id)
{
    if(
get_pcvar_num(SaveXP) == 1)
    {
        
LoadData(id)
    }
}
public 
client_disconnect(id)
{
    if(
get_pcvar_num(SaveXP) == 1)
    {
        
SaveData(id)
    }
    
PlayerXP[id] = 0
    PlayerLevel
[id] = 0
    PlayerClass
[id] = 0
}

public 
SaveData(id)
{
    new 
AuthID[35]
    
get_user_authid(id,AuthID,34)
 
    new 
vaultkey[64],vaultdata[256]
    
format(vaultkey,63,"%s-Mod",AuthID)
    
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
    
nvault_set(g_vault,vaultkey,vaultdata)
    return 
PLUGIN_CONTINUE
}

public 
LoadData(id)
{
    new 
AuthID[35]
    
get_user_authid(id,AuthID,34)
 
    new 
vaultkey[64],vaultdata[256]
    
format(vaultkey,63,"%s-Mod",AuthID)
    
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
    
nvault_get(g_vault,vaultkey,vaultdata,255)
 
    
replace_all(vaultdata255"#"" ")
 
    new 
playerxp[32], playerlevel[32]
 
    
parse(vaultdataplayerxp31playerlevel31)
 
    
PlayerXP[id] = str_to_num(playerxp)
    
PlayerLevel[id] = str_to_num(playerlevel)
 
    return 
PLUGIN_CONTINUE


Ostatnio edytowane przez ^^KaMaZZ~.^ : 11-04-09 - 00:23
Offline Młody~ jest nieaktywny
Odpowiedź z cytatem
Linki sponsorowane
  (#2) stare
Guru
 
! saDam's Avatar
 
Grupa: Użytkownik
Postów: 441
Zarejestrowany: Jul 2008
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 11-11-08, 09:59

Młody, a jak wezmę ten cały plugin i dam go na serwer to co będzie? ;> Za zabicie będę dostawał XP a jak zbiorę dużo XP to lvl? I co się stanie jak będę miał np 10 lvl? I czy jak mnie zabiją to stracę XP (ze 3 razy mniej)? ;>
Offline ! saDam jest nieaktywny
Odpowiedź z cytatem
  (#3) stare
Weteran
 
Młody~'s Avatar
 
Grupa: Administrator
Postów: 8,047
Zarejestrowany: Mar 2008
Wiek: 21
Karma: Exclusive

Status: Pracuje
Odp: [Poradnik] Naliczanie XP - 11-11-08, 10:34

Clasy i lvl.
Offline Młody~ jest nieaktywny
Odpowiedź z cytatem
  (#4) stare
Guru
 
bialy60's Avatar
 
Grupa: Użytkownik
Postów: 869
Zarejestrowany: Apr 2008
Skąd: Jamaica
Karma: Średnia

Status: Zagram
Odp: [Poradnik] Naliczanie XP - 11-11-08, 10:50

a jak zrobić żeby dana klasa miała coś innego ? np 1 klasa 150 hp. co level 10 hp wiecej. itp. 2 klasa nie slychac jak chodzi jak toz ro bić ?
ps. Nie moge to skopilować jak i na dysku jak i na amxmodx.org

Ostatnio edytowane przez bialy60 : 11-11-08 - 11:03
Offline bialy60 jest nieaktywny
Odpowiedź z cytatem
  (#5) stare
Stały bywalec
 
Grupa: Użytkownik
Postów: 313
Zarejestrowany: Aug 2008
Skąd: okolice Łodzi
Wiek: 27
Karma: Neutralna

Status: Zly
Odp: [Poradnik] Naliczanie XP - 11-11-08, 13:24

To jest nauka kodu a nie gotowy plugin... !
Offline mayerboss jest nieaktywny
Odpowiedź z cytatem
  (#6) stare
Guru
 
! saDam's Avatar
 
Grupa: Użytkownik
Postów: 441
Zarejestrowany: Jul 2008
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 11-11-08, 20:29

Biały chcesz plugin pisz tu:
Poszukiwane pluginy AMXX
Offline ! saDam jest nieaktywny
Odpowiedź z cytatem
  (#7) stare
Bot
 
Grupa: Użytkownik
Postów: 20
Zarejestrowany: Apr 2009
Wiek: 17
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 10-04-09, 22:52

Odświeżę temat bo plugin bardzo się mi przyda
zastanawia mnie czemu nie mogę skompilować (wywala dużo błędów)



Edit:

sam znalazłem chyba rozwiązanie ale niech ktoś potwierdzi :

Kod:
#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define MAXCLASSES 5

new attacker

new const CLASSES[MAXCLASSES][] = {
    "None",
    "Dog",
    "Cat",
    "Horse",
    "Cow"
}

new const LEVELS[6] = {
    100, 
    200, 
    400, 
    800,
    1600,
    3200
}

new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
new XP_Kill,XP_Knife,XP_Hs,SaveXP,g_vault

public plugin_init()
{
    register_plugin("XpMod", "1.0", "Fxfighter")
 
    register_event("DeathMsg", "eDeath", "a") 
 
    SaveXP = register_cvar("SaveXP","1")
    XP_Kill=register_cvar("XP_per_kill", "20")
    XP_Hs=register_cvar("XP_hs_bonus","20")
    XP_Knife=register_cvar("XP_knife_bonus","20")
    g_vault = nvault_open("animod")
 
    register_clcmd("say /class", "ChangeClass")
    register_clcmd("say_team /class", "ChangeClass")
    register_clcmd("say /xp", "ShowHud")
    register_clcmd("say_team /xp", "ShowHud")
}

public eDeath(  ) 
{
    new iVictim = read_data( 2 )
    new headshot = read_data( 3 )
    new clip, ammo, weapon = get_user_weapon(clip,ammo);
 
    PlayerXP[attacker] += get_pcvar_num(XP_Kill)
 
    if(headshot)
    PlayerXP[attacker] += get_pcvar_num(XP_Hs)
 
    if(weapon == CSW_KNIFE)
    PlayerXP[attacker] += get_pcvar_num(XP_Knife)
 
 
    while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
    {
      client_print(attacker, print_chat , "[Animal Mod] Congratulations! You are a level %i %s!"),
      PlayerLevel[attacker] += 1
    }
    ShowHud(attacker)
    SaveData(attacker)
}

public ShowHud(id)
{
    set_hudmessage(255, 0, 0, 0.75, 0.01, 0, 6.0, 15.0)
    show_hudmessage(id, "Level: %i^nXP: %i^nClass: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]])
}

public ChangeClass(id)
{
    new menu = menu_create("Class Menu" , "Class_Handle");
    menu_additem(menu ,"Dog", "1" , 0);
    menu_additem(menu ,"Cat", "2" , 0);
    menu_additem(menu ,"Horse", "3" , 0);
    menu_additem(menu ,"Cow", "4" , 0);
 
    menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
 
    menu_display(id , menu , 0);
 
    return PLUGIN_CONTINUE;
}

public Class_Handle(id , menu , item) 
{
    if(item == MENU_EXIT) 
    {
        menu_destroy(menu);
    }
 
    new szCommand[6] , szName[64];
    new access , callback;
 
    menu_item_getinfo(menu , item , access , szCommand , 5 , szName , 63 , callback);
 
    new i = str_to_num(szCommand)
    if(PlayerClass[id] != i)
    {
        PlayerClass[id] = i
        client_print(id,print_chat,"You are now a %s",CLASSES[i])
    }
    else
    {
        client_print(id,print_chat,"You are alredy a %s",CLASSES[i])
    }
 
    menu_destroy(menu);
    return PLUGIN_CONTINUE
}

public client_connect(id)
{
    if(get_pcvar_num(SaveXP) == 1)
    {
        LoadData(id)
    }
}
public client_disconnect(id)
{
    if(get_pcvar_num(SaveXP) == 1)
    {
        SaveData(id)
    }
    PlayerXP[id] = 0
    PlayerLevel[id] = 0
    PlayerClass[id] = 0
}

public SaveData(id)
{
    new AuthID[35]
    get_user_authid(id,AuthID,34)
 
    new vaultkey[64],vaultdata[256]
    format(vaultkey,63,"%s-Mod",AuthID)
    format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
    nvault_set(g_vault,vaultkey,vaultdata)
    return PLUGIN_CONTINUE
}

public LoadData(id)
{
    new AuthID[35]
    get_user_authid(id,AuthID,34)
 
    new vaultkey[64],vaultdata[256]
    format(vaultkey,63,"%s-Mod",AuthID)
    format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
    nvault_get(g_vault,vaultkey,vaultdata,255)
 
    replace_all(vaultdata, 255, "#", " ")
 
    new playerxp[32], playerlevel[32]
 
    parse(vaultdata, playerxp, 31, playerlevel, 31)
 
    PlayerXP[id] = str_to_num(playerxp)
    PlayerLevel[id] = str_to_num(playerlevel)
 
    return PLUGIN_CONTINUE
}

Ostatnio edytowane przez patryk006 : 11-04-09 - 16:24
Offline patryk006 jest nieaktywny
Odpowiedź z cytatem
  (#8) stare
Forumowy ekspert
 
sebi1717's Avatar
 
Grupa: Użytkownik
Postów: 1,617
Zarejestrowany: Sep 2008
Skąd: Szczecin
Wiek: 15
Karma: B.Dobra

Status: Zagram
Wyślij wiadomość przez Gadu Gadu do użytkownika sebi1717
Odp: [Poradnik] Naliczanie XP - 11-04-09, 14:49

podaj kod


Zapraszam na serwa!



Wbijać! ;))
Offline sebi1717 jest nieaktywny
Odpowiedź z cytatem
  (#9) stare
Bot
 
Grupa: Użytkownik
Postów: 20
Zarejestrowany: Apr 2009
Wiek: 17
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 11-04-09, 16:28

nie mogłem nawet skompilować tego co tutaj jest ale czytając błędy doszedłem chyba co było nie tak (wyżej kod ale potwierdź) jeśli dobrze poprawiłem to zabieram się za "poważną" edycję tego
Offline patryk006 jest nieaktywny
Odpowiedź z cytatem
  (#10) stare
Forumowy ekspert
 
sebi1717's Avatar
 
Grupa: Użytkownik
Postów: 1,617
Zarejestrowany: Sep 2008
Skąd: Szczecin
Wiek: 15
Karma: B.Dobra

Status: Zagram
Wyślij wiadomość przez Gadu Gadu do użytkownika sebi1717
Odp: [Poradnik] Naliczanie XP - 13-04-09, 15:02

daj kod -.-


Zapraszam na serwa!



Wbijać! ;))
Offline sebi1717 jest nieaktywny
Odpowiedź z cytatem
  (#11) stare
Bot
 
Grupa: Użytkownik
Postów: 20
Zarejestrowany: Apr 2009
Wiek: 17
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 13-04-09, 18:13

przecież pisze ze kod wyżej
Kod:
#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define MAXCLASSES 5

new attacker

new const CLASSES[MAXCLASSES][] = {
    "None",
    "Dog",
    "Cat",
    "Horse",
    "Cow"
}

new const LEVELS[6] = {
    100, 
    200, 
    400, 
    800,
    1600,
    3200
}

new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
new XP_Kill,XP_Knife,XP_Hs,SaveXP,g_vault

public plugin_init()
{
    register_plugin("XpMod", "1.0", "Fxfighter")
 
    register_event("DeathMsg", "eDeath", "a") 
 
    SaveXP = register_cvar("SaveXP","1")
    XP_Kill=register_cvar("XP_per_kill", "20")
    XP_Hs=register_cvar("XP_hs_bonus","20")
    XP_Knife=register_cvar("XP_knife_bonus","20")
    g_vault = nvault_open("animod")
 
    register_clcmd("say /class", "ChangeClass")
    register_clcmd("say_team /class", "ChangeClass")
    register_clcmd("say /xp", "ShowHud")
    register_clcmd("say_team /xp", "ShowHud")
}

public eDeath(  ) 
{
    new iVictim = read_data( 2 )
    new headshot = read_data( 3 )
    new clip, ammo, weapon = get_user_weapon(clip,ammo);
 
    PlayerXP[attacker] += get_pcvar_num(XP_Kill)
 
    if(headshot)
    PlayerXP[attacker] += get_pcvar_num(XP_Hs)
 
    if(weapon == CSW_KNIFE)
    PlayerXP[attacker] += get_pcvar_num(XP_Knife)
 
 
    while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
    {
      client_print(attacker, print_chat , "[Animal Mod] Congratulations! You are a level %i %s!"),
      PlayerLevel[attacker] += 1
    }
    ShowHud(attacker)
    SaveData(attacker)
}

public ShowHud(id)
{
    set_hudmessage(255, 0, 0, 0.75, 0.01, 0, 6.0, 15.0)
    show_hudmessage(id, "Level: %i^nXP: %i^nClass: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]])
}

public ChangeClass(id)
{
    new menu = menu_create("Class Menu" , "Class_Handle");
    menu_additem(menu ,"Dog", "1" , 0);
    menu_additem(menu ,"Cat", "2" , 0);
    menu_additem(menu ,"Horse", "3" , 0);
    menu_additem(menu ,"Cow", "4" , 0);
 
    menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
 
    menu_display(id , menu , 0);
 
    return PLUGIN_CONTINUE;
}

public Class_Handle(id , menu , item) 
{
    if(item == MENU_EXIT) 
    {
        menu_destroy(menu);
    }
 
    new szCommand[6] , szName[64];
    new access , callback;
 
    menu_item_getinfo(menu , item , access , szCommand , 5 , szName , 63 , callback);
 
    new i = str_to_num(szCommand)
    if(PlayerClass[id] != i)
    {
        PlayerClass[id] = i
        client_print(id,print_chat,"You are now a %s",CLASSES[i])
    }
    else
    {
        client_print(id,print_chat,"You are alredy a %s",CLASSES[i])
    }
 
    menu_destroy(menu);
    return PLUGIN_CONTINUE
}

public client_connect(id)
{
    if(get_pcvar_num(SaveXP) == 1)
    {
        LoadData(id)
    }
}
public client_disconnect(id)
{
    if(get_pcvar_num(SaveXP) == 1)
    {
        SaveData(id)
    }
    PlayerXP[id] = 0
    PlayerLevel[id] = 0
    PlayerClass[id] = 0
}

public SaveData(id)
{
    new AuthID[35]
    get_user_authid(id,AuthID,34)
 
    new vaultkey[64],vaultdata[256]
    format(vaultkey,63,"%s-Mod",AuthID)
    format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
    nvault_set(g_vault,vaultkey,vaultdata)
    return PLUGIN_CONTINUE
}

public LoadData(id)
{
    new AuthID[35]
    get_user_authid(id,AuthID,34)
 
    new vaultkey[64],vaultdata[256]
    format(vaultkey,63,"%s-Mod",AuthID)
    format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
    nvault_get(g_vault,vaultkey,vaultdata,255)
 
    replace_all(vaultdata, 255, "#", " ")
 
    new playerxp[32], playerlevel[32]
 
    parse(vaultdata, playerxp, 31, playerlevel, 31)
 
    PlayerXP[id] = str_to_num(playerxp)
    PlayerLevel[id] = str_to_num(playerlevel)
 
    return PLUGIN_CONTINUE
}
Offline patryk006 jest nieaktywny
Odpowiedź z cytatem
  (#12) stare
Szatan
 
Grupa: Użytkownik
Postów: 686
Zarejestrowany: Oct 2009
Skąd: masz te trzewiki?
Karma: Niezła

Odp: [Poradnik] Naliczanie XP - 10-11-09, 17:20

Kod php:
#include <amxmodx> 
#include <amxmisc>  
#include <cstrike>
#include <fun>
#include <nvault> 
#define MAXCLASSES 5 

#define PLUGIN "Sredniowiecze MOD" 
#define VERSION "1.0" 
#define AUTHOR "Nuz"

new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
new 
XP_Kill,XP_Knife,XP_Hs,SaveXP
new g_vault 

new const CLASSES[MAXCLASSES][] = {
    
"Brak",
    
"Asasyn",
    
"Rycerz",
    
"Mag",
    
"Druid"


new const 
LEVELS[14] = {
    
0,
    
100,//1
    
200,//2
    
400,//3
    
800,//4
    
1600,//5
    
3200,//6
    
4200//7
    
6800//8
    
9700//9
    
12700//9
    
19200//10
    
29280//11
    
37450 //12


new 
bool:kupil[33]
new 
bool:uzyl[33]
new 
cvaron

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("say /buyhp""buyhp")
    
register_clcmd("say /usehp""usehp")
    
register_clcmd("say /usebuyhp""usebuyhp")
    
register_event("HLTV""NewRound""a""1=0""2=0"
    
register_clcmd("say /onsr""wol")
    
cvaron register_cvar("amx_sredniowiecze","1")
    
register_event("DeathMsg""eDeath""a")
    
SaveXP register_cvar("SaveXP","1")
    
XP_Kill=register_cvar("XP_per_kill""30")
    
XP_Hs=register_cvar("XP_hs_bonus","10")
    
XP_Knife=register_cvar("XP_knife_bonus","10")
    
g_vault nvault_open("sredniomod")
    
register_clcmd("say /class""ChangeClass")
    
register_clcmd("say_team /class""ChangeClass")
    
register_clcmd("say /xp""ShowXP")
    
register_clcmd("say_team /xp""ShowXP")
    
register_clcmd("say_team /info""infokom")
    
register_clcmd("say /info""infokom")
    
register_clcmd("say /adminfo""infokomadm")
    
register_clcmd("say_team /adminfo""infokomadm")
}
public 
client_connect(id)  
{  
    
kupil[id] = true
    uzyl
[id] = false
    
if(get_pcvar_num(SaveXP) == 1
    { 
        
LoadData(id
    } 
}
public 
eDeath( ) 

    new 
attacker read_data(1)
    if(
PlayerClass[attacker] == 0)
        return 
PLUGIN_CONTINUE
    
    
new headshot read_data)
    new 
clipammoweapon get_user_weapon(attacker,clip,ammo)
    
PlayerXP[attacker] += get_pcvar_num(XP_Kill
    if(
headshot
        
PlayerXP[attacker] += get_pcvar_num(XP_Hs
    if(
weapon == CSW_KNIFE)
        
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
    while(
PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) 
    {
        
client_print(attackerprint_chat"[AMXX] Gratulacje osiagnales level %i %s!"PlayerLevel[attacker],CLASSES[PlayerClass[attacker]]);        PlayerLevel[attacker] += 
    

    
ShowHud(attacker)
    return 
PLUGIN_CONTINUE
    

public 
ShowHud(id

    
set_hudmessage(255000.750.0106.015.0
    
show_hudmessage(id"Level: %i^nXP: %i^nClass: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]]) 

public 
ChangeClass(id
{
    new 
menu menu_create("Class Menu" "Class_Handle")
    
menu_additem(menu ,"Asasyn""1" 0); 
    
menu_additem(menu ,"Rycerz""2" 0); 
    
menu_additem(menu ,"Mag""3" 0); 
    
menu_additem(menu ,"Druid""4" 0);
    
menu_setprop(menu MPROP_EXIT MEXIT_ALL);
    
menu_display(id menu 0); 
    return 
PLUGIN_CONTINUE


public 
Class_Handle(id menu item

    if(
item == MENU_EXIT
    { 
        
menu_destroy(menu); 
    } 
    new 
szCommand[6] , szName[64]; new access callback
    menu_item_getinfo
(menu item access szCommand szName 63 callback);
    new 
str_to_num(szCommand);
    if(
PlayerClass[id] != i
    { 
        
PlayerClass[id] = i client_print(id,print_chat,"Jestes teraz %s",CLASSES[i]);
    }
    else 
    { 
        
client_print(id,print_chat,"Przeciez jestes %s",CLASSES[i]);
    } 
    
menu_destroy(menu); 
    return 
PLUGIN_CONTINUE 

public 
SaveData(id

    new 
AuthID[35get_user_authid(id,AuthID,34)
    new 
vaultkey[64],vaultdata[256
    
format(vaultkey,63,"%s-Mod",AuthID) ;
    
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]) ;
    
nvault_set(g_vault,vaultkey,vaultdata) ;
    return 
PLUGIN_CONTINUE ;

public 
LoadData(id

    new 
AuthID[35get_user_authid(id,AuthID,34
    new 
vaultkey[64],vaultdata[256
    
format(vaultkey,63,"%s-Mod",AuthID
    
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]) 
    
nvault_get(g_vault,vaultkey,vaultdata,255
    
replace_all(vaultdata255"#"" "
    new 
playerxp[32], playerlevel[32
    
parse(vaultdataplayerxp31playerlevel31
    
PlayerXP[id] = str_to_num(playerxp
    
PlayerLevel[id] = str_to_num(playerlevel
    return 
PLUGIN_CONTINUE 

public 
buyhp(id
{
    if(
kupil[id]||cvaron == 1)
        
client_print(id,print_chat,"[AMXX] Nie moge sprzedac ci wiecej napojow zycia.");
    else
    {
        
client_print(id,print_chat,"[AMXX] Kupiles napoj zycia.");
        
uzyl[id] = false
        kupil
[id] = true
    

}
public 
usehp(id)
{
    if(
uzyl[id]||cvaron == 1)
        
client_print(id,print_chat,"[AMXX] Nie masz napojow zycia.");
    else
    {
        
set_user_health(id100)
        
client_print(id,print_chat,"[AMXX] Uzyles napoju zycia.");
        
uzyl[id] = true
    
}
}
public 
itoito(id)
{
    if(
kupil[id]||cvaron == 1)
        
set_user_health(id100)
    
    
uzyl[id] = true
    kupil
[id] = true         

public 
usebuyhp(id)
{
    if(
uzyl[id]||kupil[id]||cvaron == 1)
        
client_print(id,print_chat"[AMXX] Nie mozesz wiecej kupic i uzyc napojow zycia.");
    else
        
set_task(0.1"itoito"___"a"1
    
}
public 
NewRound(id)
{
    
kupil[id] = false
    uzyl
[id] = false
}
public 
wol(id)
{
    if(
is_user_admin(id))
        
set_task(0.1"online"___"a"1
    else
        
client_print(id,print_chat"[AMXX] Komenda nie dostępna dla normalnego playera.");
}
public 
woler(id)
{
    if(
is_user_admin(id))
        
set_task(0.1"offline"___"a"1
    
    else
        
client_print(id,print_chat"[AMXX] Komenda nie dostępna dla normalnego playera.");
}
public 
online(id)
{
    if(
is_user_admin(id))
        
server_cmd("amx_cvar amx_sredniowiecze 1")
}
public 
offline(id)
{
    if(
is_user_admin(id))
        
server_cmd("amx_cvar amx_sredniowiecze 0")
}
public 
info(id)
{
        
client_print(id,print_chat"[AMXX] Sredniowiecze mod oferuje dobra zabawe , duzo emocji oraz zroznicowane klasy /shop by otworzyc sklep /info po informacje.")
}
public 
admininfo(id)
{
  if(
is_user_admin(id))
        
client_print(id,print_chat"[AMXX] amx_sredniowiecze 1 by wlaczyc 0 by wylaczyc.")
}
public 
infokom(id)
{
        
set_task(0.1"info"___"a"1
  if(
is_user_admin(id))
        
set_task(0.1"admininfo"___"a"1)

public 
infokomadm(id)
{
  if(
is_user_admin(id))
{
        
set_task(0.1"admininfo"___"a"1)
}
else
{
        
client_print(id,print_chat"[AMXX] Komenda dostepna wylacznie dla admina.")
}
}
public 
autoinfo(id)
{
        
set_task(130.0"info"___"b")
}



public 
client_disconnect(id

    if(
get_pcvar_num(SaveXP) == 1
        
SaveData(id

Błędy:
Kod:
//home/groups/amxmodx/tmp3/phpc9lWqP.sma(127) : error 001: expected token: ";", but found "-identifier-"
/home/groups/amxmodx/tmp3/phpc9lWqP.sma(138) : error 001: expected token: ";", but found "-identifier-"
/home/groups/amxmodx/tmp3/phpc9lWqP.sma(147) : error 001: expected token: ";", but found "-identifier-"
/home/groups/amxmodx/tmp3/phpc9lWqP.sma(239) : warning 217: loose indentation
/home/groups/amxmodx/tmp3/phpc9lWqP.sma(248) : warning 217: loose indentation



you raportuj posty niezgodne z regulaminem!
By to zrobić naciśnij

Ostatnio edytowane przez csowianek : 10-11-09 - 17:40
Offline csowianek jest nieaktywny
Odpowiedź z cytatem
  (#13) stare
Bywalec
 
dakashi's Avatar
 
Grupa: Użytkownik
Postów: 73
Zarejestrowany: May 2008
Skąd: Krakow
Wiek: 15
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 20-02-10, 17:05

Kod html:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define PLUGIN "XP MOD"
#define VERSION "1.0"
#define AUTHOR "Dakashi d(-.-)b"

#define MAXCLASSES 3

new PlayerXP[33], PlayerLevel[33], PlayerClass[33]

new XP_Kill, XP_Knife, XP_Hs, SaveXP
new g_vault

new attacker

new const CLASSES[MAXCLASSES] [] = 
{
    "Jumper",
    "Runner",
    "Ghost"
}

new const LEVELS[11] = 
{
    0,
    5,
    15,
    30,
    60,
    120,
    190,
    270,
    360,
    460,
    500
}

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_event("DeathMsg", "eDeath", "a") //sprawdza LVL po zabiciu kogos
    SaveXP = register_cvar("xpmod_savexp", "1") //Cvar odpowiadajacy za zapisywanie XP, 0 = nie zapisuje
    XP_Kill = register_cvar("xpmod_normal_kill", "1") //Ile XP sie dostaje za jedno zabicie
    XP_Knife = register_cvar("xpmod_knife_kill", "1") //Ile XP za zabicie nozem
    XP_Hs = register_cvar("xpmod_hs_kill", "2") //Ile XP za zabicie strzalem w glowe
    
    g_vault = nvault_open("drmod")
    
    register_clcmd("say /klasa", "ChangeClass")          //Menu wyboru klasy
    register_clcmd("say_team /klasa", "ChangeClass")    //Jak wyzej
    
    register_clcmd("say /xp", "ShowXP")  //Pokazuje ile gracz ma XP
    register_clcmd("say_team /xp", "ShowXP")  //J/W
    
}

public eDeath()
{
    if(PlayerClass[attacker] == 0)//Jezeli gracz nie ma wybranej klasy -> nic sie nie dzieje
    return PLUGIN_CONTINUE
    
    new iVictim = read_data( 2 )
    
    new headshot = read_data( 3 )  //Jezeli gracz zabil headshotem, odpali sie cvar xpmod_hs_kill
    
    new clip, ammo, weapon = get_user_weapon(clip, ammo)  //Jaka bron zostala uzyta
    
    PlayerXP[attacker] += get_pcvar_num(XP_Kill)  //Dodaje tyle XP ile wynosi cvar xpmod_normal_kill
    
    if(headshot) //Jezeli gracz trafil w glowe
    PlayerXP[attacker] += get_pcvar_num(XP_Hs)  //Dodaje tyle XP ile wynosi cvar xpmod_hs_kill
    
    if(weapon == CSW_KNIFE) //Jezeli gracz zabil nozem
    PlayerXP[attacker] += get_pcvar_num(XP_Knife)  //Dodaje tyle XP ile wynosi cvar xpmod_knife_kill
          
    
    while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
    {
        client_print(id, print_center, "[XPMOD]Gratulacje! Masz %i lvl $s!", PlayerLevel[attacker], CLASSES[PlayerClass[attacker]]) //Wiadomosc gratulacyjna
        PlayerLevel[attacker] += 1  //Dodaje LVL
    }
    ShowXP(attacker)
    SaveData(attacker)
}

public ShowXP(id)
{
    set_hudmessage(0, 120, 100, 0.75, 0.1, 0, 6.0, 15.0)
    show_hudmessage(id, "Twoja klasa: %s^nLVL: %i, EXP: %i", CLASSES[PlayerClass[id]], PlayerLevel[id], PlayerXP[id])
}

public ChangeClass(id)
{
    new ClassMenu = menu_create("Menu klas:", ClassHandler)
    
    menu_additem(ClassMenu, "Jumper", "1", 0);
    menu_additem(ClassMenu, "Runner", "2", 0);
    menu_additem(ClassMenu, "Ghost", "3", 0);
    menu_setprop(ClassMenu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, ClassMenu, 0);
    return PLUGIN_CONTINUE
}

public ClassHandler(id, ClassMenu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(ClassMenu)
    }
    
    new szCommand[6], szName[64]; new acces, callback;
    menu_item_getinfo(ClassMenu, item, acces, szCommand, 5, szName, 63, callback);
    
    new i = str_to_num(szCommand)
    
    if(PlayerClass[id] != i)
    {
        client_print(id, print_chat, "[XPMOD]Juz jestes %s", CLASSES[PlayerClass[id]])
    }
    else
    {
        client_print(id, print_chat, "[XPMOD]Jestes teraz %s", CLASSES[i])
    }
    menu_destroy(ClassMenu)
    return PLUGIN_CONTINUE
}

public client_connect(id)
{
    if(get_pcvar_num(xpmod_savexp) == 1) //Jezeli Xp jest zapisywany
    {
        LoadData(id) //Laduje XP i Klase gracza
    }
}

public client_disconnect(id)
{
    if(get_pcvar_num(xpmod_savexp) == 1) //Jezeli XP jest zapisywany
    {
         SaveData(id)  //Zapisuje Klase i EXP gracza
    }
    PlayerXP[id] = 0
    PlayerLevel[id] = 0
    PlayerClass[id] = 0

}

public SaveData(id)
{
    new AuthID[35] get_user_authid(id, AuthID, 34)  //Pobiera SteamID gracza
    new vaultkey[64], vaultdata[256]
    
    format(vaultkey, 63, "%s-Mod", AuthID)                               //Jak wyglada zapisywanie
    format(vaultdata, 255, "#%i#%i#", PlayerLevel[id], PlayerXP[id]) //LVL i XP w pliku
    
    nvault_set(g_vault, vaultkey, vaultdata)
    return PLUGIN_CONTINUE
}

public LoadData(id)
{
    new AuthID[35] get_user_authid(id, AuthID, 34)
    new vaultkey[64], vaultdata[256]
    
    format(vaultkey, 63, "%s-Mod", AuthID)
    format(vaultdata, 255, "#%i#%i#", PlayerLevel[id], PlayerXP[id])
    
    nvault_get(g_vault, vaultkey, vaultdata, 255)
    replace_all(vaultdata, 255, "#", " ")
    
    new playerxp[32], playerlevel[32]
    parse(vaultdata, playerxp, 31, playerlevel, 31)
    
    PlayerXP[id] = str_to_num(playerxp)
    PlayerLevel[id] = str_to_num(playerlevel)
    
    return PLUGIN_CONTINUE
}
błędy:

Kod:
Error: Undefined symbol "id" on line 82
Warning: Expression has no effect on line 82
Warning: Expression has no effect on line 82
Warning: Expression has no effect on line 82
Warning: Expression has no effect on line 82
Error: Expected token: ";", but found ")" on line 82
Error: Invalid expression, assumed zero on line 82
Error: Too many error messages on one line on line 82
Could not locate output file C:\Program Files\AMX Mod X\amxxstudio\Untitled.amx (compile failed).


Offline dakashi jest nieaktywny
Odpowiedź z cytatem
  (#14) stare
Alfons roku
 
Mochi's Avatar
 
Grupa: Global Moderator
Postów: 3,276
Zarejestrowany: May 2009
Skąd: na mnie patrzysz?
Karma: Doskonała

Odp: [Poradnik] Naliczanie XP - 20-02-10, 17:23

W evencie śmierci nie ma od razu pobranego "id" dlatego trzeba ja czytać przez read_data.
Nie wiem po co dałeś new attacker na samej górze jeżeli używasz go tylko w evencie śmierci i jeszcze nie pobierasz jego wartości przez read_data(1) dlatego ciągle wynosi 0.
Kod php:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define PLUGIN "XP MOD"
#define VERSION "1.0"
#define AUTHOR "Dakashi d(-.-)b"

#define MAXCLASSES 3

new PlayerXP[33], PlayerLevel[33], PlayerClass[33]
new 
XP_KillXP_KnifeXP_HsSaveXP
new g_vault
new const CLASSES[MAXCLASSES] [] = 
{
"Jumper",
"Runner",
"Ghost"
}

new const 
LEVELS[11] = 
{
0,
5,
15,
30,
60,
120,
190,
270,
360,
460,
500
}

public 
plugin_init() {
register_plugin(PLUGINVERSIONAUTHOR)
register_event("DeathMsg""eDeath""a"//sprawdza LVL po zabiciu kogos
SaveXP register_cvar("xpmod_savexp""1"//Cvar odpowiadajacy za zapisywanie XP, 0 = nie zapisuje
XP_Kill register_cvar("xpmod_normal_kill""1"//Ile XP sie dostaje za jedno zabicie
XP_Knife register_cvar("xpmod_knife_kill""1"//Ile XP za zabicie nozem
XP_Hs register_cvar("xpmod_hs_kill""2"//Ile XP za zabicie strzalem w glowe

g_vault nvault_open("drmod")

register_clcmd("say /klasa""ChangeClass")          //Menu wyboru klasy
register_clcmd("say_team /klasa""ChangeClass")    //Jak wyzej

register_clcmd("say /xp""ShowXP")  //Pokazuje ile gracz ma XP
register_clcmd("say_team /xp""ShowXP")  //J/W

}

public 
eDeath()
{
new 
attacker read_data(1)
if(
PlayerClass[attacker] == 0) return PLUGIN_CONTINUE

//new iVictim = read_data( 2 ) PO CO?!
new headshot read_data)  
new 
clipammoweapon get_user_weapon(clipammo)  
PlayerXP[attacker] += get_pcvar_num(XP_Kill)  

if(
headshotPlayerXP[attacker] += get_pcvar_num(XP_Hs)  
if(
weapon == CSW_KNIFEPlayerXP[attacker] += get_pcvar_num(XP_Knife)  
while(
PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
    
client_print(attackerprint_center"[XPMOD]Gratulacje! Masz %i lvl $s!"PlayerLevel[attacker], CLASSES[PlayerClass[attacker]]) //Wiadomosc gratulacyjna
    
PlayerLevel[attacker] += 1  //Dodaje LVL
}
ShowXP(attacker)
SaveData(attacker)
return 
PLUGIN_CONTINUE
}

public 
ShowXP(id)
{
    
set_hudmessage(01201000.750.106.015.0)
    
show_hudmessage(id"Twoja klasa: %s^nLVL: %i, EXP: %i"CLASSES[PlayerClass[id]], PlayerLevel[id], PlayerXP[id])
}

public 
ChangeClass(id)
{
    new 
ClassMenu menu_create("Menu klas:","ClassHandler")
    
menu_additem(ClassMenu"Jumper""1"0);
    
menu_additem(ClassMenu"Runner""2"0);
    
menu_additem(ClassMenu"Ghost""3"0);
    
menu_setprop(ClassMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idClassMenu0);
    return 
PLUGIN_CONTINUE
}

public 
ClassHandler(idClassMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(ClassMenu)
    }
    
    new 
szCommand[6], szName[64]; new accescallback;
    
menu_item_getinfo(ClassMenuitemaccesszCommand5szName63callback);
    
    new 
str_to_num(szCommand)
    
    if(
PlayerClass[id] != i)
    {
        
client_print(idprint_chat"[XPMOD]Juz jestes %s"CLASSES[PlayerClass[id]])
    }
    else
    {
        
client_print(idprint_chat"[XPMOD]Jestes teraz %s"CLASSES[i])
    }
    
menu_destroy(ClassMenu)
    return 
PLUGIN_CONTINUE
}

public 
client_connect(id)
{
    if(
get_pcvar_num(SaveXP) == 1)
    {
        
LoadData(id
    }
}

public 
client_disconnect(id)
{
    if(
get_pcvar_num(SaveXP) == 1//Jezeli XP jest zapisywany
    
{
        
SaveData(id)  //Zapisuje Klase i EXP gracza
    
}
    
PlayerXP[id] = 0
    PlayerLevel
[id] = 0
    PlayerClass
[id] = 0
    
}

public 
SaveData(id)
{
    new 
AuthID[35
    
get_user_authid(idAuthID34)  //Pobiera SteamID gracza
    
new vaultkey[64], vaultdata[256]
    
    
format(vaultkey63"%s-Mod"AuthID)                               //Jak wyglada zapisywanie
    
format(vaultdata255"#%i#%i#"PlayerLevel[id], PlayerXP[id]) //LVL i XP w pliku
    
    
nvault_set(g_vaultvaultkeyvaultdata)
    return 
PLUGIN_CONTINUE
}

public 
LoadData(id)
{
    new 
AuthID[35]
    
get_user_authid(idAuthID34)
    new 
vaultkey[64], vaultdata[256]
    
    
format(vaultkey63"%s-Mod"AuthID)
    
format(vaultdata255"#%i#%i#"PlayerLevel[id], PlayerXP[id])
    
    
nvault_get(g_vaultvaultkeyvaultdata255)
    
replace_all(vaultdata255"#"" ")
    
    new 
playerxp[32], playerlevel[32]
    
parse(vaultdataplayerxp31playerlevel31)
    
    
PlayerXP[id] = str_to_num(playerxp)
    
PlayerLevel[id] = str_to_num(playerlevel)
    
    return 
PLUGIN_CONTINUE



Jeżeli Ci pomogłem ,kliknij w prawym górnym rogu mojego posta.

Złamana ręka = 4 tygodnie przerwy...

Nudzi Ci się?
Kliknij tutaj i zagraj!


Offline Mochi jest nieaktywny
Odpowiedź z cytatem
  (#15) stare
Bywalec
 
dakashi's Avatar
 
Grupa: Użytkownik
Postów: 73
Zarejestrowany: May 2008
Skąd: Krakow
Wiek: 15
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 20-02-10, 19:47

Dzięki Mochi jesteś moim idolem

@EDIT
A czy mógłbys mi jeszcze powiedzieć jak dla każdej klasy dodać jakies atrybuty??
np: Runner:
LVL 1: +2% do szybkosci
LVL 2: +3% do szybkości
itd...
Jumper:
LVL 1: -1% gravity
LVL 2: -2% gravity
itd
A u ghosta że im większy lvl tym bardziej staje się niewidzialny ;)

Będę wdzięczny



Ostatnio edytowane przez dakashi : 20-02-10 - 19:53
Offline dakashi jest nieaktywny
Odpowiedź z cytatem
  (#16) stare
Alfons roku
 
Mochi's Avatar
 
Grupa: Global Moderator
Postów: 3,276
Zarejestrowany: May 2009
Skąd: na mnie patrzysz?
Karma: Doskonała

Odp: [Poradnik] Naliczanie XP - 20-02-10, 19:58

Załóż oddzielny temat ten nie jest od tego.


Jeżeli Ci pomogłem ,kliknij w prawym górnym rogu mojego posta.

Złamana ręka = 4 tygodnie przerwy...

Nudzi Ci się?
Kliknij tutaj i zagraj!


Offline Mochi jest nieaktywny
Odpowiedź z cytatem
  (#17) stare
Bot
 
Grupa: Użytkownik
Postów: 1
Zarejestrowany: Apr 2010
Skąd: Częstochowa
Wiek: 18
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 08-04-10, 23:12

Siema mam pytanie moglby ktos podac link do tego tworzenia menu sklepu bo nie dziala :/
Dziekuje z góry.

PS: Mam konto uktywnione
ale nie wiem czy uprawnienia ;P
Offline Colgate7 jest nieaktywny
Odpowiedź z cytatem
  (#18) stare
Wygadany
 
kubaku4's Avatar
 
Grupa: Użytkownik
Postów: 595
Zarejestrowany: Nov 2008
Karma: Średnia

Status: Wesoly
Odp: [Poradnik] Naliczanie XP - 12-04-10, 20:11

Poprawny kod by xPaw.
Kod php:
#include <amxmodx> 
#include <amxmisc> 
#include <nvault> 

#define MAXCLASSES 5 
#define PREFIX "Animal Mod" 

new const CLASSES[MAXCLASSES][] = { 
    
"None"
    
"Dog"
    
"Cat"
    
"Horse"
    
"Cow" 
}; 

new const 
LEVELS[6] = { 
    
100,  
    
200,  
    
400,  
    
800
    
1600
    
3200 
}; 

new 
PlayerXP[33], PlayerLevel[33], PlayerClass[33]; 
new 
gCvar_KillgCvar_KnifegCvar_HSgCvar_Enableg_Vault

public 
plugin_init() { 
    
register_plugin("XP Mod""1.0""fxfighter"); 

    
register_event("DeathMsg""eDeath""a"); 

    
gCvar_Enable    register_cvar("xp_save""1"); 
    
gCvar_Kill    register_cvar("xp_per_kill""20"); 
    
gCvar_HS    register_cvar("xp_hs_bonus""20"); 
    
gCvar_Knife    register_cvar("xp_Knife_bonus""20"); 
    
g_Vault        nvault_open("animod"); 
     
    
register_concmd("amx_take_exp""cmd_take_exp"ADMIN_KICK"<target> <amount>");  
    
register_concmd("amx_give_exp""cmd_give_exp"ADMIN_KICK"<target> <amount>"); 
     
    
register_clcmd("say /class",    "ChangeClass"); 
    
register_clcmd("say_team /class""ChangeClass"); 
    
register_clcmd("say /xp",    "ShowHud"); 
    
register_clcmd("say_team /xp",    "ShowHud"); 


public 
eDeath() { 
    new 
attacker read_data); 
    new 
headshot read_data); 
    new 
clipammoweapon get_user_weapon(attackerclipammo); 

    
PlayerXP[attacker] += get_pcvar_num(gCvar_Kill); 

    if(
headshot
        
PlayerXP[attacker] += get_pcvar_num(gCvar_HS); 

    if(
weapon == CSW_KNIFE
        
PlayerXP[attacker] += get_pcvar_num(gCvar_Knife); 

    while(
PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) { 
        
client_print(attackerprint_chat"[%s] Congratulations! You are a level %i %s!"PREFIXPlayerLevel[attacker], CLASSES[PlayerClass[attacker]]); 
        
PlayerLevel[attacker] += 1
    } 

    
ShowHud(attacker); 
    
SaveData(attacker); 


public 
ShowHud(id) { 
    
set_hudmessage(255000.750.0106.015.0); 
    
show_hudmessage(id"Level: %i^nXP: %i^nClass: %s"PlayerLevel[id], PlayerXP[id], CLASSES[PlayerClass[id]]); 


public 
ChangeClass(id) { 
    new 
menu menu_create("Class Menu" "Class_Handle"); 
    
menu_additem(menu ,"Dog""1" 0); 
    
menu_additem(menu ,"Cat""2" 0); 
    
menu_additem(menu ,"Horse""3" 0); 
    
menu_additem(menu ,"Cow""4" 0); 

    
menu_setprop(menu MPROP_EXIT MEXIT_ALL); 
    
menu_display(id menu 0); 

    return 
PLUGIN_CONTINUE


public 
Class_Handle(id menu item)  { 
    if(
item == MENU_EXIT)  
        
menu_destroy(menu); 

    new 
szCommand[6] , szName[64]; 
    new 
access callback

    
menu_item_getinfo(menu item access szCommand szName 63 callback); 

    new 
str_to_num(szCommand); 
    if(
PlayerClass[id] != i) { 
        
PlayerClass[id] = i
        
client_print(id,print_chat,"[%s] You are now a %s"PREFIXCLASSES[i]); 
    } else 
        
client_print(id,print_chat,"[%s] You are already a %s"PREFIXCLASSES[i]); 

    
menu_destroy(menu); 
    return 
PLUGIN_CONTINUE


public 
client_connect(id
    if(
get_pcvar_num(gCvar_Enable) == 1
        
LoadData(id); 

public 
client_disconnect(id) { 
    if(
get_pcvar_num(gCvar_Enable) == 1
        
SaveData(id); 

    
PlayerXP[id]    = 0
    
PlayerLevel[id]    = 0
    
PlayerClass[id]    = 0


public 
SaveData(id) { 
    new 
AuthID[35]; 
    
get_user_authid(idAuthID34); 
     
    new 
vaultkey[64], vaultdata[256]; 
    
format(vaultkey63"%s-Mod"AuthID); 
    
format(vaultdata255"%i#%i#"PlayerXP[id], PlayerLevel[id]); 
    
nvault_set(g_Vaultvaultkeyvaultdata); 
    return 
PLUGIN_CONTINUE


public 
LoadData(id) { 
    new 
AuthID[35]; 
    
get_user_authid(id,AuthID,34); 
     
    new 
vaultkey[64], vaultdata[256]; 
    
format(vaultkey63"%s-Mod"AuthID); 
    
format(vaultdata255"%i#%i#"PlayerXP[id], PlayerLevel[id]); 
    
nvault_get(g_Vaultvaultkeyvaultdata,255); 

    
replace_all(vaultdata255"#"" "); 

    new 
playerxp[32], playerlevel[32]; 

    
parse(vaultdataplayerxp31playerlevel31); 

    
PlayerXP[id] = str_to_num(playerxp); 
    
PlayerLevel[id] = str_to_num(playerlevel); 

    return 
PLUGIN_CONTINUE


// Give/Take XP addaon by [X]-RayCat 
public cmd_give_expidlevel,cid ) { 
    if( ! 
cmd_access idlevelcid) ) 
        return 
PLUGIN_HANDLED

    new 
target[32], amount[21], reason[21]; 

    
read_argv1target31 ); 
    
read_argv(2amount20 ); 
    
read_argv3reason20 ); 

    new 
player cmd_targetidtarget); 

    if( ! 
player )  
        return 
PLUGIN_HANDLED

    new 
admin_name[32], player_name[32]; 
    
get_user_nameidadmin_name31 ); 
    
get_user_nameplayerplayer_name31 ); 

    new 
expnum str_to_numamount ); 

    
PlayerXP[player] += expnum

    switch( 
get_cvar_num "amx_show_activity" ) ) { 
        case 
1client_print0print_chat"ADMIN: gave %i points for %s."expnumplayer_name ); 
        case 
2client_print0print_chat"ADMIN %s: gave %i points for %s."admin_nameexpnumplayer_name ); 
    } 

    
client_printplayerprint_chat"[%s] You received %i points. (Total: %d)"PREFIXexpnumPlayerXP[player] ); 
    
SaveDataid ); 

    return 
PLUGIN_CONTINUE

  
public 
cmd_take_expidlevel,cid ) { 
    if( ! 
cmd_access idlevelcid) ) 
       return 
PLUGIN_HANDLED

    new 
target[32], amount[21], reason[21]; 

    
read_argv1target31 ); 
    
read_argv2amount20 ); 
    
read_argv3reason20 ); 

    new 
player cmd_targetidtarget); 

    if( ! 
player )  
       return 
PLUGIN_HANDLED

    new 
admin_name[32], player_name[32]; 
    
get_user_nameidadmin_name31 ); 
    
get_user_nameplayerplayer_name31 ); 

    new 
expnum str_to_numamount ); 

    
PlayerXP[player] -= expnum

    switch(
get_cvar_num("amx_show_activity")){ 
        case 
1client_print0print_chat"ADMIN: took %i points from %s."expnumplayer_name ); 
        case 
2client_print0print_chat"ADMIN %s: took %i points from %s."admin_nameexpnumplayer_name ); 
    } 

    
client_printplayerprint_chat"[%s] You lost %i points. (Total: %d)"PREFIXexpnumPlayerXP[player] ); 
    
SaveDataid ); 

    return 
PLUGIN_CONTINUE



Bracia-Cs.pl
195.2.255.27:27321

EASYBLOCK + AUTORSKI XP MOD!
Offline kubaku4 jest nieaktywny
Odpowiedź z cytatem
  (#19) stare
Nowy
 
Grupa: Użytkownik
Postów: 5
Zarejestrowany: Jul 2009
Wiek: 15
Karma: Neutralna

Odp: [Poradnik] Naliczanie XP - 17-07-10, 20:31

Mam pytanie jak zrobić aby przy zmienianiu klasy w trakcie rundy mieć nową klasę już w następnej rundzie a nie tej samej.
Offline kondzixd jest nieaktywny
Odpowiedź z cytatem
Odpowiedz

Zwiększ popularność tego tematu dodając go na:

Tagi
naliczanie , [poradnik]

Narzędzia wątku
Wygląd

Zasady postowania
Nie możesz zakładać nowych tematów
Nie możesz pisać wiadomości
Nie możesz dodawać załączników
Nie możesz edytować swoich postów

BB Code jest Wł.
EmotikonyWł.
[IMG] kod jest Wł.
HTML kod jest Wył.
Trackbacks are Wył.
Pingbacks are Wył.
Refbacks are Wył.


Podobne wątki
Temat Autor wątku Forum Odpowiedzi Ostatni post / autor
Odp: [Poradnik] Poradnik jak napisać prosty plugin sebi1717 Archiwum 0 10-04-09 14:43
Naliczanie XP, błąd witek122 Problemy i pytania 0 25-03-09 22:07
Naliczanie statystyk do x graczy. .Cz!t3R Problemy i pytania 5 25-12-08 22:26



Najczesciej szukane frazy
Chmura zapytan
amx_ss amxbans battlefield 1942 download bot na puszki boty do cs 1.6 download call of duty 2 download call of duty 4 download cd key do sims 3 cd key do the sims 3 cd key sims 3 cd key the sims 3 config cs config do cs 1.6 counter strike 1.6 do pobrania counter strike 1.6 download counter strike 1.6 download non steam counter strike 1.6 non steam counter strike 1.6 non steam download counter strike 1.6 non steam pobierz counter strike 1.6 pobierz counter strike do pobrania counter strike non steam download counter strike source counter strike source download counter strike source non steam counter strike source non steam download cs cs 1.6 do pobrania cs 1.6 download cs 1.6 download non steam cs 1.6 non steam cs 1.6 non steam download cs 1.6 non steam pobierz cs 1.6 ns download cs 1.6 pobierz cs 1.6 portable cs do pobrania cs forum cs non steam cs non steam download cs patch v32 cs pobierz cs portable cs portable download cs serwery cs source cs source download cs source non steam cs source non steam download cs1.6 non steam download css download darmowe gry steam deathrun deluxe ski jump 2.1 pełna wersja diablo 2 download diablo mod diablo mod cs 1.6 diablomod dodatki do cs dodatki do cs 1.6 download cs 1.6 non steam dsj 2.1 pełna wersja fajny nick fifa 10 download filmy online bez limitu forum cs gamma control gothic 3 download gry java 240x320 gry na telefon download gta 3 pobierz gta 4 do pobrania gta 4 download gta 4 spolszczenie gta iv spolszczenie gta sa download gta san andreas do pobrania gta san andreas download gta san andreas pobierz hard truck download heroes 3 download jak ogladac filmy bez limitu jak zwiekszyc fps klucz do microsoft office 2007 klucz do office 2007 klucz do sims 3 kody do cs kody do cs 1.6 kody do pinball kody do pinballa komendy amx komendy rcon left 4 dead download mapy cs mapy do cs mapy do cs 1.6 mapy do cs 1.6 download microsoft office 2007 klucz milionerzy na telefon modele hltv nfs most wanted download no recoil non steam download numer seryjny do far cry 2 office 2007 klucz patch v32 download pluginy pluginy amx pluginy amxx pobierz cs pobierz cs 1.6 pobierz cs 1.6 non steam pobierz gta san andreas pokemon download rcon komendy roundsound servery cs serwery cs serwery cs 1.6 serwery cs 1.6 non steam serwery diablo mod serwery do cs serwery do cs 1.6 serwery ventrilo sims 1 download sims 2 download sims 2 pobierz sims 3 cd key sims 3 download ski jump 2.1 pełna wersja skoki narciarskie 2006 download skrypt na bh skrypty cs skrypty do cs snikers snikers download spolszczenie do gta 4 spolszczenie gta 4 spyware doctor licencja steam validation rejected swat 4 download test drive unlimited download the sims 1 do pobrania the sims 1 download the sims 1 pobierz the sims 2 download the sims 2 pobierz the sims 3 cd key the sims 3 download twierdza download twierdza krzyżowiec download usdownloader ventrilo 2.1.4 ventrilo 2.1.4 download ventrilo 2.1.4 pobierz vt 2.1.4 www.odsiebie.com zbot zbot download zombie mod cs 1.6


Languages translations supported by vBET 3.3.3
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.3.0
Copyright © 2008-2009 CSCenter.PL
Wszelkie prawa zastrzeżone. Kopiowanie treści forum bez zgody administracji zabronione.
serwery gier


TOP50 Gry
Automatyczne tłumaczenia (Powered by Powered by Google):
Afrikaans Arabic Chinese Czech English Finnish French German Greek Hebrew Hindi Hungarian Italian Japanese Korean Malay Norwegian Polish Portuguese Romanian Russian Serbian Spanish Swedish Taiwanese Turkish Vietnamese