Jump to content
×
×
  • Create New...

PoRaI

Administrador
  • Posts

    121
  • Joined

  • Last visited

  • Days Won

    18

Everything posted by PoRaI

  1. Como é mobile, talvez vc tenha problemas em publicar nas lojas, talvez.
  2. você pode ir no próprio script que puxa o valor da tabela e alterar por lá.... Ex: pokes[pokename].vitality + 1.0
  3. vc é o melhor designer

    1. Benny

      Benny

      caramba obrigado

  4. E que tipo de suporte horrível eles dão? Sinto-lhe informar que se você n tem noção nenhuma do que ta fazendo, dificilmente você vai colocar um servidor online e dificilmente outra empresa de hospedagem vá ser melhor pra você, tendo em vista que (eu n conheço bem a área, mas...) provavelmente não vai encontrar nenhuma outra focada em otserv que dá suporte pra otserv.
  5. vc tentou aumentar a tela do seu cliente? Isso provavelmente pq o seu servidor ta com limite de pacotes. Dae ele não envia toda a info pro cliente descriptografar. Pra resolver o problema é só aumentar o número de pacotes que o servidor envia. Nesses tutoriais de aumentar a tela ensina a fazer isso.
  6. Em Lua faço isso por padronização. Saber quais variáveis estou utilizando no módulo e caso eu queira iniciar com um valor diferente de nil, a declaração vai para todo o código. A única coisa que influenciaria mesmo era se você chamasse a variável como local. Sobre a função ser ou não separada, acredito que não tem problemas, rs. Deve ter sido problema a forma como você implementou. Uma das coisas erradas que notei foi inicializar o opcode TODAS as vezes que executasse o show, é super errado, afinal, você só taria inicializando os opcodes quando clicasse no SHOW e não receberia eles por isso nunca iria funcionar além de dar conflito de usar o mesmo opcode várias vezes. Você só inicializa o opcode uma vez, fora de outras chamadas. Ue, é relativo como o seu sistema de task funciona, kk. Eu fiz uma vez pra um servidor chamado World of Piece só que era uma gambiarra enorme, pq eu só reaproveitei um código de task que o servidor usava e já estava online e eu não tinha muita liberdade em melhorar. Lá o cliente envia uma mensagem pro servidor "pedindo" as informações da outra aba de task, fazendo as verificações se tá liberado ou não.
  7. ué, você pode usar um .dat aleatório de outro cliente sem problemas, só que vai ficar tudo desconfigurado.
  8. Provavelmente ele não está encontrando o labelPoke (retornando nil value) como filho da taskWindow, posta o arquivo .otui aí. Ou também você pode usar no lugar do getChildById a função: recursiveGetChildById. Só cuidado com conflito de ids, rs. taskWindow:recursiveGetChildById('labelPoke'):setText('eoq')
  9. Tenta novamente, atualizei o código ali em cima. Se não der, provavelmente algo vc está fazendo algo de errado.
  10. É fora, não dentro de funções. taskWindow = nil ProtocolGame.registerExtendedOpcode(80, function(protocol, opcode, buffer) local param = buffer:split('@') print(param[1]) print(param[2]) taskWindow:getChildById('labelPoke'):setText(param[1]) taskWindow:getChildById('labelQuant'):setText(param[2]) end) function init() connect(g_game, { onGameEnd = onGameEnd }) taskWindow = g_ui.displayUI('tasks') taskWindow:hide() shopTabBar = taskWindow:getChildById('shopTabBar') shopTabBar:setContentWidget(taskWindow:getChildById('shopTabContent')) marketPanel = g_ui.loadUI('market') shopTabBar:addTab('Market', marketPanel, '/images/game/shop/market') taskButton = modules.client_topmenu.addRightGameButton('taskButton', tr('Tasks'), '/images/topbuttons/emerald_shop', toggle) taskButton:setWidth(36) end function terminate() disconnect(g_game, { onGameEnd = onGameEnd }) taskWindow:destroy() taskButton:destroy() end function onGameEnd() if taskWindow:isVisible() then taskWindow:hide() end end function show() taskWindow:show() taskWindow:raise() taskWindow:focus() addEvent(function() g_effects.fadeIn(taskWindow, 250) end) end function hide() addEvent(function() g_effects.fadeOut(taskWindow, 250) end) scheduleEvent(function() taskWindow:hide() end, 250) end function toggle() if taskWindow:isVisible() then hide() else show() end end
  11. PoRaI

    Name Displacement

    Pelo q pesquisei foi algum unicode na hr q tu deu ctrl c / ctrl + v. Revê se oq vc copiou são realmente espaços, rs.
  12. PoRaI

    Name Displacement

    Posta todos os erros aí, ali na sua print ta dizendo que deu 12 erros, mas você não mostrou nenhum. Manda o log.
  13. ProtocolGame.registerExtendedOpcode(80, tasksInfo) já tentou usar fora do init?
  14. PoRaI

    Name Displacement

    vc já conseguiu compilar o otclient antes de fazer isso? vc tá com problemas em compilar o otclient, não o código, awiehawe.
  15. PoRaI

    Name Displacement

    Rebuild All deve resolver, principalmente por ser um arquivo .h
  16. A separação é mais fácil, do que fazer junto, awiehauwieh. O problema é que talvez ficaria um spam de coisas pra configurar, ou não, sei lá... vou vendo aqui.
  17. Hmm no caso seria tudo separado? Size em width height, image border em image border top, image border left, image border right, image border bottom?
  18. Não faça isso, tá errado, aksdljadj. Não tem sentido você por o std::map dentro da struct. E outra, tenta deixar só: effectiveness[COMBAT_FIREDAMAGE] = {COMBAT_FIRE, ...} sem o Effectiveness( O erro pode ser da IDE, não sei... ou algo que você fez, sei lá, kkk. Pq a struct ta certa. :X
  19. Esse é o espirito, haha. Pensei em desenvolver usando Python ou C++, que eu também programo, mas pela curiosidade de usar o Electron eu acabei usando o Javascript. HTML5/Javascript eu usei para fazer o image-border: (foi meio chatinho alinhar isso) Manda uma print ai pra gente, asdkjlsadklj. Eu preciso de referências, sad. Não consigo pensar em nada que ajude na hora de configurar. Você talvez me deu uma boa ideia... o object inspector do chrome... vou dar uma olhada se ficaria bom. E não se preocupem com o visual do programa, por enquanto, rs... estou focando mais em funcionalidade, layout vem depois.
  20. A um tempo atrás me perguntaram isso no discord do xtibia (por isso n posso responder por la, rsss), é basicamente assim: struct EffectAttributes { uint32_t efeito; uint32_t cor; }; std::map<std::string, EffectAttributes> pokeattributessuamae; pokeattributessuamae["Fire"] = {10, 30}; std::cout << pokeattributessuamae["Fire"].efeito << std::endl; std::cout << pokeattributessuamae["Fire"].cor << std::endl; No seu caso, é só adaptar. Trocar std::string por combattype_t e as informações que você quer da tabela.
  21. Esse projeto na real, foi uma curiosidade minha em testar a framework Electron, só que acabei investindo mais tempo nele do que imaginei pq acaba que Javascript é uma linguagem bem simples. Basicamente: Javascript, HTML/HTML5 e o framework Electron. Inclusive, Electron foi usado para criar o Discord, o novo Skype, o Atom, o Slack, entre outros... ////// O que vocês acham? Qual seria a melhor forma de configuração? Por enquanto, fiz assim. Aceito recomendações/sugestões de formas de configurações vindo de outros programas.
  22. Vê se o town id na db tá igual ao town id no RME. Esse erro da db, sabe qual arquivo é esse de broadcast? se sim, manda ele aí.
  23. PoRaI

    Name Displacement

    O fato do offset não possuir valor negativo é que mesmo se tivesse, teríamos problemas com a renderização do otclient. Se tivesse offset negativo, a sprite iria ficar embaixo das sprites dos sqms ao lado (no seu caso, o efeito). Veja um vídeo para entender um pouco melhor sobre a renderização do otclient.
  24. local playerA= { {x=292, y=1042, z=9}, -- Lugar onde o primeiro player vai estar {x=291, y=1042, z=9}, -- Lugar onde o segundo player vai estar {x=290, y=1042, z=9}, -- Lugar onde o terceiro player vai estar {x=289, y=1042, z=9}, -- Lugar onde o quarto player vai estar } local playerB={ {x=344, y=1026, z=9}, -- Lugar onde o primeiro player vai aparecer {x=305, y=1069, z=9}, -- Lugar onde o segundo player vai aparecer {x=245, y=1107, z=9}, -- Lugar onde o terceiro player vai aparecer {x=309, y=1125, z=9}, -- Lugar onde o quarto player vai aparecer } function onUse(cid, item, fromPosition, itemEx, toPosition) local players = {} for _, pos in pairs(playerA) do local player = getTopCreature(pos).uid if not isPlayer(player) then return doPlayerSendCancel(cid, 'You need 4 players for this quest.') elseif getPlayerLevel(player) < 300 then -- Level return doPlayerSendCancel(cid, 'All players need to have level 300 or higher.') end table.insert(players, player) end for id, pos in pairs(playerB) do doTeleportThing(players[id], pos, false) doSendMagicEffect(pos, CONST_ME_POFF) doSendMagicEffect(pos, CONST_ME_ENERGYAREA) end return true end
  25. Alterando um pouquinho o código do nosso amiguinho a gente consegue: local playerA = { {x=292, y=1042, z=9}, -- Lugar onde o primeiro player vai estar {x=291, y=1042, z=9}, -- Lugar onde o segundo player vai estar {x=290, y=1042, z=9}, -- Lugar onde o terceiro player vai estar {x=289, y=1042, z=9}, -- Lugar onde o quarto player vai estar } local playerB={ {x=344, y=1026, z=9}, -- Lugar onde o primeiro player vai aparecer {x=305, y=1069, z=9}, -- Lugar onde o segundo player vai aparecer {x=245, y=1107, z=9}, -- Lugar onde o terceiro player vai aparecer {x=309, y=1125, z=9}, -- Lugar onde o quarto player vai aparecer } local playerNeed = { items = { {1000, 2}, -- items 1, {itemid, quantidade} {1000, 2}, -- items 2, se for precisar. {itemid, quantidade} {1000, 2}, -- items 3, se for precisar. {itemid, quantidade} -- items infinitos, se for precisar. }, pokemon = "Ditto", } function onUse(cid, item, fromPosition, itemEx, toPosition) local players = {} for _, pos in pairs(playerA) do local player = getTopCreature(pos).uid if not isPlayer(player) then return doPlayerSendCancel(cid, "You need 4 players for this quest.") elseif #getCreatureSummons(player) ~= 1 or getCreatureSummons(player)[1] ~= playerNeed.pokemon then return doPlayerSendCancel(cid, "All players need a pokémon "..playerNeed.pokemon..".") end for _, item in pairs(playerNeed.items) do if getPlayerItemCount(player, item[1]) < item[2] then return doPlayerSendCancel(cid, "All players need a item "..(getItemInfo(item[1]).name)..".") end end table.insert(players, player) end for id, pos in pairs(playerB) do for _, item in pairs(playerNeed.items) do doPlayerRemoveItem(players[id], item[1], item[2]) end doTeleportThing(players[id], pos, false) doSendMagicEffect(pos, CONST_ME_POFF) doSendMagicEffect(pos, CONST_ME_ENERGYAREA) end return true end
  • Recently Browsing   0 members

    • No registered users viewing this page.