Bueno, esta mañana descargué la documentación del
client scripting del PO 2.0. Ahora resulta que el PO hace POsible la introducción de scripts en el cliente (o sea, en el Pokémon Online en sí, no en los servidores, como los scripts de toda la vida).
En mitá la siesta, le he echado un ojo, y he conseguido hacer mi primer script de cliente. Lo único malo es que no puedo probarlo bien mientras no tenga Internet, ya que lo que hace es medir en milisegundos el lag que habrá entre los mensajes de dos usuarios, y si lo uso dentro de mi mismo PC y de mi mismo server, me da un retraso de un milisegundo.
Me gustaría que lo probaseis, es un simple script que no hace gran cosa, pero como curiosidad está bastante bien, y puede serviros para comprobar si tenéis lag (adiós a la absurda pregunta de "lag?"), y cuánto exactamente.
Para usarlo, solo hay que activar el plugin de Client Scripting (Plugins - Plugin Manager - Añadir plugin... - ClientScripting.dll), abrir la ventana del client scripting (Plugins - Script Window), copiarlo (sí, es el code de abajo, ¿cómo lo has adivinado?) y darle a OK. Posiblemente haya que cerrar y abrir el PO para que funcione completamente, pero no lo tengo claro aún.
Una vez metido el script, solo habrá que escribir *ping seguido del nombre de usuario que escojamos (ojo: para que funcione ese otro usuario también tendrá que tenerlo puesto). Ejemplo: *ping [STATS]ManectricRang. (Sin el punto, claro.) Al ratito nos saldrá un mensaje con los milisegundos de retraso.
Quisiera que al menos dos de los que ya tenéis el PO 2.0 os pusieseis el script para probarlo. No tengo ni idea de cuánto pueden ser los valores normales, pero menos de 2000 milisegundos no puede considerarse lag. Puede usarse en cualquier servidor, lo único necesario es que ambos usuarios tengan el script y que uno no ignore al otro.
Intentaré desarrollar más scripts de cliente en los próximos días, y sí, a diferencia de los scripts del server, estos los haré públicos.
Y he aquí el código.
/* Script calculador de ping hecho por Manectric-Rang */
if (typeof(date) == "undefined") {
date = []
}
({
beforePMReceived: function(id, msg) {
if (msg == "¿Cuánto ping hay, quillo?") {
/* Esta sección permite algo de retrocompatibilidad */
client.network().sendPM(id, "Pueh hay una zarvajá ping, pisha.")
client.network().sendPM(id, "Hay una nueva versión del script de ping de Manectric-Rang, que permite usar el ping con varios usuarios a la vez. Ve a http://www.pokemon-stats.com/foros/viewtopic.php?f=25&t=32669 para tenerla.")
sys.stopEvent();
}
if (msg == "Usando script de Manectric-Rang para calcular el ping. Esperando respuesta...") {
/* Al detectar que alguien quiere ver su ping, envía una respuesta instantánea */
client.network().sendPM(id, "Petición de ping recibida.")
sys.stopEvent();
}
if (msg.substring(0, 26) == "Petición de ping recibida." && date[id] != undefined) {
/* Una vez llega la respuesta instantánea, se calculan los milisegundos de retraso */
print("Ping con " + client.name(id) + ": " + (new Date().getTime() - date[id]) + " milisegundos.")
sys.stopEvent();
date[id] = undefined;
}
}
,
/* Esto hace que al usar *ping se envíe el mensaje y se cuente el retardo */
/* Si usamos *ping [STATS]ManectricRang en Stats veremos solo nuestro lag */
/* El lag es lo que tarda el mensaje desde el PC al server y vuelta al PC */
/* Si lo usamos fuera de Stats o con otro veremos la suma de lag de ambos */
/* El lag de los dos es lo que tarda el mensaje en ir de un PC al server, */
/* del server al otro PC, del otro PC al server y del server al primer PC */
/* Recuerda que esto solo funciona con quien tenga también este script... */
beforeSendMessage: function(msg, chan) {
if (msg[0] == "*") {
if (msg.split(" ")[0] == "*ping") {
sys.stopEvent();
}
if (msg.split(" ")[0] == "*ping" && client.id(msg.substring(msg.indexOf(" ")+1)) != -1 && client.id(msg.substring(msg.indexOf(" ")+1)) != client.ownId() && date[client.id(msg.substring(msg.indexOf(" ")+1))] == undefined) {
client.network().sendPM(client.id(msg.substring(msg.indexOf(" ")+1)), "Usando script de Manectric-Rang para calcular el ping. Esperando respuesta...")
date[client.id(msg.substring(msg.indexOf(" ")+1))] = new Date().getTime();
return;
}
}
}
,
})