Veteran Member
Join Date: Oct 2011
Location: banned country
|
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 = 0 //Constante con valor 0
new const Mejoras[Num_Mejoras][] = { "Vida", "Chaleco", "Gravedad", "Velocidad"}; //_Nombre de las mejoras
new const Mejoras_Max[Num_Mejoras] = { 15, 30, 6, 10 } //Maximo de las mejoras
new const Mejoras_Puntos[Num_Mejoras] = { 10, 10, 20, 5 } // 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(PLUGIN, VERSION, AUTHOR) //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(0, print_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(id, get_user_health(id) + (Puntos_Mejoras[id][VIDA] * Mejoras_Puntos[VIDA])) // Obtenemos la vida del usuario y le agregamos la mejora
set_user_armor(id, get_user_armor(id) + (Puntos_Mejoras[id][CHALECO]*Mejoras_Puntos[CHALECO])) // Obtenemos el chaleco del usuario y le agregamos la mejora
set_user_gravity(id, get_user_gravity(id) - (float(Puntos_Mejoras[id][GRAVEDAD]) / Mejoras_Puntos[GRAVEDAD])) // Obtenemos la gravedad del usuario y le agregamos la mejora
set_user_maxspeed(id, get_user_maxspeed(id) + (Puntos_Mejoras[id][VELOCIDAD]* Mejoras_Puntos[VELOCIDAD])) // Obtenemos la velocidad del usuario y le agregamos la mejora
}
public fw_PlayerKilled(victim, attacker, shouldgib) // 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(attacker, cs_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 // 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(id, Nombre, 31) // Obtenemos el nombre y lo guardamos en "Nombre"
set_hudmessage(0, 0, 255, 0.02, 0.25, 0, 6.0, 12.0) //Color, posicion, etc del Hud
show_hudmessage(id, "Nombre: %s ^nVida: %d^nChaleco: %d^nGravedad: %d^nVelocidad: %d", Nombre, get_user_health(id), get_user_armor(id),
floatround(get_user_gravity(id))*800, floatround(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_RoundRespawn, id) //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, i //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 (i = 0; i < sizeof Mejoras; i++) //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+1, Mejoras[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+1, Mejoras[i], Puntos_Mejoras[id][i]) //Muestra el menu correspondiente
}
show_menu(id, KEYSMENU, menu, -1, "hmejoras") //Mandamos el valor del boton que apretemos a "hmejoras"
}
public h_mejoras(id, key) //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(id, get_user_health(id) + Mejoras_Puntos[key]) //Le damos 10 mas de vida
case 1:set_user_armor(id, get_user_armor(id) + Mejoras_Puntos[key]) //Le damos 10 mas de chaleco
case 2:set_user_gravity(id, get_user_gravity(id) - (float(Puntos_Mejoras[id][key]) / Mejoras_Puntos[key])) //Le restamos 0.05 de gravedad
case 3:set_user_maxspeed(id, get_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_Killed, id, "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
}
__________________
Last edited by rak; 01-04-2012 at 21:08.
|
|