[Include] iPs Object Stream 0.3d
#1

[iPs]Streamer Objetos V2
Criado por Bruno da Silva e Equipe [iPs]TeaM


Introduзгo:

DraKiNs lanзou um sistema de streamer de objetos para versгo 0.3d
Segundo os testes tudo saiu tranquilo, atualmente apenas tem trкs principais funзхes.

Implementaзгo:
Como alguns streamer objetos existentes, o ips stream usa filterscript onde hб a raiz da cada funзгo em um filterscript, portanto serб necessбrio ser plugado um filterscript para carregar as funзхes e uma include no seu gamemode para ser declarado as novas funзхes.

No server.cfg:
filterscripts streamer

No gamemode ou local onde queres colocar o streamer:
PHP код:
#include ipsstream 
Prontinho.
Para mudar a capacidade padrгo dos objetos deve-se mudar no filterscripts, onde hб:
PHP код:
#define MAX_STREAM          10000 
й a capacidade de objetos suportada, pode colocar mais que isto (veja no suporte abaixo)

Onde hб:
PHP код:
#define MIN_INTERVAL        00500 
deve ser colocado o intervalo para criar os objetos (tempo para atualizar, nгo coloque muito para nгo dar muita latкncia)

Funзхes:
Como disse anteriormente sгo funзхes bбsicas:
Quote:

DestroyObject(objeto id para destruir);
CreateObject(parametros igual da sa:mp, criar objeto)
MoveObject(parametros igual da samp 0.3d, mover objeto)


Suporte:
Segundo os testes feitos, o sistema suporta atй 1000 objetos para cada jogador em um determinado quadro de poucos metros. E suporta 500 mil objetos para todo o servidor.
Tambйm suporta 4 mil objetos em uma longa бrea, por jogador



Velocidade:
Todo sistema й percorrido por um circuito foreach criado pela prуpria equipe, sem a menor lentidгo do sistema.
Tambйm foi usado um algorнtimo de busca e remoзгo de objetos criado por Bruno da Silva (chamado Fluxo Stream)..
Como costume, ele fez um tуpico explicando sobre como funcionaria, segue um resumo da sua explicaзгo:

PORTUGOL DO ALGORITIMO:
Quote:

CRIAR TODOS OBJETOS
CASO NUMERO TOTAL DE OBJETOS CRIADOS ACIMA FOR MAIOR QUE O PERMITIDO
DELETAR OBJETOS LONGES, DEIXANDO APENAS OS PERTOS DO PONTO CENTRAL


* Observem que os objetos criados ficaram ao lado do jogador, de forma que os objetos estourados ficaram extremamente longes, assim fazendo com que a eficiente deste sistema fosse melhor que a dos outros.

Tambйm contamos com um уtimo sistemas de circuito para obter melhor velocidade nas checagens dos objetos por slots e dos jogadores usando um уtimo algorнtimo de lista ligada no qual prima em a cйlula atual direicionar para prуxima cйlula fazendo um loop interno pela array.


Novas funзхes Versгo 2.0:
- Agora compactбvel com 0.3d 0.3c 0.3b
- Adicionado Interior e Virtual World na funзгo CreateObject

Novas funзхes Versгo 3.0:
O Bruno resolveu inovar nesta nova versгo do seu streamer e criou um sistema de carregar objetos do mta sem conversгo !!

- Carregar Objetos direto do [b].map
Basta usar apenas uma funзгo e carregue os objetos a partir de seu arquivo *map gerado pelo MTA

Exemplo:
pawn Код:
CreateObjectsFromMAPFile("mapadomta.map");
Tambйm agora vem com um carregador de mapas que estгo no formato TXT, podendo atй escolher o delimitador das posiзхe x,y,z etc
Bastando usar uma funзгo:

- Carregar objetos diretos de um arquivo de texto

pawn Код:
CreateObjectsFromTXTFile("mapa.txt", '|');
'|' й a divisуria que divide x|y|z|rx|ry|rx e outros ...

- Carregar parametros ъnicos de um arquivo do mta
Por exemplo:
pawn Код:
GetMapXMLParam("<object id=\"object (barrel4) (16)\" doublesided=\"false\" model=\"1225\" interior=\"0\" dimension=\"0\" posX=\"4724.2119140625\" posY=\"-1238.6279296875\" posZ=\"6.3207788467407\" rotX=\"0\" rotY=\"0\" rotZ=\"3.9990234375\" />", "rotZ=\"\");
O exemplo desta funзгo acima pegarб a posiзгo rotZ do objeto que foi pego no primeiro parametro (em formato de arquivo para mta)


Download:

Versгo 3.0:
Para efetuar o download do pacote todo:


Pacote todo :-> Ainda nгo hospedado

Para pegar cуdigo no pastebin de ambos scripts:

streamer.pwn :-> http://pastebin.com/A9fSPz7E
ipsstream.inc :-> http://pastebin.com/Lz0WK2VJ



Autoria:
Desenvolvido por Bruno da Silva
Auxiliado por RockFire
Obrigado a Pharrel e MiTToS pelas dicas das funзхes

_

BUGS REPORTEM POR PM, EU COMUNICO ELE
Reply
#2

Legal, ele seria melhor que o Fallout eo MidoStreamer ?
Reply
#3

Nгo posso dizer qual й melhor ou nгo, mas ele suportou uma cidade de 3000 mil objetos e aquela floresta do Magnus sem lagar ..
Reply
#4

serб que ele aguenta 6000 objetos sem lagar ?
Reply
#5

6 mil objetos? Depende a localizaзгo dos objetos.
Se for em uma бrea acredito que ele aguenta, puxarб um pouco o servidor, devido o Fluxo Stream ficar constantemente atuando em objetos longes, agora se for 6.000 objetos longe (seriam 100 metros de diferenзa cada um) ele aguenta sim.

Lagar ele nгo laga, ele utiliza algorнtimo de lista ligada para percorrer a lista dos objetos criar os mesmos e fazer o fluxo de streamer, mas quando digo puxar o servidor, serб de possivelmente ficar criando e deletando objetos longes.
Reply
#6

Da pra usar o moveobject, rotateobject normalmente?
Reply
#7

Sim a funзгo MoveObject vem adaptada para versгo 0.3d.

Com parвmetros:

Rotaзгo X
Rotaзгo Y
Rotaзгo Z

Adicionados.

Na versгo beta testes suportou 4 mil objetos em uma zona de 350 metros, й bastante objetos para uma tгo pequena zona.
Tambйm vale lembrar que estб na versгo beta testes, pode haver bugs, entгo quem tiver visto algum favor me mande pm que comunico o Bruno.
Reply
#8

A prуximo atualizaзгo dele vocкs podem colocar para setar o interior e o virtualworld? Eu uso isso, e a unica coisa que me impede de colocar esse novo stream sгo essas duas funзхes.

Уtimo trabalho.
Reply
#9

Realmente pra mim tb й de extrema importancia VW e Int...
Reply
#10

Vou falar com Bruno para criar o sistema de Interior e Virtual World.

EDIT:
Ele pediu como seria melhor. Colocar um parвmetro no CreateObject para Interior e Virtual World (assim teria que modificar linha por linha do script)

Ou criar uma funзгo "SetObjectVirtualWorld" e "SetObjectInterior" ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)