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

Como crear plugins para cs 1.6! [Nivel Novato]

Anuncios

Guia: Como crearse su propio plugin [NIVEL NOVATO]
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...

Requisitos:
Los requisitos dependerian de la cantidad de plugins o q cantidad contiene el plugin ... yo tengo una memoria de 120 MB y si lo lanzo a internet me da 300 latency por ahi XD ... claro q si tienes de 256 o 512 o tansolo juegas por LAN esto no es un problema.
Otra cosa que se necesita es tener el block de notas o algo que lea .txt q no sea el Microsoft word.

Que me debo bajar:
Nada de nada (amenos q sea el Block de notas XD)
Debes tener el AMXMOD
Si recuerdas donde instalaste el AMX , en el caso general de el winzip lo pudiste haber descomprimido en unnziped/amx , adento de la carpeta de AMX tiene q haber una karpeta llamada "examples". Si no la tienes bajate el amx de nuevo

Comenzar:
1°. No creas q esto es sensillo , es un poco complicado

Entra a la carpeta de EXAMPLES y veráz archivos llamados:
admin.sma
adminvote.sma
adminchat.sma
adminhelp.sma
mapchopser.sma

puedes abrirlos con el block de notas.
Si te sucede como ami q 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 N05 podremos guiar...

Les dare que sigunifica 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 (lo que no se es si es necesario los * en la parte de adentro XD)

Mas abajo se encontrara
#include <amxmod>
#include <amxmisc>
o solo
#include <amxmod>

#include: Si se fijan en examples/include 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 q hace cada unas de sus lienas

:
#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"
osea que el
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!"
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!"

--------------------------------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"
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^" (access ^"%s^" (address ^"%s^"",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" (access "%s" (address "%s"
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 ... 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

!!!!!!!!!!!!!!!!!!!!!
Comentar es comentar
Agradecer es Agradecer
Ayudar es Ayudar
Postear es Postear
!!!!!!!!!!!!!!!!!!
Dejen sus comentarios
Entra si queres sali con coments

Anuncios

Comentarios Destacados

zurdhito +54
no lo entindo una verga

35 comentarios - Como crear plugins para cs 1.6! [Nivel Novato]

Brucewils +1
Viejo, cuanto me cobras por editar un plugins pero para Half Life es en serio!
zurdhito +54
no lo entindo una verga
__DG__ -4
The_Number_Of_The_Beast una cosita -....

&quot;192&quot; Es Ip De lan por lo cual es solo para red local nadie va a poder entrar a tu server... lo que tenes que hacer es abrir los puertos para que cambie de 192 a 190.xxx.xxx.xxx o descargarte el NO-IP


PUNCHI_DIEGO +2
muy bueno el POST (los amargos que putean, no les agas caso) yo te dejo unos 10
gregory7397 -5
si me haces un plugin te pago xD
Gadwym +3
No Entendi Muy Bien , Pero Quiero aprender a hacer Plugins y soy
medio novato , asi qe me ensenias ? ...
Mandame MP porfa y van +10
yonatan07II +1
Cuanto me cobras por plugin?
Tambien tengo unos para modificar...
Lanzamos SV y bueno queremos eso xD
Dracoelcapo123
yonatan07II dijo:Cuanto me cobras por plugin?
Tambien tengo unos para modificar...
Lanzamos SV y bueno queremos eso xD

xD, por todos los post q paso tenes q estar con tu coment jajajajja
lucho96lucho
che cuchame, si me haces o me explicas como hacer un plugin para agregar armas en ves de remplazar +10
mi msn: gianlucaperuzzo@hotmail.com
decime el tuyo asi te acepto cualqier cosa
_KiilleR_
wuen posttttttttttttttttttttttttttttttt
kiloa -1
buen post voy a tratar de modificar algunos plug y crear otros, igual te dejo +10 y si podes mandame por mp si me podrias ayudar abrazo y buen aporte.
MuFenrrir -1
quiero ahcer un mod para jugar carreras
MOSCA_60 -1
Te la re sabes loko! sos un genio! +10
Mr73X -2
zurdhito dijo:no lo entindo una verga


Cirius2 dijo:muy mierda


no tiene otra coas que aser, no ?
SpowneD +1
no entendi nada pero te dejo +10 se ve esfuerzo. a menos q sea copy paste y te rompo la jeta, porque mis 10 valen oro.
MANDRAKER2 +1
xD si todavia estas vivo respondeme esta pregunta plz
como creo un plugin para modificar el daño de las armas?
+10 si respondes
joex09
Esta bien pero falta organizar y antes que nada, abrirlo con notepad? no esta el amx studio digo no?

Despues esta bien pero faltaria organizacion porque uno q no sabe nada entra y no entiende un sorongo :c
BmPegare +1
Muy buen post capo... segui haci, te dejo lo pocos puntos que tengo (5) U_U cuando tenga mas te los dejo genio!
jarapunk1993
que complicado men me hubiese gustado que lo hicieras con imagenes pero igual grax
cachi93
che capo entendi poco y nada...yo tengo una pregunta...yo tengo un plugin que el bunny y lo tengo para todos los del server como hago para que este y varios mas de los que tengo solo los pueda usar yo ah y como cambiar la maera de abrirlos ejemplo en el sv lo usa cualquiera porq no pone nada... yo quiero q para abrirlo tenga q poner /bunny...
desde ya agradesco!
ianotero18
que quilombo es mas facil acer un script del samp que acer un plugin del counter pense que era lo mismo bueno gracias igual lo voy a intentar te dejaria puntos pero no tengo xD
jeremania
Esto tiene mucha sintaxis de c#, estoy aprendiendo c# y me re sirve programar el amx mod como práctica.
Te dejo mi msn followmmee@hotmail.com me interesaria que me agregues para seguir aprendiendo un poco más!
joselovarhas
Oye amigo, a mi me salen tambien letras raras ejm: Ê ³ | XC no hay problema con el plugiin si salen esas letras, es que he intentado colocar plugins en mi servidor dedicado y no sirve, y los hago correctamente pero no funcionan
Xp4nd3R
Un flaco que pone "dibididos" con "b" te enseña a crear un plugin para el cs 1.6
Muy groso.
Xp4nd3R
El código es muy parecido al Php, si vas a enseñar a hacer un plugin, al menos deberías poner lo básico del php, los arrays , a usar los switch , while , do , for , for each, si enseñas así la gente no va a entender nada.
Dracoelcapo123
El post lo hice cuando tenía la edad de once años.
Ahora soy programador PHP Junior, y no es de mi interés en este momento que aprendan Pawn/AMXX.
Playbook
@Dracoelcapo123 Asi son los NFU, una vez que dejan de ser novatos se cagan en los demás
Dracoelcapo123
@Playbook Perdón, me llego la notificación y creí que era mio el post.
De hecho, ya no me interesa el scripting en Half-Life, el que desee puede buscar manuales en Internet, Taringa se pudrió, no vale la pena aportar cosas ya que no agradecen y no muchos le dan bola.