[Samp,Lua] Mostrar mensagem sobre player
Enviado: 31 Jan 2019, 12:42

Sempre que um player mandar mensagem no chat caso ele esteja visível ira aparecer a mensagem sobre a cabeça do mesmo.
A mensagem mostra id e user na cor do player. O mod foi testado poucas vezes.
acompanha uns requerimentos para scripts que trabalham com samp.
requer estar no samp e sampfuncs.
O primeiro que fiz não estava funcionando nada bem, talvez agora funcione melhor.
não sei porque, mas o opcode do sampfuncs
sampGetCharHandleBySampPlayerIdaqui não esta retornando verdadeiro, então usei uma gambiarra, mas não sei se funciona bem Código: Selecionar tudo
local function get_samp_char(id)
return getAllChars()[id+1] -- ? sampGetCharHandleBySampPlayerId(id)
end
Código: Selecionar tudo
script_name("mostrar mensagem sobre player no samp");
script_author("Um_Geek")
function main()
if isSampLoaded() and isSampfuncsLoaded() then
local mad = require('MoonAdditions')
local sampev = require 'lib.samp.events'
local FONT_01 = renderCreateFont('tahoma',8,0x1+0x4+0x8)
local function get_samp_char(id)
return getAllChars()[id+1] -- ? sampGetCharHandleBySampPlayerId(id)
end
function sampev.onChatMessage(player_id,msg)
local ped = get_samp_char(player_id)
if ped then
local function display(player_id,msg)
local timer = os.clock() + 3.0
while timer >= os.clock() do
local bone = mad.get_char_bone(ped,mad.bone_id.HEAD_1)
if bone then
local color = sampGetPlayerColor(player_id)
local name = sampGetPlayerNickname(player_id)
local bone_pos = bone.matrix.pos
local sx,sy = convert3DCoordsToScreen(bone_pos.x, bone_pos.y, bone_pos.z)
sx = sx + 20
sy = sy - 20
renderFontDrawText(FONT_01,string.format('%d:%s\n{FFFFFFFF}%s',player_id,name,msg),sx,sy,color)
end
wait(0)
end
end
lua_thread.create(display,player_id,msg)
end
end
while true do wait(0) end
end
end