Pokémon World
Site Map Page 1 - Generated by www.xml-sitemaps.com
Pokémon World
Navegación
Home
Contacto
Contactame
Scripts NetBattle
Como hacer scripts 1
Como hacer scripts 2
Mis Scripts de NetBattle
Pokemon Karaokemon
Episodios
Pokemon Getto Daze!
Comerciales
Curiosidades
Visitas
Afiliados
Galeria
Chat Xat
Chat chatango
Libro de visitantes
Descargas
Banner
Creacion de Banners
Juegos
Foro
Juega con nuestras Mascotas
Como hacer scripts 2
1ª Parte: EVENTOS (EVENTS) ============================================= Los bloques básicos del código del script están separados en Eventos. Esos bloques se ejecutarán cuando se realice la acción indicada en el Evento. Para que el código se active ANTES de que el evento ocurra, coloca un "-" antes del nombre del evento. Para que se active DESPUÉS, coloca un "+". Esta es la forma básica de escribirlo: Código 1: ----------------------------- Event {-|+}[NombredelEvento] [Código] EndEvent ----------------------------- Las entradas validas para [NombredelEvento] están en la Tabla 1. Lo que les sigue es una breve descripción de cada evento. Tabla 1: Nombre de cada evento ----------------------------- NombredelEvento | Descripción ServerStartup | Se activa al abrir el server. NewMessage | Se activa cuando llega un mensaje a la casilla de texto del server. ChatMessage | Se activa cuando un mensaje de chat es recibido. PlayerSignOn | Se activa cuando un jugador entra al server. PlayerSignOff | Se activa cuando un jugador sale del server. ChallengeIssued | Se activa cuando se pide una batalla. BattleBegin | Se activa cuando se empieza una batalla. BattleOver | Se activa cuando termina una batalla. PlayerKick | Se activa cuando un jugador es pateado (kick). PlayerBan | Se activa cuando un jugador es banneado (Ban). PlayerAway | Se activa cuando un jugador cambia su estado a NoDisponible(Away). TeamChange | Se activa cuando un jugador cambia sus Pokémon. Timer | Se explicará más adelante. ----------------------------- Aquí hay un ejemplo para apreciar mejor el uso de eventos: Ejemplo 1 ----------------------------- Event +PlayerSignOn [Código] EndEvent ----------------------------- En este ejemplo, el código escrito en [Código] se activará cada vez que un jugador entre al server, y se ejecutará luego de que el proceso de ingreso termine. Ahora, ¿Qué es lo que podemos poner en [Código]? Veamos. 2ª Parte: COMANDOS (COMMANDS) ============================================= Los comandos completan varias tareas por si mismos cuando se ejecutan. Sin embargo, la mayoría de los Comandos requieren cierto tipo de información adicional, llamada Argumentos. En la Lista 1, se muestra el comando con su(s) respectivo(s) argumento(s) (si lo tienen) y, en la siguiente línea, su descripción. Los argumentos precedidos por un "#" indican que su valor es numérico. Aquellos precedidos por un "$" indican un valor textual. Aquellos precedidos por un "!" indican que el valor del argumento puede ser tanto numérico como textual. Y finalmente, aquellos precedidos por un "@" indican una constante. Los Argumentos de un Comando van separados por comas. El texto, como valor de un argumento, SIEMPRE debe estar en comillas. El nombre que l leva cada argumento no es más que un ejemplo. El valor real se lo debes dar tú. Lista 1: Comandos ----------------------------- /? !Val ^^^Envía el valor de !Val a la casilla de texto del Server (Solo el dueño del server lo puede ver). /Clear ^^^Borra todo el texto en la casilla de texto del Server /SendPM #NºJugador, $Mensaje ^^^Envía el texto $Mensaje sólo al jugador con el número #NºJugador. Este comando NO ocupa la ventana de PMs (PM = Mensaje Privado (PrivateMessage)) sino que los manda a la ventana del Chat sin que los demás lo puedan ver. /SendAll $Mensaje ^^^Envía el texto $Mensaje a todos los jugadores conectados. /Kick #NºJugador ^^^Patea (desconecta) al jugador #NºJugador. /Ban #NºJugador ^^^Bannea el IP del jugador #NºJugador (agrega su IP a la lista de IPs banneados). /SIDBan #NºJugador ^^^Bannea la Identificación del jugador #PNum (agrega su SID (Station ID) a la lista de SIDs banneados). /TempBan #NºJugador ^^^Bannea al jugador #NºJugador durante 15 min. Durante ese tiempo, el ban no se puede quitar. /Run $Dirección ^^^Abre el programa ubicado en $Dirección (Ej:$Dirección = "C:WINDOWSNOTEPAD.EXE" abre el Bloc de Notas) /SaveValue $Key, !Val ^^^Guarda un valor en el Registro de Windows. Los usuarios avanzados lo pueden usar para extender el potencial de los scripts guardando registros de lo que deseen. Las "Keys" son guardadas en el directorio SaveSetting del Visual Basic en /NetBattle/Script Values/[$Key] (Key corresponde al nombre de la entrada de registro) /SetPlayerInfo #NºJugador, @Info, !NuevoValor ^^^Establece o cambia la información indicada de un Jugador como !NuevoValor. Solo algunos datos pueden ser cambiados. La lista de los valores validos para @Info se darán más adelante. /Set !Var, !Val ^^^ Se explicará más adelante. /Unset !Var ^^^ Se explicará más adelante. /Inc #Var, #Cantidad ^^^ Se explicará más adelante. /StopEvent ^^^Detiene el evento en ejecución. Se explicará en detalle más adelante. /Exit ^^^Interrumpe el script. Se explicará en detalle más adelante. ----------------------------- OK, ahora intentemos añadir un comando al ejemplo anterior. Este script se activará luego de que un jugador entre al server, y le mandará a todos los jugadores conectados este mensaje. Ejemplo 2 ----------------------------- Event +PlayerSignOn /SendAll "Todos ríanse del idiota que acaba de entrar!" EndEvent ----------------------------- Además de ser parte integral del script, los comandos también se pueden ocupar directamente en la casilla de texto del Server para ejecutar acciones inmediatas. 3ª Parte: VARIABLES ============================================= La mayoría de las veces, no querrás introducir un valor actual en el argumento de un comando. Esto es porque puedes necesitar diferentes argumentos en diferentes situaciones. Éste es el propósito de las variables. Las variables son marcas que guardan información para ser usada en varios lugares. Las variables son creadas con el comando /Set. Como se puede ver en la Lista 1, el comando /Set tiene 2 argumentos: !var y !val. El primer argumento es especial en el hecho de que NO PUEDE ser un simple valor numérico o de texto. Debe ser una variable. Si la variable no existe aún, el comando /Set la creará. De cualquier forma, el valor de !val será guardado en esa variable. Este argumento puede ser omitido, en cuyo caso tomará el valor 0 ó " ", dependiendo del tipo de variable. !val también puede ser una variable, si quieres establecer una variable con el mismo valor de otra. Hay 2 tipos de variables: variables de Texto y variables Numéricas. Cuando te estés refiriendo a una variable de texto, coloca un "$" antes de su nombre. Para una variable numérica, coloca un "#" antes de su nombre. Los nombres de las variables sólo deben contener letras. Puedes observar las variables y sus respectivos valores en la lengüeta "Variables" en la Script Window. También hay 3 variables especiales: #Source, #Target, y $Message. Estas variables siempre existen, incluso si no están en la lengüeta "Variables". Ellas cambian automáticamente dependiendo del evento. En la Tabla 2 se encuentra una lista de los valores de esas variables en cada evento. Si una variable aparece como N/A, esa variable es igual a 0 ó " " durante ese evento. Tabla 2: Variables Especiales --------------------------------------------------------------------------- Nombre del Evento | #Source | #Target | $Message ServerStartup | N/A | N/ A | N/A NewMessage | N/A | N/ A | [MensajeAñadido] ChatMessage |[QnEnviaElMsje]| N/ A |[Mensaje del Chat] PlayerSignOn | [Nº Jugador] | N/ A | N/A PlayerSignOff | [Nº Jugador] | N/ A | N/A ChallengeIssued | [Desafiante] | [Desafiado] | N/A BattleBegin | [Jugador 1] |[Jugador 2] | N/A BattleOver | [Ganador] | [Perdedor] | {"TIE"|"WIN"} PlayerKick | [QnPatea] |[Nºdel Pateado]| N/A PlayerBan | [QnBannea] | [NºdelBanneado]| N/A PlayerAway | [Nº Jugador] | N/ A | N/A TeamChange | [Nº Jugador] | N/ A | N/A Timer | N/A | N/ A | N/A --------------------------------------------------------------------------- NOTA: A partir de la versión 0.9.4, la variable $Message en el evento BattleOver debe llevar un "*" en ella para indicar cuando una batalla es Unrated (Ej: "WIN*" indica una victoria en una batalla Unrated) --------------------------------------------------------------------------- Entonces, agreguémosle algo más a nuestro ejemplo. El script en el ejemplo 3 usa el comando /SendPM en vez del /SendAll para enviar un mensaje SÓLO al nuevo jugador. Sin embargo, si recuerdas, /SendPM tiene 2 argumentos. El segundo argumento es el mensaje que será enviado. Ese es fácil de agregar, pero el primer argumento es el número del jugador al que se le envía el mensaje. Revisando la Tabla 2, podemos ver que el número de jugador que necesitamos está guardado en la variable #Source. Entonces, usamos #Source para el primer argumento, y nuestro mensaje para el segundo. El resultado es que, cuando un nuevo jugador entre al server, el mensaje "Bienvenido al Server!" será enviado sólo a ese jugador. Ejemplo 3 ----------------------------- Event +PlayerSignOn /SendPM #Source, "Bienvenido al Server!" EndEvent ----------------------------- También hay otros comandos que están relacionados con las variables. /Unset destruye una variable de la memoria. Éste no puede ser usado con las variables especiales. /Inc es un poco más complicado. /Inc tiene 2 argumentos; el primero debe ser una variable, o, siendo más específicos, una variable numérica. La variable es incrementada por el monto en el segundo argumento. Si el segundo argumento es omitido, tomará el valor 1. Para reducir una variable, simplemente usa un número negativo para el segundo argumento. Las variables proporcionan muchas opciones para personalizar tu server, pero necesitarás una herramienta más: 4ª Parte: FUNCIONES (FUNCTIONS) ============================================= Las funciones toman varios argumentos y devuelven un valor numérico o de texto. Las funciones pueden ser usadas en lugar de valores actuales para los argumentos de un comando, como también se pueden incluir en el argumento de otra función. Como las variables, las funciones que devuelven un número van precedidas por un "#" y aquellas que devuelven texto, por un "$". En la Lista 2 aparecen todas las funciones con sus respectivos argumentos, si los tiene, y en la línea siguiente su descripción. Lista 2: Funciones ----------------------------- #IsLoaded(#NºJugador) ^^^Devuelve 1 si el Nº de Jugador existe (Si el jugador está conectado). De otra forma, devuelve 0. $Name(#NºJugador) ^^^Devuelve el nombre de NºJugador. $Pokemon(#NºPKMN) ^^^Devuelve el nombre del pokemon cuyo número concuerda con el indicado en #NºPKMN #PNumber($NombreJugador) ^^^Devuelve el número del jugador con el nombre (más bien nick) $NombreJugador. Devuelve 0 si no se encuentra un jugador con ese nombre. #HasPoke(#NºJugador, #NºPKMN) ^^^Devuelve 1 si el Jugador NºJugador tiene el Pokémon con el número NºPKMN en su equipo. De otra forma devuelve 0. #HasPokeMove(#NºJugador, #NºPKMN, #NºAtaque) ^^^Devuelve 1 si el jugador NºJugador tiene el Pokémon con el número NºPKMN y además tiene el ataque NºAtaque en su equipo. De otra forma devuelve 0. #GetTeamPoke(#NºJugador, #Nº) ^^^Devuelve el número de PokéDex de un Pokémon en el equipo del jugador NºJugador. Los valores válidos para #Nº son del 1 al 6 según el puesto en el equipo del Pokémon que se quiere averiguar. #GetPlayerInfo(#NºJugador, @Info) ^^^Devuelve un dato específico de un jugador según el valor de @Info. (Sólo Numéricos) @Info es una constante; sus valores validos son: AUTH (Autoridad - 0 = Usuario, 1 = Mod, 2 = Admin) BWTH (Peleando con... - 0 si no está en batalla) SPED (Player Speed) HIDE (Equipo Oculto - 0 = Oculto, 1 = Sin Ocultar) WINS (Victorias) LOSE (Derrotas) TIES (Empates) DISC (Desconexiones en batalla) $GetPlayerInfo(#NºJugador, @Info) ^^^ Devuelve un dato específico de un jugador según el valor de @Info. (Sólo Texto) @Info es una constante; sus valores validos son: NAME (Nombre) IPAD (Dirección IP) PSID (Station ID) DNSA (Dirección DNS) EXTR (Información Extra) VERS (Versión de NetBattle) #GetCompat(#NºJugador) ^^^Revisa el equipo del jugador con el número #NºJugador y devuelve el número que corresponda con la compatibilidad de su equipo. Los valores que puede devolver son: 0 - Sólo RBY 1 - RBY con Intercambios 2 - Sólo GSC 3 - GSC con Intercambios 4 - Sólo R/S (PokéDex Hoenn) 5 - Full Advance #LineNum ^^^Devuelve el número de líneas de texto en la casilla principal de texto (la del server). #TrainersNum ^^^Devuelve el número de jugadores conectados #SysTimer ^^^Devuelve el número de segundos pasados desde la medianoche. $Time ^^^Devuelve la hora actual del computador del Server en el formato: HH:MM:SS AM/PM $Date ^^^Devuelve la fecha actual en el formato: MM/DD/YY $WeekDay ^^^Devuelve el día de la semana. $Month ^^^Devuelve el mes actual. #Rand(#LMaximo, #LMinimo) ^^^Devuelve un número entero al azar entre un límite mínimo (#LMinimo) y un límite máximo (#LMaximo), incluyendo a ambos. Si #LMinimo se omite, se parte desde 0. #RandPlayer ^^^Devuelve el número de un jugador al azar. Devuelve 0 si no hay jugadores conectados. #GetValue($Key) ^^^Devuelve el valor (Numérico) de una entrada ($Key) del Registro de Windows hecha con el comando /SaveValue. Ocurrirá un error si el valor no es un número. $GetValue($Key) ^^^Devuelve el valor (Texto) de una entrada ($Key) del Registro de Windows hecha con el comando /SaveValue. Si el valor es un número, será convertido a texto (Ej: 1 = "1"). $Msg(#Indice) ^^^Devuelve un mensaje predefinido, establecido en la ventana del script en la lengüeta "Messages". #MaxUsers ^^^Devuelve el máximo número de jugadores que pueden estar conectados al server. #FloodTol ^^^Devuelve la tolerancia de "Flood" del server. $WelcomeMsg ^^^Devuelve el mensaje de bienvenida del server. $Left($Texto, #Nº) ^^^Devuelve la cantidad especificada de letras desde la izquierda de $Texto (Ej: $Left("Gatito", 4) = "Gati"). $Right($Texto, #Nº) ^^^Devuelve la cantidad especificada de letras desde la derecha de $Texto (Ej: $Right("Gatito", 4) = "tito"). $Mid($Texto, #Inicio, #Longitud) ^^^Devuelve una porción del texto $Texto empezando desde la letra indicada en #Inicio hasta completar la cantidad de letras que se indica en #Longitud (Ej: $Mid("Gatito bonito", 3, 9) = "tito boni"). #IsIn($Texto, $Check, #Mayus) ^^^Revisa si $Check se encuentra en alguna parte de $Texto. Si es así, devuelve la distancia del inicio en la que se encuentra $Check (en caso de que haya otro igual). Sino, devuelve 0. #Mayus especifica si la revisión es o no sensible al uso de mayúsculas. 0=No SM, 1=SM (SM = Sensible a Mayúsculas). Si se omite, se toma "No SM" como el valor requerido (Ej: #IsIn("Gatito bonito", "ti", 0) = 3). #Len($Texto) ^^^Devuelve el número de letras en $Texto. $Replace $Texto, $Buscar, $Reemplazar ^^^Busca el texto $Buscar en $Texto y lo reemplaza por $Reemplazar. Devuelve el resultado. $LCase($Texto) ^^^Cambia todas las letras de $Texto a minúsculas. $UCase($Texto) ^^^Cambia todas las letras de $Texto a mayúsculas. $Chr(#Código) ^^^Devuelve el símbolo indicado por #Código según el código ASCII. Los valores válidos para #Code van de 0 a 255. NOTA: $Chr(1) está reservado para el uso del sistema. Si tratas de usarlo, será reemplazado por $Chr(2). Ambos son símbolos sin sentido para el usuario. #Asc($Símbolo) ^^^Devuelve el código ASCII para el símbolo indicado. Si la longitud de $Símbolo es más que 1, el primer símbolo será usado. $Str(#Número) ^^^Devuelve el número indicado en formato de texto. #Val($Texto) ^^^Devuelve los números de $Texto en formato numérico. #Round(#Val, #LugaresDec) ^^^Redondea el número indicado en #Val dejando tantos decimales como indique #LugaresDec. #PokeNum($Pokemon) ^^^Devuelve el número del Pokémon indicado en el argumento $Pokemon. #MoveNum($Ataque) ^^^Devuelve el número del ataque indicado en $Ataque. $Move(#Nº) ^^^Devuelve el nombre del ataque con el número indicado en #Nº. $Item(#Nº) ^^^Devuelve el nombre del objeto con el número indicado en #Nº. #GetPokeLevel(#NºJugador, #Nº) ^^^Devuelve el nivel del Pokémon que se encuentra en la posición #Nº en el equipo del jugador con el número #NºJugador. #GetPokeItem(#NºJugador, #Nº) ^^^Devuelve el número del objeto que lleva el Pokémon que se encuentra en la posición #Nº en el equipo del jugador con el número #NºJugador. ----------------------------- Las funciones proporcionan una gran cantidad de opciones de personalización para el server. Agreguémosle algo más al ejemplo que ya teníamos. Ahora podemos usar funciones para cambiar el mensaje según el usuario. Fíjate que usamos el signo amperstand ("&") para juntar ambos valores (mensaje y función). Ejemplo 4 ----------------------------- Event +PlayerSignOn /SendPM #Source, "Bienvenido al server, " & $Name(#Source) & "!" /SendPM #Source, "Tu nombre en mayúsculas es " & $UCase($Name(#Source)) & "." /SendPM #Source, "Tu Número de la Suerte es " & $Str(#Rand(9999, 1000)) & "." EndEvent ----------------------------- Bien, revisemos esto línea por línea. Este script envía 3 mensajes al nuevo jugador. Si recuerdan, en nuestro ejemplo anterior, #Source contiene el número del nuevo jugador. Observemos el primer /SendPM. En él puedes ver la función $Name, y en la Lista 2 decía que esta función devuelve el nombre del jugador con el número dado por el argumento. Por lo tanto, esta función devuelve el nombre del nuevo jugador. El signo "&" junta el nombre con el resto del mensaje. El segundo /SendPM es un poco más complicado. Tiene una función dentro de otra función. Está la función $Name, ya sabemos qué es lo que hace. Pero esa función está dentro de otra función, $UCase. En la Lista 2, podemos ver que $UCase toma su argumento y devuelve todas sus letras en mayúsculas. Entonces, como dice la otra parte del mensaje, esto devuelve el nombre del nuevo jugador en mayúsculas. El tercer /SendPM también contiene una función dentro de otra. Esta vez, la función que va dentro es #Rand, la cual, según la Lista 2, devuelve un número al azar comprendido entre los límites indicados. Sin embargo, esta es una función numérica, y no puede ser unida a un mensaje de texto así como está. El valor devuelto por #Rand debe ser convertido a texto, que es lo que hace la función $Str. Asi que, veamos cual es el resultado. ( En el ScriptFAQ original, Masamune se ponía a si mismo como ejemplo. Pero en esta traducción, voy a tomar el nombre que ocupo casi siempre (SpendTimer) para explicarlo mejor. ) Ésto es lo que yo debería ver al entrar al server: Flood count is set to 5 Your team's power is: 77% Bienvenido al server, SpendTimer Tu nombre en mayúsculas es SPENDTIMER Tu Número de la Suerte es 8157 Obviamente, el "Número de la Suerte" será diferente cada vez, pero ya captaste la idea. Sin embargo, hay algunos comandos que querrás ejecutar sólo cuando se de ciertas condiciones. La forma de hacer esto es usando los Condicionales. 5ª Parte: IF-ELSE-ENDIF (Condicionales) ============================================= Esos comandos especiales se usan para revisar una condición, y ejecutar un código basándose en la validez o falsedad de la condición. La forma básica de escribirlo es: Código 2: ----------------------------- If [Valor1] [Operador] [Valor2] [Comandos] Else [Otros comandos] EndIf ----------------------------- ^^^Como dato aparte, If significa "si" de condición, no de afirmación. Else significa "sino" o "de otra forma" y EndIf sería algo así como "fin de la condición". Donde aparece [Operador], se debe poner un método de condicionalidad que vendría siendo una forma de establecer una igualdad o desigualdad entre 2 valores. Los métodos válidos son: Chart 3: Operators ----------------------------- = | Igual a == | Igual a (Diferenciando mayúsculas de minúsculas) <> | No es igual a > | Mayor que < | Menor que >= | Mayor o igual a <= | Menor o igual a ----------------------------- Si la revisión es verdadera, se ejecutarán los comandos inmediatamente después del If(recordar que el script se ejecuta línea por línea). Si es falso, los comandos inmediatamente después del Else serán ejecutados. Si se omite el Else y la revisión resulta falsa, la ejecución del script irá directamente a la línea posterior a EndIf. Entonces, agreguémosle más cosas a nuestro ejemplo. Éste buscará a Mewtwo en el equipo del nuevo jugador y, si lo tiene, le cortará el paso al server. Fíjate que esto se ejecuta en un evento separado, por lo que la revisión se realizará ANTES de que el jugador pueda entrar al server. Ejemplo 4 ----------------------------- Event -PlayerSignOn If #HasPoke(#Source, 150) = 1 /SendPM #Source, "Mewtwo no está permitido aquí!" /Kick #Source Else /SendPM #Source, "Tu equipo es válido y está listo para la batalla!" EndIf End Event Event +PlayerSignOn /SendPM #Source, "Bienvenido al server, " & $Name(#Source) & "!" /SendPM #Source, "Tu nombre en mayúsculas es " & $UCase($Name(#Source)) & "." /SendPM #Source, "Tu Número de la Suerte es " & $Str(#Rand(9999, 1000)) & "." EndEvent ----------------------------- Analicemos la condicionalidad partiendo por la línea del If. Comienza por la palabra "If" que muestra que es la revisión de una condición. Le sigue la función #HasPoke la cual devuelve 1 si el jugador #Source tiene el Pokémon Nº 150, Mewtwo, en su equipo. Entonces, cuando esta función sea evaluada, será reemplazada por un 0 o un 1 según el resultado, y nos quedaremos con "If 1 = 1" ("Si 1 = 1") o "If 0 = 1" ("Si 0 = 1"). En el primer caso será verdadero, y el código luego del If será ejecutado, enviando el mensaje de advertencia y pateando al jugador. Si resulta ser falsa, el otro mensaje será enviado avisando que puede entrar al server, activando el siguiente evento. También puedes revisar más de 1 condición en un mismo If usando los nexos AND, OR, XOR, y EQV. Sus funciones aparecen en la Tabla 4. Tabla 4: ----------------------------- AND | Devuelve verdadero si las 2 condiciones son verdaderas OR | Devuelve verdadero si 1 de las 2 condiciones es verdadera XOR | Devuelve verdadero si 1 es verdadera y la otra falsa. EQV | Devuelve verdadero si las 2 son verdaderas o las 2 son falsas. ----------------------------- Puedes unir tantas condiciones como quieras usando estos nexos. Hagámosle un pequeño cambio a nuestro ejemplo. Digamos que le queremos prohibir el uso de Mewtwo a los usuarios normales, y dejar a los ADMINS y MODS usarlo si quieren. El siguiente script hará justamente eso. Ejemplo 5 ----------------------------- Event -PlayerSignOn If #HasPoke(#Source, 150) = 1 AND #GetPlayerInfo(#Source, AUTH) = 0 /SendPM #Source, "Mewtwo no está permitido aquí!" /Kick #Source Else /SendPM #Source, "Tu equipo es válido y está listo para la batalla!" EndIf EndEvent ----------------------------- Ahora el If revisa 2 condiciones. Primero revisa para asegurarse si el jugador tiene a Mewtwo en su equipo, y luego revisa si la autoridad del Jugador es la de un usuario normal. Si AMBAS condiciones son verdaderas, se activa el comando /Kick. Fíjate que en este caso el Else no es necesario. Puedes omitirlo por completo si no quieres hacer nada en caso de que la condición sea falsa. 6ª Parte: OTROS... ============================================= Esta sección contiene algunos elementos no explicados antes, de menos importancia pero que pueden serte útiles. ***El Evento Temporizador (Timer)*** Éste es un evento distinto a todos los que habías visto antes. Este evento no es activado por una acción como los demás, pero se activa automáticamente en un intervalo de tiempo determinado. Esta es la forma de hacer un evento temporizador. Código 3: ----------------------------- Event Timer [Intervalo] [Código] EndEvent ----------------------------- Como puedes ver, este evento omite el + o el -, pero agrega un argumento: el intervalo del temporizador. El intervalo puede ser cualquier número entero entre 1 (1 segundo) y 86400 (86400 segundos, exactamente 24 horas). Por ejemplo, para crear un evento temporizador que se active cada 5 segundos, debemos poner "Event Timer 5" en la primera línea. El código dentro del evento será ejecutado cada 5 segundos hasta que el server se apague. Puedes poner tantos temporizadores como quieras para que cada uno realice diversas funciones en intervalos distintos. ***Mensajes Predefinidos*** La lengüeta "Messages" en la ventana del script te permite crear Mensajes Predefinidos (Predefined Messages o PDM). Los PDMs son útiles para enviar mensajes que enviarás en varias ocasiones distintas, así sólo lo debes escribir una vez. Fíjate que todos los PDMs DEBEN ESTAR ENTRE COMILLAS para ser usados, ya que son como variables de texto. La diferencia es que puedes usar la función que quieras en tus PDMs, así puedes personalizarlos para que sean diferentes en cada situación. Para recobrar un PDM del script, usa la función $Msg. ***/Exit*** Uno de los comandos no explicados anteriormente es el comando /Exit. Cuando este comando es ejecutado, el script se detiene prematuramente y no se procesan más líneas. Es útil para las instancias en que los procesos posteriores no tienen sentido. Por ejemplo, digamos que quieres prohibir a Mewtwo y Lugia de tu server. Se debería ver como esto. Ejemplo 6 ----------------------------- Event -PlayerSignOn If #HasPoke(#Source, 150) = 1 /SendPM #Source, "Mewtwo no está permitido aquí!" /Kick #Source /Exit EndIf If #HasPoke(#Source, 249) = 1 /SendPM #Source, "Lugia no está permitido aquí!" /Kick #Source EndIf /SendPM #Source, "Tu equipo es válido y está listo para la batalla!" EndEvent ----------------------------- El comando /Exit se ejecuta si el jugador tiene a Mewtwo en su equipo. Esto porque, al haber desconectado al jugador, no sería necesario revisar si tiene un Lugia también. ***/StopEvent*** Otro comando útil es el /StopEvent. Este comando detiene el curso del evento actual. El comando /StopEvent sólo es valido en algunos eventos. Éstos son: Lista 3: Eventos para /StopEvent ----------------------------- -NewMessage -ChatMessage -PlayerAway -PlayerKick -PlayerBan -ChallengeIssued ----------------------------- Esto funciona sólo si está en un evento MENOS, indicando que el evento se activa ANTES de que ocurra la acción. Cuando el /StopEvent se activa, la acción que activó el evento se cancela. Esto puede ser útil para varias cosas. Por ejemplo, si quieres apagar el server pero sin interrumpir la batalla de alguien, no querrás que nadie empiece una NUEVA batalla, Cierto?. Entonces, un simple /StopEvent en el evento -ChallengeIssued prevendrá que cualquier nueva batalla empiece. ***Conjuntos de Jugadores (Player Arrays)*** Algunas veces se vuelve necesario tener una variable diferente para cada jugador conectado. Para hacer esto, puedes crear un Conjunto de Jugadores. Créalo con el comando /SetPA de esta forma: Código 4: ----------------------------- /SetPA {#|$}NombreConjunto ----------------------------- Luego, puedes establecer las variables individuales con el comando /Set. Código 5: ----------------------------- /Set #NombreConjunto(#NºJugador), #Valor ----------------------------- Cuando un jugador sale del server, la variable asignada a ese jugador es automáticamente borrada. Cuando un jugador entra al server, una nueva variable es creada automáticamente para ese jugador. Ejemplo 6 ----------------------------- Event +PlayerSignOn /Set $CapNam(#Source), $UCase($Name(#Source)) EndEvent ----------------------------- El script anterior mantiene un registro del nombre de cada jugador en mayúsculas. Los valores para todos los jugadores pueden ser vistos en la ventana del script en la lengüeta "Player Arrays". ***Marcadores y "GoTo"(Ir a)*** Los Marcadores son usados para establecer una línea de tu script como punto de referencia. Para establecer un marcador, empieza una línea con 2 puntos (":") y escribe una palabra junto a ellos. Esta palabra será el nombre del Marcador. Para ir a un marcador específico utiliza la indicación GoTo. Ejemplo 7: ----------------------------- Event +ChatMessage If $Message = "Cuenta Regresiva" /Set #X, 5 :Bucle /? $Str(#X) /Inc #X, -1 If #X <> 0 GoTo Bucle EndIf /? "Despege!!" EndIf End Event ----------------------------- Este ejemplo mostrará el siguiente texto en la casilla de mensaje del server cuando la frase "Cuenta Regresiva" sea recibida: 5 4 3 2 1 Despegue!! Como puedes ver, las 3 líneas entre el Marcador y la indicación GoTo se seguirán ejecutando hasta que la condición "#X <> 0" sea falsa. Por supuesto, en este ejemplo en particular, probablemente sea más fácil decir /? "5" , /? "4" ... hasta llegar a /? "1", pero tan solo es un ejemplo para mostrar como funciona. 7ª Parte: APÉNDICES ============================================= NOTA: Parte no incluida en el ScriptFAQ original 1.- Números POKÉMON No creo que sean necesarios, pero igual haré una referencia a ellos. Los números de los Pokemon son los mismos que se usan en el PokédDex nacional, que empiezan por Bulbasaur, con el número 1, y terminan con Deoxys-E, con el número 389. 2.- Números Ítems A continuación aparece cada ítem con su respectivo número al lado: 1 - Berry 2 - Berry Juice 3 - Bitter Berry 4 - Burnt Berry 5 - Gold Berry 6 - Ice Berry 7 - Mint Berry 8 - Miracle Berry 9 - Mysteryberry 10 - PrzCureBerry 11 - PsnCureBerry 12 - Berserk Gene 13 - Black Belt 14 - BlackGlasses 15 - BrightPowder 16 - Charcoal 17 - Dragon Fang 18 - Focus Band 19 - Hard Stone 20 - King's Rock 21 - Leftovers 22 - Light Ball 23 - Lucky Punch 24 - Magnet 25 - Metal Coat 26 - Metal Powder 27 - Miracle Seed 28 - Mystic Water 29 - NevermeltIce 30 - Pink Bow 31 - Poison Barb 32 - Polkadot Bow 33 - Quick Claw 34 - Scope Lens 35 - Sharp Beak 36 - Silver Powder 37 - Soft Sand 38 - Spell Tag 39 - Stick 40 - Thick Club 41 - TwistedSpoon 42 - Cheri Berry 43 - Chesto Berry 44 - Pecha Berry 45 - Rawst Berry 46 - Aspear Berry 47 - Leppa Berry 48 - Oran Berry 49 - Persim Berry 50 - Lum Berry 51 - Sitrus Berry 52 - Figy Berry 53 - Iapapa Berry 54 - Mago Berry 55 - Wiki Berry 56 - Aguav Berry 57 - Liechi Berry 58 - Ganlon Berry 59 - Salac Berry 60 - Petaya Berry 61 - Apicot Berry 62 - Lansat Berry 63 - Starf Berry 64 - Choice Band 65 - DeepSeaScale 66 - DeepSeaTooth 67 - Lax Incense 68 - Macho Brace 69 - Mental Herb 70 - Sea Incense 71 - Shell Bell 72 - Silk Scarf 73 - Soul Dew 74 - White Herb 3.- Números Ataques También los necesitaras y, además, son un poco difíciles de conseguir. 1 - Absorb 2 - Acid 3 - Acid Armor 4 - Aeroblast 5 - Agility 6 - Amnesia 7 - Ancientpower 8 - Attract 9 - Aurora Beam 10 - Barrage 11 - Barrier 12 - Baton Pass 13 - Beat Up 14 - Belly Drum 15 - Bide 16 - Bind 17 - Bite 18 - Blizzard 19 - Body Slam 20 - Bone Club 21 - Bone Rush 22 - Bonemerang 23 - Bubble 24 - Bubblebeam 25 - Charm 26 - Clamp 27 - Comet Punch 28 - Confuse Ray 29 - Confusion 30 - Constrict 31 - Conversion 32 - Conversion2 33 - Cotton Spore 34 - Counter 35 - Crabhammer 36 - Cross Chop 37 - Crunch 38 - Curse 39 - Cut 40 - Defense Curl 41 - Destiny Bond 42 - Detect 43 - Dig 44 - Disable 45 - Dizzy Punch 46 - Double Kick 47 - Double Team 48 - Double-Edge 49 - Doubleslap 50 - Dragon Rage 51 - Dragonbreath 52 - Dream Eater 53 - Drill Peck 54 - Dynamicpunch 55 - Earthquake 56 - Egg Bomb 57 - Ember 58 - Encore 59 - Endure 60 - Explosion 61 - Extremespeed 62 - Faint Attack 63 - False Swipe 64 - Fire Blast 65 - Fire Punch 66 - Fire Spin 67 - Fissure 68 - Flail 69 - Flame Wheel 70 - Flamethrower 71 - Flash 72 - Fly 73 - Focus Energy 74 - Foresight 75 - Frustration 76 - Fury Attack 77 - Fury Cutter 78 - Fury Swipes 79 - Future Sight 80 - Giga Drain 81 - Glare 82 - Growl 83 - Growth 84 - Guillotine 85 - Gust 86 - Harden 87 - Haze 88 - Headbutt 89 - Heal Bell 90 - Hi Jump Kick 91 - Hidden Power 92 - Horn Attack 93 - Horn Drill 94 - Hydro Pump 95 - Hyper Beam 96 - Hyper Fang 97 - Hypnosis 98 - Ice Beam 99 - Ice Punch 100 - Icy Wind 101 - Iron Tail 102 - Jump Kick 103 - Karate Chop 104 - Kinesis 105 - Leech Life 106 - Leech Seed 107 - Leer 108 - Lick 109 - Light Screen 110 - Lock-On 111 - Lovely Kiss 112 - Low Kick 113 - Mach Punch 114 - Magnitude 115 - Mean Look 116 - Meditate 117 - Mega Drain 118 - Mega Kick 119 - Mega Punch 120 - Megahorn 121 - Metal Claw 122 - Metronome 123 - Milk Drink 124 - Mimic 125 - Mind Reader 126 - Minimize 127 - Mirror Coat 128 - Mirror Move 129 - Mist 130 - Moonlight 131 - Morning Sun 132 - Mud-Slap 133 - Night Shade 134 - Nightmare 135 - Octazooka 136 - Outrage 137 - Pain Split 138 - Pay Day 139 - Peck 140 - Perish Song 141 - Petal Dance 142 - Pin Missile 143 - Poison Gas 144 - Poison Sting 145 - Poisonpowder 146 - Pound 147 - Powder Snow 148 - Present 149 - Protect 150 - Psybeam 151 - Psych Up 152 - Psychic 153 - Psywave 154 - Pursuit 155 - Quick Attack 156 - Rage 157 - Rain Dance 158 - Rapid Spin 159 - Razor Leaf 160 - Razor Wind 161 - Recover 162 - Reflect 163 - Rest 164 - Return 165 - Reversal 166 - Roar 167 - Rock Slide 168 - Rock Smash 169 - Rock Throw 170 - Rolling Kick 171 - Rollout 172 - Sacred Fire 173 - Safeguard 174 - Sandstorm 175 - Sand-Attack 176 - Scary Face 177 - Scratch 178 - Screech 179 - Seismic Toss 180 - Selfdestruct 181 - Shadow Ball 182 - Sharpen 183 - Sing 184 - Sketch 185 - Skull Bash 186 - Sky Attack 187 - Slam 188 - Slash 189 - Sleep Powder 190 - Sleep Talk 191 - Sludge 192 - Sludge Bomb 193 - Smog 194 - Smokescreen 195 - Snore 196 - Softboiled 197 - Solarbeam 198 - Sonicboom 199 - Spark 200 - Spider Web 201 - Spike Cannon 202 - Spikes 203 - Spite 204 - Splash 205 - Spore 206 - Steel Wing 207 - Stomp 208 - Strength 209 - String Shot 210 - Struggle 211 - Stun Spore 212 - Submission 213 - Substitute 214 - Sunny Day 215 - Super Fang 216 - Supersonic 217 - Surf 218 - Swagger 219 - Sweet Kiss 220 - Sweet Scent 221 - Swift 222 - Swords Dance 223 - Synthesis 224 - Tackle 225 - Tail Whip 226 - Take Down 227 - Teleport 228 - Thief 229 - Thrash 230 - Thunder 231 - Thunder Wave 232 - Thunderbolt 233 - Thunderpunch 234 - Thundershock 235 - Toxic 236 - Transform 237 - Tri Attack 238 - Triple Kick 239 - Twineedle 240 - Twister 241 - Vicegrip 242 - Vine Whip 243 - Vital Throw 244 - Water Gun 245 - Waterfall 246 - Whirlpool 247 - Whirlwind 248 - Wing Attack 249 - Withdraw 250 - Wrap 251 - Zap Cannon 252 - Aerial Ace 253 - Air Cutter 254 - Arm Thrust 255 - Aromatherapy 256 - Assist 257 - Astonish 258 - Blast Burn 259 - Blaze Kick 260 - Block 261 - Bounce 262 - Brick Break 263 - Bulk Up 264 - Bullet Seed 265 - Calm Mind 266 - Camouflage 267 - Charge 268 - Cosmic Power 269 - Covet 270 - Crush Claw 271 - Dive 272 - Doom Desire 273 - Dragon Claw 274 - Dragon Dance 275 - Endeavor 276 - Eruption 277 - Extrasensory 278 - Facade 279 - Fake Out 280 - Fake Tears 281 - Featherdance 282 - Flatter 283 - Focus Punch 284 - Follow Me 285 - Frenzy Plant 286 - Grasswhistle 287 - Grudge 288 - Hail 289 - Heat Wave 290 - Helping Hand 291 - Howl 292 - Hydro Cannon 293 - Hyper Voice 294 - Ice Ball 295 - Icicle Spear 296 - Imprison 297 - Ingrain 298 - Iron Defense 299 - Knock Off 300 - Leaf Blade 301 - Luster Purge 302 - Magic Coat 303 - Magical Leaf 304 - Memento 305 - Metal Sound 306 - Meteor Mash 307 - Mist Ball 308 - Mud Shot 309 - Mud Sport 310 - Muddy Water 311 - Nature Power 312 - Needle Arm 313 - Odor Sleuth 314 - Overheat 315 - Poison Fang 316 - Poison Tail 317 - Psycho Boost 318 - Recycle 319 - Refresh 320 - Revenge 321 - Rock Blast 322 - Rock Tomb 323 - Role Play 324 - Sand Tomb 325 - Secret Power 326 - Shadow Punch 327 - Sheer Cold 328 - Shock Wave 329 - Signal Beam 330 - Silver Wind 331 - Skill Swap 332 - Sky Uppercut 333 - Slack Off 334 - Smellingsalt 335 - Snatch 336 - Spit Up 337 - Stockpile 338 - Superpower 339 - Swallow 340 - Tail Glow 341 - Taunt 342 - Teeter Dance 343 - Tickle 344 - Torment 345 - Trick 346 - Uproar 347 - Volt Tackle 348 - Water Pulse 349 - Water Sport 350 - Water Spout 351 - Weather Ball 352 - Will-O-Wisp 353 - Wish 354 - Yawn 8ª Parte: TERMINANDO
Enta web fue visitida por 24987 visitantes desde su creación
Acerca de esta página
Web dedicada a Pokémon en general
Recomienda esta página a un amigo
Pon esta web como tu página de inicio
Añadir esta web a tus favoritos
Varios
stats
Afiliados
a>
a>