Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2221
  • Registro em

  • Última visita

  • Dias Ganhos

    60

Tudo que Yan Oliveira postou

  1. Qual código dos posts desse tópico você copiou? O valor do delay que é a storage com o tempo está nil. Posta o código
  2. Olá amigo, a área correta seria na seção de programação : https://xtibia.com/forum/forum/1258-programação/ O erro está nesse bloco: ODBCResult::ODBCResult(SQLHSTMT stmt) { if(!res) { delete this; return; } m_handle = stmt; int16_t numCols = 0; SQLNumResultCols(m_handle, &numCols); for(int32_t i = 1; i <= numCols; i++) { char* name = new char[129]; SQLDescribeCol(m_handle, i, (SQLCHAR*)name, 129, NULL, NULL, NULL, NULL, NULL); m_listNames[name] = i; } } A variável res não foi declarada, e precisa declarar ela. E pelo que vi, ela é do tipo boolean, só que não sei se você copiou esse código de algum lugar, mas precisa saber onde mais ela é usada e qual valor que ela inicia para poder declarar (criar).
  3. Não entendi muito bem, você disse que quer adicionar outra, mas a antiga fica atrás. No caso, que outra você quer adicionar? É para ter duas?
  4. Mas o pedido do autor do tópico é para curar em uma quantidade específica de vida, e pelo que entendi, você quer uma potion que cure a vida toda, e nesse caso terá que criar um novo tópico com esse pedido ou procurar um tópico já existente com esse pedido.
  5. Não vale a pena fazer dessa forma, vai te dar trabalho demais e a chance de dar problema é grande, porque se você esquecer de entregar os pontos será problemático. Esses pontos são itens ou atributo?
  6. Está vendo a penúltima linha do código: doShowTextDialog(cid, v, table.concat(stt)) Você precisa comentar ela. Talvez tenha comentado outra.
  7. Provavelmente você fez algo errado, porque essa função doShowTextDialog que abre a janela antiga de pokedex. Posta o seu script de pokedex.
  8. Minha resposta depende da pergunta que te fiz e você não respondeu, que é, como essa atribuição de pontos será feita? Manual no banco ou por script? Porque, se a bag do player estiver cheia, ele não vai conseguir receber item ao clicar no baú de qualquer forma. E o player receber item ao invés clicar no baú como falei, é até mais fácil nessa condição de ele estar offline, porque por script você envia diretamente no banco ou no onLogin ele recebe ao logar. Tem várias formas de fazer, mas preciso entender como é essa atribuição de pontos para mentalizar uma forma boa e eficaz para resolver seu problema.
  9. E como isso de atribuir os pontos será feito? Você tem um script pronto ou você irá atribuir pelo banco automaticamente? Você já jogou poketibia? No poketibia, tem as pokémon box, que é um item (como se fosse um presente) que o player ganha ao realizar alguma coisa (ou por sorteio dependendo do ot). Acho que seria interessante usar para essa funcionalidade que você quer, porque desse jeito que você pediu eu acho pior, você vai consumir espaço no mapa atoa para um baú que tem o uso circunstancial dos player e que nem é de quest. Mas se quiser com baú, vamos tentar, mas acho que seria interessante isso de usar box, pois o player já recebe na bag e ele clica no item, ganha o que tiver que ganhar e a box some, aí você poupa espaço no mapa e item na bag.
  10. A versão da sua OTX atual é equivalente à TFS 0.4? Ou você só colocou por colocar TFS 0.4 como versão no tópico?
  11. Posta print do erro completo na distro. Sobre o player matar um pokemon selvagem sem um dele fora da ball, é em situações do tipo quando o pokémon selvagem está sob algum efeito de status negativo, como burn por exemplo?
  12. Qual a maneira que você vai colocar os pontos no baú para determinado player poder resgatar?
  13. E tem limite de level ou com qualquer player?
  14. Eu não tinha muito tempo, e só fazia durante a noite. Gastei no total uns 3 dias mais ou menos.
  15. Eu acho legal a admiração que muitos tem pela PXG e pelo seu mapa (eu também tenho). Mas, acho que é um esforço grande para uma baixa recompensa, pois, você vai gastar muito tempo para copiar, sendo que seu server não vai conter os mesmos sistemas, balanceamento e funcionalidades que a PXG tem. O diferencial de um Open Tibia é os sistemas e o mapa, e se você fizer um mapa igual da PXG, sendo que já tem o da própria PXG, que tem o jogo à muitos anos, com muitos sistemas e um jogo estabilizado, por que alguém jogaria o seu com o mesmo mapa deles se tem o jogo deles? Talvez você possa me falar ou pensar que não vai colocar online, vai copiar por ser fã, ou querer brincar sozinho, mas o legal é a criatividade. Seja criativo, cria áreas, hunts e cidades diferente, pode até se basear ou usar os da PXG como inspiração, mas copiar o mundo todo de Kanto vai levar muito tempo, eu falo isso porque à anos atrás para brincar eu copiei Saffron e fiz o CP de Pewter, e eu gastei muito tempo. Fora que precisa das sprites deles.
  16. Qual foi o último NPC que você criou/mexeu que começou dar esses problemas? Esses erros normalmente é erro de sintaxe em tag xml do npc: <parameters> <parameter> ... <parameter/> <parameters/> Tem que ver o último NPC que você mexeu antes de começar dar esses erros porque provavelmente o problema está no arquivo dele.
  17. Eu acho que o problema está nesse escopo mesmo. Mas a questão é que não tem informação da área total onde vai matar o Boss para poder verificar pelo Game.getSpectators, e essa função sem um tamanho delimitado da área é problemático, porque dependendo o valor que colocar nos parâmetros da função, pode ferrar a verificação e pegar coisas a mais como creatures. @ashidaruta Qual o tamanho total em X,Y,Z da área que fica o boss? Veja se é um local fechado, como por exemplo 30x30. Se for aberta fica mais complicado. Se puder mostrar uma print da área onde fica esse boss, fica mais fácil de te ajudar.
  18. O problema é que seu servidor está tentando chamar uma função ou variável global que não existe ou não tem nele, que é a megaEvolutions. Pode ser duas coisas, ou você copiou esse sistema de outra base e não seguiu todos os passos, ou então não colocou corretamente a nomenclatura da função/variável que faz parte do sistema de megas.
  19. Olá amigo! Vou te dar alguns conselhos sobre sua divulgação, pois, na minha concepção tem alguns pontos à serem ressaltados para uma melhor atração de pessoas para jogar o seu jogo. Primeiramente, é muito importante colocar imagens ilustrativas que mostre sistemas, funcionalidades e diferencial do seu jogo. Você também listou que o seu jogo tem catch persistente, o que seria isso e o que isso significa? Isso quer dizer que ao capturar o pokémon você já atualiza no banco de dados? Isso pode ser problemático, pois imagina que o player fez várias coisas no jogo, avançou vários níveis, e um desses níveis que ele alcançou foi para conseguir utilizar o pokémon capturado, e o servidor da crash após o último save ter sido há muito tempo. Então tudo que o player conseguiu ele perdeu mas o pokémon continua com ele? Seria muito estranho na visão do player, fora que é uma vantagem que não é saudável. Acho muito importante você levar em consideração os pontos que citei acima, pois você precisa dar mais informações sobre seu jogo, precisa explicar o quer dizer com "catch persistente" para quem está querendo jogar o seu jogo entender o que isso quer dizer. E você precisa ilustrar melhor os sistemas, funcionalidades e diferencias do seu jogo, pois, as imagens fazem muita diferença e tem muito impacto, tanto é que as empresas investem muito em marketing, divulgação e propagandas de seus produtos, e o principal do marketing são as imagens. Por fim, você precisa responder algumas perguntas como: Por que eu jogaria o seu jogo? Qual o diferencial do seu jogo? O que o seu jogo tem de diferente dos outros? Essa são perguntas que fazem toda diferença na seleção de jogadores, pois, o por que o cara iria jogar seu jogo sendo que no que ele está atualmente ele já tem um progresso, tem uma estabilidade e gastou tempo (e ou recursos). Fora que a maioria dos outros poketibias tem a maioria dessas coisas, então tem que convencer e atrair o player a querer jogar o seu. Siga essas dicas e conselhos, e você fará com seu jogo tem uma exposição e divulgação melhor e maior ?.
  20. De nada! Que bom que funcionou, fico feliz amigo ?.
  21. Opa, é porque faltou verificar se existe item no slot. Substitui o código por esse: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, 250, 0, 320) local id_magic_plate_armor = 2472 -- ID DO MAGIC PLATE ARMOR local message = false -- SE QUISER QUE TENHA UMA MENSAGEM PARA O PLAYER SABER QUE FOI CURADO A MAIS POR ESTAR EQUIPADO COM MAGIC PLATE ARMOR, MUDE PARA true -------- CÓDIGO --------- function onCastSpell(cid, var) local item = getPlayerSlotItem(cid, CONST_SLOT_ARMOR) -- PEGA O ITEM DO SLOT (PARA VERIFICAR SE TEM ITEM) local mana_magic_plate_armor = math.random(20, 30) -- O TANTO DE MANA QUE VAI CURAR SE TIVER EQUIPADO COM MAGIC PLATE ARMOR. ESTÁ ENTRE 20-30 A MAIS DE CURA DA MANA local id_item_slot_armor = getItemIdByName(getItemName(getPlayerSlotItem(cid, CONST_SLOT_ARMOR).uid)) -- NÃO MEXER, ESSA VARIÁVEL PEGA O ID DO ITEM EQUIPADO NO SLOT DE ARMOR local text = "Você teve +" .. mana_magic_plate_armor .. " de cura por estar equipado com " .. getItemName(getPlayerSlotItem(cid, CONST_SLOT_ARMOR).uid) .. "." -- TEXTO CASO TENHA MENSAGEM if getPlayerLevel(cid) > 200 then doSendAnimatedText(getPlayerPosition(cid), "Aaaaah...", TEXTCOLOR_BLUE) end if (((getPlayerLevel(cid))%10) == 0) then manaextra = (((getPlayerLevel(cid))/10)*3) else manaextra = ((((getPlayerLevel(cid))/10)+0.5)*3) end if item and id_magic_plate_armor == id_item_slot_armor then doCreatureAddMana(cid, math.floor(manaextra + mana_magic_plate_armor)) if message then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text) end else doCreatureAddMana(cid, manaextra) end return doCombat(cid, combat, var) end Testa e se der problema me avisa.
  22. Sobre o erro, foi bobeira minha, acabei invertendo a ordem das variáveis e como a variável mana_magic_plate_armor não existia na concatenação do texto, então deu erro. Sobre ele mandar a mensagem do "Aaahh" é porque Lua é uma linguagem interpretada, então ela executa linha por linha até a linha com erro. Diferente de uma linguagem compilada que se tem erro ele nem executa. Troca o código por esse: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, 250, 0, 320) local id_magic_plate_armor = 2472 -- ID DO MAGIC PLATE ARMOR local message = false -- SE QUISER QUE TENHA UMA MENSAGEM PARA O PLAYER SABER QUE FOI CURADO A MAIS POR ESTAR EQUIPADO COM MAGIC PLATE ARMOR, MUDE PARA true -------- CÓDIGO --------- function onCastSpell(cid, var) local mana_magic_plate_armor = math.random(20, 30) -- O TANTO DE MANA QUE VAI CURAR SE TIVER EQUIPADO COM MAGIC PLATE ARMOR. ESTÁ ENTRE 20-30 A MAIS DE CURA DA MANA local id_item_slot_armor = getItemIdByName(getItemName(getPlayerSlotItem(cid, CONST_SLOT_ARMOR).uid)) -- NÃO MEXER, ESSA VARIÁVEL PEGA O ID DO ITEM EQUIPADO NO SLOT DE ARMOR local text = "Você teve +" .. mana_magic_plate_armor .. " de cura por estar equipado com " .. getItemName(getPlayerSlotItem(cid, CONST_SLOT_ARMOR).uid) .. "." -- TEXTO CASO TENHA MENSAGEM if getPlayerLevel(cid) > 200 then doSendAnimatedText(getPlayerPosition(cid), "Aaaaah...", TEXTCOLOR_BLUE) end if (((getPlayerLevel(cid))%10) == 0) then manaextra = (((getPlayerLevel(cid))/10)*3) else manaextra = ((((getPlayerLevel(cid))/10)+0.5)*3) end if id_magic_plate_armor == id_item_slot_armor then doCreatureAddMana(cid, math.floor(manaextra + mana_magic_plate_armor)) if message then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text) end else doCreatureAddMana(cid, manaextra) end return doCombat(cid, combat, var) end
  23. Sim, é um script só. Mas, então amigo, você não comentou se deu erro na distro(que provavelmente deu), mas eu vi que fiz uma coisa errada, troca o código por esse: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, 250, 0, 320) local id_magic_plate_armor = 2472 -- ID DO MAGIC PLATE ARMOR local message = false -- SE QUISER QUE TENHA UMA MENSAGEM PARA O PLAYER SABER QUE FOI CURADO A MAIS POR ESTAR EQUIPADO COM MAGIC PLATE ARMOR, MUDE PARA true -------- CÓDIGO --------- function onCastSpell(cid, var) local text = "Você teve +" .. mana_magic_plate_armor .. " de cura por estar equipado com " .. getItemName(getPlayerSlotItem(cid, CONST_SLOT_ARMOR).uid) .. "." -- TEXTO CASO TENHA MENSAGEM local mana_magic_plate_armor = math.random(20, 30) -- O TANTO DE MANA QUE VAI CURAR SE TIVER EQUIPADO COM MAGIC PLATE ARMOR. ESTÁ ENTRE 20-30 A MAIS DE CURA DA MANA local id_item_slot_armor = getItemIdByName(getItemName(getPlayerSlotItem(cid, CONST_SLOT_ARMOR).uid)) -- NÃO MEXER, ESSA VARIÁVEL PEGA O ID DO ITEM EQUIPADO NO SLOT DE ARMOR if getPlayerLevel(cid) > 200 then doSendAnimatedText(getPlayerPosition(cid), "Aaaaah...", TEXTCOLOR_BLUE) end if (((getPlayerLevel(cid))%10) == 0) then manaextra = (((getPlayerLevel(cid))/10)*3) else manaextra = ((((getPlayerLevel(cid))/10)+0.5)*3) end if id_magic_plate_armor == id_item_slot_armor then doCreatureAddMana(cid, math.floor(manaextra + mana_magic_plate_armor)) if message then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text) end else doCreatureAddMana(cid, manaextra) end return doCombat(cid, combat, var) end É para funcionar, testei aqui e está funcionando. Qualquer problema avisa.
  24. Entendi, interessante. Ai no caso para o meu summon não atacar outro summon de outro player ou outro player, eu faço verificação no arquivo creatures.lua da pasta Data/Events correto?
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...