Ir para conteúdo

Agrenthor

Membro
  • Registro em

  • Última visita

  1. Agrenthor alterou sua foto pessoal
  2. Claro, estou montando um servidor baseado em cavaleiros do zodíaco. Os players poderão eventualmente trocar de armadura e, se isso ocorrer, sua vocação é trocada (para permitir o uso de skills daquela respectiva armadura). Nesse intuito, tenho adicionadas mais de 70 vocations no server. Obviamente é pouco provavel que um player passe por todas, mas é sempre uma possibilidade. Nesse sentido, queria deixar a vida deles mais fácil: sabendo que cada vocation terá, no máximo, 6 magias próprias, além da vocation base (que tem 5 magias), totalizando, no máximo 11 magias, gostaria de criar um sistema de talkaction que permitisse o player, independente da vocation escolhida, lançar suas magias apenas por uma espécie de comando. Vou exemplificar: Joãozinho cria o char com a vocation de Cosmo Brawler. Ele, ao longo do game, (caso não pegue armadura alguma) terá acesso a 5 magias dessa vocação inicial. Passados alguns dias de jogo, Joãozinho entra no torneio pvp para tentar pegar uma das armaduras disponíveis para sua vocation inicial, a Armadura de Bronze de Leão Menor (por exemplo), se tornando durante quinze dias o Cavaleiro de Bronze de Leão Menor. Joãozinho ganha o torneio e conquista o direito a se tornar o Cavaleiro de Bronze de Leão Menor e, dessa maneira, passa a ter, além das 5 magias de Cosmo Brawler, 6 magias de Cavaleiro de Bronze de Leão Menor, totalizando 11 magias disponíveis. Muito bem. Mais 15 dias se passam e Joãozinho, assim como todos os demais players, perdem suas armaduras e voltam às vocações iniciais (no caso de Joãozinho, Cosmo Brawler), voltando a ter apenas as 5 magias de Cosmo Brawler. Um novo torneio acontece e Joãozinho agora, com mais level, consegue competir por uma armadura mais forte, também disponível para sua vocation base (Cosmo Brawler), por exemplo, a Armadura de Prata de Baleia. Joãozinho ganha o torneio pela armadura em questão e, pelos próximos quinze dias, Joãozinho se torna o Cavaleiro de Prata de Baleia, tendo acesso a outras 6 magias próprias dessa vocation (totalizando, novamente, 11 magias). Mais 15 dias se passam e Joãozinho, mais uma vez, como todos os demais players, perde sua armadura e volta novamente à vocation de Cosmo Brawler (logicamente, voltando a ter apenas as 5 magias da vocation). Ele entra agora no torneio pela Armadura de Ouro de Capricórnio. Ele ganha o torneio e pelos próximos 15 dias, se torna o Cavaleiro de Ouro de Capricórnio, tendo acesso a 6 magias próprias dessa vocation. Mais uma vez, totalizando 11 magias. Mais quinze dias se passam, mesma história, e Joãozinho quer pegar uma armadura de bronze, ou prata, ou ouro, etc. Troca novamente de classe, etc, etc, etc.. Enfim, perceba que, ele sempre terá acesso às 5 magias da vocação base, que no caso do exemplo, é Cosmo Brawler. Mas as 6 outras magias que ele terá acesso, caso se torne cavaleiro de alguma coisa, podem sempre estar mudando a cada quinze dias. Se ele decidir competir sempre pela mesma armadura, e vencer, beleza. Mas e se quiser trocar sempre? Não vai ter Hotkey o suficiente kkkkkk. "ele pode ir trocando as hotkeys". Pode, mas queria um sistema que facilitasse a vida do Joãozinho. Algo parecido com os comandos que existem nos poketibias (m1, m2, m3, m4, etc), que simplesmente faria uma verificação da classe dele e, ao verificar, lançaria a magia (claro, caso ele tenha level, ml, e mana disponível) Abraços, qualquer coisa estou atento.
  3. Apenas uma observação antes da dúvida: Não tenho certeza quanto à versão do TSF, mas quando abro a distro, obtenho essa informação The Global Server by NvSo Version: (1.84 - SVN) - Codename: (Deumion) Pessoal, estou com um problemão: As vocações dos meus players irão mudar com certa frequencia. Quando deixarem de ter a vocação "X" e passarem a ser da vocação "Y", obviamente, suas magias vão mudar também. Pois bem, invés de fazer o player decorar ou guardar nas hotkeys magias de 3 ou 4 vocações diferentes para cada char que for jogar, pensei em fazer um sistema de magia por talkaction, igual vejo nos Pokemons (os famosos m1, m2, m3, m4, etc). No entanto, estou quebrando a cabeça para conseguir isso, mas por não ser tão bom de programação ainda não consegui.... Alguém saberia fazer isso, ou teria um sistema parecido pra me passar? Abraços!
  4. .Qual servidor ou website você utiliza como base? Qual o motivo deste tópico? Ajuda a realizar algumas alterações. Preciso saber como consigo bloquear os slots de equipamentos no personagem. Quero que seja possível o player colocar itens apenas em um slot (como por exemplo: só pode colocar itens no slot de flecha, ou no da mão direita, tanto faz). Quando um item específico estiver equipado nesse único slot livre, e o jogador der "use", nos demais slots, aparecerão equipamentos que não podem ser movidos (os itens darão defesa, ataque, ml, normal, mas apenas não podem ser movidos.). Bem como, após dar "use" nesse item que "dá o set", por assim dizer, o jogador não consiga nem remover parte alguma do set que apareceu, nem mesmo aquele item que "deu o set" pra ele. Pra ficar mais simples, igual a mecânica da pokebola, que quando você clica e ela está em uso, ela não pode ser removida do slot até o pokemon morrer ou ser retornado. Procurei mas não achei nada que me fornecesse algo assim. Alguém conhece?
  5. Obrigado pela resposta, mas já resolvi pessoal! Bastava editar o XML do npc fora do VPS e jogar pra dentro... era problema do VPS mesmo. Abraços,
  6. Agrenthor reagiu a uma resposta no tópico: Problemas de script em Poketibia
  7. Nome Completo: Luiz Felipe Baggio Idade: 28 Cargo pretendido: GM Escolaridade: Superior completo Whatsapp para Contato: 16 98243-6477 Experiencia: Jogo Tibia desde 2004, desde o 7.6 tive servidores, participei de equipes de outros, quase sempre como mapper (fui Mapper do saudoso Empire Otserver). Quando mais velho, já tinha publicado meu livro, participei de um projeto de servidor como historiador/lore development. Conhecimentos no Otserv: Imagino que a pergunta seja sobre o Underwar. Cheguei a jogar muito pouco o servidor, no passado. Pra ser honesto, não tenho tanto tesão em jogar servidores, mas sim curto a ideia de proporcionar experiências de jogo melhores (até por isso já participei de vários projetos, desde moleque)
  8. Resolvido... Eu reiniciei o VPS deu tudo certo.
  9. Olá, meu servidor fica crashando e eu não sei porque - fica uns 40 minutos online, mas depois que começa entrar mais player cai. No exe deu o seguinte erro: [10/09/2020 16:47:05] [Error - CreatureScript Interface] [10/09/2020 16:47:05] data/creaturescripts/scripts/login.lua:onLogin [10/09/2020 16:47:05] Description: [10/09/2020 16:47:05] (luaGetItemAttribute) Item not found Esse abaixo é meu login.lua. Não consigo ver NADA de errado nele.... Alguém poderia me ajudar? local config = { loginMessage = getConfigValue('loginMessage'), useFragHandler = getBooleanFromString(getConfigValue('useFragHandler')) } function onLogin(cid) local accountManager = getPlayerAccountManager(cid) if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 80 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 90) doCreatureSetDropLoot(cid, false) end if getPlayerLevel(cid) >= 81 and getPlayerLevel(cid) <= 149 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 80) doCreatureSetDropLoot(cid, false) end if getPlayerLevel(cid) >= 150 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 75) doCreatureSetDropLoot(cid, false) end if(accountManager == MANAGER_NONE) then local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage if(lastLogin > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "." else str = str end doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) elseif(accountManager == MANAGER_NAMELOCK) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?") elseif(accountManager == MANAGER_ACCOUNT) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.") end if getCreatureName(cid) == "Account Manager" then local outfit = {} if accountManagerRandomPokemonOutfit then outfit = {lookType = getPokemonXMLOutfit(oldpokedex[math.random(151)][1])} else outfit = accountManagerOutfit end doSetCreatureOutfit(cid, outfit, -1) return true end if(not isPlayerGhost(cid)) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) end local outfit = {} if getPlayerVocation(cid) == 0 then doPlayerSetMaxCapacity(cid, 0) doPlayerSetVocation(cid, 1) setCreatureMaxMana(cid, 6) doPlayerAddSoul(cid, -getPlayerSoul(cid)) setPlayerStorageValue(cid, 19898, 0) if getCreatureOutfit(cid).lookType == 128 then outfit = {lookType = 510, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)} elseif getCreatureOutfit(cid).lookType == 136 then outfit = {lookType = 511, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)} end doCreatureChangeOutfit(cid, outfit) end registerCreatureEvent(cid, "dropStone") registerCreatureEvent(cid, "ShowPokedex") --alterado v1.6 registerCreatureEvent(cid, "ClosePokedex") --alterado v1.6 registerCreatureEvent(cid, "WatchTv") registerCreatureEvent(cid, "StopWatchingTv") registerCreatureEvent(cid, "WalkTv") registerCreatureEvent(cid, "RecordTv") registerCreatureEvent(cid, "PlayerLogout") registerCreatureEvent(cid, "WildAttack") registerCreatureEvent(cid, "Idle") registerCreatureEvent(cid, "PokemonIdle") registerCreatureEvent(cid, "EffectOnAdvance") registerCreatureEvent(cid, "GeneralConfiguration") registerCreatureEvent(cid, "ReportBug") registerCreatureEvent(cid, "LookSystem") registerCreatureEvent(cid, "T1") registerCreatureEvent(cid, "T2") registerCreatureEvent(cid, "task_count") registerCreatureEvent(cid, "pokemons") addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "Bem Vindo!!", COLOR_BURN) if getPlayerStorageValue(cid, 99284) == 1 then setPlayerStorageValue(cid, 99284, -1) end if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then setPlayerStorageValue(cid, 6598754, -1) setPlayerStorageValue(cid, 6598755, -1) doRemoveCondition(cid, CONDITION_OUTFIT) --alterado v1.9 \/ doTeleportThing(cid, posBackPVP, false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) end doChangeSpeed(cid, -(getCreatureSpeed(cid))) --///////////////////////////////////////////////////////////////////////////-- local storages = {17000, 63215, 17001, 13008, 5700} for s = 1, #storages do if not tonumber(getPlayerStorageValue(cid, storages[s])) then if s == 3 then setPlayerStorageValue(cid, storages[s], 1) elseif s == 4 then setPlayerStorageValue(cid, storages[s], -1) else if isBeingUsed(getPlayerSlotItem(cid, 8).itemid) then setPlayerStorageValue(cid, storages[s], 1) else setPlayerStorageValue(cid, storages[s], -1) end end doPlayerSendTextMessage(cid, 27, "Sorry, but a problem occurred on the server, but now it's alright") end end --/////////////////////////////////////////////////////////////////////////-- if getPlayerStorageValue(cid, 17000) >= 1 then -- fly local item = getPlayerSlotItem(cid, 8) local poke = getItemAttribute(item.uid, "poke") doChangeSpeed(cid, getPlayerStorageValue(cid, 54844)) doRemoveCondition(cid, CONDITION_OUTFIT) doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) local apos = getFlyingMarkedPos(cid) apos.stackpos = 0 if getTileThingByPos(apos).itemid <= 2 then doCombatAreaHealth(cid, FIREDAMAGE, getFlyingMarkedPos(cid), 0, 0, 0, CONST_ME_NONE) doCreateItem(460, 1, getFlyingMarkedPos(cid)) end doTeleportThing(cid, apos, false) if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8 end local posicao = getTownTemplePosition(getPlayerTown(cid)) markFlyingPos(cid, posicao) elseif getPlayerStorageValue(cid, 63215) >= 1 then -- surf local item = getPlayerSlotItem(cid, 8) local poke = getItemAttribute(item.uid, "poke") doSetCreatureOutfit(cid, {lookType = surfs[poke].lookType + 351}, -1) --alterado v1.6 doChangeSpeed(cid, getPlayerStorageValue(cid, 54844)) if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8 end elseif getPlayerStorageValue(cid, 17001) >= 1 then -- ride local item = getPlayerSlotItem(cid, 8) local poke = getItemAttribute(item.uid, "poke") if rides[poke] then doChangeSpeed(cid, getPlayerStorageValue(cid, 54844)) doRemoveCondition(cid, CONDITION_OUTFIT) doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1) if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8 end else setPlayerStorageValue(cid, 17001, -1) doRegainSpeed(cid) end local posicao2 = getTownTemplePosition(getPlayerTown(cid)) markFlyingPos(cid, posicao2) elseif getPlayerStorageValue(cid, 13008) >= 1 then -- dive if not isInArray({5405, 5406, 5407, 5408, 5409, 5410}, getTileInfo(getThingPos(cid)).itemid) then setPlayerStorageValue(cid, 13008, 0) doRegainSpeed(cid) doRemoveCondition(cid, CONDITION_OUTFIT) return true end if getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = 1034, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1) else doSetCreatureOutfit(cid, {lookType = 1035, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1) end doChangeSpeed(cid, 800) elseif getPlayerStorageValue(cid, 5700) > 0 then --bike doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, getPlayerStorageValue(cid, 5700)) --alterado v1.8 if getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = 1676}, -1) else doSetCreatureOutfit(cid, {lookType = 1675}, -1) end elseif getPlayerStorageValue(cid, 75846) >= 1 then --alterado v1.9 \/ doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) setPlayerStorageValue(cid, 75846, -1) sendMsgToPlayer(cid, 20, "You have been moved to your town!") else doRegainSpeed(cid) end if getPlayerStorageValue(cid, 22545) >= 1 then setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false) setPlayerRecordWaves(cid) end if useKpdoDlls then doUpdateMoves(cid) doUpdatePokemonsBar(cid) onPokeHealthChange(cid) end doPlayerChangeModeIcon(cid) return true end
  10. .Qual servidor ou website você utiliza como base? Uso o Pokemon World Toda vez que altero o configuration.lua na pasta libs, os pokemons param de bater com skill (eles soltam a skill mas não da dano). Mesmo se eu diminuo o dano isso acontece. O que pode estar acontecendo?
  11. .Qual servidor ou website você utiliza como base? Utilizo como base o Pokemon World Qual o motivo deste tópico? Tenho um NPC que vende itens especiais, trocando por outro item (especificamente, diamante por masterball, bonus, etc) Ele funcionava normalmente, agora não aparece. Quando olho o executável do server, obtenho este erro: O código do script do NPC é o seguinte: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local items = { item1 = {12237, 13228}, -- item1 item que será pedido e que será dado na primeira troca item2 = {12237, 13236}, -- item2 item que será pedido e que será dado na segunda troca item3 = {12237, 13234}, -- item2 item que será pedido e que será dado na segunda troca item4 = {12237, 13198}, -- item2 item que será pedido e que será dado na segunda troca item5 = {12237, 11454}, -- item2 item que será pedido e que será dado na segunda troca item6 = {12237, 12331}, -- item2 item que será pedido e que será dado na segunda troca item7 = {12237, 13213}, -- item2 item que será pedido e que será dado na segunda troca item8 = {12237, 13214} -- item2 item que será pedido e que será dado na segunda troca } local counts = { count1 = {100, 1}, -- count1 quantidade que será pedido e que será dado na primeira troca count2 = {250, 1}, -- count2 quantidade que será pedido e que será dado na segunda troca count3 = {250, 1}, -- count2 quantidade que será pedido e que será dado na segunda troca count4 = {500, 1}, -- count2 quantidade que será pedido e que será dado na segunda troca count5 = {500, 1}, -- count2 quantidade que será pedido e que será dado na segunda troca count6 = {500, 1}, -- count2 quantidade que será pedido e que será dado na segunda troca count7 = {1000, 1}, -- count2 quantidade que será pedido e que será dado na segunda troca count8 = {5000, 1} -- count2 quantidade que será pedido e que será dado na segunda troca } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'master ball') then if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then doPlayerRemoveItem(cid, items.item1[1], counts.count1[1]) doPlayerAddItem(cid, items.item1[2], counts.count1[2]) selfSay('You just swap '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' for '.. counts.count1[2] ..' '.. getItemNameById(items.item1[2]) ..'.', cid) else selfSay('You need '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..'.', cid) end elseif msgcontains(msg, 'boost stone') then if getPlayerItemCount(cid, items.item2[1]) >= counts.count2[1] then doPlayerRemoveItem(cid, items.item2[1], counts.count2[1]) doPlayerAddItem(cid, items.item2[2], counts.count2[2]) selfSay('You just swap '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..' for '.. counts.count2[2] ..' '.. getItemNameById(items.item2[2]) ..'.', cid) else selfSay('You need '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..'.', cid) end elseif msgcontains(msg, 'hydra stone') then if getPlayerItemCount(cid, items.item3[1]) >= counts.count3[1] then doPlayerRemoveItem(cid, items.item3[1], counts.count3[1]) doPlayerAddItem(cid, items.item3[2], counts.count3[2]) selfSay('You just swap '.. counts.count3[1] ..' '.. getItemNameById(items.item3[1]) ..' for '.. counts.count3[2] ..' '.. getItemNameById(items.item3[2]) ..'.', cid) else selfSay('You need '.. counts.count3[1] ..' '.. getItemNameById(items.item3[1]) ..'.', cid) end elseif msgcontains(msg, 'mega stone') then if getPlayerItemCount(cid, items.item4[1]) >= counts.count4[1] then doPlayerRemoveItem(cid, items.item4[1], counts.count4[1]) doPlayerAddItem(cid, items.item4[2], counts.count4[2]) selfSay('You just swap '.. counts.count4[1] ..' '.. getItemNameById(items.item4[1]) ..' for '.. counts.count4[2] ..' '.. getItemNameById(items.item4[2]) ..'.', cid) else selfSay('You need '.. counts.count4[1] ..' '.. getItemNameById(items.item4[1]) ..'.', cid) end elseif msgcontains(msg, 'ancient stone') then if getPlayerItemCount(cid, items.item5[1]) >= counts.count5[1] then doPlayerRemoveItem(cid, items.item5[1], counts.count5[1]) doPlayerAddItem(cid, items.item5[2], counts.count5[2]) selfSay('You just swap '.. counts.count5[1] ..' '.. getItemNameById(items.item5[1]) ..' for '.. counts.count5[2] ..' '.. getItemNameById(items.item5[2]) ..'.', cid) else selfSay('You need '.. counts.count5[1] ..' '.. getItemNameById(items.item5[1]) ..'.', cid) end elseif msgcontains(msg, 'Box Especial') then if getPlayerItemCount(cid, items.item6[1]) >= counts.count6[1] then doPlayerRemoveItem(cid, items.item6[1], counts.count6[1]) doPlayerAddItem(cid, items.item6[2], counts.count6[2]) selfSay('You just swap '.. counts.count6[1] ..' '.. getItemNameById(items.item6[1]) ..' for '.. counts.count6[2] ..' '.. getItemNameById(items.item6[2]) ..'.', cid) else selfSay('You need '.. counts.count6[1] ..' '.. getItemNameById(items.item6[1]) ..'.', cid) end elseif msgcontains(msg, 'Bonus EXP 10k') then if getPlayerItemCount(cid, items.item7[1]) >= counts.count7[1] then doPlayerRemoveItem(cid, items.item7[1], counts.count7[1]) doPlayerAddItem(cid, items.item7[2], counts.count7[2]) selfSay('You just swap '.. counts.count7[1] ..' '.. getItemNameById(items.item7[1]) ..' for '.. counts.count7[2] ..' '.. getItemNameById(items.item7[2]) ..'.', cid) else selfSay('You need '.. counts.count7[1] ..' '.. getItemNameById(items.item7[1]) ..'.', cid) end elseif msgcontains(msg, 'Bonus EXP 100k') then if getPlayerItemCount(cid, items.item8[1]) >= counts.count8[1] then doPlayerRemoveItem(cid, items.item8[1], counts.count8[1]) doPlayerAddItem(cid, items.item8[2], counts.count8[2]) selfSay('You just swap '.. counts.count8[1] ..' '.. getItemNameById(items.item8[1]) ..' for '.. counts.count8[2] ..' '.. getItemNameById(items.item8[2]) ..'.', cid) else selfSay('You need '.. counts.count8[1] ..' '.. getItemNameById(items.item8[1]) ..'.', cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Alguém poderia me ajudar, por gentileza? Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. Resolvido - só converter para ANSI Podem fechar.

Informação Importante

Confirmação de Termo