SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Español/Spanish > Lanzamientos/Releases

 
 
Thread Tools Display Modes
Old 23/02/2010, 05:17 AM   #1
TheChaoz
High-roller
 
TheChaoz's Avatar
 
Join Date: Dec 2009
Location: Argentina
Posts: 4,656
Reputation: 239
Default Tutorial basico para los mas nuevos

Bueno he visto varios usuarios nuevos que intentan iniciarse en este lenguaje llamado pawn, asi que decidi hacer un tutorial basico sobre: includes, callbacks, funciones, operadores, variables, arrays y controladores.


Includes

Los includes son archivos que contienen clmandos, generalmente funciones, que nos permiten realizar acciones, que sin los includes no podriamos.
para poder utilizar las funciones de un include debemos hacer 2 cosas:
1º copiar el include a la carpeta de los includes de nuestro pawno.
2º dentro de nuestro script, al inicio del mismo ponemos el siguiente codigo:
pawn Code:
#include <nuestroinclude>  //donde nuestroinclude sera el nombre del include que queramos.
una vez hecho esto ya podemos utilizar libremente las funciones que trae nuestro include.

Nota: si alguna vez al compilar obtenemos un error similar al que muestro acontunuacion, significa que o no emos copiado el include a la carpeta de nuestro pawno, o bien que emos introducido mal su nombre en nuestro scrip
Code:
fatal error 100: cannot read from file: "include"

Callbacks

Los Callbacks son como los eventos, cuando algo pasa aparece se llama al callback. Para explicarlo mejor aca les doy un ejemplo. Cuando un jugador se conecta, "aparece" el callback OnPlayerConnect(playerid), el cual indica que el jugador se conecta.
Los callbacks pueden ser las que vienen con el script o sea las prediseñadas o bien podemos crear nuestros propios callbacks, para cosas especiales.
Dentro de los callbacks se usan funciones para realizar cosas especificas, ya sea leer un archivo o enviarle un mensaje a un jugador.

Nota: Si en nuestro script a un callback le ponemos return 0, y un script carga posteriormente, este callback no sera cargado.
Callbacks


Funciones

Las funciones, como su nombre nos lo indica son utilizadas para realizar acciones. Estas generalmente realizar una accion que afecta a un jugador.
Al igual que los callbacks, las funciones pueden ser bien las que nos brinda el servidor de samp por defecto, o bien podemos crear nuestras propias funciones, para facilitarnos una tarea.
Generalmente las funciones poseen parametros, los cuales definen por ejemplo al jugador que se le aplicara esa funcion. Por ejemplo: SendClientMessage(playerid, 0xFF0000AA, "Mensaje al jugador");
en este caso los parametros serian (playerid, color, mensaje) , donde playerid representa la id del jugador, y el resto se entiende.

Funciones


Operadores

Los operadores se utilizar para comprar,sumar,restar,multiplicar,etc.
= (para definir que una variable por ej. es igual a 3)
- resta
+ suma
/= divide
* = multiplica
== igual (para una comparacion)
!= distinto
< menor
> mayou
<= menor o igual
>= mayor o igual
-= decrece el valo en
+= incrementa el valor en
-- decrece el valor en 1
++ incrementa el valor en 1


Variables

Las variables se utilizan para almasenar datos, que como su nombre lo indica no son constantes.
Pare definir una variable se utiliza la sentencia:
pawn Code:
new mivariable;
Estas variables pueden ser muy utiles a la hora de enviar mensajes, guardar informacion, o en la aplicacion de comandos. Por defecto el valor de una variable es 0.
Cuando queremos definir varias variables, no es necesario poner un new por cada nueva variable, simplemente podemos hacer algo asi:
pawn Code:
new variable1, variable2, variable3;
una funcion muy util es format, esta nos permite ingresar datos en una variable. Sus parametros son:
Code:
format(output[], len, const format[], Float...)
donde output[] representa la variable donde ingresaremos los datos, len representa el tamaño de la misma, const format[] representa el formato de la variable, y por ultimo Float... representa los datos que ingresaremos.
Aqui un ejemplo muy basico:
pawn Code:
public OnPlayerConnect(playerid)
{
  new variable[32];
  format(variable, 32, "Hola, tu id de jugador es: %d", playerid);
  SendClientMessage(playerid, 0xFF0000AA, variable);
}
para usar el format debemos conocer que tipo de dato vamos a ingresar.
y para ello se usan:
%b para ingresar un numero binario
%c para ingresar un unico caracter
%d para ingresar un numero entero
%f para ingresar un numero con coma
%i para ingresar un numero entero
%s para ingresar una cadena, como por ejemplo un texto
%x para ingresar un numero hexadecimal
%% para ingresar literalmente el signo %

Nota: Si al definir una variable, lo hacemos dentro de un callback o funcion, entonces solo dicho callback/funcion podra utilizar esta variable, de lo contrario la variable sera global y podra ser utilizada por todo el script.


Arrays

Un array es una variable que contiene un valor para cada solt x asi decirlo.
por ejemplo:
pawn Code:
new array[2];
  array[0] = 3;
  array[1] = 10;
En este simple ejemplo creamos un array con 2 solts, e introducimos al solt 0 el valor 3 y al segundo el valor 10.
Los arrays son muy utiles a la hora de almacenar un dato para cada jugador. (se suele utilizar miarray[MAX_PLAYERS]);

Nota: Al igual que las variables, tambien hay arrays globales y no globales.


Controladores

Se utilizan para comprar, y realizar una accion si determinada condicion se cumple. Dentro de estos podemos encontrar:

IF
La sentencia if se utiliza para comprarar datos, ya sea fijos o variables, y si la condicion impuesta se cumple entonces realizar una accion.
Ejemplo:
pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
  new interior;
  interior = GetPlayerInterior(killerid);
  if(interior != 0)
  {
    SendClientMessage(killerid, 0xFF0000AA, "Advertencia: No mates en interiores o seras kickeado");
  }
  return 1;
}
En este sensillo ejemplo si el jugador que mata, se encuentra en un interior, entonces le envia un mensaje de advertencia.

ELSE
La sentencia else se utiliza para la opcion restante.
pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
  new interior;
  interior = GetPlayerInterior(killerid);
  if(interior != 0)
  {
    SendClientMessage(killerid, 0xFF0000AA, "Advertencia: No mates en interiores o seras kickeado");
  }
  else
  {
    SendClientMessage(killerid, 0xF6F600F6, "Server: Gracias por no matar en interiores");
  }
  return 1;
}
en este ejemplo, muy similar al del if, agregamos la sentencia else, de modo que si el jugador no se encuenta en ningun interior le mande un mensaje.

Nota: La sentencia else puede convinarse con la sentencia if.

FOR
Esta sentencia se utiliza para realizar un bucle, o ciclo.
Veamoslo mejor con un ejemplo:
pawn Code:
for(new i=0; i<10, i++)
{
  printf("%d", i);  
}
Lo que este ejemplo hace es escribir en la consola de comandos el valor de i.
resultado:
Code:
0
1
2
3
4
5
6
7
8
9
CASE
Esta sentencia se utiliza para seleccionar un caso entre varios, para evitar el uso repetitivo de "else if".
Veamos un ejemplo:
pawn Code:
new var = 25;
switch(var)
{
  case 0: print("la variable var es igual a 0");
  case 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24: print("la variable var es par");
  case 1 .. 5: print("la variable esta entre 1 y 6");
}
Este simple codigo se explica por si solo.

estos son los "Controladores" mas usados.
Si quieres ver todos puedes ir aqui

Para mas informacion acerca de pawn puedes ver SAMP Wiki



Algunos comandos basicos

Los comandos que los jugadores tipean van en el callback OnPlayerCommandText.
Para la creacion de comandos se pueden usar varios metodos, pero en este caso utilizaremos strcmp.

aqui un ejemplo de como crear un comando de informacion:
pawn Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
  if(strcmp("/micomando", cmdtext, true) == 0){
    SendClientMessage(playerid, 0xF6F600F6, "Este es el mensaje de informacion 1");
    SendClientMessage(playerid, 0xF6F600F6, "Este es el mensaje de informacion 2");
    SendClientMessage(playerid, 0xF6F600F6, "Este es el mensaje de informacion 3");
    return 1;  //es muy importante dentro de nuestro comando escribir return 1 ya que si retorna el valor 0, no solo realizara lo que especifiquemos en el comando, si no que tambien enviara "Unknown Command" o el mensaje que hayamos modificado.
  }
  return 0;  //el return 0 indica que el comando no existe, y por defecto enviara al jugador un mensaje diciendo "Unknown Command", para cambiarlo solo deben poner SendClientMessage(playerid, color, "mensaje");
}

aqui un ejemplo de un teleport:
pawn Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
  if(strcmp("/miteleport", cmdtext, true) == 0){
    SetPlayerPos(playerid, 2023.5839, 1545.2329, 10.8205);
    SendClientMessage(playerid, 0xF6F600F6, "Has sido teleportado a lv");
    return 1;
  }
  return 0;
}

y por ultimo un ejemplo de como darle armas a un jugador:
pawn Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
  if(strcmp("/pistolas", cmdtext, true) == 0){
    GivePlayerWeapon(playerid, 22, 1000);
    SendClientMessage(playerid, COLOR_AMARILLO, "Has obtenido un par de pistolas.");
    return 1;
  }
  return 0;
}

Espero que les sirva el tutorial, cualquier duda que tengan avisen y tratare de ayudarlos.

PD: Disculpen mis errores de ortografia, pero no soy bueno en eso xD
__________________

Last edited by TheChaoz; 31/01/2014 at 02:43 PM.
TheChaoz is offline  
Old 23/02/2010, 05:21 AM   #2
elvago
Gangsta
 
elvago's Avatar
 
Join Date: Jan 2009
Location: 127.0.0.1
Posts: 511
Reputation: 0
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

Bien ahí !
__________________

Todo termina...
Playing Summoners War [Global Server]. (IGN: zTyLe) Ch: 106

Im still here, but, u can't see me.
elvago is offline  
Old 23/02/2010, 08:56 AM   #3
kikosalaz
Little Clucker
 
Join Date: Nov 2009
Posts: 39
Reputation: 0
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

muy bueno, facil, simple y entendible 5/5
kikosalaz is offline  
Old 23/02/2010, 11:44 AM   #4
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

Muy bueno para los nuevos! :P
__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
Old 23/02/2010, 03:41 PM   #5
Zamaroht
High-roller
 
Zamaroht's Avatar
 
Join Date: Jan 2007
Location: Argentina
Posts: 1,200
Reputation: 71
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

Muy bueno, pero hay una cosa que está mal :P

Quote:
Originally Posted by the_chaoz
pawn Code:
public OnPlayerConnect(playerid)
{
  new variable;
  format(variable, sizeof(variable), "Hola, tu id de jugador es: %d", playerid);
  SendClientMessage(playerid, 0xFF0000AA, variable);
}
variable debería ser una array. También a partir de eso se puede explicar que las strings siempre tienen que ser arrays para almacenar un caracter en cada slot. Por lo demás, muy bien
__________________
Zamaroht is offline  
Old 23/02/2010, 04:06 PM   #6
TheChaoz
High-roller
 
TheChaoz's Avatar
 
Join Date: Dec 2009
Location: Argentina
Posts: 4,656
Reputation: 239
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

Quote:
Originally Posted by Zamaroht
Muy bueno, pero hay una cosa que está mal :P

Quote:
Originally Posted by the_chaoz
pawn Code:
public OnPlayerConnect(playerid)
{
  new variable;
  format(variable, sizeof(variable), "Hola, tu id de jugador es: %d", playerid);
  SendClientMessage(playerid, 0xFF0000AA, variable);
}
variable debería ser una array. También a partir de eso se puede explicar que las strings siempre tienen que ser arrays para almacenar un caracter en cada slot. Por lo demás, muy bien
si se me paso
tendria que ser
pawn Code:
new variable[128]
__________________
TheChaoz is offline  
Old 23/02/2010, 04:08 PM   #7
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

Quote:
Originally Posted by the_chaoz
Quote:
Originally Posted by Zamaroht
Muy bueno, pero hay una cosa que está mal :P

Quote:
Originally Posted by the_chaoz
pawn Code:
public OnPlayerConnect(playerid)
{
  new variable;
  format(variable, sizeof(variable), "Hola, tu id de jugador es: %d", playerid);
  SendClientMessage(playerid, 0xFF0000AA, variable);
}
variable debería ser una array. También a partir de eso se puede explicar que las strings siempre tienen que ser arrays para almacenar un caracter en cada slot. Por lo demás, muy bien
si se me paso
tendria que ser
pawn Code:
new variable[128]
generalmente es poner un array[caracteres exactos] se ahorrarian mucho en el rendimiento.
__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
Old 23/02/2010, 04:19 PM   #8
Miguel
High-roller
 
Miguel's Avatar
 
Join Date: Dec 2009
Posts: 1,574
Reputation: 50
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

Por ejemplo, si tenemos una variable/array con 10 slots, se puede leer asi:
pawn Code:
new variable[10];
// las "x" representaran los slots vacios y un espacio al final sera el inutilizado pero necesario
"xxxxxxxxx " // por ahora esta vacia pero... le podemos dar valor a cada uno de esos slots
// la primera x es el slot 0, la segunda el 1, y asi en adelante.
variable[3] = 3; // esto nos dara como resultado "xxx3xxxxx " (recordando que las equis no tienen nada)
// en el caso de un array tenemos slots, tanto horizontalmente como verticalmente:
variable[10][10]; // 10 x 10 = 100 (son cien slots)

>>>>>>>>> horizontalmente(>)
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v verticalmente (v)

// por lo que si:
variable[5][6] = 7; // la linea 6 de la columna 5 será 7

>>>>>>>>> // horizontalmente(>)
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v
xxxxxx7xx v // <<<<<<<<<<<<<<<<<< ALLI!!!!!!!!!
xxxxxxxxx v
xxxxxxxxx v
xxxxxxxxx v // verticalmente (v)
Solo hay que recordar que los ceros cuentan y que el ultimo número o slot siempre es vacio y necesario.
Miguel is offline  
Old 29/03/2010, 01:50 PM   #9
CristianTdj
High-roller
 
CristianTdj's Avatar
 
Join Date: Jul 2009
Location: Andalucía, Spain.
Posts: 1,320
Reputation: 5
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

Yo sigo sin entender lo que es un array.
__________________

CristianTdj is offline  
Old 29/03/2010, 05:04 PM   #10
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: [TUTORIAL]Tutorial basico para los mas nuevos

Quote:
Originally Posted by CristianTdj
Yo sigo sin entender lo que es un array.
un arreglo donde se guardan los datos.Que luego se toman
__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[DUV] Alguem Tem Um Tutorial Basico Pra Criar UM GM? gabrielbnv Português/Portuguese 5 07/04/2010 08:50 PM


All times are GMT. The time now is 03:06 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.