El post que buscas se encuentra eliminado, pero este también te puede interesar

Crear plugins para CS 1.6 [Nivel novato]

Anuncios


•Hola taringueros aca les traigo una guia de como crear sus plugins para sus servidores de cs 1.6, ATENCION: esto es una guia para el nivel novato, esto es para aquellas personas que todavia no tienen experiencia en programacion y por eso les traigo esta guia•


Introduccion:

¿Que son los plugin?

Los pugins son unos archivos que utiliza el AMX para realizar tareas
Ej:
-Ejercer un comando a tal momento
-Eliminar algun archivo
-Leer un archivo
-Reaccionar al accionarse un comando
-Reproducir sonidos
-Dejar mensajes
-Realizar eventos (Los evntos serian cuando sucede algo en el cs, Ej : headshot)
-Kickear, banear, slapear automaticamente
-Volcacion de sangre
etc
¿que son?
Aunque no lo creas son como un *.txt , se lo habre con el block de notas...


Comenzar:
1°. No se crean que es facil, es algo complicado :S .

Entra a la carpeta C:Archivos de programaValvecstrikeaddonsamxmodxscripting y veráz archivos llamados:



admin.sma
adminvote.sma
adminchat.sma
adminhelp.sma
mapchopser.sma

Pueden abrirlos con el bloc de notas:


Si te sucede como ami que se ven unos cuadraritos negros y no se entiende nada podes aser lo siguiente.


1° . Seleccionar un cuadradito
2° . Presionar Ctrl + C
3° . Presiona F3 (debe aparecerte el buscador o sino aslo manualmente)
4° . En donde te deja escribir teclea Ctrl + V
5° . Poner buscar siguiente
6° . Salir del buscador
7° . vamos al principio del texto, que el | tambien se valla.
8° . Ahora aremos seguido F3 y Enter ,F3 y Enter ,F3 y Enter ,F3 y Enter ,F3 y Enter , ... no le erres a repetir , enter y enter , enter y F3 , porque despues puede no funcionar el plugin.



Ahora tenemos el ejemplo echo , con eso nos podremos guiar...

Les explico que significa la mayoria de las cosas:

Veran que al comienzo hay algo asi


/* AMX Mod script.
*
* (c) Copyright 2002-2003, OLO
* This file is provided as is (no warranties).
*
*/


Eso es el credito ... se pone "/*" al comienzo de cada credito y "*/" al final
Mas abajo se encontrara


#include <amxmod>
#include <amxmisc>
o solo
#include <amxmod>


#include: Si se fijan en C:Archivos de programaValvecstrikeaddonsamxmodxscriptinginclude habra unos archivos inc que tambien se abren con el block...
en este caso el #include <amxmod> esta queriendo incluir lo que tiene ese amxmod
ATENCION NUNCA MODIFICAR ESOS ARCHIVOS

Fijense el archivo admin ... lo usare como ejemplo para enseniales que hace cada unas de sus lineas.

:
#define MAX_ADMINS------------64


Define un numero con letras , en este caso es 64 , todo va con mayuscula


new admin_password[MAX_ADMINS][32]


aca utilizo el MAX_ADMINS , osea q podemos enves de new admin_password[MAX_ADMINS][32] podemos poner new admin_password[64][32]


esto de new crea un , un , un , un , como decirlo . Lo entenderan mas tarde pero les puedo explicar algo
El 64 son las cantidades de admins , como dije habia maximo
Quedaria dibidida en 64 partes y cada parte solo puede tener 32 caracteres ( letras , incluyendo los espacios)
por ahora no se le assigno nada al ,al ,al ,al ,al por ahora llamemola "linea nueva"


admin_password[0] no tiene nada
admin_password[1] no tiene nada
admin_password[2] no tiene nada
admin_password[3] no tiene nada

...


new admin_num = 0


Este solo tiene numero asignado , no tiene limite de caracteres ni tampoco se dibide ... esta "linea nueva" se puede sumar y restar

en otros casos hay lago asi:

new nuevalinea[32]


tiene de limite 32 caracteres, si queremos podemos a 33 o 34 o 35 y asi... o puede estar dividido en 32 partes

new nuevalinea[32] = {"Palabras1","Palabras2","Palabras3","Palabras4",y mas alla}


esta dibidida en 32 partes y cada una tiene accinada lo que esta en { } , Palabra1 pertenese a nuevalinea[0], palabra2 pertenece a nuevalinea[1] y asi ...
tambien se puede poner numeros pero no se le ponen comillas como
new nuevalinea[32] = {0,3,6,8,23,56,y asi}
y si queremos que toda la division tenga un mismo numero ponemos puntos suspenciovos
new nuevalinea[32] = {15,...}
ahora las 32 partes tienen un valor de 15


public admin_cmd(){


Como explicar eso... public seria digamos una parte del plugin XD , admin_cmd es como se llama ese public , los () son como un new que viene de otra parte del plugin que lo acciono , ese plugin tiene varios new y eso se envia a traves del () ...
LOS NEW QUE ESTAN DENTRO DEL PUBLIC SON SOLO DE AHI, NO SALEN A MENOS QUE LO MANDES POR ()...
el { significa que abre el ese public


----------------if (admin_num >= MAX_ADMINS){


Ahi dice que cuando el admin_num que nos acordamos que era 0 es mayor o igual a MAX_ADMIN que nos acordamos que MAX_ADMINS representaba el 64 se activara lo de abajo
If dice que cuando algo sea igual, mayo o menor pase lo que esta abajo que se lo habre con un {


--------------------------------server_print("Admins limit reached!"Crear plugins para CS 1.6 [Nivel novato]
Despues de que el admin_num fue mayor que 64, server_print muestra en la consola del server el mensaje que sigue ( se lo escribe en comillas porque si no lo hacemos el plugin lo tomara como una "linea nueva" , pero si es un numero no es necesario) ("Admins limit reached!"CS

--------------------------------return PLUGIN_HANDLED
Se detiene de leer , lo de abajo del public ya no cuenta...

----------------}
Esta cerrando el if que pusimos en esa coumna ... al que me refiero es el if (admin_num >= MAX_ADMINS){ osea que si el admin_num es menor q el MaX_ADMINS el se saltea esa parte hasta el } de esa columna

----------------new data[32]
Se creo una "linea nueva" del public , solo pertenece ahi!

----------------read_argv(1,admin_name[admin_num],31)
Lee el comando que se acciono...
el 1 representa el valor del comando ...
Si se fijan a lo ultimo del PLUGIN habra algo asi
register_srvcmd("amx_admin","admin_cmd"crear
cuando accione el "amx_admin" se acciona el public admin_cmd
yo acciono el amx_admin <y aca seria el read_argv(1>
read_argv(1,admin_name[admin_num],31)
admin_name[admin_num]
recuerdan la "linea nueva" admin_num que esta mas arriba , tiene valor 0
osea que quedaria
admin_name[0] le damos el valor de lo que se escribio despues del comando... osea
amx_admin "N050Tr05"
y el valor ahora de

admin_name[0] = N050Tr05

el 31 ese que esta ahi es el maxmimo de caracteres ... siempre pongan uno menos que el otro , 32 a 31 , 64 a 63 y asi

despues estan los otros de read_argv
es el que esta segundo en el comando
amx_admin N050Tr05 *******
Fijense que este read_argv ahora tiene un "2" despues ...


----------------admin_priv[admin_num] = read_flags(data)
recuerdan mas arriba la "linea nueva" que es new admin_priv[MAX_ADMINS], que es new admin_priv[64]...
para asignrle nu valor a esa lineanueva solo debemos poner el nombre:
admin_priv[admin_num] que si recuerdan admin num es 0 entonces seria
admin_priv[0]
el = le esta asignando lo que es read_flags(data)
read_flags(data) , lee la letra o letras que le pusimos . abcde , abc , bd , eso... y lo transforma en numero
a = 1 ... 2 a la 0 potencia (matematicas)
b = 2 ... 2 a la 1 potencia (matematicas)
c = 4 ... 2 a la 2 potencia (matematicas)
d = 8 ... 2 a la 3 potencia (matematicas)
e = 16 ... 2 a la 5 potencia (matematicas)
f = 32 ... 2 a la 6 potencia (matematicas)
g = 64 ... 2 a la 7 potencia (matematicas)
h = 128 ... 2 a la 8 potencia (matematicas)
i = 256 ... 2 a la 9 potencia (matematicas)
...

----------------admin_num++
Asignacion de una suma al admin_num
La suma es de 0 + 1...
entonces el admin_num ahora es 1 ... si se vuelve a accionar el amx_admin sera lo mismo solo que ahora el admin_priv[0] no sera 0 sino admin_priv[1] ... luego llegara al 64 y ahi si que es mayor q el MAX_ADMIN ... ok?...

----------------return PLUGIN_HANDLED
Cuando se ocupa una o mas veses en el public eso se pone return PLUGIN_HANDLED al final y despues e pone el } alado del margen para cerrar el plugin



----------------------------------------------------------------------------------------------------------------
Mas abajo esta get_access(id,name[],authid[],ip[], password[]){
fijense que no tiene public alado y tiene en el () palabras como les habia explicado ...

veran las "lineas nuevas"

estara algo asi
for(new i = 0; i < admin_num; ++i) {

eso quiere decir que se hace una lineanueva y se va comparando
quedaria
i = 0
se compara si i es menor que el admin num y si es asi se hace todo lo de abajo ocupando la i cuando se termina eso se suma esa i ... i = 0 , 0 + 1 = 1... ahora i vale 1 entonces se vuelve a comparar y si i es menor que la cantidad de admin se activa todo lo de abajo y cuando termina i se suma ... i = 1 ... 1 + 1= 2 ... ahora i vale 2 ... asi susesibamente y cuando i ya sea igual o mayor que admin_num ya la especie de public que no lo es se cierra


checka una mirada a include/amxcont.inc y busca FLAG_AUTHID ... el numero es algo asi (1<<2) ... en este caso es una c . si a nuestro admin le pusimos una C se activara lo siguiente

if (admin_flags & FLAG_AUTHID) {
mira mas arrba abiamos mostrado lo que era admin_flags ...
si admin_flag[0] (por ahora es 0)
a = (1<<0)
b = (1<<1)
c = (1<<2)
es igual a FLAG_AUTHID que FLAG_AUTHID es (1<<2) se activa lo de abajo y se sierra esa con el }

mas abajo esta
else if (admin_flags & FLAG_IP) {
que dice?
pero si admin_flag....
else significa PERO
osea que si se activo el IF de arrba no se puede activar ese if porque este es solo PERO

asi susesibamente


index = i
esta diciendo que el significado de index que mas arriba dice que vale -1 ahora vale i ... cuando vale i ? puede valer 0 , 1 ,2 ,etc


if (index != -1) {
Este no esta incluido con el for de arriba
Dice que si index NO ES IGUAL A -1 se abre lo de abajo


new sflags[32]
get_flags(admin_priv[index],sflags,31)
actuan juntos ... se creo una lineanueva y el valor de esa linea es de las letras que le dimos a nuestro admin (admin_priv[index] (index es igual al valor de i y i es el numer0 de admin))...sflags no va entre comillas porque es una nuevalinea

result |= 8
no entendi ... sorry

log_to_file(logfilename,"Login: ^"%s<%d><%s><>^" become an admin (account ^"%s^"plugins (access ^"%s^"server. (address ^"%s^"kaalo",name,get_user_userid(id),authid,admin_name[index] ,sflags,ip)

graba en amx/logs lo siguiente Login: "%s<%d><%s><>" become an admin (account "%s"Crear plugins para CS 1.6 [Nivel novato] (access "%s"CS (address "%s"crear
que es %s? ... eso es un valor que dice por ahi ese ",name" el primer %s va con el primer con coma , el segundo que es un %d va con get_user_userid(id) .... porque %d? ... se usa %d para las lineasnuevas que se dividen , tambien se ocupa para la userid
^ ¿que es el ^?
este esta junto a la " ... ^"
cuando queremos poner por ejemplo

bind 2 "spk "hello men""
queremos que las comillas verdes sean parte del spk pero solo queda
bind 2 "spk " hello men""

el rojo con el rojo y el verde con el verde
en el amx funcionaria (como ejemplo , no lo vallan a intentar) bind 2 "spk ^"hello men^""

el verde abarca el spk y el rojo abarca el bind....

en este caso se remplaza el ^" se lo toma como "



new defaccess[32]
get_cvar_string("amx_default_access",defaccess,31)
Checka el cvar amx_default_access y le da el valor al defaccess


BAMOS AL SIGUIENTE PUBLIC

new result = get_access(id,username,userauthid,userip,password)

¿que es get_access?
fijense arriba .. el que estubimos biendo , el que no tiene public , se llama get_access y lleva (id,name[],authid[],ip[], password[]) como el get_access(id,username,userauthid,userip,password)... se traslado las nuevaslineas al otro ...
esto debe ser asi ... el get_access checka todo eso y el result son las flags que le pusimos a nuestro admin

ya me estoy cansando asi que aca llegue ... este fue un ejemplo para que se guien mas o menos como se hace un plugin del amx ... yo lo tube que descubrir yo solito plugins... si tienen el sma para hacer hagan lo siguiente:
1° . Creen una carpeta que se llame como quieran y ahi manden todos los sma de ejemplos...
2° . El suyo dejen lo en examples
3° . Mandar el sc.exe . Cual de todos? . el que tiene esa tuerquita
4° . Mirar los errores que aparecen . Te dice que renglon fue ... te lo dice entre parentecis ... por ej
MIPLU~1.SMA(28) : .... el numero ese es el renglon en el que esta el error.





ESPERO QUE LES SIRVA Y QUE DEJEN SUS PUNTITOS


P.D: donde estan todas las caritas. tienen que remplazarlo por el codigo que hace las caritas, yo no lo puse separado por que tenia que hacer mucho trabajo u.u


SALUDOS!

Anuncios

2 comentarios - Crear plugins para CS 1.6 [Nivel novato]

@N1ck54
muy bueno estaria copado que agregues el codigo para hacer que los plugins funcionen con amx_off