Postado Abril 13, 2020 5 anos Qual servidor você utiliza como base? Pokemon Dash v6 by Valakinhas Qual o motivo deste tópico? Meu servidor possui um sistema de ataque pokemon (m1,m2,m3...m12), muito antigo e defasado, por esse motivo quis passar o sistema do PDA (dos moves em uma tabela na lib e chamá-los pela TalkAction do server) porém sem sucesso. Conseguir botar o sistemas em uma base mais antiga, como pokemon flash para testes somente, porém na dash v6 não obtive sucesso. Considero a Dash v6 do Valakinhas a melhor base, sem bugs, básica (não possuem gender nem lv system) e possui source. Se alguém puder me ajudar a passar esses sistemas do PDA para o Dash v6 juntamente com as modificações necessárias, ficaria muito grado e feliz também em ao final de minha edições, liberar a base Dash v6 do Valakinhas com mais esse complemento aqui no TK. Está surgindo algum erro? Se sim coloque-o aqui. Passei a tabela com a configuração dos moves e a listas de spells pra lib, porém não consigo puxá-las na hora de usar os atcks pokemon. ABAIXO SEGUE O SCRIPT DA TALKACTION Spoiler local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, ? if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!") return true end local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid) if not p or #p <= 0 then return true end for a = 1, #p do if getItemAttribute(p[a], cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!") return true end end end function onSay(cid, words, param, channel) if param ~= "" then return true end if string.len(words) > 3 then return true end if #getCreatureSummons(cid) == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.") return 0 end if getCreatureCondition(getCreatureSummons(cid)[1], CONDITION_INVISIBLE) and not isGhostPokemon(getCreatureSummons(cid)[1]) then return 0 end local mypoke = getCreatureSummons(cid)[1] if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end if getCreatureName(mypoke) == "Evolution" then return true end local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke) local it = string.sub(words, 2, 3) local move = movestable[name].move1 local cdzin = "move"..it.."" if it == "2" then move = movestable[name].move2 elseif it == "3" then move = movestable[name].move3 elseif it == "4" then move = movestable[name].move4 elseif it == "5" then move = movestable[name].move5 elseif it == "6" then move = movestable[name].move6 elseif it == "7" then move = movestable[name].move7 elseif it == "8" then move = movestable[name].move8 elseif it == "9" then move = movestable[name].move9 elseif it == "10" then move = movestable[name].move10 elseif it == "11" then move = movestable[name].move11 elseif it == "12" then move = movestable[name].move12 elseif it == "13" then move = movestable[name].move13 end if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end if false and getLevel(mypoke) < move.level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't have enough level to use this move.") return 0 end if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use this move again.") return 0 end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.") return 0 end if move.target == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.") return 0 end if not isCreature(getCreatureSummons(cid)[1]) then return true end if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.") return 0 end if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then return 0 end end doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) local newid = 0 if isSleeping(mypoke) then newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, ? doCreatureSay(mypoke, "zZzZ", TALKTYPE_MONSTER) return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd) end if move.name ~= "Metronome" then doCreatureSay(mypoke, ""..string.upper(move.name).."!", TALKTYPE_MONSTER) end addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin) docastspell(mypoke, move.name) doCreatureAddCondition(cid, playerexhaust) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end Editado Abril 13, 2020 5 anos por brasil0014 Ortográfia (veja o histórico de edições)
Postado Abril 13, 2020 5 anos Sobre o erro:Ele está tentando chamar uma função com o nome: getCD que não existe na source.(Pode ser que ela exista dentro dos códigos LUA mas não existe dentro dos códigos C++).
Postado Abril 13, 2020 5 anos Autor Ah alguma maneira de implementar na source do servidor tal atribuição ou eu posso recorrer a outra atribuição no talkaction ?
Postado Abril 13, 2020 5 anos Solução 3 horas atrás, brasil0014 disse: Ah alguma maneira de implementar na source do servidor tal atribuição ou eu posso recorrer a outra atribuição no talkaction ? Há sim... se você souber o código que foi implementado, ai é só abrir o visual studio,colocar o código fonte e compilar. Caso contrario, é melhor escolher outra base.
Postado Abril 13, 2020 5 anos Autor Valeu broder já me ajudou muito, minha dúvida com relação ao erro acima foi sanada, se quiser podem fechar o tópico. Dúvida sanada
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.