Jump to content
Close

Search the Community

Showing results for tags 'Scripting'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community
    • Rules
    • Portal
    • Resources
    • Commerce
    • Clubs
  • OTServers
    • Discussion
    • Support
    • Tutorial
    • Download
    • Code Development
    • Contests and Events
    • Form Team
    • Advertise your Server
  • Tibia Bots
    • Discussion
  • League of Legends's Geral
  • League of Legends's Suporte
  • Jogos Gerais's Geral
  • Nto New Season's Tópicos
  • Fakes's Fakes
  • Tibia's Geral
  • Tibia's Notícias
  • Tibia's Media
  • Tibia's Life Thread
  • Gráficos's Geral
  • Gráficos's Tutoriais
  • Gráficos's Recursos
  • Gráficos's Aprendizagem & Recursos
  • Gráficos's Galeria
  • Gráficos's Duelos & Batalhas
  • Gráficos's Suporte
  • Desenvolvimento e Programação's Geral
  • Desenvolvimento e Programação's Tutoriais
  • Desenvolvimento e Programação's Trabalhos
  • Desenvolvimento e Programação's Suporte
  • Computação's Geral
  • Computação's Dicas e Tutoriais
  • Computação's Suporte
  • Roleplaying's Roleplaying
  • Playground's (Off-topic)
  • Divulgações's Tópicos
  • Academia de Mapping's Quadro da Clopin
  • Academia de Mapping's Dev Area
  • Academia de Mapping's Quadro do Nolis
  • Academia de Mapping's Quadro do Namikaze
  • Styller's Tópicos

Calendars

  • Official Calendar
  • OTServs Calendar
  • Several Calendars

Product Groups

  • Advertisements in Top
  • Advertisements In Signatures
  • Advertisements in Topics
  • Others Advertisements

Categories

  • Sales Section
    • Scripting Sales
    • Codes Sales
    • Mapping Sales
    • Websites Sales
    • Design/Sprites Sales
    • Bots Sales
  • Look Jobs
  • Looking for Freelancers
  • Team Formation

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Localization


My character


Favorite OTServ


Bot preferred


Interests

Found 3337 results

  1. .Qual servidor ou website você utiliza como base? 860 Qual o motivo deste tópico? Pedir spell Está surgindo algum erro? Se sim coloque-o aqui. Por algum motivo que não sei, em meu servidor o shield não faz diferença, eu aumentei a defense no vocations.xml. usei um buff q da shield 1000, e botei um shield com defense 500, nada mudou. e eu queria botar um personagem que tomasse pouquissimo dano fisico. seria inspirado no zaraki e jiren, ele bate muito na mao, e toma pouco dano na physico. A unica saida que encontrei foi usar um item dando absorbpercentphysical, ai eu queria saber como usar isso em um spell. exemplo o giga power up. uma magia que daria abosorbPhysical por 60 segundos com cooldown de 30 segundos. Se alguem puder me ajudar, desde já agradeço. Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  2. Olá, Estamos com um projeto de servidor 8.6 e buscamos por um Scripter com experiencia e que esteja compromissado a fazer parte de nossa equipe. Procuramos alguém que tenha tempo e compromisso para se dedicar ao servidor e que esteja disposto a evoluir junto ao mesmo. Caso tenha interesse, entre em contato comigo aqui no Tibia King para conversarmos.
  3. Boa noite galera do Tk Bom eu queria saber se tem condições de vocês me ajudarem em desenvolver essas magias. Kamui Def = Essa magia eu não precisaria usar em target seria agressiva e ela adicionaria 100% de defesa por 5 Segundos. por ultimo Magia que soltaria 1 Effect no meio em area, e teria uma zona grande que daria lyze em quem tivesse nesse effect Obs: essa magia teria um tempo de 10 segundos de duração e 60 Segundos de Cooldown. Rep ++ @ernaix69
  4. Boa tarde galera do TK Eu queria saber se tem alguma maneira de criar uma magia que retirasse, 20% de todas skills do jogador. Obs: essa magia será target então eu terei que escolher o alvo para utilizar essa magia Utilizo Otx 2
  5. gostaria mt de aumentar o limite de outfits no tibia 8.60 eu ja sei aumentar pela source, porem percebi tambem que precisa aumentar na propria pasta do tibia pois da debug se nao aumentar na pasta do tibia alguem sabe onde posso editar isso? (nao,nao é pelo object builder)
  6. Então, como eu falei no título, é basicamente isto: A VIP no Cliente 11 está ficando bugada. Como? No meu server você pode jogar com cliente 10.00 modificado ou 11.48. No cliente 10 as coisas funcionam normalmente. Porém no cliente 11 a VIP não "gasta". O cara simplesmente fica com premium account infinita. Nem sequer sei em que parte da source ou dos arquivos lua pode estar o código responsável por isso. Se alguém puder ajudar... Agradeço!
  7. 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 = {6544, 13569}, -- item1 item que será pedido e que será dado na primeira troca } local counts = { count1 = {15, 1}, -- count1 quantidade que será pedido e que será dado na primeira 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, 'liquir') then selfSay('Voce deseja comprar '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' esse '.. counts.count1[2] ..' '.. getItemNameById(items.item1[2]) ..'?',cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, 'yes') 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('Obrigado! Voce acaba de comprar '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' esse '.. counts.count1[2] ..' '.. getItemNameById(items.item1[2]) ..'.', cid) talkState[talkUser] = 0 else selfSay('Voce precisa de '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..'.', cid) end end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  8. Estou com um pequeno problema na minha função cleanMap. Basicamente, ela remove apenas itens comuns do chão. Não remove corpos de monstros, nem itens com Action ID. Preciso modificar ela de forma que remova itens com Action ID e corpos quando for executada. Agradeço se alguém puder ajudar. Segue a função na source: Já descobri! No item.h eu posso modificar para que itens com Action ID sejam "removíveis" durante o cleanMap.
  9. Alguem saberia me dizer porq aparece a msg na distro? o script funciona mas a distro alega o q ta na imagem. function onUse(cid, item, frompos, item2, topos) uppos = {x=32636, y=31881, z=2, stackpos=1} up1pos = getThingfromPos(uppos) downpos = {x=32636, y=31881, z=7, stackpos=1} down1pos = getThingfromPos(downpos) if item.itemid == 1945 then if isPlayer(cid) == TRUE then doTeleportThing(down1pos.uid, uppos) end doSendMagicEffect(downpos, 2) doSendMagicEffect(uppos, 2) doTransformItem(item.uid,item.itemid+1) elseif item.itemid == 1946 then if isPlayer(cid) == TRUE then doTeleportThing(up1pos.uid, downpos) end doSendMagicEffect(downpos, 2) doSendMagicEffect(uppos, 2) doTransformItem(item.uid,item.itemid-1) else doPlayerSendCancel(cid,"Sorry not possible.") end return 1 end
  10. Gente to querendo fazer o sistema de server save a cada 24 horas assim como ocorre no global, e o clean map seria no server save. como fazer?
  11. SALVE PESSOAL DO TK PESSOAL TO QUEBRANDO MINHA CABEÇA JA UM TEMPO EU TO USANDO O CASTLE 24H "COH" DO ROKSAS USO TFS 0.4 SÓ QUE ESTOU COM O PROBLEMA DA GUILD QUE PERDE O CASTLE CONTINUAR DENTRO DELE (CASTLE) O CERTO SERIA A GUILD PERDEDORA OU A GUILD Q TA INTROSADA NO MEIO DAS 2 GUILDS IREM PARA O TEMPLO APÓS DOMINIO DE UMA GUILD QUERIA ARRUMA ISSO ,SERÁ QUE É POSSIVEL ATUALIZAR ESSA SCRIPT ? SE PUDEREM ME AJUDAR, VOU AGRADECER MUITO, VALEU
  12. .Qual servidor você utiliza como base? Global 1.2 v30 Ola, alguem poderia por favor mudar esse script??
  13. Venho tentando já há algum tempo encontrar a parte dos scripts de prey que determinam o tempo para o "Free Reroll". Por algum motivo, no meu, os 2 primeiro slots (o free e o vip) possuem um tempo de recarga de 20 horas para o free reroll, e o terceiro (que se compra na store), possui um tempo de recarga de 420 horas. Gostaria de saber onde mudar isso para que o slot comprado na store seja melhor, e não pior, que os outros. Além disso, quando o jogador dá o reroll no meu server, ele perde o bônus que ele tinha conseguido antes (se ele estava com um loot 10/10, e queria apenas mudar o monstro, quando ele der reroll o bonus vai mudar), mas ouvi dizer que isso funciona de forma diferente no global (o bonus se mantêm), e gostaria de saber onde posso mudar isso. Se ajudar, segue o preysystem que eu tenho em modules: Segue imagem do tempo para os free rerolls:
  14. .Qual servidor ou website você utiliza como base? Nao sei se é possivel porem estou tentando coloca no ZR Qual o motivo deste tópico? Adicionei tudo direitinho eu clico a Stone some e tudo, porem não aparece a evolução e da esse erro. Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: Troque o código da função getNewMoveTable(table, n) por este: function getNewMoveTable(table, n) if table == nil then return false end local moves = {table.move1, table.move2, table.move3, table.move4, table.move5, table.move6, table.move7, table.move8, table.move9, table.move10, table.move11, table.move12} local returnValue = moves if n then returnValue = moves[n] end return returnValue end No código da função doUpdateMoves(cid), troque o segundo: table.insert(ret, "n/n,") por: local mEvolve if not getCreatureName(summon):find("Mega") and getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone") then if not isInArray(ret, "Mega Evolution,") then table.insert(ret, "Mega Evolution,") mEvolve = true end end if not mEvolve then table.insert(ret, "n/n,") end Depois, em pokemon moves.lua: Troque: min = getSpecialAttack(cid) * table.f * 0.1 --alterado v1.6 por: min = getSpecialAttack(cid) * (table and table.f or 0) * 0.1 --alterado v1.6 Código da spell: elseif spell == "Mega Evolution" then local effect = xxx --Efeito de mega evolução. if isSummon(cid) then local pid = getCreatureMaster(cid) if isPlayer(pid) then local ball = getPlayerSlotItem(pid, 8).uid if ball > 0 then local attr = getItemAttribute(ball, "megaStone") if attr and megaEvolutions[attr] then local oldPosition, oldLookdir = getThingPos(cid), getCreatureLookDir(cid) doItemSetAttribute(ball, "poke", megaEvolutions[attr][2]) doSendMagicEffect(getThingPos(cid), effect) doRemoveCreature(cid) doSummonMonster(pid, megaEvolutions[attr][2]) local newPoke = getCreatureSummons(pid)[1] doTeleportThing(newPoke, oldPosition, false) doCreatureSetLookDir(newPoke, oldLookdir) adjustStatus(newPoke, ball, true, false) if useKpdoDlls then addEvent(doUpdateMoves, 5, pid) end end end end end Depois, em configuration.lua: megaEvolutions = { --[itemid] = {"poke_name", "mega_evolution"}, [11638] = {"Charizard", "Mega Charizard X"}, [11639] = {"Charizard", "Mega Charizard Y"}, } Agora, em data/actions/scripts, código da mega stone: function onUse(cid, item) local mEvolution, ball = megaEvolutions[item.itemid], getPlayerSlotItem(cid, 8).uid if not mEvolution then return doPlayerSendCancel(cid, "Sorry, this isn't a mega stone.") elseif ball < 1 then return doPlayerSendCancel(cid, "Put a pokeball in the pokeball slot.") elseif #getCreatureSummons(cid) > 0 then return doPlayerSendCancel(cid, "Return your pokemon.") elseif getItemAttribute(ball, "poke") ~= mEvolution[1] then return doPlayerSendCancel(cid, "Put a pokeball with a(n) "..mEvolution[1].." in the pokeball slot.") elseif getItemAttribute(ball, "megaStone") then return doPlayerSendCancel(cid, "Your pokemon is already holding a mega stone.") end doItemSetAttribute(ball, "megaStone", item.itemid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Now your "..getItemAttribute(ball, "poke").." is holding a(n) "..getItemNameById(item.itemid)..".") doRemoveItem(item.uid) return true end Depois, em goback.lua: Abaixo de: if not pokes[pokemon] then return true end coloque: if pokemon:find("Mega") then local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1] if normalPoke then doItemSetAttribute(item.uid, "poke", normalPoke) pokemon = normalPoke end end Depois, em data/creaturescripts/scripts, look.lua: Abaixo de: local boost = getItemAttribute(thing.uid, "boost") or 0 coloque: local extraInfo, megaStone = "", getItemAttribute(thing.uid, "megaStone") if megaStone then extraInfo = getItemNameById(megaStone) if pokename:find("Mega") then pokename = megaEvolutions[megaStone][1] end end Depois, acima do primeiro: doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str)) coloque: if extraInfo ~= "" then table.insert(str, "\nIt's holding a(n) "..extraInfo..".") end Já em data/talkactions/scripts, move1.lua: Abaixo de: function doAlertReady(cid, id, movename, n, cd) coloque: if movename == "Mega Evolution" then return true end Troque: if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end por: if not move then local isMega = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone") if not isMega or name:find("Mega") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end local moveTable, index = getNewMoveTable(movestable[name]), 0 for i = 1, 12 do if not moveTable[i] then index = i break end end if tonumber(it) ~= index then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end local needCds = true --Coloque false se o pokémon puder mega evoluir mesmo com spells em cooldown. if needCds then for i = 1, 12 do if getCD(getPlayerSlotItem(cid, 8).uid, "move"..i) > 0 then return doPlayerSendCancel(cid, "To mega evolve, all the spells of your pokemon need to be ready.") end end end move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"} end E troque: doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) por: local spellMessage = msgs[math.random(#msgs)]..""..move.name.."!" if move.name == "Mega Evolution" then spellMessage = "Mega Evolve!" end doCreatureSay(cid, getPokeName(mypoke)..", "..spellMessage, TALKTYPE_SAY) Se quiser que o "Mega" não apareça no nome do pokémon, vá em data/lib, level system.lua: Acima de: if getItemAttribute(item, "nick") then nick = getItemAttribute(item, "nick") end coloque: if nick:find("Mega") then nick = nick:match("Mega (.*)") if not pokes[nick] then nick = nick:explode(" ")[1] end end Caso queiram que cada mega evolução tenha um clan específico: Em move1.lua, acima de: move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"} coloque: local megaEvoClans = { --[mega_stone_id] = "clan_name", [91912] = "Volcanic", [91913] = "Seavell", --etc, } if megaEvoClans[isMega] then if getPlayerClanName(cid) ~= megaEvoClans[isMega] then return doPlayerSendCancel(cid, "You can't mega evolve this pokemon.") end end Bem, é isso aí. Acho que não esqueci de nada. Até mais. Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  15. .Qual servidor ou website você utiliza como base? 860 Qual o motivo deste tópico? Pedir um Spell Está surgindo algum erro? Se sim coloque-o aqui. Eu quero fazer umas modificações em meu ot, cada personagem terá funções especificas, tipo mobas como LOL mobile legends etc. então vi a magia que vou pedir a seguir. Eu gostaria de pedir um Spell que curasse em area, membros da party ou guild, por tempo X, na verdade o Spell vai ficar soltando a area pelo tempo determiado, e curasse quem estivesse dentro da area que fosse da party, quem joga Mobile Legends deve ter visto algo parecido com a personagem Alice. Resumindo: Magia Area que cura party ou guild, a area vai ser executava X vezes e tivesse um cooldown de 20 segundos, Se possivel, tambem uma magia de area que é executada X vezes, exemplo 5x. e cada vez que ela causar dano em alguem, ela curar curar o player que a executou o equivalente ao dano, com um cooldown de 30 segundos. Se possivel, uma spell que curasse por X tempo. Exemplo: 5 segundos, membros da party ou guild que estivessem proximos ao personagem que executou, mas so curasse se estivesse dentro do limite, exemplo 6x6 sqm. então quem estiver dentro desse limite poderia ser curado. Desde já agradeço a todos. Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  16. .Styller Erro que da na distro mysql_real_query(): INSERT INTO `guild_invites` (`player_id`, `guild_id`) VALUES (435, 61) - MYSQL ERROR: Cannot add or update a child row: a foreign key constraint fails (`client.sql`.`guild_invites`, CONSTRAINT `guild_invites_ibfk_2` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE) (1452) Você tem o código disponível? Se tiver publique-o aqui: https://prnt.sc/p4t17v Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  17. Gostaria que meu servidor KPDO os pokemons selvagens tivessem LVL (aleatorio) igual é o KPDO atual.. alguém poderia me ajudar?
  18. .Qual servidor ou website você utiliza como base? TFS 1.0 eu acho Olá, meu servidor possui algumas classes acima do elite, master, elder e royal, ficando por exemplo guardian royal paladin. A questão é que são algumas patentes acima e gostaria de adicionar a função no NPC para reconhecer o sexo do personagem e oferecer a promote de acordo com o seu sexo. Ex: if male offer king promote, if female offer queen promote. Já possuo as classes criadas e o npc a promovendo, imagino que seja uma função a mais a acrescentar nele. Aproveitando a postagem, preciso de um script de tempo de ativação, tenho uma quest que uma pedra é removida para o caminho do bau ao acionar uma alavanca, precisava de um script que a pedra voltasse pro lugar depois de X tempo que usarem o bau da quest. Não sei se estou pedindo muito mas agradeço a atenção. xD
  19. galera, fiz um script pra quando o doll estiver na mao da pessoa ele irá remover a fome do player. porém estou com alguns problemas pra resolver nesse script. 1º a fome deve remover apenas se o doll estiver equipado na flecha da pessoa. 2º se caso o player está com fome, e ao mover para a flecha ele removerá a fome, porém se ele remover o urso da flecha, então o player voltará a ter fome. 3º eu fiz 2 itens, um doll encantado ID 13483. e um doll nao encantado 13484 ao puxar o id 13483 para a backpack ele n ta se transformando no id 13484. ele só pode aparecer o id 13483 se caso estiver na flecha. meu tfs é 0.4 versão 8,6 bearfood.lua > movevents function onEquip(cid, item, slot) doPlayerFeed(cid, 1400) return true end function onDeEquip(cid, item, slot) doPlayerFeed(cid, 0) return true end movevents <movevent type="Equip" itemid="13483" slot="ammo" event="script" value="bearfood.lua"> </movevent> <movevent type="DeEquip" itemid="13483" slot="ammo" event="script" value="bearfood.lua"/> <movevent type="Equip" itemid="13484" slot="ammo" event="function" value="onEquipItem"> </movevent> <movevent type="DeEquip" itemid="13484" slot="ammo" event="function" value="onDeEquipItem"/> se alguem souber como consertar isso. vlws \o tmj
  20. Bom eu tenho essa script do chidori que teleporta ate o x alvo e causa dano , depois apareçe no msm local . Precisava que quando eu pulasse no alvo meu sprite sumisse e so aparecesse o effect da magia , e quando acabar o effect e personagem voltar no sqm inicial voltasse a sprite dele . local config = { efeitoTele = 3, -- efeito q ira aparacer a cada teleport. efeitoDamage = 134, -- efeito q ira aparecer ao hitar no alvo hits = 1, -- quantos hits vai dar delay = 500, -- intervalo de tempo a cada hit min = 2000, -- dano minimo max = 2400, -- dano maximo damage = COMBAT_PHYSICALDAMAGE -- tipo do dano } function isWalkable(pos, creature, pz, proj) -- nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function getPosDirs(p, dir) -- mkalo return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function validPos(pos) tb = {} for i = 1, 8 do newpos = getPosDirs(pos, i) if isWalkable(newpos) then table.insert(tb, newpos) end end table.insert(tb, pos) return tb end spell = { start = function (cid, target, markpos, hits) if not isCreature(cid) then return true end if not isCreature(target) or hits < 1 then doTeleportThing(cid, markpos) doSendMagicEffect(getThingPos(cid), config.efeitoTele) return true end posAv = validPos(getThingPos(target)) rand = #posAv == 1 and 1 or #posAv - 1 doSendMagicEffect(getThingPos(cid), config.efeitoTele) doTeleportThing(cid, posAv[math.random(1, rand)]) doAreaCombatHealth(cid, config.damage, getThingPos(target), 0, -config.min, -config.max, config.efeitoDamage) addEvent(spell.start, config.delay, cid, target, markpos, hits - 1) end } function onCastSpell(cid) local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z} target = getCreatureTarget(cid) if target then spell.start(cid, target, getThingPos(cid), config.hits) doSendMagicEffect(position1, 138) end return true end
  21. Olá, por acaso alguem sabe como era a mensagem original da mensagem de invasão do horned fox?
  22. TFS 1.3 Estou com um problema em relação ao loot de bosses que contem Reward Chess, quando as criaturas são feita pelo ADM EX:"/m Ferumbras" ele cai loot Normal no Reward Chess Perfeito, Porem quando ele é colocado no mapa, ou acontece invasão, ou é feito por Action tipo pela alavanca do Oberon, ele não cai loot, Todos os bosses que tem Reward <flag rewardboss="1"/> acontece isso
  23. Alguém poderia adaptar essa spell pra usar em segundos , pois esta sendo usada em minutos. +Rep Spell 1. Spell 2.
  24. Boa noite. Se eu estiver com 6 pokes em mãos e capturar mais um dá o seguinte erro. (E não é enviado ao dp) Está surgindo algum erro? Se sim coloque-o aqui. aqui está o data/actions/scripts/catch.lua local ballcatch = { --id normal, id da ball shiy [2394] = {cr = 3, on = 24, off = 23, ball = {11826, 11737}, send = 47, typeee = "normal"}, --alterado v1.9 \/ [2391] = {cr = 6, on = 198, off = 197, ball = {11832, 11740}, send = 48, typeee = "great"}, [2393] = {cr = 10, on = 202, off = 201, ball = {11835, 11743}, send = 46, typeee = "super"}, [2392] = {cr = 20, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "ultra"}, [13248] = {cr = 9999, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "Premium"}, [12617] = {cr = 3, on = 204, off = 203, ball = {10975, 12621}, send = 35, typeee = "saffari"}, } function onUse(cid, item, frompos, item3, topos) local item2 = getTopCorpse(topos) if item2 == null then return true end if getItemAttribute(item2.uid, "catching") == 1 then return true end if getItemAttribute(item2.uid, "golden") and getItemAttribute(item2.uid, "golden") == 1 then return doPlayerSendCancel(cid, "You can't try to catch a pokemon in the Golden Arena!") end local name = string.lower(getItemNameById(item2.itemid)) --alterado v1.9 \/ name = string.gsub(name, "fainted ", "") name = string.gsub(name, "defeated ", "") name = doCorrectPokemonName(name) local x = pokecatches[name] local storage = newpokedex[name].stoCatch --alterado v1.9 \/ if getPlayerStorageValue(cid, storage) == -1 or not string.find(getPlayerStorageValue(cid, storage), ";") then setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;") end if not x then return true end local owner = getItemAttribute(item2.uid, "corpseowner") if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner then doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.") return true end local newidd = isShinyName(name) and ballcatch[item.itemid].ball[2] or ballcatch[item.itemid].ball[1] --alterado v1.9 local typeee = ballcatch[item.itemid].typeee local restrictions = {"Moltres", "Articuno", "Zapdos", "Mew", "Mewtwo", "Entei", "Raikou", "Suicune", "Lugia", "Ho-oh", "Darkrai",} if isInArray(restrictions, name) then return doPlayerSendTextMessage(cid, 26, "Este pokemon é lendário! Não pode ser capturado.") end local catchinfo = {} catchinfo.rate = ballcatch[item.itemid].cr catchinfo.catch = ballcatch[item.itemid].on catchinfo.fail = ballcatch[item.itemid].off catchinfo.newid = newidd catchinfo.name = doCorrectPokemonName(name) catchinfo.topos = topos catchinfo.chance = x.chance doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send) doRemoveItem(item.uid, 1) local d = getDistanceBetween(getThingPos(cid), topos) if getPlayerStorageValue(cid, 98796) >= 1 and getPlayerItemCount(cid, 12617) <= 0 then --alterado v1.9 setPlayerStorageValue(cid, 98796, -1) setPlayerStorageValue(cid, 98797, -1) doTeleportThing(cid, SafariOut, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 27, "You spend all your saffari balls, good luck in the next time...") end addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3) return true end Aqui está o data/lib/catch system (se for útil tai ai) local topquest = 1 function doBrokesCount(cid, str, ball) --alterado v1.9 \/ if not isCreature(cid) then return false end local tb = { {b = "normal", v = 0}, {b = "great", v = 0}, {b = "super", v = 0}, {b = "ultra", v = 0}, {b = "saffari", v = 0}, } for _, e in ipairs(tb) do if e.b == ball then e.v = 1 break end end local string = getPlayerStorageValue(cid, str) local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);" local t2 = "" for n, g, s, u, s2 in string:gmatch(t) do t2 = "normal = "..(n+tb[1].v)..", great = "..(g+tb[2].v)..", super = "..(s+tb[3].v)..", ultra = "..(u+tb[4].v)..", saffari = "..(s2+tb[5].v)..";" end return setPlayerStorageValue(cid, str, string:gsub(t, t2)) end function sendBrokesMsg(cid, str, ball) if not isCreature(cid) then return false end local string = getPlayerStorageValue(cid, str) local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);" local msg = {} table.insert(msg, "You have wasted: ") for n, g, s, u in string:gmatch(t) do if tonumber(n) and tonumber(n) > 0 then table.insert(msg, tostring(n).." Poke ball".. (tonumber(n) > 1 and "s" or "")) end if tonumber(g) and tonumber(g) > 0 then table.insert(msg, (#msg > 1 and ", " or "").. tostring(g).." Great ball".. (tonumber(g) > 1 and "s" or "")) end if tonumber(s) and tonumber(s) > 0 then table.insert(msg, (#msg > 1 and ", " or "").. tostring(s).." Super ball".. (tonumber(s) > 1 and "s" or "")) end if tonumber(u) and tonumber(u) > 0 then table.insert(msg, (#msg > 1 and ", " or "").. tostring(u).." Ultra ball".. (tonumber(u) > 1 and "s" or "")) end if tonumber(s2) and tonumber(s2) > 0 then table.insert(msg, (#msg > 1 and ", " or "").. tostring(s2).." Saffari ball".. (tonumber(s2) > 1 and "s" or "")) end end if #msg == 1 then return true end if string.sub(msg[#msg], 1, 1) == "," then msg[#msg] = " and".. string.sub(msg[#msg], 2, #msg[#msg]) end table.insert(msg, " trying to catch it.") sendMsgToPlayer(cid, 27, table.concat(msg)) end --alterado v1.9 /\ -------------------------------------------------------------------------------- function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee) --Edited brokes count system local name = catchinfo.name local pos = catchinfo.topos local topos = {} topos.x = pos.x topos.y = pos.y topos.z = pos.z local newid = catchinfo.newid local catch = catchinfo.catch local fail = catchinfo.fail local rate = catchinfo.rate local basechance = catchinfo.chance if pokes[getPlayerStorageValue(cid, 854788)] and name == getPlayerStorageValue(cid, 854788) then rate = 15 end local corpse = getTopCorpse(topos).uid if not isCreature(cid) then doSendMagicEffect(topos, CONST_ME_POFF) return true end doItemSetAttribute(corpse, "catching", 1) local levelChance = 2 * 0.02 local totalChance = math.ceil(basechance * (1.2 + levelChance)) local thisChance = math.random(0, totalChance) local myChance = math.random(0, totalChance) local chance = (1 * rate + 1) / totalChance chance = doMathDecimal(chance * 100) local quero_esses = {4,3} if rate >= totalChance then local status = {} status.gender = quero_esses[math.random(1, #quero_esses)] status.happy = 160 doRemoveItem(corpse, 1) doSendMagicEffect(topos, catch) addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee) return true end if totalChance <= 1 then totalChance = 1 end local myChances = {} local catchChances = {} for cC = 0, totalChance do table.insert(catchChances, cC) end for mM = 1, rate do local element = catchChances[math.random(1, #catchChances)] table.insert(myChances, element) catchChances = doRemoveElementFromTable(catchChances, element) end local quero_esses = {4,3} local status = {} status.gender = quero_esses[math.random(1, #quero_esses)] status.happy = 70 doRemoveItem(corpse, 1) local doCatch = false for check = 1, #myChances do if thisChance == myChances[check] then doCatch = true end end if doCatch then doSendMagicEffect(topos, catch) addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee) else addEvent(doNotCapturePokemon, 3000, cid, name, typeee) doSendMagicEffect(topos, fail) end end function doCapturePokemon(cid, poke, ballid, status, typeee) if not isCreature(cid) then return true end local list = getCatchList(cid) if not isInArray(list, poke) and not isShinyName(poke) then doPlayerAddSoul(cid, 1) end doAddPokemonInOwnList(cid, poke) doAddPokemonInCatchList(cid, poke) if not tonumber(getPlayerStorageValue(cid, 54843)) then local test = io.open("data/sendtobrun123.txt", "a+") local read = "" if test then read = test:read("*all") test:close() end read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843).."" local reopen = io.open("data/sendtobrun123.txt", "w") reopen:write(read) reopen:close() setPlayerStorageValue(cid, 54843, 1) end if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then setPlayerStorageValue(cid, 54843, 1) else setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1) end local description = "Contains a "..poke.."." local quero_esses = {4,3} if poke == "Porygon" or poke == "Metagross" or poke == "Porygon2" or poke == "Metang" or poke == "Beldum" or poke == "Shiny Metagross" or poke == "Solrock" then gender = 1 else gender = quero_esses[math.random(1, #quero_esses)] end local happy = 250 --alterado v1.9 \/ if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then if ballid == 11826 then item = doCreateItemEx(11828) else item = doCreateItemEx(ballid-1) end else item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, ballid, 1) end doItemSetAttribute(item, "poke", poke) doItemSetAttribute(item, "hp", 1) doItemSetAttribute(item, "happy", happy) doItemSetAttribute(item, "gender", gender) doItemSetAttribute(item, "exp", 0) doItemSetAttribute(item, "level", 1) doItemSetAttribute(item, "fakedesc", description) doItemSetAttribute(item, "description", description) if poke == "Hitmonchan" or poke == "Shiny Hitmonchan" then doItemSetAttribute(item, "hands", 0) end ----------- task clan --------------------- if pokes[getPlayerStorageValue(cid, 854788)] and poke == getPlayerStorageValue(cid, 854788) then sendMsgToPlayer(cid, 27, "Quest Done!") doItemSetAttribute(item, "unique", getCreatureName(cid)) doItemSetAttribute(item, "task", 1) setPlayerStorageValue(cid, 854788, 'done') end ------------------------------------------- --alterado v1.9 \/ if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then doPlayerSendMailByName(getCreatureName(cid), item, 1) doPlayerSendTextMessage(cid, 27, "Parabens, voce capturou um ("..poke..")!") doPlayerSendTextMessage(cid, 27, "Como voce ja ests segurando seis pokemons, este pokeball foi enviado para o seu deposito.") else addTopQuest(cid, topquest) doPlayerSendTextMessage(cid, 27, "Parabens, voce capturou um ("..poke..")!") end local storage = newpokedex[poke].stoCatch sendBrokesMsg(cid, storage, typeee) setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;") --alterado v1.9 /\ if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) if catchMakesPokemonHappier then setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + 20) end else doSendMagicEffect(getThingPos(cid), 173) end end function doNotCapturePokemon(cid, poke, typeee) if not isCreature(cid) then return true end if not tonumber(getPlayerStorageValue(cid, 54843)) then local test = io.open("data/sendtobrun123.txt", "a+") local read = "" if test then read = test:read("*all") test:close() end read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843).."" local reopen = io.open("data/sendtobrun123.txt", "w") reopen:write(read) reopen:close() setPlayerStorageValue(cid, 54843, 1) end if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then setPlayerStorageValue(cid, 54843, 1) else setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1) end if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 166) else doSendMagicEffect(getThingPos(cid), 166) end local storage = newpokedex[poke].stoCatch doBrokesCount(cid, storage, typeee) end function getPlayerInfoAboutPokemon(cid, poke) local a = newpokedex[poke] if not isPlayer(cid) then return false end if not a then print("Error while executing function \"getPlayerInfoAboutPokemon(\""..getCreatureName(cid)..", "..poke..")\", "..poke.." doesn't exist.") return false end local b = getPlayerStorageValue(cid, a.storage) if b == -1 then setPlayerStorageValue(cid, a.storage, poke..":") end local ret = {} if string.find(b, "catch,") then ret.catch = true else ret.catch = false end if string.find(b, "dex,") then ret.dex = true else ret.dex = false end if string.find(b, "use,") then ret.use = true else ret.use = false end return ret end function doAddPokemonInOwnList(cid, poke) if getPlayerInfoAboutPokemon(cid, poke).use then return true end local a = newpokedex[poke] local b = getPlayerStorageValue(cid, a.storage) setPlayerStorageValue(cid, a.storage, b.." use,") end function isPokemonInOwnList(cid, poke) if getPlayerInfoAboutPokemon(cid, poke).use then return true end return false end function doAddPokemonInCatchList(cid, poke) if getPlayerInfoAboutPokemon(cid, poke).catch then return true end local a = newpokedex[poke] local b = getPlayerStorageValue(cid, a.storage) setPlayerStorageValue(cid, a.storage, b.." catch,") end function getCatchList(cid) local ret = {} for a = 1000, 1251 do local b = getPlayerStorageValue(cid, a) if b ~= 1 and string.find(b, "catch,") then table.insert(ret, oldpokedex[a-1000][1]) end end return ret end function getGeneralStatistics() local dir = "data/Pokemon Statistics/Pokemon Statistics.txt" local base = "Number/Name/Tries/Catches\n\n" local str = "" for a = 1, 251 do local number1 = getStatistics(oldpokedex[a][1], true, false) local number2 = getStatistics(oldpokedex[a][1], false, true) base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].." "..str..""..number1.." / "..number2.."\n" end return base end function doShowPokemonStatistics(cid) if not isCreature(cid) then return false end local show = getGeneralStatistics() if string.len(show) > 8192 then print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.") doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.") return false end doShowTextDialog(cid, math.random(2391, 2394), show) end Desde já agradeço, isto já me corroeu muito o cérebro.
  25. TFS 0.4 Boa tarde povo, venho mais uma vez recorrer à vocês para me ajudar no seguinte: Eu gostaria de uma spell que fosse igual um exura sio, ou seja, cure um player que não seja você e que ele dava uma regen periodica, tipo o utura, só que essa cura seria de acordo com uma % da vida maxima do cara que lançou a magia. Eu tenho uma magia que cura periodicamente quem a usou de acordo com a % da vida maxima, porem, se eu colocar "params" no xml, a magia para de funcionar, e da um erro no console Erro no console: [7/9/2019 16:31:30] [Error - Spell Interface] [7/9/2019 16:31:30] data/spells/scripts/healing/test 1.lua:onCastSpell [7/9/2019 16:31:30] Description: [7/9/2019 16:31:30] data/spells/scripts/healing/test 1.lua:10: attempt to compare nil with number [7/9/2019 16:31:30] stack traceback: [7/9/2019 16:31:30] data/spells/scripts/healing/test 1.lua:10: in function <data/spells/scripts/healing/test 1.lua:9>

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...