P: ї Quй es una librerнa ?Basado en el tutorial de The_Chaoz pero ordenado y un poco mas explicado
R: Es un archivo donde se definen las funciones a usarse en el script, si no ponemos una libreria en nuestro script serб imposible programar algo
P: ї Cуmo se usa ?
R: Mirar el siguiente ejemplo
pawn Код:#include <a_samp>
P: ї Quй es un callback ?
Callbacks
R: Es un evento y este es llamado cuando sucede algun suceso importante en el servidor, por ejemplo cuando un jugador se conecta, muere, aparece o se va del servidor, entre otras, al decir este es llamado quiero decir que todo lo que estй adentro de los { } del callback se ejecutara cuando el jugador haga lo que el evento indique
P: ї Cуmo se usa ?
R: Mirar el siguiente ejemploP: ї Cuбntos callbacks existen ?
pawn Код:#include <a_samp>
public OnPlayerConnect(playerid)
{
SendClientMessageToAll(-1, "Un jugador se ha conectado al servidor");
return 1;
}
R: Existe una gran multitud de callbacks, aquн podrбs encontrar una lista con sus respectivos ejemplos https://sampwiki.blast.hk/wiki/Category:Scripting_Callbacks
P: ї Quй significa "playerid" ?
R: playerid es un parametro, esto es una especie de variable que contiene el id del jugador que provocу que el evento sea llamado, con "playerid" podrбs identificar que usuario provoco la ejecucion del evento, con playerid podrбs realizar acciones sobre el jugador como enviarle un mensaje, quitarle/darle vida, ponerle una animacion, obtener y/o cambiarle el nombre, expulsarlo, prohibir su entrada entre otras
P: ї Quй es una funciуn ?
Funciones
R: La misma pregunta lo responde, es una accion realizada x script y esta hace cambios tanto al servidor como al jugar, como cambiar el nombre de un jugador, matarlo/quitarle/darle vida, darle/quitarle/resetearle el dinero ( plata ), enviarle mensajes mendiante el chat y cambios al servidor como cerrarlo, reiniciarlo, cambiar el "hostname" ( titulo del servidor que aparece en la ventana de SA-MP ), ponerle contraseсa entre otras..
P: ї Cуmo sй cuantas funciones existen y como las uso ?
R: Hay una GRAN cantidad de funciones, podrбs encontrar una lista aquн con sus respectivos ejemplos https://sampwiki.blast.hk/wiki/Category:Scripting_Functions
P: ї Quй son las variables y como las uso ?
Variables
R: Las variables es un espacio reservado en la memoria cuyo espacio es nombrado por ti mismo para poder acceder a ella facilmente y sirve para guardar valores como numericos
P: ї Cуmo creo una variable ?
R: Para crear una nueva variable es necesario poner "new" y luego el nombre que le deseas otorgar
Ejemplo:No es necesario poner new antes de cada variable, puedes crear multiples variables poniendo , al final en vez de ; y en la ultima variable es necesario poner el ;
pawn Код:new variable;
Ejemplo:
Tipos de variables
pawn Код:new variable, variable2, variable3;
- Integers: Sirven para almacenar numeros SIN decimales, Ejemplo:
pawn Код:new year = 2012;- Flotantes: Sirven para almacenar numeros con decimales, Ejemplo:
pawn Код:new Float:PI = 3.141592653589;- String: Mбs bien dicho son "arrays" pero se les llaman string por que string proviene del ingles y en espaсol significa cadena, les llaman string por que se estan refiriendo a que almanecaran una "cadena de texto" Ejemplo:
pawn Код:new cadena[5] = "Hola"; // Contiene espacio para 4 caracteres y el caracter nulo " \0 " que marca el fin de la cadena
- Formateando cadenas de texto ( uso de format )
pawn Код:new string[128]; // Tiene como limite 128 caracteres ya que SendClientMessage no admite mбs de 128, usar mas es inecesario y perdida de espacio, tenemos que acostumbrarnos a usar 128
new name[24]; // Tiene limite de 24 ya que es largo maximo de un nombre en SA-MP
GetPlayerName(playerid, name, 24); // Almacenar el nombre de "playerid" en "name"
format(string, 128, "Hola %s, bienvenido al tutorial",name); // Usamos %s para integrar una cadena de texto
SendClientMessage(playerid, 0xFFFFFFFF, string); // Enviar al playerid el mensaje contenido en "string" con el color "0xFFFFFFFF"- Aquн estб una lista de los especificadores usados en format
Espicificador Remplazado por Ejemplo %s Cadena de texto Jovanny %d / %i Numero 2012 %x Hexadecimal 0xFF00FFFF %f Numero Flotante 3.141592653589 %c Caractere 'e' %% Inserta el signo % % %b Numero Binario 11111011100 - Otro ejemplo de format
pawn Код:new string[128];
new name[24];
GetPlayerName(playerid, name, 24);
format(string, 128, "Hola %s, tu id es %d",name, playerid);
SendClientMessage(playerid, 0xFFFFFFFF, string);
Operadores
- Los operadores se usan principalmente en variables y en sentencias "if", "while", "for", aquн esta una lista y unos ejemplos
Operador Accion = Para darle un nuevo valor a una variable - Restar + Sumar / Divide * Multiplica ++ Aumenta el valor de la variable en 1 -- Disminuye el valor de la variable en 1 -= Disminuye el valor especificado a una variable += Aumenta el valor especificado a una variable == Usado para comparar si 2 variables son iguales != Usado para comprobar si 2 variables son distintas < Usado para comprobar si una variable es menor que otra > Usado para comprobar si una variable es mayor que otra <= Comprueba para comprobar si una variable es menor o igual que otra >= Comprueba si una variable es mayor o igual que otra - Operador ' = '
pawn Код:public OnFilterScriptInit()
{
// Operador ' = '
new var1; // Iniciamos la variable con valor de 0, no esta escrito pero esta implicito, significa que toda variable SIEMPRE se inicia con el valor de 0
printf(" var1: %d", var1); // Imprimimos en la consola el valor de var1
var1 = 14; // Le seteamos el nuevo valor, ahora tiene un valor de 14
printf(" var1: %d", var1); // Imprimimos el nuevo valor de var1
}- Operador ' - '
pawn Код:public OnFilterScriptInit()
{
// Operador ' - '
new var1 = 4, var2 = 2; // Iniciamos la variable 'var1' con valor de 4 y 'var2' con valor de 2
printf(" var1: %d", var1); // Imprimimos en la consola el valor de var1
var1 = var1-var2; // var1 es igual a var1 menos var2
printf(" var1: %d", var1); // Imprimimos el nuevo valor de var1
}- Operador ' / '
pawn Код:public OnFilterScriptInit()
{
// Operador ' / '
new var1 = 4, var2 = 2; // Iniciamos la variable 'var1' con valor de 4 y 'var2' con valor de 2
printf(" var1: %d", var1); // Imprimimos en la consola el valor de var1
var1 = var1/var2; // var1 es igual a var1 entre var2
printf(" var1: %d", var1); // Imprimimos el nuevo valor de var1
}- Operador ' * '
pawn Код:public OnFilterScriptInit()
{
// Operador ' * '
new var1 = 4, var2 = 2; // Iniciamos la variable 'var1' con valor de 4 y 'var2' con valor de 2
printf(" var1: %d", var1); // Imprimimos en la consola el valor de var1
var1 = var1*var2; // var1 es igual a var1 por var2
printf(" var1: %d", var1); // Imprimimos el nuevo valor de var1
}- Operador ' ++ '
pawn Код:public OnFilterScriptInit()
{
// Operador ' ++ '
new var1 = 4; // Iniciamos la variable 'var1' con valor de 4
printf(" var1: %d", var1); // Imprimimos en la consola el valor de var1
var1++; // incrementamos el valor de var1 en uno, ahora var1 tiene un valor de 5
printf(" var1: %d", var1); // Imprimimos el nuevo valor de var1
}- Operador ' -- '
pawn Код:public OnFilterScriptInit()
{
// Operador ' -- '
new var1 = 4; // Iniciamos la variable 'var1' con valor de 4
printf(" var1: %d", var1); // Imprimimos en la consola el valor de var1
var1--; // decrecemos el valor de var1 en uno, ahora var1 tiene un valor de 3
printf(" var1: %d", var1); // Imprimimos el nuevo valor de var1
}- Operador ' -= '
pawn Код:public OnFilterScriptInit()
{
// Operador ' -= '
new var1 = 4; // Iniciamos la variable 'var1' con valor de 4
printf(" var1: %d", var1); // Imprimimos en la consola el valor de var1
var1 -= 2; // decrecemos el valor de var1 en dos, ahora var1 tiene un valor de 2
printf(" var1: %d", var1); // Imprimimos el nuevo valor de var1
}- Operador ' += '
pawn Код:public OnFilterScriptInit()
{
// Operador ' += '
new var1 = 4; // Iniciamos la variable 'var1' con valor de 4
printf(" var1: %d", var1); // Imprimimos en la consola el valor de var1
var1 += 2; // incrementamos el valor de var1 en dos, ahora var1 tiene un valor de 6
printf(" var1: %d", var1); // Imprimimos el nuevo valor de var1
}- Operador ' == '
pawn Код:public OnFilterScriptInit()
{
// Operador ' == '
new var1 = 4, var2 = 4; // Iniciamos la variable 'var1' con valor de 4 y var2 con valor de 4
if(var1 == var2) // Si var1 es igual a var2 entonces..
{
print("var1 ES IGUAL a var2!!");
}
}- Operador ' != '
pawn Код:public OnFilterScriptInit()
{
// Operador ' != '
new var1 = 4, var2 = 8; // Iniciamos la variable 'var1' con valor de 4 y var2 con valor de 8
if(var1 != var2) // Si var1 es igual a var2 entonces..
{
print("var1 NO ES IGUAL a var2!!");
}
}- Operador ' < '
pawn Код:public OnFilterScriptInit()
{
// Operador ' < '
new var1 = 4, var2 = 8; // Iniciamos la variable 'var1' con valor de 4 y var2 con valor de 8
if(var1 < var2) // Si var1 es menor a var2 entonces..
{
print("var1 ES MENOR que var2!!");
}
}- Operador ' > '
pawn Код:public OnFilterScriptInit()
{
// Operador ' > '
new var1 = 8, var2 = 4; // Iniciamos la variable 'var1' con valor de 8 y var2 con valor de 4
if(var1 > var2) // Si var1 es menor a var2 entonces..
{
print("var1 ES MAYOR que var2!!");
}
}- Operador ' <= '
pawn Код:public OnFilterScriptInit()
{
// Operador ' <= '
new var1 = 4, var2 = 4; // Iniciamos la variable 'var1' con valor de 4 y var2 con valor de 4
if(var1 <= var2) // Si var1 es menor a var2 entonces..
{
print("var1 ES MENOR O IGUAL que var2!!");
}
}- Operador ' >= '
pawn Код:public OnFilterScriptInit()
{
// Operador ' >= '
new var1 = 4, var2 = 4; // Iniciamos la variable 'var1' con valor de 4 y var2 con valor de 4
if(var1 >= var2) // Si var1 es menor a var2 entonces..
{
print("var1 ES MAYOR O IGUAL que var2!!");
}
}
Controladores- IF, Ejemplo:
pawn Код:if(var1 == var2)print("var1 es igual a var2!");- switch, case, Ejemplo:
pawn Код:switch(var)
{
case 1: print("La variable es 1");
case 2..7: print("la variable esta entre 2 y 7");
case 8, 10, 34, 99: print("La variable es 8 o 10 o 34 o 99");
default: print("La variable no es ni 1, ni del 2 al 7, ni 8, 10, 34, 99, es un valor no aceptado en este switch");
}- for, Ejemplo:
pawn Код:for( new i; i<22; i++)
{
printf("I = %d", i);
}- else, Ejemplo:
pawn Код:if(var1 == 32)
{
}
else
{
print("var1 no es igual a 32");
}- while Ejemplo:
while significa "mientras" este se usa empleando los especificadores que usamos para "IF", anteriormente los puse en una tabla
Otro ejemplo con while, este es un codigo para dormir el script por el tiempo especificado, hay que tener cuidado donde usemos este script ya que detiene la ejecucion total del script, un while malformado tambiйn puede detener la ejecucion del script, uno malformado es poner una sentencia que nunca se va a cumplirpawn Код:new var1;
print("Mientras var1 no sea igual a 22 este while no se detendrб");
while(var1 != 22)
{
var1++; // Incrementando el valor de var1 para que este while se detenga
}
print("Var1 llego a 22 y el while se detuvo");
pawn Код:public OnFilterScriptInit()
{
print("Cargando script..");
new d = GetTickCount(),
tiempo = 6000;
while(GetTickCount()-d < tiempo){}
print("He dormido 6 segundos");
}
Comandos basicos
pawn Код:public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/tele",true) == 0)
{
SetPlayerPos(playerid, x, y, z);
SendClientMessage(playerid, -1, "Te has teletransportado ah ");
return 1;
}
if(strcmp(cmdtext, "/morir",true) == 0)
{
SetPlayerHealth(playerid, 0.0);
SendClientMessage(playerid, -1, "Te has matado ");
return 1;
}
if(strcmp(cmdtext, "/vida",true) == 0)
{
SetPlayerHealth(playerid, 100.0);
SendClientMessage(playerid, -1, "Te has curado ");
return 1;
}
if(strcmp(cmdtext, "/chaleco",true) == 0)
{
SetPlayerArmour(playerid, 100.0);
SendClientMessage(playerid, -1, "Te has dado chaleco ");
return 1;
}
if(strcmp(cmdtext, "/armas",true) == 0)
{
GivePlayerWeapon(playerid, WEAPON_AK47, 9999);
GivePlayerWeapon(playerid, WEAPON_MINIGUN, 9999);
GivePlayerWeapon(playerid, WEAPON_GRENADE, 9999);
SendClientMessage(playerid, -1, "Has obtenido un pack de armas");
return 1;
}
return 0;
}
En este caso, no nada mбs podemos usar funciones que previamente vienen declarados por el server, si no que nosotros tambiйn podemos crearlas.
Creando nuestras propias funciones
P: ї Cуmo ?
R: Primero empezamos declarando que parametros va a utilizar
Ejemplo:
En este caso esta funciуn NO TIENE PARAMETROS, ya que no es algo necesario en este caso
pawn Код:stock GetPlayersOnline()
{
new Online; // Iniciamos una variable tipo integer en 0
for(new i; i < GetMaxPlayers(); i++) // Recorremos los slots que tiene nuestro server
{
if(IsPlayerConnected(i)) // Si el player esta conectado..
{
Online++;// Aumentamos 1 a la variable "Online"
}
}
return Online; // Retornamos el valor de "Online"
}- Esta es una un poco mбs avanzada
pawn Код:stock CreateObjectOnPlayerPos(playerid, modelid) // Aquн estamos pidiendo que pongan el playerid del usuario al que quieren crearle un objeto en su posiciуn y el modelo del objeto que quiere que se le cree
{
new Float: X, Float: Y, Float: Z; // Creamos 3 variables con almacenamiento tipo Flotante
GetPlayerPos(playerid, X, Y, Z); // Almacenamos las coordenadas de "playerid" en las variables flotantes X, Y, Z
CreateObject(modelid, X, Y, Z, 0.0, 0.0, 0.0); // Creamos el objeto en las coordenadas de "playerid"
}- Otro ejemplo
En este caso significa que estamos pidiendo el playerid del usuario al que no le vamos enviar el mensaje, el color del mensaje y ovbiamente el mensaje a enviarles, si se dan cuenta he puesto [] despues de "mensaje" esto significa que estoy pidiendo una variable tipo string o mбs bien dicho, que estoy pidiendo un array..pawn Код:stock EnviarMensajeATodosExcepto(playerid, color, mensaje[])
{
for( new i; i<GetMaxPlayers(); i++) // Recorremos los slots que tiene nuestro server
{
if( i != playerid && IsPlayerConnected(i)) // Si i no es igual a playerid y si esta conectado entonces..
{
SendClientMessage(i, color, mensaje); // Entonces le enviamos el mensaje
}
}
}
Muy weno para los novatos como yo xd
P.D Deberнas agregar los valores de 'returns' en los comandos, ya que suele poner 'return 0;' |
ya existe esto https://sampforum.blast.hk/showthread.php?tid=129653 y encima del moderador es, ¬¬
PD: Aca No viene The Chaoz ? ¬¬ |
Basado en el tutorial de The_Chaoz pero ordenado y un poco mas explicado
|
ya existe esto https://sampforum.blast.hk/showthread.php?tid=129653 y encima del moderador es, ¬¬
PD: Aca No viene The Chaoz ? ¬¬ |
Basado en el tutorial de The_Chaoz pero ordenado y un poco mas explicado |
pero es lo ke me critica the chaoz, no kiere ke se repitan los tutoriales ¬¬ aunque tenga algo mejor explicado.
|
Originally Posted by Zamaroth
Si alguien postea algo que piensas que estб infringiendo alguna regla, repуrtalo, y no respondas al topic solo para decirlo.
|
Originally Posted by Zamaroth
No se permite el SPAM. Si no estбs agregando contenido ъtil a un tema, se considera spam.
|
pero es lo ke me critica the chaoz, no kiere ke se repitan los tutoriales ¬¬ aunque tenga algo mejor explicado.
|