Algo mejor que streamer?
#1

He notado en servidores que tienen muchos objetos en lugares y no se les demora casi nada en cargar a los jugadores, es como si usaran CreateObject con todos los objetos
hay algo mejor que streamer para cargar objetos?
Reply
#2

streamer es un plugin que se utiliza para expandir la capacidad de objetos globales mediante el uso de la memoria, creando objetos cuando un jugador esta cerca, mas no un "cargador de objetos".

Streamer usa las nativas por defecto de SAMP, los "CreateObject", y la razуn por la cual el cargado es mбs rбpido usando directamente CreateObjeto que usando Streamer es porque streamer tiene que hacer verificaciones a los usuarios que estбn cerca para crear los objetos, mientras que la manera directa solo los crea.
Reply
#3

Eso ya lo sabia, me dejaste en las mismas
Pregunte si habia algo mas rapido y mejor que streamer para crear los objetos, y createobject no es, porque por lo que vi son miles de objetos
Reply
#4

Bueno, primero te quiero explicar masomenos por que es lento. Supongamos que enviar datos cliente>servidor y servidor>cliente tarda 200 milisegundos. Las cargas "lentas" pasan generalmente cuando te moves a un lugar lejos de donde estabas, como por ejemplo con setPlayerPos.

* Pones "/salir". El cliente manda el mensaje "/salir" al servidor.
* 200 ms despuйs, el servidor recibe ese mensaje, y lo que hace es mandar el mensaje del SetPlayerPos(x, y, z) al cliente, para sacarlo del lugar.
* 200 ms despuйs, el mensaje llega al cliente, entonces lo procesa y le cambia la posiciуn.
* Automaticamente, el cliente manda una Update con los nuevos datos de su posiciуn al servidor.
* 200 ms despuйs, el servidor la recibe. Ahora, GetPlayerPos devuelve la nueva posiciуn. El streamer detecta eso y dice: Ok. Borremosle los objetos que estan lejos, y le creemos los nuevos. Le manda un mensaje con los CreateObject y DestroyObject al cliente.
* 200 ms despuйs el jugador lo recibe, y finalmente tiene su mapita cargado.

Ahora sumemos el tiempo: da 800 ms. Vos, en tu pantalla, te carga un segundo en cargar el mapa.

Diferente es con los CreateObject que estбn siempre cargados en el cliente, pero eso ya lo sabes.

Soluciуn? Si, avisarle por adelantado que cargue el mapa al mismo tiempo que te manda la posiciуn, usando Streamer_UpdateEx(playerid, x, y, z); x y z son las cordenadas para actualizar al jugador (o sea, la nueva posiciуn)

Creamos una funciуn para cambiar posiciуn y actualizar:
pawn Код:
stock SetPlayerPosAndUpdateStreamer(playerid, Float:x, Float:y, Float:z) {
    SetPlayerPos(playerid, x, y, z);
    Streamer_UpdateEx(playerid, x, y, z);
}
Ahora, usamos esa funciуn en los comandos como por ejemplo "/salir" o "/entrar" para acelerar el proceso. Apenas llegues al lugar, el mapa ya va a estar cargado directamente

Si volvemos a analizar lo que tarda, es asн:

*el cliente escribe /salir y se lo manda al server
*200 ms despues el server lo recibe, y le manda un mensaje con el SetPlayerPos y ademas le crea instantaneamente todos los objetos.
*200 ms despues, el cliente lo recibe y ya esta en su nueva posiciуn y con su mapita cargado

Ahora, el proceso tarda 400 ms en vez de 800 ms: La mitad. Mejoraste la velocidad un 50%
Reply
#5

muchas gracias
uso Streamer_UpdateEx antes que setplayerpos, o como tu dijiste?
Reply
#6

Quote:
Originally Posted by FelipeAndres
Посмотреть сообщение
muchas gracias
uso Streamer_UpdateEx antes que setplayerpos, o como tu dijiste?
Despuйs, lуgicamente tienes que actualizar los objetos despuйs de teletransportar.
Reply
#7

De hecho es mejor antes. Osea; cargas los objetos, y luego teletransportas.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)