PROLOGO: Ya se que el 90% (como minimo) no va a entender ni m**rda de lo que voy a postear, pero si para algun interesado de aprender a crear plugins no entiende esto, que mejor no intente seguir con esto porque es lo mas basico que debes saber y entender.
---------------
Ahora si:
Este tutorial va dirigido especialmente a las personas que quieren empezar a hacer plugins pero no tienen idea de ABSOLUTAMENTE NADA.
---------------
Ahora si:
Este tutorial va dirigido especialmente a las personas que quieren empezar a hacer plugins pero no tienen idea de ABSOLUTAMENTE NADA.
- Código:
/*---------------------------------------------------------
------ INFORMACION ---------------------------------
Tutorial basico de Scripting v0.2
Copyright (C) 2011 por AfteR ##, Lima, Perú
Este tutorial esta dedicado hacia aquellas personas
interesadas en lo que es el manejo del amxmodx (plugin del
metamod), en especial el tema de hacer plugins.
Este tutorial consiste basicamente en la introduccion a
la construccion de plugins paso por paso (solo las
cosas basicas).
-----------------------------------------------------------*/
/*----------------------------------------------------------
Comenzemos //////////
Para empezar a hacer plugins necesitamos, en primer lugar,
definir las librerias que contienen las funciones (natives,
forwards, stocks, entre otras cosas) para usarlas en
nuestros plugins.
Por ejemplo, si queremos modificar la vida a un jugador
necesitaremos la libreria <fun>,<fakemeta> o <engine> ;
si queremos cambiar a alguien de equipo la libreria
<cstrike>.
¿Por que esas librerias? Porque son esas librerias las
que contienen el "codigo" necesario para hacer lo que
queramos hacer.
Las librerias las pueden ver en la ruta:
addons/amxmodx/scripting/include
En este tutorial, pondre 3 ejemplos usando natives basicas
para hacer plugins. El primero consistira en
cambiar la vida a un jugador; el segundo consistira en
cambiar al jugador de equipo y el tercero consistira en hacer
que el servidor ejecute o cambie algun comando.
-----------------------------------------------------------*/
/*----------------------------------------------------------
1.- Librerias //////////
Como dijimos anteriormente, necesitamos definir las
librerias. Para esto, al inicio de cada linea escribimos:
#include <libreria a definir>
En este caso necesitamos 3 librerias:
1.- amxmodx: Esta libreria es BASICA para que nuestros plugins
compilen. No hace falta mayor explicacion.
2.- fun: Esta libreria contiene la native (llamese funcion)
necesaria para cambiarle la vida a un jugador.
3.- cstrike: Esta libreria contiene la native necesaria para
cambiar de team al jugador.
Ahora, las definimos:
-----------------------------------------------------------*/
#include <amxmodx>
#include <fun>
#include <cstrike>
/*----------------------------------------------------------
2.- Inicio y registro del Plugin //////////
Ahora lo que sigue es declarar todas las cosas que usara nuestro plugin:
eventos, comandos, cvars, entre otras cosas. Para esto necesitamos de la
forwad "plugin_init()"
Ahora lo que sigue es registrar el plugin (Esto es opcional, el
plugin no afecta su rendimiento si no lo registramos).
Para esto, necesitamos de la siguiente funcion con su respectiva
sintaxis:
register_plugin("Nombre del Plugin" , "Version" , "Autor")
-----------------------------------------------------------*/
// Escribimos "public" porque es una funcion publica
public plugin_init()
{
// Registramos: Nombre Version Autor
register_plugin("Tutorial Basico", "0.2", "AfteR #")
/*----------------------------------------------------------
3.- Registrando Comandos //////////
Para registrar comandos basicamente necesitamos de la siguiente
native con la siguiente sintaxis:
register_clcmd("comando" , "funcion")
De esta forma, "comando" sera lo que el player necesite escribir
para que la "funcion" sea llamda.
Por ejemplo, registremos un comando para que cuando un player
diga "/vida", se llame una funcion (el nombre de la funcion
puede ser el que queramos), la cual le cambiara la vida.
Registremos:
-----------------------------------------------------------*/
register_clcmd( "say /vida" , "DarVida" )
// Ahora registremos otro comando para cambiar a alguien de team.
register_clcmd( "say /spec" , "ChangeTeam" )
// Y final otro comando para hacer que el server ejecute un comando
register_clcmd( "say rr" , "Restart" )
}
/*----------------------------------------------------------
4.- Activando los comandos //////////
Ahora lo que sigue sera ejecutar los comandos mencionados
anteriormente: "DarVida" , "ChangeTeam" y "Restart"
Como todas estas funciones son publicas necesitamos
escribir la palabra "public" antes de la funcion.
Al ejecutar una funcion deberemos abrir llaves, y lo que
escribamos debajo de las llaves sera ejecutado en la funcion.
Cuando acabemos de escribir lo que haga nuestra funcion
debemos cerrar con llaves.
Hagamoslo:
-----------------------------------------------------------*/
// Le ponemos el (id) porque la vida se le va a dar a un jugador determinado
// con su propio id.
public DarVida(id)
{ // Abrimos llaves
/*------
Para cambiar la vida a un jugador necesitaremos de la siguiente native:
set_user_health( id , vida )
Donde el "id" refiere al jugador objetivo y "vida" refiere a la vida que
le pondremos.
Asi, cambiemos la vida actual por, por ejemplo, 200 de vida:
------*/
set_user_health( id, 200 )
}
// Cerramos llaves
// Ahora vayamos a la otra funcion:
public ChangeTeam(id)
{ // LLaves
/*------
Para cambiar de Team a un jugador necesitaremos de la siguiente native:
cs_set_user_team(id, equipo)
Donde el id refiere nuevamente al jugador objetivo e equipo refiere al
team. Podemos elegir entre estos 3:
CS_TEAM_CT
CS_TEAM_T
CS_TEAM_SPECTATOR
Por otra parte, tambien existe CS_TEAM_UNASSIGNED, pero no nos sirve para
este caso.
Para evitar posibles bugs, sera mejor que antes de cambiarle de Team al
player hagamos que muera con la funcion:
user_kill(id , 1)
Donde el id ya sabemos que es y el 1 significa que la muerte no se considerara
un suicidio.
Despues de eso ya podremos cambiarle de team.
------*/
// Primero hacemos que muera
user_kill(id , 1)
// Luego le cambiamos de Team
cs_set_user_team( id , CS_TEAM_SPECTATOR )
} // Llaves
// Y finalmente, la ultima funcion:
public Restart(id)
{
/*------
Para hacer que el server ejecute comandos necesitamos la siguiente native:
server_cmd("comando a ejecutar")
De esta forma, hagamos que al escribir /rr el servidor reinicie la ronda.
------*/
server_cmd("sv_restart 1")
}
/*----------------------------------------------------------
5.- Adicionales //////////
Para complementar este tutorial, recomiendo las siguientes paginas
las cuales les puede servir de referencia para hacer plugins ya que
ahi pueden encontrar varias natives, stocks, forwards y otras cosas
necesarias.
Para los que recien empiezan podrian leer las librerias <fun> y
<cstrike> (basicas).
http://www.amxmodx.org/doc/index.html?page=source/functions/index.htm
Y esta, para mayores cosas: Plugins, configs, compilacion, etc.
http://wiki.amxmodx.org/Category:Scripting_(AMX_Mod_X)
Esta es para que entiendan mas sobre lo que son las natives,
stocks, forwards (en INGLES):
http://wiki.amxmodx.org/Pawn_Tutorial
Finalmente, debo decir que es recomendable saber ingles para poder
programar :D
Copyright (C) 2011 por AfteR ##, Lima, Perú
-----------------------------------------------------------*/