Raised This Month: $32 Target: $400
 8% 

[TUT]Mod simple con mejoras


  
 
 
Thread Tools Display Modes
Author Message
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 01-02-2012 , 14:20   [TUT]Mod simple con mejoras
#1

Bueno... tuve una noche aburrida en el laburo y arme esto.. no es lo mejor de lo mejor.. pero bueno.. espero que a alguien le pueda servir para algo

Contiene:
Punto/s y dinero por cada frag
Respawn
Apto para bots(no mejoran las habilidades)
Menú de mejoras poniendo "/mejoras" en el say
Mejoras(vida,chaleco,gravedad,velocidad)

---------------

en fin.. algo simple

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>

#define PLUGIN "SimpleMod+Upgrades" //Nombre del plugin
#define VERSION "1.0" // Vercion del plugin
#define AUTHOR "[R]ak" //Autor del plugin

#define Num_Mejoras    4 //#Define el cual contiene la cantidad maxima de mejoras
#define VIDA        0 //#Define que vamos a utilizar para ubicarnos en la cerda en la cual se guardan los puntos de Vida
#define CHALECO        1 //#Define que vamos a utilizar para ubicarnos en la cerda en la cual se guardan los puntos de Chaleco
#define GRAVEDAD    2 //#Define que vamos a utilizar para ubicarnos en la cerda en la cual se guardan los puntos de Gravedad
#define VELOCIDAD    3 //#Define que vamos a utilizar para ubicarnos en la cerda en la cual se guardan los puntos de Velocidad

const NONE //Constante con valor 0
new const Mejoras[Num_Mejoras][] = { "Vida""Chaleco""Gravedad""Velocidad"}; //_Nombre de las mejoras
new const Mejoras_Max[Num_Mejoras] = { 1530610 //Maximo de las mejoras
new const Mejoras_Puntos[Num_Mejoras] = { 101020// Valores de las mejoras
new Puntos_Mejoras[33][Num_Mejoras//Variable en la cual guardamos los valores de las mejoras de cada usuario
new Puntos[33//Variable en la cual guardamos los puntos para gastar
new cvar_respawn //Cvar para permitir que los usuarios revivan
new reward_for_kill //Cvar de bonificacion por kill
new bool:g_bot //Variable Booleana para habilitar los forward de los bots

const KEYSMENU = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9// Los botones del menu

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR//Nombre del plugin, Version y Autor
    
    
cvar_respawn register_cvar("amx_respawn""1"//Cvar para permitir que los usuarios revivan
    
reward_for_kill register_cvar"reward_for_kill""1" // Cvar de la bonificacion por kill
    
    
register_clcmd("say /mejoras""menu_mejoras"//Poniendo /mejoras en el say lo dirijimos al menu
    
register_clcmd("joinclass""clcmd_joinclass"//Hook al joinclass para que reviva cuando entra al servidor
    
    
register_logevent("RoundStart"2"1=RoundStart"//Registramos el inicio de la ronda
    
    
register_menu("hmejoras"KEYSMENU"h_mejoras"//Registramos el menu
    
    
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1// Despues de que el usuario revive le seteamos sus atributos
    
RegisterHam(Ham_Killed"player""fw_playerkilled" // Obtenemos el atacante y la victima
        
}

public 
RoundStart() //Inicio de la ronda
    
client_print(0print_chat"**--** Pone /mejoras en el say para acceder al menu **--**")  //Mensaje para avisar del menu de mejoras

public fw_PlayerSpawn_Post(id//Despues del que el usuario revive le agregamos las mejoras
{
    if (!
is_user_alive(id)) // Si el usuario no esta vivo retornamos
        
return;
    
    
set_user_health(idget_user_health(id) + (Puntos_Mejoras[id][VIDA] * Mejoras_Puntos[VIDA])) // Obtenemos la vida del usuario y le agregamos la mejora
    
set_user_armor(idget_user_armor(id) + (Puntos_Mejoras[id][CHALECO]*Mejoras_Puntos[CHALECO])) // Obtenemos el chaleco del usuario y le agregamos la mejora
    
set_user_gravity(idget_user_gravity(id) - (float(Puntos_Mejoras[id][GRAVEDAD]) / Mejoras_Puntos[GRAVEDAD])) // Obtenemos la gravedad del usuario y le agregamos la mejora
    
set_user_maxspeed(idget_user_maxspeed(id) + (Puntos_Mejoras[id][VELOCIDAD]* Mejoras_Puntos[VELOCIDAD])) // Obtenemos la velocidad del usuario y le agregamos la mejora
}

public 
fw_PlayerKilled(victimattackershouldgib// Aca obtenemos el atacante y la victima y les damos beneficios
{
    if(
attacker == victim || !is_user_connected(attacker)) // Si el atacante es igual a la victima o el atacante no esta conectado retornamos
        
return;
    
    
Puntos[attacker] += get_pcvar_num(reward_for_kill//Obtenemos Puntos
    
cs_set_user_money(attackercs_get_user_money(attacker)+(cs_get_user_money(victim) + 1000)) //Sumamos 500 de dinero + el que tiene la victima
    
    
if(Puntos_Mejoras[victim][random(Num_Mejoras)] != NONE//Si el vajor random no es igual a 0 continua
        
Puntos_Mejoras[victim][random(Num_Mejoras)]-- //Restamos a la victima de una mejora cualquiera 1 punto
    
    
set_task(2.0,"respawn",victim//Hacemos que en 2.0 segundos se llame la funcion "respawn" para revivir a la victima
}

public 
client_putinserver(id//Cuando el usuario entra al servidor
{
    if (!
is_user_bot(id)) //Chequeamos que no sea un Bot
    
{
        
Puntos[id] = // 3 puntos gratis cuando entra al servidor
        
set_task(1.0"ShowHud"id__"b"// mostramos el hud cada 1 segundo de forma permanente
    
}
    else 
//En caso de que sea un Bot
    
{
            
        if (!
g_bot//En caso de que g_bot sea falso prosigue
            
set_task(0.1"habilitar_bots"id)//En 0.1 segundos se llama la funcion "habilitar_bots"
    
}
}

public 
ShowHud(id//Mostramos el Hud
{
    if(
is_user_alive(id)) //Si es un usuario vivo
    
{
        new 
Nombre[32//Variable en la cual guardamos el nombre del usuario
        
get_user_name(idNombre31// Obtenemos el nombre y lo guardamos en "Nombre"
            
set_hudmessage(002550.020.2506.012.0//Color, posicion, etc del Hud
        
show_hudmessage(id"Nombre: %s ^nVida: %d^nChaleco: %d^nGravedad: %d^nVelocidad: %d"Nombreget_user_health(id), get_user_armor(id), 
        
floatround(get_user_gravity(id))*800floatround(get_user_maxspeed(id))) // Mostramos el HUD
        
    
}
}

public 
clcmd_joinclass(id//Hook cuando elije una clase
{
    if(
is_user_alive(id)) //si el usuario esta vivo
        
return; //Retornamos
    
    
if(get_pcvar_num(cvar_respawn)) //Si obtiene un valor del cvar continua
        
set_task(2.0,"respawn",id//Hacemos que en 2.0 segundos llame la funcion "respawn"
}
    
public 
respawn(id//Funcion en la cual revivimos a los usuarios
{
    if(
cs_get_user_team(id) == CS_TEAM_SPECTATOR//Si el usuario es Espectador
        
return; //Retornamos
    
    
ExecuteHamB(Ham_CS_RoundRespawnid//Revivimos al usuario
}
    
    
public 
menu_mejoras(id)//Menu de las mejoras
{
    if (!
is_user_alive(id)) //Si no es un usuario vivo
        
return; //retornamos
    
    
static menu[128], len//Creamos variables estaticas
    
len 0     //Seteamos el valor de len en 0 sino la proxima vez que se llame al menu seguiria con 
        //el valor de la ultima vez que se utilizo devido a que las statics almacenan su valor en la memoria
    
len += formatex(menu[len], charsmax(menu) - len"\yMenu de Mejoras^n^n"//Agregamos el Menu
    
    
len += formatex(menu[len], charsmax(menu) - len"\rPuntos: %d^n"Puntos[id]) //Mostramos la cantidad de puntos que disponemos
    
    
for (0sizeof Mejorasi++)     //Hacemos un for para mostrar las opciones del menu   
    
{    
        if(
Puntos_Mejoras[id][i] < Mejoras_Max[i]) //Si el vamor de la mejora es menor que el maximo de las mejoras
            
len += formatex(menu[len], charsmax(menu) - len"\r%d. %s : \y%d^n"i+1Mejoras[i], Puntos_Mejoras[id][i]) //Muestra el menu correspondiente
        
else //En caso contrario
            
len += formatex(menu[len], charsmax(menu) - len"\r%d. %s : \dMAXIMO^n"i+1Mejoras[i], Puntos_Mejoras[id][i]) //Muestra el menu correspondiente
    
}
    
    
show_menu(idKEYSMENUmenu, -1"hmejoras"//Mandamos el valor del boton que apretemos a "hmejoras"
}

public 
h_mejoras(idkey//Aca agregamos los puntos y seteamos su mejora 

    if(!
is_user_alive(id)) //Si no es un usuario vivo 
        
return; //Retornamos 
    
if(Puntos[id] == 0//Si la cantidad de puntos que tenemos es igual a 0 
        
return; //Retornamos 
     
    
switch(key//Hacemos un switch con key para saber que boton preciono el usuario y aumentar su mejora 
    

        case 
0..3//En caso de que aprete del 1 al 4 
        

            if(
Puntos_Mejoras[id][key] < Mejoras_Max[key])//Si la cantidad de puntos que tenemos es menor que el maximo continuamos 
            

                
Puntos_Mejoras[id][key] ++ //Agregamos un punto a nuestra mejora 
                
Puntos[id] -- //Restamos 1 punto ya que lo gastamos 
                
switch(key
                { 
                    case 
0:set_user_health(idget_user_health(id) + Mejoras_Puntos[key]) //Le damos 10 mas de vida 
                    
case 1:set_user_armor(idget_user_armor(id) + Mejoras_Puntos[key]) //Le damos 10 mas de chaleco 
                    
case 2:set_user_gravity(idget_user_gravity(id) - (float(Puntos_Mejoras[id][key]) / Mejoras_Puntos[key])) //Le restamos 0.05 de gravedad 
                    
case 3:set_user_maxspeed(idget_user_maxspeed(id) + Mejoras_Puntos[key]) //Le aumentamos 5 de velocidad 
                

                
menu_mejoras(id//Mostramos el menu otra vez 
            

        }     
         
    } 
}

public 
habilitar_bots(id//Habilitamos para poder jugar con bots
{
        
    
RegisterHamFromEntity(Ham_Killedid"fw_PlayerKilled"//Registramos el forward del bot para poder jugar sin otras personas
            
    
    
g_bot true //Seteamos g_bot en true para que no vuelva a registrar el forward
    
    
if (!is_user_alive(id)) respawn(id//Si el bot no esta vivo lo revive

Attached Files
File Type: sma Get Plugin or Get Source (SimpleMod+Upgrades.sma - 985 views - 8.9 KB)
__________________

www.amxmodx-es.com

Steam: Luchokoldo

Last edited by rak; 01-04-2012 at 21:08.
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
shinoda
Spanish Moderator
Join Date: Nov 2009
Location: ag_crossfire
Old 01-02-2012 , 22:37   Re: [TUT]Mod simple con mejoras
#2

En fw_PlayerSpawn_Post deberías comprobar que el cliente está vivo.
En fw_PlayerKilled deberís comprobar que el atacante está conectado.

Quote:
me conviene ponerlo así?
Si creas un array para 10, 11, -0.05 y 5, sí.
__________________
Oh hell no this shit is awesome !!!
shinoda is offline
Send a message via MSN to shinoda Send a message via Skype™ to shinoda
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 01-03-2012 , 11:32   Re: [TUT]Mod simple con mejoras
#3

Quote:
Originally Posted by shinoda View Post
En fw_PlayerSpawn_Post deberías comprobar que el cliente está vivo.
En fw_PlayerKilled deberís comprobar que el atacante está conectado.


Si creas un array para 10, 11, -0.05 y 5, sí.
creo que en fw_PlayerSpawn_Post no es necesario comprobar si esta vivo, por que al registrarlo como "Post", por así decirlo, es cuando ya esta vivo
podrías comprobar si esta conectado, para que no mande logs.

PD: sorry si no se me entendió mucho, recuerdo que lo había leído en un post de este foro.
__________________
xLeoNNN is offline
Send a message via MSN to xLeoNNN
rubee
Senior Member
Join Date: Oct 2009
Location: party rocking
Old 01-03-2012 , 13:13   Re: [TUT]Mod simple con mejoras
#4

Quote:
Originally Posted by xLeoNNN View Post
creo que en fw_PlayerSpawn_Post no es necesario comprobar si esta vivo, por que al registrarlo como "Post", por así decirlo, es cuando ya esta vivo
podrías comprobar si esta conectado, para que no mande logs.

PD: sorry si no se me entendió mucho, recuerdo que lo había leído en un post de este foro.
https://forums.alliedmods.net/showpo...9&postcount=85
__________________


rubee is offline
xLeoNNN
Veteran Member
Join Date: Sep 2010
Location: de_dust2
Old 01-03-2012 , 14:09   Re: [TUT]Mod simple con mejoras
#5

Quote:
Originally Posted by rubee View Post
gracias, no lo había visto
__________________
xLeoNNN is offline
Send a message via MSN to xLeoNNN
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 01-04-2012 , 21:09   Re: [TUT]Mod simple con mejoras
#6

Quote:
Originally Posted by shinoda View Post
En fw_PlayerSpawn_Post deberías comprobar que el cliente está vivo.
En fw_PlayerKilled deberís comprobar que el atacante está conectado.


Si creas un array para 10, 11, -0.05 y 5, sí.
ahí agregue lo que me dijiste.. así esta mejor?..

tengo una duda muy grande... de donde sale el 11 que te señale?
__________________

www.amxmodx-es.com

Steam: Luchokoldo
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
shinoda
Spanish Moderator
Join Date: Nov 2009
Location: ag_crossfire
Old 01-06-2012 , 08:53   Re: [TUT]Mod simple con mejoras
#7

Quote:
Originally Posted by rak View Post
ahí agregue lo que me dijiste.. así esta mejor?..

tengo una duda muy grande... de donde sale el 11 que te señale?
Debí haber visto mal
__________________
Oh hell no this shit is awesome !!!
shinoda is offline
Send a message via MSN to shinoda Send a message via Skype™ to shinoda
 



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 23:06.


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