eduardogaier 61 Postado 9 de Setembro Compartilhar Postado 9 de Setembro Tutorial de Instalação e Configuração do Módulo npcdialog Instalação Colocar a pasta do módulo no cliente: Copie a pasta game interface e cole na pasta modules do seu cliente. Adicionar o arquivo da biblioteca no servidor: Copie o arquivo npcdialog_lib e cole na pasta /servidor/data/lib do seu servidor. Inserir arquivos de exemplo do NPC: Pegue o arquivo de NPC de exemplo chamado prefeito. Coloque os arquivos eduardo.lua e eduardo.xml na pasta dos NPCs. Configuração para Habilitar a Modal ao Clicar no NPC Editar a interface do jogo: Dentro da pasta game interface, abra o arquivo necessário. Procurar pela função específica: Procure pela função function processMouseAction. Substituir o código: Substitua o conteúdo da função processMouseAction pelo código fornecido a seguir. function processMouseAction(menuPosition, mouseButton, autoWalkPos, lookThing, useThing, creatureThing, attackCreature, marking) local keyboardModifiers = g_keyboard.getModifiers() if g_app.isMobile() then if mouseButton == MouseRightButton then createThingMenu(menuPosition, lookThing, useThing, creatureThing) return true end if mouseButton ~= MouseLeftButton and mouseButton ~= MouseTouch2 and mouseButton ~= MouseTouch3 then return false end local action = getLeftAction() if action == "look" then if lookThing then resetLeftActions() g_game.look(lookThing) return true end return true elseif action == "use" then if useThing then resetLeftActions() if useThing:isContainer() then if useThing:getParentContainer() then g_game.open(useThing, useThing:getParentContainer()) else g_game.open(useThing) end return true elseif useThing:isMultiUse() then startUseWith(useThing) return true else g_game.use(useThing) return true end end return true elseif action == "attack" then if attackCreature and attackCreature ~= player then resetLeftActions() g_game.attack(attackCreature) return true elseif creatureThing and creatureThing ~= player and creatureThing:getPosition().z == autoWalkPos.z then resetLeftActions() g_game.attack(creatureThing) return true end return true elseif action == "follow" then if attackCreature and attackCreature ~= player then resetLeftActions() g_game.follow(attackCreature) return true elseif creatureThing and creatureThing ~= player and creatureThing:getPosition().z == autoWalkPos.z then resetLeftActions() g_game.follow(creatureThing) return true end return true elseif not autoWalkPos and useThing then createThingMenu(menuPosition, lookThing, useThing, creatureThing) return true end elseif not modules.client_options.getOption('classicControl') then if keyboardModifiers == KeyboardNoModifier and mouseButton == MouseRightButton then createThingMenu(menuPosition, lookThing, useThing, creatureThing) return true elseif lookThing and keyboardModifiers == KeyboardShiftModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.look(lookThing) return true elseif useThing and keyboardModifiers == KeyboardCtrlModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then if useThing:isContainer() then if useThing:getParentContainer() then g_game.open(useThing, useThing:getParentContainer()) else g_game.open(useThing) end return true elseif useThing:isMultiUse() then startUseWith(useThing) return true else g_game.use(useThing) return true end return true elseif attackCreature and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.attack(attackCreature) return true elseif creatureThing and creatureThing:getPosition().z == autoWalkPos.z and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.attack(creatureThing) return true elseif creatureThing.isNpc() and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then local destPos = attackCreature:getPosition() local myPos = g_game.getLocalPlayer():getPosition() if ((destPos.x >= myPos.x - 3) and (destPos.x <= myPos.x + 3) and (destPos.y >= myPos.y - 3) and (destPos.y <= myPos.y + 3)) then scheduleEvent(g_game.talkChannel(11,0,"hi"), 500) else modules.game_textmessage.displayFailureMessage("Você não pode conversar com o NPC pois você está muito longe. Aproxime-se e tente novamente.") end return true end else if useThing and keyboardModifiers == KeyboardNoModifier and mouseButton == MouseRightButton and not g_mouse.isPressed(MouseLeftButton) then local player = g_game.getLocalPlayer() if attackCreature and attackCreature ~= player then if not attackCreature:isNpc() then g_game.attack(attackCreature) else local destPos = attackCreature:getPosition() local myPos = player:getPosition() if ((destPos.x >= myPos.x - 3) and (destPos.x <= myPos.x + 3) and (destPos.y >= myPos.y - 3) and (destPos.y <= myPos.y + 3)) then scheduleEvent(g_game.talkChannel(11,0,"hi"), 500) else modules.game_textmessage.displayFailureMessage("Você não pode conversar com o NPC pois você está muito longe. Aproxime-se e tente novamente.") end end return true elseif creatureThing and creatureThing ~= player and creatureThing:getPosition().z == autoWalkPos.z then g_game.attack(creatureThing) return true elseif useThing:isContainer() then if useThing:getParentContainer() then g_game.open(useThing, useThing:getParentContainer()) return true else g_game.open(useThing) return true end elseif useThing:isMultiUse() then startUseWith(useThing) return true else g_game.use(useThing) return true end return true elseif lookThing and keyboardModifiers == KeyboardShiftModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.look(lookThing) return true elseif lookThing and ((g_mouse.isPressed(MouseLeftButton) and mouseButton == MouseRightButton) or (g_mouse.isPressed(MouseRightButton) and mouseButton == MouseLeftButton)) then g_game.look(lookThing) return true elseif useThing and keyboardModifiers == KeyboardCtrlModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then createThingMenu(menuPosition, lookThing, useThing, creatureThing) return true elseif attackCreature and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.attack(attackCreature) return true elseif creatureThing and creatureThing:getPosition().z == autoWalkPos.z and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.attack(creatureThing) return true end end local player = g_game.getLocalPlayer() player:stopAutoWalk() if autoWalkPos and keyboardModifiers == KeyboardNoModifier and (mouseButton == MouseLeftButton or mouseButton == MouseTouch2 or mouseButton == MouseTouch3) then local autoWalkTile = g_map.getTile(autoWalkPos) if autoWalkTile and not autoWalkTile:isWalkable(true) then modules.game_textmessage.displayFailureMessage(tr('Sorry, not possible.')) return false end player:autoWalk(autoWalkPos) return true end return false end Dentro da pasta fornecida com os arquivos tem o arquivo interface.lua, não utilize-o , ele serve para você poder comparar a linha, facilitando o trabalho. Pronto só aproveitar o module. SCAM: This is the hidden content, please Entre ou Cadastre-se Créditos:Thales script para clicar no Npc. NpcDialog.rar 18 3 Link para o comentário https://tibiadevs.com/forums/topic/587-npcdialog-modal-completo/ Compartilhar em outros sites Mais opções de compartilhamento...
Suporte george192 385 Postado 9 de Setembro Suporte Compartilhar Postado 9 de Setembro Boa tarde, tópico muito bom, agradecemos a contribuição! Poderia postar o scan do rar? Link para o comentário https://tibiadevs.com/forums/topic/587-npcdialog-modal-completo/#findComment-3215 Compartilhar em outros sites Mais opções de compartilhamento...
Administrador TELASKO 2.944 Postado 9 de Setembro Administrador Compartilhar Postado 9 de Setembro 32 minutos atrás, eduardogaier disse: Tutorial de Instalação e Configuração do Módulo npcdialog Instalação Colocar a pasta do módulo no cliente: Copie a pasta game interface e cole na pasta modules do seu cliente. Adicionar o arquivo da biblioteca no servidor: Copie o arquivo npcdialog_lib e cole na pasta /servidor/data/lib do seu servidor. Inserir arquivos de exemplo do NPC: Pegue o arquivo de NPC de exemplo chamado prefeito. Coloque os arquivos eduardo.lua e eduardo.xml na pasta dos NPCs. Configuração para Habilitar a Modal ao Clicar no NPC Editar a interface do jogo: Dentro da pasta game interface, abra o arquivo necessário. Procurar pela função específica: Procure pela função function processMouseAction. Substituir o código: Substitua o conteúdo da função processMouseAction pelo código fornecido a seguir. function processMouseAction(menuPosition, mouseButton, autoWalkPos, lookThing, useThing, creatureThing, attackCreature, marking) local keyboardModifiers = g_keyboard.getModifiers() if g_app.isMobile() then if mouseButton == MouseRightButton then createThingMenu(menuPosition, lookThing, useThing, creatureThing) return true end if mouseButton ~= MouseLeftButton and mouseButton ~= MouseTouch2 and mouseButton ~= MouseTouch3 then return false end local action = getLeftAction() if action == "look" then if lookThing then resetLeftActions() g_game.look(lookThing) return true end return true elseif action == "use" then if useThing then resetLeftActions() if useThing:isContainer() then if useThing:getParentContainer() then g_game.open(useThing, useThing:getParentContainer()) else g_game.open(useThing) end return true elseif useThing:isMultiUse() then startUseWith(useThing) return true else g_game.use(useThing) return true end end return true elseif action == "attack" then if attackCreature and attackCreature ~= player then resetLeftActions() g_game.attack(attackCreature) return true elseif creatureThing and creatureThing ~= player and creatureThing:getPosition().z == autoWalkPos.z then resetLeftActions() g_game.attack(creatureThing) return true end return true elseif action == "follow" then if attackCreature and attackCreature ~= player then resetLeftActions() g_game.follow(attackCreature) return true elseif creatureThing and creatureThing ~= player and creatureThing:getPosition().z == autoWalkPos.z then resetLeftActions() g_game.follow(creatureThing) return true end return true elseif not autoWalkPos and useThing then createThingMenu(menuPosition, lookThing, useThing, creatureThing) return true end elseif not modules.client_options.getOption('classicControl') then if keyboardModifiers == KeyboardNoModifier and mouseButton == MouseRightButton then createThingMenu(menuPosition, lookThing, useThing, creatureThing) return true elseif lookThing and keyboardModifiers == KeyboardShiftModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.look(lookThing) return true elseif useThing and keyboardModifiers == KeyboardCtrlModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then if useThing:isContainer() then if useThing:getParentContainer() then g_game.open(useThing, useThing:getParentContainer()) else g_game.open(useThing) end return true elseif useThing:isMultiUse() then startUseWith(useThing) return true else g_game.use(useThing) return true end return true elseif attackCreature and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.attack(attackCreature) return true elseif creatureThing and creatureThing:getPosition().z == autoWalkPos.z and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.attack(creatureThing) return true elseif creatureThing.isNpc() and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then local destPos = attackCreature:getPosition() local myPos = g_game.getLocalPlayer():getPosition() if ((destPos.x >= myPos.x - 3) and (destPos.x <= myPos.x + 3) and (destPos.y >= myPos.y - 3) and (destPos.y <= myPos.y + 3)) then scheduleEvent(g_game.talkChannel(11,0,"hi"), 500) else modules.game_textmessage.displayFailureMessage("Você não pode conversar com o NPC pois você está muito longe. Aproxime-se e tente novamente.") end return true end else if useThing and keyboardModifiers == KeyboardNoModifier and mouseButton == MouseRightButton and not g_mouse.isPressed(MouseLeftButton) then local player = g_game.getLocalPlayer() if attackCreature and attackCreature ~= player then if not attackCreature:isNpc() then g_game.attack(attackCreature) else local destPos = attackCreature:getPosition() local myPos = player:getPosition() if ((destPos.x >= myPos.x - 3) and (destPos.x <= myPos.x + 3) and (destPos.y >= myPos.y - 3) and (destPos.y <= myPos.y + 3)) then scheduleEvent(g_game.talkChannel(11,0,"hi"), 500) else modules.game_textmessage.displayFailureMessage("Você não pode conversar com o NPC pois você está muito longe. Aproxime-se e tente novamente.") end end return true elseif creatureThing and creatureThing ~= player and creatureThing:getPosition().z == autoWalkPos.z then g_game.attack(creatureThing) return true elseif useThing:isContainer() then if useThing:getParentContainer() then g_game.open(useThing, useThing:getParentContainer()) return true else g_game.open(useThing) return true end elseif useThing:isMultiUse() then startUseWith(useThing) return true else g_game.use(useThing) return true end return true elseif lookThing and keyboardModifiers == KeyboardShiftModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.look(lookThing) return true elseif lookThing and ((g_mouse.isPressed(MouseLeftButton) and mouseButton == MouseRightButton) or (g_mouse.isPressed(MouseRightButton) and mouseButton == MouseLeftButton)) then g_game.look(lookThing) return true elseif useThing and keyboardModifiers == KeyboardCtrlModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then createThingMenu(menuPosition, lookThing, useThing, creatureThing) return true elseif attackCreature and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.attack(attackCreature) return true elseif creatureThing and creatureThing:getPosition().z == autoWalkPos.z and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then g_game.attack(creatureThing) return true end end local player = g_game.getLocalPlayer() player:stopAutoWalk() if autoWalkPos and keyboardModifiers == KeyboardNoModifier and (mouseButton == MouseLeftButton or mouseButton == MouseTouch2 or mouseButton == MouseTouch3) then local autoWalkTile = g_map.getTile(autoWalkPos) if autoWalkTile and not autoWalkTile:isWalkable(true) then modules.game_textmessage.displayFailureMessage(tr('Sorry, not possible.')) return false end player:autoWalk(autoWalkPos) return true end return false end Dentro da pasta fornecida com os arquivos tem o arquivo interface.lua, não utilize-o , ele serve para você poder comparar a linha, facilitando o trabalho. Pronto só aproveitar o module. Créditos:Thales script para clicar no Npc. NpcDialog.rar 409.25 kB · 1 download Top demais, obrigado 😃 Link para o comentário https://tibiadevs.com/forums/topic/587-npcdialog-modal-completo/#findComment-3216 Compartilhar em outros sites Mais opções de compartilhamento...
guindaste 0 Postado 9 de Setembro Compartilhar Postado 9 de Setembro Gostei muito depois vou testar! Link para o comentário https://tibiadevs.com/forums/topic/587-npcdialog-modal-completo/#findComment-3218 Compartilhar em outros sites Mais opções de compartilhamento...
eduardogaier 61 Postado 9 de Setembro Autor Compartilhar Postado 9 de Setembro 33 minutos atrás, george192 disse: Boa tarde, tópico muito bom, agradecemos a contribuição! Poderia postar o scan do rar? Salve postado Link para o comentário https://tibiadevs.com/forums/topic/587-npcdialog-modal-completo/#findComment-3219 Compartilhar em outros sites Mais opções de compartilhamento...
Suporte george192 385 Postado 9 de Setembro Suporte Compartilhar Postado 9 de Setembro 10 minutos atrás, eduardogaier disse: Salve postado Daaaalee!!! Link para o comentário https://tibiadevs.com/forums/topic/587-npcdialog-modal-completo/#findComment-3220 Compartilhar em outros sites Mais opções de compartilhamento...
Suporte Sollix 102 Postado 9 de Setembro Suporte Compartilhar Postado 9 de Setembro Uma excelente contribuição, agradecemos! Link para o comentário https://tibiadevs.com/forums/topic/587-npcdialog-modal-completo/#findComment-3221 Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora