Raised This Month: $12 Target: $400
 3% 

[ES] Xp mod


  
 
 
Thread Tools Display Modes
Author Message
Lchriaz
Senior Member
Join Date: Nov 2008
Location: Venezuelaa - Anzoategui
Old 07-09-2009 , 13:18   [ES] Xp mod
#1

Hey kien me puede traducir este tutorial'


https://forums.alliedmods.net/showthread.php?t=66497



+KArma
__________________
Mapper level: Mid
Sorry for me inglish
+karmita


Lchriaz is offline
Kiske
Veteran Member
Join Date: May 2009
Old 07-09-2009 , 13:20   Re: [ES] Xp mod
#2

Traducilo con el Traductor, ya se qe te lo traduce medio choto, pero si sabes algo de Ingles, podes entenderlo =D
__________________


Last edited by Kiske; 07-09-2009 at 13:21. Reason: Puse Tractor en vez de Traductor :P
Kiske is offline
Send a message via Skype™ to Kiske
larito
Veteran Member
Join Date: Nov 2008
Location: Argentina- Mendoza
Old 07-09-2009 , 13:30   Re: [ES] Xp mod
#3

Requerimientos: tiener algo de conosimiento en scripting

Paso:
Code:
1. Incluimos los módulos mas importantes
2. Definimos la maxima cantadad de clases
3. Creamos las variables para el nivel , la clase y la xp(experiencia)
4. Aqui usaremos la variable MAXCLASSES para limitar el tamaño de la constante. Esto es lo que tu veras dentro del juego.
5.Ahora creamos los niveles, y cuanta experiencia necesitas para pasar a un nivel
6. Ahora creamos los cvar , abrimos un nvault, registramos comandos y un evento
7. Creamos la funcion de Deathmsg. Recuerda el eDeath en  plugin_init()? Es donde pondremos para aumentar de nivel y experiencia
8. Esta es la funcion donde muestra el nivel la experiencia y la clase
9. Creamos el menu
10.  Creamos la funcion de guardado
11. Creamos la funcion de cargado
12. Registramo cuando se carga y se guardan los datos
1. Incluimos los módulos mas importantes

PHP Code:
#include <amxmodx>
#include <amxmisc> 
#include <nvault> 
2. Definimos la maxima cantadad de clases.
Aqui tenemos 5 clase, pero is tu quieres agregar 2 animales mas, tu puedes poner 7 o mas tambien. Pero nosotros lo aremos con 5

PHP Code:
#define MAXCLASSES 5 
3. Creamos las variables para el nivel , la clase y la xp(experiencia)

PHP Code:
new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
// estas son para detectar las formas en que mato
new XP_Kill,XP_Knife,XP_Hs,SaveXP
//Esta es para nvault, donde guardaremos nustros datos como nivel y mas.
new g_vault 
4. Aqui usaremos la variable MAXCLASSES para limitar el tamaño de la constante. Esto es lo que tu veras dentro del juego.

PHP Code:
new const CLASSES[MAXCLASSES][] = 
{
    
"None",   // primer animal
    
"Dog",    // segundo animal 
    
"Cat",    // tercer animal ....
    
"Horse",
    
"Cow"

Nota. La cantida de tipos de animales que pongamo tiene que ser igual a la que definimo en la variable MAXCLASSES

5.Ahora creamos los niveles, y cuanta experiencia necesitas para pasar a un nivel

Aqui son 7 niveles

PHP Code:
new const LEVELS[7] = 
{
    
0,
    
100,//aqui necesitas 100 de experiencia
    
200,//aqui necesitas 200 de experiencia
    
400,//aqui necesitas 400 de experiencia...
    
800,// .....
    
1600,//....
    
3200 //.....

6. Ahora creamos los cvar , abrimos un nvault, registramos comandos y un evento

PHP Code:
public plugin_init()
{
    
register_plugin("XpMod""1.0""Fxfighter"// Registramos el plugin

    // Nesesitamos chequear el evento para cuando alguien muere
    // asi registramo las kills y sumamos la experiencia......
    
register_event("DeathMsg""eDeath""a")
    
// Guardado habilitado?
    
SaveXP register_cvar("SaveXP","1")
    
// Experiencia que gana por matada (kill)
    
XP_Kill=register_cvar("XP_per_kill""20")
    
// Bonus por matar con hs
    
XP_Hs=register_cvar("XP_hs_bonus","20")
    
// Bonus por matar con cuchillo
    
XP_Knife=register_cvar("XP_knife_bonus","20")
    
//Abripos el nvault para hacer el guarado despues
    
g_vault nvault_open("animod")
    
//registramos el say para cambiar de classe
    
register_clcmd("say /class""ChangeClass")
    
register_clcmd("say_team /class""ChangeClass")
    
// registramos el say para ver la experiencia 
    
register_clcmd("say /xp""ShowHud")
    
register_clcmd("say_team /xp""ShowHud")

7. Creamos la funcion de Deathmsg. Recuerda el eDeath en plugin_init()? Es donde pondremos para aumentar de nivel y experiencia

PHP Code:
public eDeath( ) //nombre de la funcion

    
//  Si el player no tiene ninguna clase no continua
    
if(PlayerClass[attacker] == 0)    
    return 
PLUGIN_CONTINUE

    
// Creamos la variable de la victima, esto sirve para chekear
    // si el player es matado 
    
new iVictim read_data)
    
// Si el player es matado en la cabeza, la usaremos  para el cvar Xp_Hs
    
new headshot read_data)

    
//Registramos el arma que usa
    
new clipammoweapon get_user_weapon(id,clip,ammo);
    
PlayerXP[attacker] += get_pcvar_num(XP_Kill
    
// lo usamos para el cvar XP_Hs 
    // chequeamos si la victima fue matada en la cabeza
    
if(headshot
    
// nos da el bonus correspondiente
    
PlayerXP[attacker] += get_pcvar_num(XP_Hs
    
// chequeamos si la victima fue matada con cuchillo
    
if(weapon == CSW_KNIFE
    
//nos da el bonus correspondiente
    
PlayerXP[attacker] += get_pcvar_num(XP_Knife
    
// aqui chequeamos que si la experencia es mayor a la seteada en la 
    // variable LEVELS para subir de nivel
    
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) 
    {
        
// Aqui creamos un mensaje de felicitaciones por subir de nivel. 
        
client_print(attackerprint_chat"[Animal Mod] Congratulations! You are a level %i %s!"PlayerLevel[attacker],CLASSES[PlayerClass[attacker]]) 
        
// Aderimos un nivel 
        
PlayerLevel[attacker] += 
    

    
// Mostramos un mensaje con su nivel
    
ShowHud(attacker)


8. Esta es la funcion donde muestra el nivel la experiencia y la clase

PHP Code:
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]]) 

Note: ^n es para hacer una nueva linea (si no entienden consultenmelo)

9. Creamos el menu
Este es el menu donde tendremos opcione spaara elegir la clase de animal nuestra

PHP Code:
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 

10. Creamos la funcion de guardado

PHP Code:
public SaveData(id

    
// Tomamos el seteam id del player, lo nocesitamos porque guardaremos los 
    // datos a travez del steam id
    
new AuthID[35get_user_authid(id,AuthID,34
    new 
vaultkey[64],vaultdata[256
    
// Hacemos estos format para indicar que es lo que se guarda 
    // en el archivo de la data de nvault
    
format(vaultkey,63,"%s-Mod",AuthID
    
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]) 
    
// Guardamos la data
    
nvault_set(g_vault,vaultkey,vaultdata
    return 
PLUGIN_CONTINUE 

11. Creamos la funcion de cargado
now we create the load data function

PHP Code:
public LoadData(id

    
// Tomamos el seteam id de un user porque lo guardamos a travez de el
    
new AuthID[35get_user_authid(id,AuthID,34
    new 
vaultkey[64],vaultdata[256
    
// Buscamos los datos(esto tiene que estar igual a como lo guardamo
    // porque si no nunca lo encontrara
    
format(vaultkey,63,"%s-Mod",AuthID
    
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]) 
    
// Ahora cargamos los adtos
    
nvault_get(g_vault,vaultkey,vaultdata,255
    
replace_all(vaultdata255"#"" "
    new 
playerxp[32], playerlevel[32
    
// Ordenamos las lineas
    
parse(vaultdataplayerxp31playerlevel31
    
// Aca seteamos que la xp es igual a la que esta
    // dentro del archivo donde lo guardamos
    
PlayerXP[id] = str_to_num(playerxp
    
// Lo mismo que la xp
    
PlayerLevel[id] = str_to_num(playerlevel
    return 
PLUGIN_CONTINUE 

12. Registramo cuando se carga y se guardan los datos
Usamos la funcion client disconected. Esta se activa cuando el user se conecta al sv

PHP Code:
public client_connect(id
{
    
// SI la cvar es igual a 1 , es decir,
    // si esta habilitado prosigue
    
if(get_pcvar_num(SaveXP) == 1
    { 
        
// Llamamos a la funcion que carga la data
        
LoadData(id
    } 

Esta es la funciondclient disconect. Esta se activa cuando un player se desconecta del servidor
PHP Code:
public client_disconnect(id

    
// Si esta habilitdao prosigue
    
if(get_pcvar_num(SaveXP) == 1
    { 
        
// Llamamos a la funcoin que guarda la adta
        
SaveData(id
    } 

Bueno hemos terminado , ahora solo queda que comenten
Aqui tienen el codigo completo

PHP Code:
#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_EXITmenu_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

Tutorial echo por "flyeni6"
Traduccion al español por "Darckbaston"

Espero que les guste , y les ayude!
PD: Es lo mejor que pude traducir, si esta algo mal diganmelo plis
__________________
Facebook: Ariel Berardi

Last edited by larito; 09-08-2009 at 13:47.
larito is offline
Send a message via MSN to larito
Lchriaz
Senior Member
Join Date: Nov 2008
Location: Venezuelaa - Anzoategui
Old 07-09-2009 , 14:02   Re: [ES] Xp mod
#4

Muchisimas gracias compaadree
__________________
Mapper level: Mid
Sorry for me inglish
+karmita


Lchriaz is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 17:17.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode