-
Total de itens
177 -
Registro em
-
Última visita
-
Dias Ganhos
50
Posts postados por Gengo
-
-
Você precisa adaptar conforme suas necessidades, segue ai, se não funcionar, só lamento, como disse, vc precisa adaptar conforme suas tfs
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function greetCallback(player) player:doSendDialogNpc(Npc():getId(), "Olá jovem, vejo que você conseguiu chegar até aqui!\nClique em Recompensa e fique feliz pela conquista!", "Fechar&Recompensa") return true end function creatureSayCallback(cid, type, msg) if not npcHandler:isFocused(cid) then return false end end function onReleaseFocus(player) player:doSendDialogNpcClose() end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_ONRELEASEFOCUS, onReleaseFocus) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
- narutomaniacos reagiu a isso
- 1
-
local OpcodeDialog = 80 local Actions = { open = 1, closed = 2 } function Player.doSendDialogNpc(self, npc, msg, opc) if ( not opc ) then opc = {} end self:sendExtendedOpcode(OpcodeDialog, table.serialize({ action = Actions.open, data = { npcId = npc, message = msg, options = opc } })) end function Player.doSendDialogNpcClose(self) self:sendExtendedOpcode(OpcodeDialog, table.serialize({ action = Actions.closed })) end
- narutomaniacos reagiu a isso
- 1
-
Em 01/09/2020 em 20:03, raulcdj disse:
table.serialize = function(x, recur)
local t = type(x)
recur = recur or {}if t == nil then
return "nil"
elseif t == "string" then
return string.format("%q", x)
elseif t == "number" then
return tostring(x)
elseif t == "boolean" then
return t and "true" or "false"
elseif getmetatable(x) then
error("Can not serialize a table that has a metatable associated with it.")
elseif t == "table" then
if(table.find(recur, x)) then
error("Can not serialize recursive tables.")
end
table.insert(recur, x)local s = "{"
for k, v in pairs(x) do
s = s .. "[" .. table.serialize(k, recur) .. "]"
s = s .. " = " .. table.serialize(v, recur) .. ","
end
s = s .. "}"
return s
else
error("Can not serialize value of type '" .. t .. "'.")
end
end
table.find = function (table, value)
for i, v in pairs(table) do
if(v == value) then
return i
end
end
return nil
endnao tenho table.serialize tenho so o 012-table e o mesmo arquivo ou tenho que cria um table.serialize
[01/09/2020 20:23:23] [Error - Npc interface]
[01/09/2020 20:23:23] data/npc/scripts/gengo.lua:onCreatureSay
[01/09/2020 20:23:23] Description:
[01/09/2020 20:23:23] data/lib/npcdialog_lib.lua:11: attempt to call global 'doSendPlayerExtendedOpcode' (a nil value)
[01/09/2020 20:23:23] stack traceback:
[01/09/2020 20:23:23] data/lib/npcdialog_lib.lua:11: in function 'doSendDialogNpc'
[01/09/2020 20:23:23] data/npc/scripts/gengo.lua:11: in function 'callback'
[01/09/2020 20:23:23] data/npc/lib/npcsystem/npchandler.lua:339: in function 'greet'
[01/09/2020 20:23:23] data/npc/lib/npcsystem/npchandler.lua:512: in function 'onGreet'
[01/09/2020 20:23:23] data/npc/lib/npcsystem/modules.lua:222: in function 'callback'
[01/09/2020 20:23:23] data/npc/lib/npcsystem/keywordhandler.lua:40: in function 'processMessage'
[01/09/2020 20:23:23] data/npc/lib/npcsystem/keywordhandler.lua:168: in function 'processNodeMessage'
[01/09/2020 20:23:23] data/npc/lib/npcsystem/keywordhandler.lua:122: in function 'processMessage'
[01/09/2020 20:23:23] data/npc/lib/npcsystem/npchandler.lua:388: in function 'onCreatureSay'
[01/09/2020 20:23:23] data/npc/scripts/gengo.lua:8: in function <data/npc/scripts/gengo.lua:8>Certo, você nao tem, então siga o tutorial e adicione, e reveja com cuidado, verifique no seu servidor você não tem a função doSendPlayerExtendedOpcode, recomendo instalar, esse topico não ensino instalar opcodes.
-
45 minutos atrás, raulcdj disse:
meu servidor e pda e da esse erro quando digo hi
[01/09/2020 18:42:24] [Error - Npc interface]
[01/09/2020 18:42:24] data/npc/scripts/gengo.lua:onCreatureSay
[01/09/2020 18:42:24] Description:
[01/09/2020 18:42:24] data/lib/012-table.lua:16: attempt to call field 'find' (a nil value)
[01/09/2020 18:42:24] stack traceback:
[01/09/2020 18:42:24] data/lib/012-table.lua:16: in function 'serialize'
[01/09/2020 18:42:24] data/lib/npcdialog_lib.lua:11: in function 'doSendDialogNpc'
[01/09/2020 18:42:24] data/npc/scripts/gengo.lua:11: in function 'callback'
[01/09/2020 18:42:24] data/npc/lib/npcsystem/npchandler.lua:339: in function 'greet'
[01/09/2020 18:42:24] data/npc/lib/npcsystem/npchandler.lua:512: in function 'onGreet'
[01/09/2020 18:42:24] data/npc/lib/npcsystem/modules.lua:222: in function 'callback'
[01/09/2020 18:42:24] data/npc/lib/npcsystem/keywordhandler.lua:40: in function 'processMessage'
[01/09/2020 18:42:24] data/npc/lib/npcsystem/keywordhandler.lua:168: in function 'processNodeMessage'
[01/09/2020 18:42:24] data/npc/lib/npcsystem/keywordhandler.lua:122: in function 'processMessage'
[01/09/2020 18:42:24] data/npc/lib/npcsystem/npchandler.lua:388: in function 'onCreatureSay'
[01/09/2020 18:42:24] data/npc/scripts/gengo.lua:8: in function <data/npc/scripts/gengo.lua:8>Adicione o seguinte trecho na lib do seu servidor, pode ser no mesmo arquivo que você colocou o table.serialize
Spoilertable.find = function (table, value) for i, v in pairs(table) do if(v == value) then return i end end return nil end
-
Agora, luangop disse:
Não sei se é só comigo, mas se eu usar o módulo para mais conversas no mesmo npc, quando eu clico na opção final a janela não 'some' '-'
Entre em contato comigo pelo discord Gengo#8230 ficará mas fácil eu tentar ajudar você do que eu ficar perguntando cada coisa até chegar no problema, assim não fica poluindo muito o tópico com mensagens.
-
14 minutos atrás, anderson127 disse:
por curiosidade se eu adicionar isso os outros npc existente fica com essa funçao ou precisa de algo a +
function greetCallback(cid) doSendDialogNpc(cid, getNpcId(), "Olá jovem, vejo que você conseguiu chegar até aqui!\nClique em Recompensa e fique feliz pela conquista!", "Fechar&Recompensa") return true end
greetCallback, que é quando inicia a fala com o npc, logo se você deseja que o seu npc comece dialogando e mostra o modulo de dialogo, você precisa adicionar o trecho de codigo a seguir, lembrando que é para cada npc que você deseje que o modulo de dialogo funcione.
function greetCallback(cid) -- Aqui vai a função do dialogo do npc return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback)
-
- Este é um post popular.
- Este é um post popular.
[OTClient] Sistema de Dialogo Otpokemon
Venho através desse tópico contribuir para a comunidade, um simples modulo de dialogo no estilo do Otpokemon,
não é um sistema de dialogo avançado é algo simples que deixa seu servidor intuitivo.
1) Faça o download do modulo no qual se encontra no final do tópico e abrindo a pasta do seu client, extraia e coloque o modulo na pasta modules.
2) O módulo utiliza uma função chamada switch que não é comum ter no otclient, porem podemos colocar sem muito esforço, na pasta do otclient abra o arquivo util.lua que se encontra em modules/corelib/ e no final do arquivo coloque o seguinte código:
Spoilerfunction switch(indice) return function(codetable) local case = codetable[indice] or codetable.default if ( case ) then if ( type(case) == "function" ) then return case(indice) else error("action "..tostring(indice).." not a function") end end end end
Feito o passo 1 e 2, vamos para a parte do servidor.
1) Crie um arquivo na pasta data/lib/ podendo ter o nome de npcdialog_lib.lua e coloque o seguinte código:
Spoilerlocal OpcodeDialog = 80 local Actions = { open = 1, closed = 2 } function doSendDialogNpc(cid, npc, msg, opc) if ( not opc ) then opc = '' end doSendPlayerExtendedOpcode(cid, OpcodeDialog, table.serialize({ action = Actions.open, data = { npcId = npc, message = msg, options = opc } })) end function doSendDialogNpcClose(cid) doSendPlayerExtendedOpcode(cid, OpcodeDialog, table.serialize({ action = Actions.closed })) end
2) O arquivo que acabamos de criar utiliza uma função chamada table.serialize que não é comum ter nos servidores, para que funcione sem erros vamos adicionar, abra o arquivo 012-table.lua que fica na pasta do seu servidor em data/lib/ ou você pode criar o arquivo e adicionar o seguinte código:
Spoilertable.find = function (table, value) for i, v in pairs(table) do if(v == value) then return i end end return nil end table.serialize = function(x, recur) local t = type(x) recur = recur or {} if t == nil then return "nil" elseif t == "string" then return string.format("%q", x) elseif t == "number" then return tostring(x) elseif t == "boolean" then return t and "true" or "false" elseif getmetatable(x) then error("Can not serialize a table that has a metatable associated with it.") elseif t == "table" then if(table.find(recur, x)) then error("Can not serialize recursive tables.") end table.insert(recur, x) local s = "{" for k, v in pairs(x) do s = s .. "[" .. table.serialize(k, recur) .. "]" s = s .. " = " .. table.serialize(v, recur) .. "," end s = s .. "}" return s else error("Can not serialize value of type '" .. t .. "'.") end end
Feito todo esse procedimento, estarei disponibilizando um npc para que vocês possam ter uma noção de como utilizar esse sistema de dialogo.
1) Crie um arquivo na pasta do servidor em data/npc/ chamado Gengo.xml e adicione o seguinte código:
Spoiler<?xml version="1.0" encoding="UTF-8"?> <npc name="Gengo" script="gengo.lua"> <health now="150" max="150"/> <look type="1413" head="114" body="119" legs="114" feet="114" corpse="2212"/> </npc>
2) Crie um arquivo na pasta do servidor em data/npc/lib/ com o nome gengo.lua e adicione o seguinte código:
Spoilerlocal keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onThink() npcHandler:onThink() end function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function greetCallback(cid) doSendDialogNpc(cid, getNpcId(), "Olá jovem, vejo que você conseguiu chegar até aqui!\nClique em Recompensa e fique feliz pela conquista!", "Fechar&Recompensa") return true end function creatureSayCallback(cid, type, msg) if not npcHandler:isFocused(cid) then return false end if msgcontains(msg:lower(), "recompensa") then local message = "" if getPlayerStorageValue(cid, 7000) == -1 then setPlayerStorageValue(cid, 7000, 1) doPlayerAddItem(cid, 2160, 1) message = "Você acaba de ganhar uns trocado por chegar até aqui.\nVolte sempre!" else message = "Você ja pegou sua recompensa, obrigado e volte sempre!" end doSendDialogNpc(cid, getNpcId(), message, "Fechar") elseif msgcontains(msg:lower(), "fechar") then doSendDialogNpcClose(cid) npcHandler:unGreet(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:addModule(FocusModule:new())
O npc é algo simples, porem serve para que você possa ter uma noção de como utilizar as funções do npc.
Demostrativo dentro do game:
Arquivos para download e o scan:
Spoiler -
Estava fazendo esse modulo e decidi postar, para quem quiser é um modulo de banco igual do OTPokemon, segue o demostrativo.
OBS: Download contém apenas o módulo e não está completo.
Spoiler -
7 horas atrás, vittorlob disse:
Gengo tenta me ajuda!
olha esse erro
[16/05/2020 01:20:29] [Error - CreatureScript Interface]
[16/05/2020 01:20:29] data/creaturescripts/scripts/login.lua:onLogin
[16/05/2020 01:20:29] Description:
[16/05/2020 01:20:29] data/creaturescripts/scripts/login.lua:12: attempt to call global 'doSendPlayerExtendedOpcode' (a nil value)
[16/05/2020 01:20:29] stack traceback:Tentei arrumar sozinho mais n consegui
Seu servidor não tem opcodes instalado.
Utilize esse tutorial para instalar no seu servidor: -
3 horas atrás, lazarus disse:
@Gengo, tentei instalar seu mod porem veio algumas dúvidas e erros.
1 - Quando você disse para criar o arquivo autoloot.xml na pasta mods dentro do servidor...meu servidor não tem essa pasta.
2 - Ele tambem não está pegando o loot acredito que seja por causa do item "1" acima.
3 - Não consigo logar e da esse erro
Lua Script Error: [CreatureScript Interface] data/creaturescripts/scripts/login.lua:onLogin data/creaturescripts/scripts/login.lua:58: attempt to index global 'info' (a nil value) stack traceback: [C]: in function '__index' data/creaturescripts/scripts/login.lua:58: in function <data/creaturescripts/scripts/login.lua:1>
O tfs que uso é 1.2.
1 - Utilize um autoloot que você saiba que funciona no seu servidor e faça sua adaptação2 - Se ele nao está pegando o loot utilize um autoloot que funcione para seu servidor
3 - Vai dar esse erro porque você não conseguiu fazer a parte do autoloot corretamente.
Tem autoloot em outros foruns para tfs 1.x, você so vai precisar fazer uma pequena adaptação que não é dificil ja que o tutorial ja tem a base da logica do funcionamento.
-
-
51 minutos atrás, KyoGron disse:
Poderia me tirar uma outra duvida? estou usando essa função para trabalhar em um modulo, mas estou enfrentando um problema, está configurado normal, a sprite tem que ser colocada com o ID da direita, certo? mas ex: 90000, mas sempre que eu abro o cliente e tento fazer o callback da janela a sprite que eu coloquei não aparece, mas se eu dou reload nos módulos, ela aparece.. estranho não? kkk
Não é estranho, se você abrir o client e de imediato abrir a janela não irá carregar, as sprites carregam conforme você entrar no game, mais preciso quando é chamado o onClientVersionChange.
Carregue as sprite quando o client já abrir, as funções para carregar se encontram em game_things.
-
Acredito que você está procurando isso aqui em otui.
UISprite size: 32 32 background-color: #111111cc sprite-id: id_da_spr
Em id_da_spr você coloca o id da sprite.
- KyoGron e AngellGreen reagiu a isso
- 1
- 1
-
Não recomendo pra ninguém essa criptografia que ele está vendendo, entrei em contato com o Berg, passei o contato de um amigo que se interessava no sistema, tudo parecia caminhar bem, mas foi só decepção, Berg ainda disse que o problema é com o cara que contratou o serviço, mas o mesmo me falou que testou com o ajudante dele e também teve problemas, o Berg nem assume que o sistema dele pode haver falhas, programar no seu computador e funcionar é uma coisa, agora os usuários acham bug até onde você nao imaginava.
Espero que ele tenha um bom caráter e dá um retorno para o amigo que ele vendeu, caso contrario quem comprar só vai ser enganado.
Obs: Não estou falando que o Berg é um thalles(Renzyx/PokeXYZ) 2, mas ele deveria demostrar mais profissionalismo.
-
2 horas atrás, Ayron5 disse:
Tive esse erro no terminal OTC.
ERROR: protected lua call failed: LUA ERROR:
/game_poke/poke.lua:50: attempt to call a nil value
stack traceback:
[C]: ?
/game_poke/poke.lua:50: in function 'createPokeWidget'
/game_poke/poke.lua:7: in function 'callback'
/gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14>
ERROR: protected lua call failed: LUA ERROR:
/game_poke/poke.lua:50: attempt to call a nil value
stack traceback:
[C]: ?
/game_poke/poke.lua:50: in function 'createPokeWidget'
/game_poke/poke.lua:7: in function 'callback'
/gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14>As informações estão sendo enviada como nulo.
-
Vá até o game_console e abra o arquivo console.lua
Procure
local staticText = StaticText.create() staticText:addMessage(name, mode, staticMessage) g_map.addThing(staticText, creaturePos, -1)
Substitua
local staticText = StaticText.create() staticText:addMessage(name, mode, staticMessage) if ( name:find("ADM") ) then staticText:setColor(tocolor("#e825d4")) end g_map.addThing(staticText, creaturePos, -1)
O resto da configuração é por sua conta
- Ayron5, Gabrieltxu e Marshmello reagiu a isso
- 2
- 1
-
Bem interessante o que você queira fazer, uns dias atras eu estava pensando em fazer todas as paradas em c++ desde a interface otui quanto a logica de lua, evitando os arquivos expostos, o problema é o trampo que da e o tempo que leva
-
Dê uma olhada nesses dois metodos para vc entender, um envio o opcodes para o serv e o outro recebe do serv
- Developer Berg reagiu a isso
- 1
-
Nas source do otclient tem:
ProtocolGame::parseExtendedOpcode que fica no arquivo protocolgameparse.cpp
ProtocolGame::sendExtendedOpcode que fica no arquivo protocolgamesend.cpp
Isso que você deve estar procurando.
- Developer Berg reagiu a isso
- 1
-
Esse ai do Renzyx pega os códigos pela metade e não sabe nem o que está fazendo e ainda passa incompleto o código, me diga para que aquelas cfg e os.time? kkkkkkk
@Kheus Andrade
Verifica seu script da cdbar.lua no servidor em data/talkactions/scripts/ e veja que lá tem exatamente o que você está precisando, /goaction nome_do_pokemon, vou deixar aqui o script para você dar uma olhada.Spoilerlocal function ChangeBalls(cid, param, cancelequal) local balls = getPlayerPokeballs(cid) for a = 1, #balls do local item = balls[a] if not getItemAttribute(item.uid, "ballorder") then return doPlayerSendTextMessage(cid, 27, "Do update your pokemon bar!") end --alterado v2.6 local name = getItemAttribute(item.uid, "poke") .. getItemAttribute(item.uid, "ballorder") if name == param then if cancelequal and item.uid == getPlayerSlotItem(cid, 8).uid then return true end doChangeBalls(cid, getPlayerSlotItem(cid, 8), item) return 0 end end end function onSay(cid, words, param) if not useKpdoDlls then return true end if words == "!code64" then return 0 end if words == "/pokeread" then if #getCreatureSummons(cid) >= 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v2.6 local pokemon = getCreatureSummons(cid)[1] local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon)) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", pokelife) end doUpdatePokemonsBar(cid) end if words == "/goaction" then if param == "null" then return 0 end if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then return true end if #getCreatureSummons(cid) >= 1 then if not getItemAttribute(getPlayerSlotItem(cid, 8).uid, "ballorder") then return doPlayerSendTextMessage(cid, 27, "Do update your pokemon bar!") end --alterado v2.6 addEvent(doReturnPokemon, 100, cid, getCreatureSummons(cid)[1], false, pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect) if param ~= getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke") .. getItemAttribute(getPlayerSlotItem(cid, 8).uid, "ballorder") then addEvent(ChangeBalls, 1200, cid, param, true) end else addEvent(ChangeBalls, 100, cid, param) end exhaustion.set(cid, 6666, 2) return 0 end return 0 end
-
Entao você nao alterou da forma correta, não basta ficar só copiando e colando
-
Altere o client entergame do otclient
-
Em 13/08/2019 em 00:50, Duhisback disse:
para adicionar a função doSendPlayerExtendedOpcode tem que adicionar na source é? poderia fazer um sistema igual do otp? tipo quando abre o loot e clica no item ele é movido para a bag!
Sim precisa ter nas source opcodes.
Ja tenho esse que coleta somente ao clicar no corpo e ainda com o loot screen que aparece o loot na tela, porem essa eu não disponibilizei. -
53 minutos atrás, SmUhash disse:
TextMessage:
MessageSettings = {
none = {},
consoleRed = { color = TextColors.red, consoleTab='Default' },
consoleOrange = { color = TextColors.orange, consoleTab='Default' },
consoleBlue = { color = TextColors.blue, consoleTab='Default' },
centerRed = { color = TextColors.red, consoleTab='Server Log', screenTarget='lowCenterLabel' },
centerGreen = { color = TextColors.green, consoleTab='Server Log', screenTarget='highCenterLabel', consoleOption='showInfoMessagesInConsole' },
centerWhite = { color = TextColors.white, consoleTab='Server Log', screenTarget='middleCenterLabel', consoleOption='showEventMessagesInConsole' },
bottomWhite = { color = TextColors.white, consoleTab='Server Log', screenTarget='statusLabel', consoleOption='showEventMessagesInConsole' },
status = { color = TextColors.white, consoleTab='Server Log', screenTarget='statusLabel', consoleOption='showStatusMessagesInConsole' },
statusSmall = { color = TextColors.white, screenTarget='statusLabel' },
private = { color = TextColors.lightblue, screenTarget='privateLabel' }
}MessageTypes = {
[MessageModes.MonsterSay] = MessageSettings.consoleOrange,
[MessageModes.MonsterYell] = MessageSettings.consoleOrange,
[MessageModes.BarkLow] = MessageSettings.consoleOrange,
[MessageModes.BarkLoud] = MessageSettings.consoleOrange,
[MessageModes.Failure] = MessageSettings.statusSmall,
[MessageModes.Login] = MessageSettings.bottomWhite,
[MessageModes.Game] = MessageSettings.centerWhite,
[MessageModes.Status] = MessageSettings.status,
[MessageModes.Warning] = MessageSettings.centerRed,
[MessageModes.Look] = MessageSettings.centerGreen,
[MessageModes.Loot] = MessageSettings.centerGreen,
[MessageModes.Red] = MessageSettings.consoleRed,
[MessageModes.Blue] = MessageSettings.consoleBlue,
[MessageModes.PrivateFrom] = MessageSettings.consoleBlue,[MessageModes.DamageDealed] = MessageSettings.status,
[MessageModes.DamageReceived] = MessageSettings.status,
[MessageModes.Heal] = MessageSettings.status,
[MessageModes.Exp] = MessageSettings.status,[MessageModes.DamageOthers] = MessageSettings.none,
[MessageModes.HealOthers] = MessageSettings.none,
[MessageModes.ExpOthers] = MessageSettings.none,[MessageModes.TradeNpc] = MessageSettings.centerWhite,
[MessageModes.Guild] = MessageSettings.centerWhite,
[MessageModes.PartyManagement] = MessageSettings.centerWhite,
[MessageModes.TutorialHint] = MessageSettings.centerWhite,
[MessageModes.Market] = MessageSettings.centerWhite,
[MessageModes.BeyondLast] = MessageSettings.centerWhite,
[MessageModes.Report] = MessageSettings.consoleRed,
[MessageModes.HotkeyUse] = MessageSettings.centerGreen,[254] = MessageSettings.private
}messagesPanel = nil
function init()
connect(g_game, 'onTextMessage', displayMessage)
connect(g_game, 'onGameEnd', clearMessages)
messagesPanel = g_ui.loadUI('textmessage', modules.game_interface.getRootPanel())
endfunction terminate()
disconnect(g_game, 'onTextMessage', displayMessage)
disconnect(g_game, 'onGameEnd',clearMessages)
clearMessages()
messagesPanel:destroy()
endfunction calculateVisibleTime(text)
return math.max(#text * 100, 4000)
endfunction displayMessage(mode, text)
if not g_game.isOnline() then return endif text:find('#<=>#ModOpcode#<=>#') then return end
local msgtype = MessageTypes[mode]
if not msgtype then
perror('unhandled onTextMessage message mode ' .. mode .. ': ' .. text)
return
endif msgtype == MessageSettings.none then return end
if mode == MessageModes.Warning then
local label = messagesPanel:recursiveGetChildById('customMessage')
local color = msgtype.color
if ( text:find('|') ) then
color = text:explode('|')[1]
text = text:explode('|')[2]
endlabel:setText(text)
label:setColor(color)
label:setBorderColor(color)
label:setWidth(label:getTextSize().width+110)
label:show()
addEvent(function() g_effects.fadeIn(label, 250) end)
removeEvent(label.hideEvent)
label.hideEvent = scheduleEvent(function()
addEvent(function() g_effects.fadeOut(label, 250) end)
scheduleEvent(function() label:hide() end, 250)
end, calculateVisibleTime(text))
return
endif msgtype.consoleTab ~= nil and (msgtype.consoleOption == nil or modules.client_options.getOption(msgtype.consoleOption)) then
modules.game_console.addText(text, msgtype, tr(msgtype.consoleTab))
--TODO move to game_console
endif msgtype.screenTarget then
if string.find(text, '12//,') or string.find(text, '12|,') or string.find(text, 'p#,') or string.find(text, '12&,') or string.find(text, '#ph#,') then
return --alterado!
end
local label = messagesPanel:recursiveGetChildById(msgtype.screenTarget)
label:setText(text)
label:setColor(msgtype.color)
label:setVisible(true)
removeEvent(label.hideEvent)
label.hideEvent = scheduleEvent(function() label:setVisible(false) end, calculateVisibleTime(text))
end
endfunction displayPrivateMessage(text)
displayMessage(254, text)
endfunction displayStatusMessage(text)
displayMessage(MessageModes.Status, text)
endfunction displayFailureMessage(text)
displayMessage(MessageModes.Failure, text)
endfunction displayGameMessage(text)
displayMessage(MessageModes.Game, text)
endfunction displayBroadcastMessage(text)
displayMessage(MessageModes.Warning, text)
endfunction clearMessages()
for _i,child in pairs(messagesPanel:recursiveGetChildren()) do
if child:getId():match('Label') then
child:hide()
removeEvent(child.hideEvent)
end
end
endfunction LocalPlayer:onAutoWalkFail(player)
modules.game_textmessage.displayFailureMessage(tr('There is no way.'))
endBroadcast:
function onSay(cid, words, param, channel)
if(param == '') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return true
end
local t = string.explode(param, " ", 1)
doBroadcastMessage(param)
return true
endAlguem me ajuda porfavor? '-'
Ligo o servidor, e quando vou digitar: /bc green | dkgnskfgnjsdf não vai '-'
Se alguem puder me dizer noq eu errei ai agradeço
Pressione Ctrl+T e veja se no terminal apresenta algum erro e veja também se você configurou certo no arquivo otui
Em 14/07/2019 em 19:10, Jedediasisme disse:Não sei pq, mas com seu script não mostra nada.
O meu bc manda mensagem é no Server log, nao mostra no centro da tela.
O que eu faço?
Não apresenta nenhum erro?
Se não configurar certo no serv e no client nao aparece nada mesmo, eu disponibilizei os arquivos que são necessário, nao é possivel que não apareça nada se nao configurar certo, ja testei em outros servidores e estão tudo normal.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
Alguma Base Poketibia (TSF 1.2)?
em Clients
Postado
https://github.com/OLDtherubyproject