BlazerX 51 Postado Julho 23, 2019 Share Postado Julho 23, 2019 (editado) Trainer Card Fala galera do Xtibia, vim trazer mais uma contribuição para a comunidade, é um módulo para otclient básico porém legal. Como funciona? O Trainer Card vai mostrar digamos algumas informações do seu personagem, você pode adicionar mais informações a esse card, vai da criatividade de cada um deixar bem funcional. Script do servidor:Crique um arquivo na pasta do seu servidor em data/creaturescript/ e coloque o nome de trainercard.lua Spoiler local opcodeCard = 71 function onExtendedOpcode(cid, opcode, buffer) if opcode == opcodeCard then local value = '' if ( buffer == 'poke' ) then for indice, ball in pairs(getPlayerPokeballs(cid)) do value = getItemAttribute(ball.uid, "poke")..','..value end elseif ( buffer == 'badges' ) then local leaderGym = {"Brock", "Misty", "Surge", "Erika", "Sabrina", "Koga", "Blaine", "Giovanni"} for i = 1, #leaderGym do value = getPlayerBadgeOfLeader(cid, leaderGym[i])..','..value end end doSendPlayerExtendedOpcode(cid, 71, buffer..'-'..value) end end Coloque a seguinte tag no arquivo do creaturescripts.xml: <event type="extendedopcode" name="TrainerCard" event="script" value="trainercard.lua"/> Registre o evento no arquivo onLogin.lua onde se encontra na mesma pasta: registerCreatureEvent(cid, "TrainerCard") Módulo otClient:Coloque o módulo na pasta do seu otClient em modules/ Para abrir o módulo pressione a tecla Ctrl+Shift+Q Spoiler → Link: https://mega.nz/#!5ehFTIzJ!OtXQ_bDzvr4ypw25Nod0p6dFBqtnTZ-0kZ0RLdZrasM → Scan: https://www.virustotal.com/gui/file/bd461bd4cb0b8ff5cbec867fbd5b4f956fdc9c4700a9d292689d79a899de499e/detection Imagem do módulo: A base que foi utilizada do servidor foi a DarkXPoke.O meu módulo tem mais informações do que o da imagem, porém eu dei uma mexida, o módulo que o Gengo me passou do Trainer Card que eu utilizo está em um nivel totalmente diferente do apresentado nesse tutorial, eu só modifiquei para compartilhar com a galera. Espero que tenham gostado e faça um bom proveito do módulo, use sua criatividade para fazer de um belo sistema funcional. Créditos: Spoiler Créditos vai ao Gengo que fez a um tempo atras para mim e com a permissão dele estou postando. Editado Julho 23, 2019 por BlazerX Poke X Ice, BrunooMaciell, Duhisback e 8 outros reagiu a isso 10 1 Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/ Compartilhar em outros sites More sharing options...
Poke X Ice 52 Postado Julho 23, 2019 Share Postado Julho 23, 2019 (editado) Ótimo conteúdo, Rep ++. não teria como fazer ele enviar portrait do pokémon ? Editado Julho 23, 2019 por Poke X Ice Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752602 Compartilhar em outros sites More sharing options...
BlazerX 51 Postado Julho 23, 2019 Autor Share Postado Julho 23, 2019 14 minutos atrás, Poke X Ice disse: Ótimo conteúdo, Rep ++. não teria como fazer ele enviar portrait do pokémon ? Tem como fazer sim, você poderia me dizer como pega a portrait do seu servidor? No servidor do DarkXPoke eu sei que é getPortraitClientID, porem eu não sei como é no seu. Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752603 Compartilhar em outros sites More sharing options...
Poke X Ice 52 Postado Julho 23, 2019 Share Postado Julho 23, 2019 só encontrei isso aqui sobre a portrait servidor/data/movements/script/portrait.lua Spoiler function onEquip (cid, item, slot) if not cid then return true end if item.uid <= 0 then return true end if not getItemAttribute(item.uid, "poke") then return true end onPokeHealthChange(cid) for i, x in pairs(fotos) do if string.lower(getItemAttribute(item.uid, "poke")) == string.lower(i) then doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos) return true end end end function onDeEquip(cid, item, slot) if not cid then return true end if item.uid <= 0 then return true end onPokeHealthChange(cid) if not getItemAttribute(item.uid, "poke") then return true end onPokeHealthChange(cid) doTransformItem(getPlayerSlotItem(cid, CONST_SLOT_LEGS).uid, 2395) end Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752604 Compartilhar em outros sites More sharing options...
BlazerX 51 Postado Julho 23, 2019 Autor Share Postado Julho 23, 2019 Vamos lá então! No arquivo trainercard.lua mude a estrutura que envia o nome do pokemon por esse trecho de código: for indice, ball in pairs(getPlayerPokeballs(cid)) do value = getItemInfo(fotos[getItemAttribute(ball.uid, "poke")]).clientId..','..value end No módulo game_card abra o arquivo card.otui e procure por BoxPokemon e substitua o trecho por esse: BoxPokemon < UIItem image-source: ui/box image-offset: -4 0 icon-size: 46 46 icon-offset: 0 2 No mesmo módulo abra o arquivo card.lua e procure por box:setIcon e substitua o trecho por esse: box:setItemId(tonumber(pokemon[i])) Só isso mesmo, espero que entenda. Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752605 Compartilhar em outros sites More sharing options...
Poke X Ice 52 Postado Julho 23, 2019 Share Postado Julho 23, 2019 (editado) Estou com um simples, não está aparecendo o icone. para abrir esse card Editado Julho 23, 2019 por Poke X Ice Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752606 Compartilhar em outros sites More sharing options...
BlazerX 51 Postado Julho 23, 2019 Autor Share Postado Julho 23, 2019 (editado) 45 minutos atrás, Poke X Ice disse: Estou com um simples, não está aparecendo o icone. para abrir esse card Eu ainda deixei um comentário: Para abrir o módulo pressione a tecla Ctrl+Shift+Q Mas vou quebrar o seu galho kkk Spoiler -- Coloque dentro da função init modules.client_topmenu.addRightGameToggleButton('cardButton', tr('Trainer Card'), 'nome_da_imagem_do_icone', toggle) -- Coloque o nome da imagem do icone antes do toggle Editado Julho 23, 2019 por BlazerX Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752611 Compartilhar em outros sites More sharing options...
Poke X Ice 52 Postado Julho 23, 2019 Share Postado Julho 23, 2019 (editado) desculpa acabei nem lendo tudo , estou muito estressado com problemas pessoais acabei nem percebendo. acabou de da um erro Spoiler WARNING: attempt to add a null child into a UIWidget stack traceback: [C]: in function 'createWidget' /game_card/card.lua:67: in function 'refreshPokeAndInsignias' /game_card/card.lua:16: in function 'callback' /gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14> at: [C++]: UIWidget::addChild ERROR: failed to create widget from style 'BoxPokemon': unable to create widget of type 'UIItem' ERROR: protected lua call failed: LUA ERROR: /game_card/card.lua:69: attempt to index local 'box' (a nil value) stack traceback: [C]: ? /game_card/card.lua:69: in function 'refreshPokeAndInsignias' /game_card/card.lua:16: in function 'callback' /gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14> card.lua Spoiler local opcodeCard = 71 local insignias = { 'Boulder Badge', 'Cascade Badge', 'Thunder Badge', 'Rainbow Badge', 'Marsh Badge', 'Soul Badge', 'Volcano Badge', 'Earth Badge' } local winCard local lblTreinador local lblLevel local outfit local boxPokemons local boxInsignias function init() connect(g_game, { onGameEnd = onGameEnd }) ProtocolGame.registerExtendedOpcode(opcodeCard, function(protocol, opcode, buffer) refreshPokeAndInsignias(buffer) end) winCard = g_ui.displayUI('card') winCard:move(70, 80) winCard:hide() g_keyboard.bindKeyPress('Ctrl+Shift+Q', toggle) lblTreinador = winCard:getChildById('lblTreinador') lblLevel = winCard:getChildById('lblLevel') outfit = winCard:getChildById('outfit') boxPokemons = winCard:getChildById('boxPokemons') boxInsignias = winCard:getChildById('boxInsignias') end function terminate() disconnect(g_game, { onGameEnd = onGameEnd }) ProtocolGame.unregisterExtendedOpcode(opcodeCard) winCard:destroy() g_keyboard.unbindKeyPress('Ctrl+Shift+Q') end function refresh() local player = g_game.getLocalPlayer() lblTreinador:setText(player:getName()) outfit:setOutfit(player:getOutfit()) end function onGameEnd() winCard:hide() end function toggle() if ( winCard:isVisible() ) then addEvent(function() g_effects.fadeOut(winCard, 200) end) scheduleEvent(function() winCard:hide() end, 220) else refresh() addEvent(function() winCard:show() g_effects.fadeIn(winCard, 200) end) g_game.getProtocolGame():sendExtendedOpcode(opcodeCard, "poke") g_game.getProtocolGame():sendExtendedOpcode(opcodeCard, "badges") end end function refreshPokeAndInsignias(value) local action = value:explode('-') if ( action[1] == 'poke' ) then local pokemon = action[2]:explode(',') boxPokemons:destroyChildren() for i = 1, 6 do local box = g_ui.createWidget('BoxPokemon', boxPokemons) if ( i <= #pokemon ) then box:setItemId(tonumber(pokemon)) box:setTooltip(pokemon) end end elseif ( action[1] == 'badges' ) then local badges = action[2]:explode(',') boxInsignias:destroyChildren() for i = 1, #insignias do local uiInsignias = g_ui.createWidget('Insignias', boxInsignias) if ( tonumber(badges) == 1 ) then uiInsignias:setImageSource('insignias/'..insignias..'_on') else uiInsignias:setImageSource('insignias/'..insignias..'_off') end uiInsignias:setTooltip(insignias) end end end Editado Julho 23, 2019 por Poke X Ice Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752612 Compartilhar em outros sites More sharing options...
BlazerX 51 Postado Julho 23, 2019 Autor Share Postado Julho 23, 2019 30 minutos atrás, Poke X Ice disse: desculpa acabei nem lendo tudo , estou muito estressado com problemas pessoais acabei nem percebendo. acabou de da um erro Ocultar conteúdo WARNING: attempt to add a null child into a UIWidget stack traceback: [C]: in function 'createWidget' /game_card/card.lua:67: in function 'refreshPokeAndInsignias' /game_card/card.lua:16: in function 'callback' /gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14> at: [C++]: UIWidget::addChild ERROR: failed to create widget from style 'BoxPokemon': unable to create widget of type 'UIItem' ERROR: protected lua call failed: LUA ERROR: /game_card/card.lua:69: attempt to index local 'box' (a nil value) stack traceback: [C]: ? /game_card/card.lua:69: in function 'refreshPokeAndInsignias' /game_card/card.lua:16: in function 'callback' /gamelib/protocolgame.lua:17: in function </gamelib/protocolgame.lua:14> card.lua Ocultar conteúdo local opcodeCard = 71 local insignias = { 'Boulder Badge', 'Cascade Badge', 'Thunder Badge', 'Rainbow Badge', 'Marsh Badge', 'Soul Badge', 'Volcano Badge', 'Earth Badge' } local winCard local lblTreinador local lblLevel local outfit local boxPokemons local boxInsignias function init() connect(g_game, { onGameEnd = onGameEnd }) ProtocolGame.registerExtendedOpcode(opcodeCard, function(protocol, opcode, buffer) refreshPokeAndInsignias(buffer) end) winCard = g_ui.displayUI('card') winCard:move(70, 80) winCard:hide() g_keyboard.bindKeyPress('Ctrl+Shift+Q', toggle) lblTreinador = winCard:getChildById('lblTreinador') lblLevel = winCard:getChildById('lblLevel') outfit = winCard:getChildById('outfit') boxPokemons = winCard:getChildById('boxPokemons') boxInsignias = winCard:getChildById('boxInsignias') end function terminate() disconnect(g_game, { onGameEnd = onGameEnd }) ProtocolGame.unregisterExtendedOpcode(opcodeCard) winCard:destroy() g_keyboard.unbindKeyPress('Ctrl+Shift+Q') end function refresh() local player = g_game.getLocalPlayer() lblTreinador:setText(player:getName()) outfit:setOutfit(player:getOutfit()) end function onGameEnd() winCard:hide() end function toggle() if ( winCard:isVisible() ) then addEvent(function() g_effects.fadeOut(winCard, 200) end) scheduleEvent(function() winCard:hide() end, 220) else refresh() addEvent(function() winCard:show() g_effects.fadeIn(winCard, 200) end) g_game.getProtocolGame():sendExtendedOpcode(opcodeCard, "poke") g_game.getProtocolGame():sendExtendedOpcode(opcodeCard, "badges") end end function refreshPokeAndInsignias(value) local action = value:explode('-') if ( action[1] == 'poke' ) then local pokemon = action[2]:explode(',') boxPokemons:destroyChildren() for i = 1, 6 do local box = g_ui.createWidget('BoxPokemon', boxPokemons) if ( i <= #pokemon ) then box:setItemId(tonumber(pokemon)) box:setTooltip(pokemon) end end elseif ( action[1] == 'badges' ) then local badges = action[2]:explode(',') boxInsignias:destroyChildren() for i = 1, #insignias do local uiInsignias = g_ui.createWidget('Insignias', boxInsignias) if ( tonumber(badges) == 1 ) then uiInsignias:setImageSource('insignias/'..insignias..'_on') else uiInsignias:setImageSource('insignias/'..insignias..'_off') end uiInsignias:setTooltip(insignias) end endend Por favor leia atentamente o que eu escrevi e quando for cópiar codigo daqui do fórum atente-se para os caracteres especiai, eu percebi o erro que você teve, porem como você está estressado não atentou-se oq eu expliquei, refaça novamente. Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752613 Compartilhar em outros sites More sharing options...
Poke X Ice 52 Postado Julho 23, 2019 Share Postado Julho 23, 2019 Ok Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752614 Compartilhar em outros sites More sharing options...
Duhisback 30 Postado Julho 23, 2019 Share Postado Julho 23, 2019 não testei mas ficou top rep+ Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1752617 Compartilhar em outros sites More sharing options...
Bagastalgia22 2 Postado Outubro 3, 2019 Share Postado Outubro 3, 2019 Otimo modulo, usarei com toda certeza! Obrigado. Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1753939 Compartilhar em outros sites More sharing options...
KaboFlow 54 Postado Janeiro 29, 2020 Share Postado Janeiro 29, 2020 Em 23/07/2019 em 10:40, BlazerX disse: Trainer Card Fala galera do Xtibia, vim trazer mais uma contribuição para a comunidade, é um módulo para otclient básico porém legal. Como funciona? O Trainer Card vai mostrar digamos algumas informações do seu personagem, você pode adicionar mais informações a esse card, vai da criatividade de cada um deixar bem funcional. Script do servidor: Crique um arquivo na pasta do seu servidor em data/creaturescript/ e coloque o nome de trainercard.lua Ocultar conteúdo local opcodeCard = 71 function onExtendedOpcode(cid, opcode, buffer) if opcode == opcodeCard then local value = '' if ( buffer == 'poke' ) then for indice, ball in pairs(getPlayerPokeballs(cid)) do value = getItemAttribute(ball.uid, "poke")..','..value end elseif ( buffer == 'badges' ) then local leaderGym = {"Brock", "Misty", "Surge", "Erika", "Sabrina", "Koga", "Blaine", "Giovanni"} for i = 1, #leaderGym do value = getPlayerBadgeOfLeader(cid, leaderGym[i])..','..value end end doSendPlayerExtendedOpcode(cid, 71, buffer..'-'..value) end end Coloque a seguinte tag no arquivo do creaturescripts.xml: <event type="extendedopcode" name="TrainerCard" event="script" value="trainercard.lua"/> Registre o evento no arquivo onLogin.lua onde se encontra na mesma pasta: registerCreatureEvent(cid, "TrainerCard") Módulo otClient: Coloque o módulo na pasta do seu otClient em modules/ Para abrir o módulo pressione a tecla Ctrl+Shift+Q Ocultar conteúdo → Link: https://mega.nz/#!5ehFTIzJ!OtXQ_bDzvr4ypw25Nod0p6dFBqtnTZ-0kZ0RLdZrasM → Scan: https://www.virustotal.com/gui/file/bd461bd4cb0b8ff5cbec867fbd5b4f956fdc9c4700a9d292689d79a899de499e/detection Imagem do módulo: A base que foi utilizada do servidor foi a DarkXPoke. O meu módulo tem mais informações do que o da imagem, porém eu dei uma mexida, o módulo que o Gengo me passou do Trainer Card que eu utilizo está em um nivel totalmente diferente do apresentado nesse tutorial, eu só modifiquei para compartilhar com a galera. Espero que tenham gostado e faça um bom proveito do módulo, use sua criatividade para fazer de um belo sistema funcional. Créditos: Mostrar conteúdo oculto Créditos vai ao Gengo que fez a um tempo atras para mim e com a permissão dele estou postando. tenhe como abrir o modulo sim C.S. Q? qe te n client ? n part d arriba Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1756584 Compartilhar em outros sites More sharing options...
itachibrr 0 Postado Fevereiro 26, 2020 Share Postado Fevereiro 26, 2020 como faço para adiciona novos pokemon?? Link para o comentário https://xtibia.com/forum/topic/249999-otc-trainer-card/#findComment-1757361 Compartilhar em outros sites More sharing options...
Posts Recomendados