Hello, I have a problem, I don't know why the text above the player's name isn't displayed, no errors
my cod tfs revscripts
otui
otmod
please help me solve the problem
my cod tfs revscripts
LUA:
local RANK_STORAGE = 80000
local function getRank(player)
local v = player:getStorageValue(RANK_STORAGE)
if v < 0 then v = 0 end
return v
end
local function sendRank(toPlayer, target)
if not toPlayer or not target then return end
local rank = getRank(target)
print("[RANK] send:", target:getName(), "-> do:", toPlayer:getName(), "rank:", rank)
toPlayer:sendExtendedOpcode(50, target:getId() .. "|" .. rank)
end
local function broadcastRank(player)
print("[RANK] broadcast for:", player:getName())
local spectators = Game.getSpectators(player:getPosition(), false, true, 7, 7, 5, 5)
for _, spec in ipairs(spectators) do
if spec:isPlayer() then
if spec ~= player then
sendRank(spec, player)
end
sendRank(player, spec)
end
end
end
local loginEvent = CreatureEvent("RankLogin")
function loginEvent.onLogin(player)
if player:getStorageValue(RANK_STORAGE) == -1 then
player:setStorageValue(RANK_STORAGE, 0)
end
addEvent(function()
if player then
broadcastRank(player)
end
end, 500)
return true
end
loginEvent:register()
LUA:
local ranks = {}
function init()
connect(g_game, {
onGameStart = onGameStart,
onGameEnd = onGameEnd
})
print("[RANK] init ok")
end
function terminate()
disconnect(g_game, {
onGameStart = onGameStart,
onGameEnd = onGameEnd
})
end
function onGameStart()
print("[RANK] game start")
g_game.enableFeature(GameExtendedOpcode)
ProtocolGame.registerExtendedOpcode(50, onOpcode)
end
function onGameEnd()
ProtocolGame.unregisterExtendedOpcode(50)
end
function onOpcode(protocol, opcode, buffer)
print("[RANK] take:", buffer)
local id, rank = buffer:match("(%d+)|(%d+)")
id = tonumber(id)
rank = tonumber(rank)
if not id then return end
ranks[id] = rank
local creature = getCreatureById(id)
if creature then
setRank(creature, rank)
end
end
function setRank(creature, rank)
if creature.rankLabel then
creature.rankLabel:destroy()
end
local label = g_ui.createWidget('RankLabel', modules.game_interface.getMapPanel())
label:setText(getRankName(rank))
label:attachToCreature(creature)
creature.rankLabel = label
print("[RANK] label:", creature:getName(), getRankName(rank))
end
function getRankName(rank)
if rank == 1 then return "Man"
elseif rank == 2 then return "Mantwo"
elseif rank == 3 then return "Girl"
elseif rank == 4 then return "Girltwo"
else return "Nobody"
end
end
Code:
RankLabel < Label
font: verdana-11px-rounded
color: white
text-align: center
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.top
margin-bottom: 15
Code:
Module
name: game_rank
description: Rank system
author: lose
version: 1.0
autoload: true
scripts: [ rank.lua ]
otuis: [ rank.otui ]
