[LUA] Samp.lua o futuro substituto do SAMPFuncs
Enviado: 16 Jul 2019, 20:42
Tópico Oficial
Autor: FYP (Um dos criadores do próprio MoonLoader, ImGui pra moonloader e MoonAdditions)
Inicialmente essa biblioteca seria apenas uma API para processar pacotes de rede, porem foi decidido que seria melhor fazer uma biblioteca completa pra trabalhar com SAMP, no qual no futuramente eliminara a necessidade do SAMPFuncs, Ate agora apenas um modulo foi implementado o qual já simplifica trabalhar com pacotes de rede:
SAMP.Events
Esse modulo adiciona eventos para processar pacotes RakNet, Tem uma API conveniente, é totalmente customizável e melhora características de alguns hooks regulares como: reading, rewriting e ignoring.
Exemplo De uso:
um simples exemplo do processamento de uma mensagem capturada do chat:
Sim, Bem simples, voce só precisar inicializar a biblioteca e escrever a função com os argumentos apropriados, isso é tudo. sobrescrever os dados do pacote é simples tambem, basta retornar todos os valores da função na mesma ordem, colocando as em uma tabela:
Esse código altera o pacote de cada mensagem enviada pelo player, colocando um "Voce disse:" no inicio.
Se for retornado FALSE o pacote é ignorado pelo cliente, Esse código previne qualquer alteração de Skin:
A Estrutura de todos os pacotes estão no arquivo events.lua.
Sobrescrever pacotes de saída de sincronização é um pouco diferente dos demais, Eles não necessitam de argumentos retornados, mas sim que os dados sejam escritos em forma de tabela (Isso foi feito para melhorar performance)
um exemplo reescrevendo a posição enviada por um pacote de sincronização do player:
Esse modelo se aplica apenas aos seguintes eventos:
a estrutura de todos os pacotes de sincronização estão no arquivo synchronization.lua
Sobre a biblioteca em geral ela esta no inicio de seu desenvolvimento, Você pode baixar e acompanhar tudo na pagina do GitHub.
Instalação:
Baixe o arquivo samp.zip de sua ultima atualização no github e mova toda a pasta (NÃO Seu conteúdo) do arquivo samp.zip para a pasta
'moonloader/lib/'.
Qualquer ajuda é bem vinda Principalmente da adição de estruturas, faça um pull request na pagina do GitHub ou escreva algo no post oficial.
Autor: FYP (Um dos criadores do próprio MoonLoader, ImGui pra moonloader e MoonAdditions)
Inicialmente essa biblioteca seria apenas uma API para processar pacotes de rede, porem foi decidido que seria melhor fazer uma biblioteca completa pra trabalhar com SAMP, no qual no futuramente eliminara a necessidade do SAMPFuncs, Ate agora apenas um modulo foi implementado o qual já simplifica trabalhar com pacotes de rede:
SAMP.Events
Esse modulo adiciona eventos para processar pacotes RakNet, Tem uma API conveniente, é totalmente customizável e melhora características de alguns hooks regulares como: reading, rewriting e ignoring.
Exemplo De uso:
um simples exemplo do processamento de uma mensagem capturada do chat:
Código: Selecionar tudo
local sampev = require 'lib.samp.events'
function sampev.onSendChat(msg)
print('Voce disse: ' .. msg)
endCódigo: Selecionar tudo
function sampev.onSendChat(msg)
return {'Voce disse: ' .. msg}
endSe for retornado FALSE o pacote é ignorado pelo cliente, Esse código previne qualquer alteração de Skin:
Código: Selecionar tudo
function sampev.onSetPlayerSkin(playerId,skinId)
print('O Servidor tentou alterar sua skin para: '..skinId)
return false
endSobrescrever pacotes de saída de sincronização é um pouco diferente dos demais, Eles não necessitam de argumentos retornados, mas sim que os dados sejam escritos em forma de tabela (Isso foi feito para melhorar performance)
um exemplo reescrevendo a posição enviada por um pacote de sincronização do player:
Código: Selecionar tudo
function sampev.onSendPlayerSync(data)
print('Posição original:', data.position.x, data.position.y, data.position.z)
data.position.x = 1337
data.position.y = 1488
data.position.z = 228
endEsse modelo se aplica apenas aos seguintes eventos:
SpoilerAbrir
onSendPlayerSync, onSendVehicleSync, onSendPassengerSync, onSendAimSync, onSendUnoccupiedSync, onSendTrailerSync, onSendBulletSync, onSendSpectatorSync
a estrutura de todos os pacotes de sincronização estão no arquivo synchronization.lua
Sobre a biblioteca em geral ela esta no inicio de seu desenvolvimento, Você pode baixar e acompanhar tudo na pagina do GitHub.
Instalação:
Baixe o arquivo samp.zip de sua ultima atualização no github e mova toda a pasta (NÃO Seu conteúdo) do arquivo samp.zip para a pasta
'moonloader/lib/'.
Qualquer ajuda é bem vinda Principalmente da adição de estruturas, faça um pull request na pagina do GitHub ou escreva algo no post oficial.