chrisarteaga23
Usuario (El Salvador)

Bueno amigos aqui les traigo este post esperando les guste despues les traere los siguientes nivelesIntroducciónHacia rato que no creaba ningun tutorial, y tenia ganas de aportar con algo nuevo y util, asi que se me ocurrio hacer este tutorial.Bueno en este tutorial, voy a tratar de ayudar a los mas nuevos a dar sus primeros pasos con este lenguaje de programacion de scripts llamado pawn. Y a aquellos que saben un poco, a que sigan aprendiendo cosas nuevas, o a recordar cosas que se habian olvidado.Este tutorial va a ir desde lo mas basico, hasta cosas un avanzadas. Y el objetivo no es otro que no sea aprender.Espero que les sirva y cualquier error q cometa, haganmelo saber, ya que todos siempre estamos aprendiendo algo y nos podemos equivocar.Forma de usoPrimero, antes que se manden a empezar a leer, quiero aclarar, que este tutorial esta dividido en 3 niveles: Nivel Basico/Nulo, Medio y Avanzado. Cada nivel consta con conocimientos a corde al nivel propuesto, pero les suguiero a aquellos que no han leido demasiado sobre pawn, que lean desde el principio, aun que tengan los conocimientos, porque lo que se dice en el nivel basico, se da por entendido en los demas niveles y asi.Segundo, lo ideal para que fijen bien los conocimientos sobre este tutorial, seria que cuando aprenden algo nuevo, lo prueben y si no lo terminan de entender o no les sale cuando lo practican, paren y piensen a ver que puede estar mal y si es necesario pregunten y luego cuando lo tengan bien claro, sigan.Nivel: Basico/NuloVariables y ArraysPrimeros pasos con variables y arrays¿Qué es una variable?La respuesta es muy simple:Una variable es un pedacito de memoria que se reserva para el programa durante la ejecución del mismo, para almacenar informacion, que luego usara.Para definir una variable en pawn, la forma mas simple es utilizar "new" y se utiliza de la siguiente forma.pawn Code:new MiVariable;Esa sentencia define "MiVariable" como una variable de tipo entero (en ingles integer).¿Qué es un tag, y cuales de variables existen?Un tag es un pedacito de codigo, que aAsignacion la hora de compilar, brinda informacion extra sobre la variable que definimos.Tags:Float => almacena numeros enteros y numeros con coma.File => almacena el handle de un archivo abierto. (no se preocupen de que es un handle, luego lo explicare).Bool => almacena true o false, verdadero o falso.Integer => almacena numeros enteros.¿Cómo definimos una variable con un tag?Para definir una variable de tag float o file, lo vamos a hacer de la siguiente forma:pawn Code:new tag:Nombre;Ejemplos:·float:pawn Code:new Float:MiFloat;·file:pawn Code:new File:MiFile;·bool:pawn Code:new bool:MyBool;·integer:pawn Code:new MiInteger;Ahora, posiblemente se esten preguntando "¿Por qué no se utiliza integer:nombre?", esto es porque pawn por defecto, si no se le especifica, define las variables como integers.¿Qué es un array?Para simplificarlo, un array es lo mismo que una variable, pero puede contener una mayor cantidad de datos, en vez de solo 1.¿Cuales son los tags de los arrays?Los mismos tags que tienen las variables, y se los especifica de igual forma. "tag:nombre".¿Cómo defino un array?La forma de definir un array es muy sensilla, de hecho es = que definir una variable, exepto que tiene una diferencia.pawn Code:new MiArray[4];Como pueden ver, solo varia ; en este caso, n=4.¿Qué representa "n"? n representa el tamaño de ese array.!Importante: A la hora de definir un array, debemos tener en cuenta, que este nunca puede tomar el valor de la definicion.Ejemplo:pawn Code:new Array[5];Array[5] = 4;//esto causara un error, dado que el index maximo de Array es 4.Ahora que mas o menos tenemos idea de como se declara una variable y un array, veremos otras formas de declararlos.Tipos de variables/arrays:Estos metodos se aplican tanto para variables como para arrays, asi q los mezclare para variar un poco.Existen 4 tipos, de los cuales ahora veremos los dos mas faciles de aprender.LocalDefinición:Solo puede ser utilizada dentro del entorno en el cual es declarada(ej: Callbacks, funciones, etc). Para declarar una variable/array de este tipo, la declaracion debe ser realizada dentro del entorno en el que se decea usar la variable/array.Ejemplificacion:pawn Code:public OnPlayerConnect(playerid){ new str[36+MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];//declaracion del array local GetPlayerName(playerid, name, sizeof(name)); format(str, sizeof(str), ">>%s(%i) ha ingresado en el servidor", name, playerid); SendClientMessageToAll(0xFFFF00FF, str); return 1;}GlobalDefinición:Puede ser utilizada en todo el proyecto. Para declarar una variable/array de este tipo, debe declararse fuera de cualquier funcion o callback.Ejemplificacion:pawn Code:new Connected[MAX_PLAYERS];public OnPlayerConnect(playerid){ Connected[playerid] = true; return 1;}public OnPlayerDisconnect(playerid, reason){ Connected[playerid] = false; return 1;}!Importante: Tenemos que tener en cuenta, que cuando declaramos una variable/array tanto local, la variable existe dentro de los espacios inferiores, pero no en los superiores.ejemplo:pawn Code:MyFuncion(){ new var1; for(new i; i<5; i++){ //var1 todabia existe. new var2; printf("%i", var2); var2++; //var2 todabia existe } //var1, todabia existe, pero var2 no existe}//var1 no existe.[/color]Ahora que ya sabemos que es una variable, un array y como definirlos. iremos con otro tema.OperadoresOperadores simples¿Qué es un operador?Un operador es un simbolo que se utiliza en expreciones, o bien para realizar una accion.¿Cuáles son los Operadores?Aritmeticos:·A + B=> Retorna la suma de A y B.·A - B=>Retorna la resta de A y B.·A * B=> Retorna la multiplicacion de A y B.·A / B=> Retorna la division de A y B.·A % B=> Retorna el resto de la division de A y B.Asignacion:·A = B => Asigna a A el valor de B.·A ++ => Asigna a A el resultado de A+1.·A -- => Asigna a A el resultado de A-1.·A += B=> Asigna a A el resultado de A+B.·A -= B=>Asigna a A el resultado de A-B.·A *= B=> Asigna a A el resultado de A*B.·A /= B=> Asigna a A el resultado de A/B.·A %= B=>Asigna a A el resto de A/B.Racionales(numericos):·A == B=> Retorna "true" si A=B, de lo contrario retorna "false".·A != B=> Retorna "false" si A=B, de lo contrario retorna "true".·A < B => Retorna "true" si A<B, de lo contrario retorna "false".·A > B => Retorna "true" si A>B, de lo contrario retorna "false".·A <= B=>Retorna "true" si A<=B, de lo contrario retorna "false".·A >= B=> Retorna "true" si A>=B, de lo contrario retorna "false".Racionales(booleans):·!B => Retorna "true" si B=false, de lo contrario retorna "false".·A || B=>Retorna "true" si A=true o B=true, de lo contrario retorna "false".·A && B=> Retorna "true" si A=true y B=true, de lo contrario retorna "false".Micelaneos:·([]) => Se utiliza para la declaracion de arrays.Expreciones¿Qué es una expreción?Una exprecion es una convinacion de variables/arrays, funciones, que son evaluadas segun los parametros indicados. (si no entienden, no se preocupen, luego entenderan)¿Cuáles son las expreciones que existen y cómo se utilizan?Existen 16 expreciones, pero ahora solo veremos algunas. Mas adelante veremos las demas.ifEs una de las expreciones mas importantes, se utiliza para comparar, y segun el resultado de la comparacion, se realiza o no una determinada accion.Ejemplo1:pawn Code:public OnPlayerConnect(playerid){ new rnd = random(2); if(rnd = 0)SendClientMessage(playerid, 0x00FF00FF, "Bienvenido al servidor"; return 1;}Ejemplo2:pawn Code:public OnPlayerConnect(playerid){ new rnd = random(2); if(rnd = 0){ SendClientMessage(playerid, 0xFF0000FF, "Fuera de mi servidor"; Kick(playerid); } return 1;}!Importante: Cuando el codigo a ejecutar si la comparacion es verdadera es de 1 linea o 1 sentencia (ejemplo1), no es necesario usar brackets, de lo contrario estos se deben colocar(ejemplo2).elseEs al igual que if una de las expreciones mas importantes, y tambien una de las mas utilizadas. Su uso consiste en el opuesto de if oEjemplo:pawn Code:Estado(playerid){ if(IsPlayerConnected(playerid)){ printf("El jugador %i esta conectado", playerid); return 1; } else{ printf("El jugador %i esta desconectado", playerid); return 0; }}assertEs similar a if, pero si es falso, entonces retorna(fin del callback/funcion)Ejemplo:pawn Code:public OnFilterScriptInit(){ new num = 5; assert(num>0); printf("%i", num); return 1;}En el ejemplo dado, si la variable num es > 0 entonces escribira el valor de num en la consola, de lo contrario retornana.returnSe utiliza para retornar un valor de una funcion/callback, o bien para salir (de la)/(del) misma/oEjemplo:pawn Code:IsValidPlayer(playerid){ if(playerid==INVALID_PLAYER_ID || !IsPlayerConnected(playerid))return false; return true;}Caracteres EspecialesScript·() =>Indica que la linea actual, sigue en la de abajo.·(=>Fin de sentencia.este post lo encontre por eso solo puse el nivel basico aqui les dejo el link esperando les guste y dejen sus comentarios