Introducción a la programación en Argentum Online parte 1
Introducción a la programación en Argentum online (parte 1):
Muchas veces los jugadores de AO a lo largo de su vida se habrán planteado -casi sin excepción- la idea de modificar un servidor. Algunos aprenden a mapear, con el world editor, pudiendo rápidamente ver resultados, o a indexar y datear, metiendo nuevos npcs al juego, pero llega un punto en el que cualquiera que se plantee desarrollar un servidor, se encuentra cara a cara con vb6, un lenguaje viejo, sin mucha presentación y un código de argentum que básicamente carece en su totalidad de documentación, tutoriales de aprendizaje o información pública sobre su funcionamiento. A raíz de esta necesidad de modificar el juego por más allá de los mapas o los gráficos el desarrollador de AO si o si se topa con visual basic, lo abre, y si no tuvo previa interacción con la progamación, ve chino básico y lo cierra.
Hacer código en visual basic no es difícil, pero para poder empezar a programar Argentum, primero tenemos que saber lo básico de programación.
¿Qué es un código?
El código en si solo son instrucciones cuidadosamente ordenadas, y claro, ahora te estarás preguntando, ¿cómo podría aprender todas las instrucciones que el juego utiliza? Por suerte estas instrucciones son de libre construcción, no son una serie de "comandos" o "palabras clave" que al ser invocadas hagan todo el trabajo mágicamente.
¿Qué quiere decir "Las instrucciones son de libre construcción"?
En si, cualquier parte del código del juego, usa la sintaxis de vb6 para armar estructuras lógicas que toman decisiones y llevan a cabo diferentes tareas necesarias. En visual basic 6, la forma mas común de "Tomar una decisión" es usando la estructura: "IF".
¿Cómo funciona una estructura "IF"?
El condicional "IF" se usa para hacer preguntas o "checkeos" sobre información. Su estructura contiene, por lo general, dos partes: Un "If then" y un "End if".
Por ejemplo:
En la programación rara vez hacemos este tipo de preguntas, ya que todos sabemos de antemano cuanto es 1 + 1, siempre va a ser 2. Pero a veces no sabemos el valor de una variable, pero...
¿Qué es una variable?
Una variable es simplemente un lugar donde guardamos datos, podrían imaginarlo como una caja donde vamos a meter contenido, es decir: Información.
Pero hay un pequeño problema, y es que hay muchos tipos de variables, por ejemplo, no es lo mismo un número entero, como 16, que una frase, como "Taller de programación.", es por esto que existe una distinción a la hora de crear una variable, es decir a la hora de "Declarar la variable". Tenemos diferentes tipos de datos, para las diferentes necesidades que presenten nuestras variables.
Los mas comunes son:
*Integer: Números enteros de -32.768 a 32.767 (Como la cantidad de mana que consume un hechizo)
*String: Palabras, símbolos, números no operables (cadenas de caracteres, de ahí el nombre en ingles, string: cadena, como el nick de un usuario)
*Boolean: Verdadero / falso (Solo acepta esos dos estados, true o false, como -Navegando- variable que usamos para checkear si el usuario esta navegando o no)
La sintaxis para la declaración (creación) de una variable es diferente según el alcance que queremos darle a la misma, si queremos que la variable se use a nivel global podemos usar "Public" (Global era la forma de vb5, pero se admite también en vb6), si queremos que la variable se use a nivel modular podemos usar "Private", si queremos que la variable se use a nivel procedural podemos usar "Dim".
Por ejemplo:
¿Qué significa global, modular y procedural?
El código en vb6 se separa en diferentes módulos, que a su vez tienen dentro diferentes procedimientos.
Si queremos declarar una variable de tipo boolean a nivel global, haríamos algo como:
Public Nombre as boolean
Donde nombre es el nombre que le pongamos a la variable. Si quisiéramos declarar una de tipo string para usar solamente en el procedimiento actual, haríamos algo como:
Dim Nombre as string
Si queremos usar la variable boolean, podemos usarla desde un modulo diferente al modulo en el que está declarada, en cambio la de tipo string, solo nos servirá en el procedimiento donde se declaró.
¿Qué es un procedimiento?
Un procedimiento es una serie de instrucciones hablando exacto, pero en vb6 se podría decir que tenemos dos tipos diferentes de procedimientos: los "Subs" y las "Function", son los bloques de código que componen los módulos y se diferencian por algo clave, los subs se usan para correr una serie de instrucciones mientras que las funciones, si bien también corren una serie de instrucciones, devuelven un valor tras haberlo hecho. Las funciones y subs pueden ser tanto públicas (para todo el código) como privadas (a nivel modular), y se declaran de la siguiente forma:
Alcance, nombre, parámetros de entrada. (subs)
Alcance, nombre, parámetros de entrada, tipo del dato que devuelve (function)
La sintaxis sería:
En ambos casos al procedimiento le entra un solo parámetro de tipo integer, es decir un numero entero de -32k a 32k, pero la diferencia es que la función devuelve un valor como respuesta, también de tipo integer en este caso.
Sintaxis en los parámetros de entrada:
(Byval Nombre as tipo) // (ByRef Nombre as tipo)
Byval significa "paso de argumentos por valor" y ByRef "paso de argumentos por referencia", lo que nosotros metamos por referencia va a tomar el valor que se le de en el procedimiento, en cambio lo que metamos por valor va a funcionar a nivel local en el procedimiento, sin modificar el valor que ingresó originalmente. Entonces, si una función es un procedimiento que devuelve un valor... ¿Qué diferencia hay entre hacer una función y hacer un sub con un parámetro byref que se modifique en el código del procedimiento afectando el valor que ingreso?
A nivel práctico ninguna, aunque si queremos devolver mas de un valor, es mas cómodo usar byref, mientras que si queremos devolver uno solo, es mas fácil usar function.
Redactado por Inti Berdes para "Taller de programación orientado a Argentum", 24/8/2021, parte 1 de la introducción.
Cualquier duda o consulta por favor dejen en los comentarios que respondemos a la brevedad!
ResponderEliminarhola cómo va nesesitaria unos tips para empezar a crear un ao desde.
ResponderEliminarDisculpa la demora en la respuesta, espero que te hayas podido contactar por otro medio, vamos a estar subiendo contenido para las clases sobre programación al blog durante este mes y el próximo.
Eliminar