RoCk_DeDe Administrator

Data inscrierii: 02/Mai/2012 Mesaje: 99
|
Trimis: 02/05/2012 18:44 Titlul subiectului: Un "MOD" nou |
|
|
Mai intai adaugam modulele importante :
Cod:
#include < amxmodx >
#include < amxmisc >
#include < nvault >
Acum definim maximum de clase
Aici sunt 5 dar voi puteti sa mai adaugat inca 2 sa fie 7 Clase.
Cod:
#define MAXCLASSES 5
Acum cream variabile care sa detina Clasa , XP-ul si Nivelul Tau !
Cod:
new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
//Acestea sunt aparte pentru a ucide
new XP_Kill,XP_Knife,XP_Hs,SaveXP
// Aceasta este pentru nVault pentru a salva XP
new g_vault
Acum adaugam "maximum de clase"
Cod:
new const CLASSES[MAXCLASSES][] = {
"None",
"Englez",
"Roman",
"Francez",
"German"
}
Acum adaugam si Levele :
Cod:
new const LEVELS[7] = {
0, // LVL 0
100,// LVL 1
200,// LVL 2
400,// LVL 3
800,/ /LVL 4
1600,/ /LVL 5
3200 //LVL 6
}
Acum cream plugin_init() :
Cod:
public plugin_init()
{
register_plugin("Stain Mod", "1.0", "Ice age 2")
//avem nevoie de aceasta pentru a verifica nivelul tau dupa ce ai omorat pe cineva
register_event("DeathMsg", "eDeath", "a")
// salvam XP .
SaveXP = register_cvar("SaveXP","1")
//Cat XP sa primesti cand omori pe cineva
XP_Kill=register_cvar("XP_per_kill", "20")
//Cat XP Bonus sa primest cand dai headshot unui jucator
XP_Hs=register_cvar("XP_hs_bonus","20")
//Cat XP Bonux sa primesti cand dai Lama unui jucator
XP_Knife=register_cvar("XP_knife_bonus","20")
//Ne-am creat o conexiune nValut
// O vom numi fndsmod
g_vault = nvault_open("fndsmod")
// Cand scriem "/class" ne putem alege o clasa
register_clcmd("say /class", "ChangeClass")
register_clcmd("say_team /class", "ChangeClass")
//Cand scriem "/xp" ne va aparea informati despre noi
register_clcmd("say /xp", "ShowHud")
register_clcmd("say_team /xp", "ShowHud")
}
Asa. Acum vom crea functia Death.Noi am numit-o in plugin_init eDeath
Aceasta functie v-a tine minte XP-ul nostru daca ajungem la un nivel nou
Cod:
public eDeath( ) // nume functie
{
new headshot = read_data( 1 )
new attacker = read_data( 1 )
new weapon = get_user_weapon(attacker,headshot,headshot)
headshot = read_data( 3 )
new health = get_user_health(attacker)
// Daca jucatorul nare nici o clasa nu ii va pune nici un XP
if(PlayerClass[attacker] == 0)
return PLUGIN_CONTINUE
// Ce arma a folosit
new clip, ammo, weapon = get_user_weapon(id,clip,ammo);
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
/ / întrebuințat pentru cvar xp_hs
/ / Se verifica daca victima a fost ucis de prin HEADSHOT
if(headshot)
PlayerXP[attacker] += get_pcvar_num(XP_Hs)
if(health == 100)
PlayerXP[attacker] += get_pcvar_num(XP_Perfect)
// Verifica daca victima a fost ucide cu cutitul
if(weapon == CSW_KNIFE)
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
// Verifica daca are suficient XP pentru a ajunge la un nou nivel.
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) {
PlayerLevel[attacker] += 1;
client_print(attacker, print_chat, "[FDNS] Felicitari! Ai ajuns la nivelul %i %s!", PlayerLevel[attacker], CLASSES[PlayerClass[attacker]]);
}
// Arata informati despre el in mesaj HUD
ShowHud(attacker)
Aceasta este functia ShowHud. Arata XP , Clasa si Nivelul tau
Cod:
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]])
}
Acum facem un meniu pentru selectia clasei.
Cod:
public ChangeClass(id)
{
// \r = Scris cu colorit RED \w Scris cu culoarea WHITE \y Scris cu culoarea YELLOW
new menu = menu_create("\rElement Mode" , "Class_Handle")
menu_additem(menu ,"\wEnglez", "1" , 0);
menu_additem(menu ,"\wRoman", "2" , 0);
menu_additem(menu ,"\wFrancez", "3" , 0);
menu_additem(menu ,"\wGerman", "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-1)
{
PlayerClass[id] = i-1
client_print(id,print_chat,"[FDNS] Acum esti %s", CLASSES)
}
else
{
client_print(id,print_chat,"[FDNS] Esti deja %s", CLASSES)
}
menu_destroy(menu);
return PLUGIN_CONTINUE
}
Aceasta functie este client connect .
Cod:
public client_connect(id)
{
// Numai in cazul in care salveza XP
if(get_pcvar_num(SaveXP) == 1)
{
// Incarca player Data.
LoadData(id)
}
}
Aceasta functie este client disconnect
Cod:
public client_disconnect(id)
{
// Numai in cazul in care salveza XP
if(get_pcvar_num(SaveXP) == 1)
{
// Va salva datele jucatorului.
SaveData(id)
}
}
Acum cream functia Save Data
Cod:
public SaveData(id)
{
// Aceasta functie salveaza pe Steam ID - IP
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])
// Salveaza Datele
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
Acum cream functia Load Data
Cod:
public LoadData(id)
{
new AuthID[35] get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
// Cauta
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
// Salveaza Datele
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
} |
|