Jump to content
Close

Search the Community

Showing results for tags 'Action%25252525252525252FTalkaction'.



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 and Bots
    • Discussion
  • Others
    • Playground (Off-topic)
    • Other Games
    • Advertising
    • Graphics and Design
    • Development and Programming
  • League of Legends's Geral
  • League of Legends's Suporte
  • Nto New Season's Tópicos
  • Fakes's Fakes
  • Tibia's Geral
  • Tibia's Notícias
  • Tibia's Media
  • Tibia's Life Thread
  • Computação's Geral
  • Computação's Dicas e Tutoriais
  • Computação's Suporte
  • Roleplaying's Roleplaying
  • 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 50 results

  1. Versão testada: 9.4+ (Pode funcionar em anteriores) Descrição: O script de cadeia feito por FreaksOt onde eu modifiquei e fiz algumas alterações. Alterações: - Quando prende o player ele não fica mais em um local fixo, você pode configurar para coloca-lo em outras celas. - O tempo pode ou não ser fixo, é só você digitar /jail (nome do player) para um tempo fixo ou /jail (nome do player), (tempo) para coloca-lo com um tempo especifico. -- OBS: O tempo é posto em segundos. (120 segundos = 2 minutos) TAG: <talkaction log="yes" words="/jail;!jail;/prender;!prender;/unjail;!unjail;/desprender;!desprender" access="3" event="script" value="prisao.lua"/> [/code] [i][b]Script:[/b][/i] data/talkaction/prisao.lua [code] grouprequired = 3 jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 local jailpos = { [1] = {x = 59, y = 52, z =6}, [2] = {x = 59, y = 52, z =5}, [3] = {x = 55, y = 47, z =6}, [4] = {x = 55, y = 47, z =5}, [5] = {x = 55, y = 52, z =6}, [6] = {x = 55, y = 52, z =5}, [7] = {x = 59, y = 47, z =5}, [8] = {x = 63, y = 52, z =5} } local unjailpos = { x = 63, y = 54, z =6 } jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você saiu da cadeia, tente não fazer coisas malvadas da próxima vez para não ser preso novamente. Cuide-se amigo.') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end local jail_time = -1 for word in string.gmatch(tostring(t[1]), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(t[1]) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+3)) end end end local default_jail = 30 if(t[2]) then default_jail = t[2] end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if (words == '!prender' or words == '/prender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos[math.random(#jailpos)], TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você prendeu o player: '.. getCreatureName(isplayer) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage (isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce foi preso por '.. getCreatureName(cid) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end elseif (words == '!desprender' or words == '/desprender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then if getPlayerStorageValue(isplayer, jailedstoragevalue_bool) == 1 then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'O player '.. getCreatureName(cid) ..' te tirou da prisão. Te vejo em breve!!!') doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você tirou da prisão o player: '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não está preso.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end end return true end Config: local jailpos = { -- Local das selas onde o player vai aparecer. local unjailpos = { x = 63, y = 54, z =6 } -- Local onde ele irá sair. local default_jail = 30 -- Tempo padrão. [/code] [i][b]Créditos:[/b][/i] [i]FreaksOt[/i] [i]Comedinha (Bruno Carvalho)[/i]
  2. e ae pessoal!! vou ensinar vcs a colocarem a uma TalkAction no seu ot 8.6 que serve para vcs verem o spellbook sem precisar te-lo apenas digitando !spells. 1º: primeiramente va na pasta do seu ot vá em data/talkactions e clique no arquivo xml chamado talkactions (vc pode abri-lo com bloco de notas ou com OTScript Live!) adicione a linha de comando em player se preferir <talkaction words="!spells" event="script" value="talkspellbook.lua"/> obs*: coloque como os outros! salve e feche 2º: depois vá em data/talkactions/scripts copie e cole um arquivo .lua (formato LUA) renomeie para talkspellbook abra-o apague tudo e cole: function onSay(cid, words, param, channel) local count = getPlayerInstantSpellCount(cid) local text = "" local t = {} for i = 0, count - 1 do local spell = getPlayerInstantSpellInfo(cid, i) if spell.level ~= 0 then if spell.manapercent > 0 then spell.mana = spell.manapercent .. "%" end table.insert(t, spell) end end table.sort(t, function(a, b) return a.level < b.level end) local prevLevel = -1 for i, spell in ipairs(t) do local line = "" if prevLevel ~= spell.level then if i ~= 1 then line = "\n" end line = line .. "Spells for Level " .. spell.level .. "\n" prevLevel = spell.level end text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" end doShowTextDialog(cid, words, text) return TRUE end SALVE E Feche agora abra seu ot e com qualquer player digite !spells que vai abri o spellbook! gente esse é meu primeiro post ake no tibia king espero que tenham gostado (clika em gostei pra me ajuda)
  3. Eae galera, venho trazer para vocês uma Talkaction, o comando /cb para invocar um pokemon dentro da ball que é para o PDA ou outro que tenha como base. Bom vamos lá: Vá em: data/talkactions/scripts Crie um arquivo createpokeball.lua e cole isso dentro: Agora vá em Talkactions.xml e cole essa tag dentro: Gostou ? Da REP + hehe'
  4. Bom galera é o seguinte, eu tentei criar um NPC que teleporta por X item. Mas sempre dava um erro quando vai adiciona-lo no mapa. Ai resolvi fazer uma Script que quando você clica na Estatua, porta, parede ou coisa do tipo você é teleportado se tiver X Item. ( PS: Quando vc é teleportado o item não é removido de sua bag. Você cotinua com o item, como se fosse uma permissão !! ) Bom, vamos deixar de papo furado, e vamos ao que interessa. Vai em: data/actions/scripts crie um arquivo .lua com o nome que você quiser e cole isso: Agora vá em actions.xml e cole essa tag: Action ID Nome do arquivo que você criou em: data/actions/scripts
  5. Olá pessoal, venho hoje aqui para postar um sistema de pokemon muito procurado, o famoso, Tm System. Siga o tutorial a risca ou seu trabalho será invão. Quote Seu Funcionameto: Basícamente funciona assim; ele adiciona um "Attack" novo a um pokemon ou substitui um existente, dependendo da vontado do player. Versões testadas: Qualquer derivado do PDA Vamos ao que interessa, vá em actions.xml e cole a seguinte tag: <action itemid="id do item que será usado" event="script" value="tmSystem.lua"/> Atenção o item que será usado no system, não deve ter o attributo "Usable" ou você terá erros. Agora crie um arquivo em {data/actions/scripts} chamado tmSystem.lua e cole o seguinte script dentro: function onUse(cid, item, frompos, item2, topos) local tm = tmabilities local pokemon = getCreatureSummons(cid)[1] local slotball = getPlayerSlotItem(cid, 8).uid local tmname = getItemNameById(item2.itemid) local i = item2.itemid if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "Need pokemon to learn a "..tmname..".") end if getItemAttribute(slotball, "TM") == tmname then return doPlayerSendCancel(cid, "Your pokemon was learned this TM.") end if isInArray(tm[""..tmname..""], getPokemonName(pokemon)) then doPlayerSetVocation(cid, 49) openChannelDialog(cid) else doPlayerSendCancel(cid, "This TM not compatible in your pokemon.") end return true end Agora vamos em {creaturescripts.xml} e colaremos a seguinte tag: <event type="joinchannel" name="TmChoose" event="script" value="tmsys.lua"/> Agora crie o arquivo tmsys.lua em {creaturescripts/scripts} e cole isso dentro: [CODE] function onJoinChannel(cid, channelId, users, isTv) if getPlayerVocation(cid) == 49 then else return true end local summon = getCreatureSummons(cid)[1] local moves = movestable[getCreatureName(summon)] local n = 1 for a = 1, 12 do local b = getNewMoveTable(moves, a) if b then n = n + 1 end end for b = 13, 23 do if channelId == b then local tm = tmabilities local pokemon = getCreatureSummons(cid)[1] local slotball = getPlayerSlotItem(cid, 8).uid local slotm = getPlayerSlotItem(cid, 9) local tmname = getItemNameById(slotm.itemid) if n >= channelId - 11 then doPlayerSendTextMessage(cid, 27, "Congralutions! Your "..getPokemonName(pokemon).." learn a new TM ("..tmname..").") doItemSetAttribute(slotball, "TM", tmname) doItemSetAttribute(slotball, "TMN", channelId - 11) doSendMagicEffect(getThingPosition(pokemon), 28) doSendMagicEffect(getThingPosition(pokemon), 29) doRemoveItem(slotm.uid) if useKpdoDlls then doUpdateMoves(cid) end else doPlayerSendCancel(cid, "Put tm on at last empty slot.") end return false end end return true end Nesta parte você precisa de muita atenção, você terá que criar 10 channels como no modelo abaixo: <channel id="13" name="[Put on M1]"> <vocation id="49"/> </channel> <channel id="14" name="[Put on M2]"> <vocation id="49"/> </channel> Em channel id você seguira a ordem 13 a 23, em vocations id pode deixar do jeito que esta. Agora crie uma vocation com o id 49 ou cole a seguinte tag no vocations.xml: <vocation id="49" name="TM" description="pokemon trainer" needpremium="0" gaincap="0" gainhp="55" gainmana="0" gainhpticks="0" gainhpamount="0" gainmanaticks="0" gainmanaamount="0" manamultiplier="1.1" attackspeed="-1" soulmax="251" gainsoulticks="-1" fromvoc="1" lessloss="0"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="2" club="2" sword="2" axe="2" distance="2" shielding="2" fishing="2" experience="1.1"/> </vocation> Imagem Postada Agora vamos em {data/lib} e crie um arquivo chamado tmSystem.lua e cole as seguintes linhas nele: tmabilities = { ["Solar Beam"] = {"Blastoise", "Venusaur", "Charizard"}, ["Fire Blast"] = {"Blastoise", "Venusaur", "Charizard"}, } Nesta parte você edita, para cada magia[""] = nome dos pokemons que poderam ter essa magia por tm. Tipo do jeito que esta ai, se você for tentar colocar um fire blast em um bulba não vai pegar.. Para adicionar mais magias, basta copiar a linha e colocar o nome da magia nova e seus respectivos pokemons. Preste atenção, para cada magia feita, terá que haver um item com o nome da magia. E o id deste item deve ser colocado na tag da actions. ou seja(exemplo): abra o item.xml pegue o item que deseje usar e coloque o nome "Solar Beam"(do mesmo jeito da lib), pegue o id dele e cole na tag da actions. Espero que tenham intendido está parte. A ultima parte da instalção, vamos em {data/talkactions/scripts} e abra o arquivo move1.lua e substitua a parte de "if it = 1" até o ultimo "end" antes da parte "if not move then": local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, 8) 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 --alterado v1.5 local mypoke = getCreatureSummons(cid)[1] if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end if getCreatureName(mypoke) == "Evolution" then return true end if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then name = getPlayerStorageValue(mypoke, 1010) --edited else name = getCreatureName(mypoke) 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.."" local slotball = getPlayerSlotItem(cid, 8).uid local tmname = getItemAttribute(slotball, "TM") if it == "2" then if getItemAttribute(slotball, "TMN") == 2 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move2 end elseif it == "3" then if getItemAttribute(slotball, "TMN") == 3 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move3 end elseif it == "4" then if getItemAttribute(slotball, "TMN") == 4 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move4 end elseif it == "5" then if getItemAttribute(slotball, "TMN") == 5 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move5 end elseif it == "6" then if getItemAttribute(slotball, "TMN") == 6 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move6 end elseif it == "7" then if getItemAttribute(slotball, "TMN") == 7 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move7 end elseif it == "8" then if getItemAttribute(slotball, "TMN") == 8 then move = {name = ""..tmname.."", level = 0, cd =15, dist = 0, target = 0} else move = movestable[name].move8 end elseif it == "9" then if getItemAttribute(slotball, "TMN") == 9 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move9 end elseif it == "10" then if getItemAttribute(slotball, "TMN") == 10 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move10 end elseif it == "11" then if getItemAttribute(slotball, "TMN") == 11 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move11 end elseif it == "12" then if getItemAttribute(slotball, "TMN") == 12 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move12 end end if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end if getPlayerLevel(cid) < move.level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.") return true 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 "..move.name.." again.") return true end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.") return true end if getPlayerStorageValue(mypoke, 3894) >= 1 then return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3 end --alterado v1.6 if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!") return true end --alterado v1.6 if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) and math.random(1, 100) <= 10 then local target = getCreatureTarget(cid) if isCreature(getMasterTarget(target)) then --alterado v1.6 doSendMagicEffect(getThingPos(target), 211) doSendAnimatedText(getThingPos(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false) doSendMagicEffect(getThingPos(target), 211) doFaceCreature(target, getThingPos(mypoke)) return true --alterado v1.6 end 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 local newid = 0 if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.") return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd) end doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) local summons = getCreatureSummons(cid) --alterado v1.6 addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin) for i = 2, #summons do if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then docastspell(summons[i], move.name) --alterado v1.6 end end docastspell(mypoke, move.name) doCreatureAddCondition(cid, playerexhaust) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end Até que enfim.. Se fizeram tudo certo o sistema vai funcionar se não.... Caso não itendam alguma parte da explicação podem me perguntar por aqui... Creditos Smix
  6. Tipo: TalkAction. Testado: Não. @Oque Faz. Bom ela é igual a create item normal(/i) só que personalizada impedindo que outros da staff criem items que vocês não queiram. @Instalando. Vá em data/talkactions/createitems e substitua todo o conteúdo que há nele por esse: agora vá em data/logs/crie um arquivo chamado createItemLogs na extensão .txt. @Explicando. local allowedPlayers = {"[ADM] Castiel", "[GOD] Dean"} - pessoas autorizadas a criar qualquer item local blockedIds = {2150, 2159} - items proibidos de criar se não funcionar avisa ae
  7. Olá, eu sou GuhPk e hoje estou vindo aqui para ensinar vocês a vender itens por Talkactions... Estou aprendendo agora também sobre script's, então o unico modo que eu sei é criando 1 script para 1 item a venda... Caso eu descobra outra maneira de criar em 1 script só eu posto aqui!!! =] ========================================================================== Vai em data/talkactions/scripts copie 1 arquivo.lua, renomeie, apague tudo dentro e coloco isso: (editando da maneira que você quizer) function onSay(cid, words, param, channel) local dinheiro = 1000000 -- quanto vai custar o item local recompensa = 2548 -- qual item sera vendido if doPlayerRemoveMoney(cid, dinheiro) then doPlayerAddItem(cid, recompensa, 1) -- o 1 é o tanto de itens que vai ganhar doPlayerSendTextMessage(cid, 19, "Você acabou de receber x item") else doPlayerSendTextMessage(cid, 19, "Você não tem dinheiro suficiente para comprar o item") end return true end Depois, vá até data/talkactions/talkactions.xml e adicione esta seguinte tag: (editando da maneira que você quizer) <talkaction log="yes" words="!comando-para-comprar-o-item" event="script" value="nome-do-arquivo.lua"> Observação: Caso você queira vender com mais de 1 comando você faria os comandos separados sempre por " ; ", veja no exemplo a seguir: <talkaction log="yes" words="!comando1;!comando2;!comando3;!comando4;!comando5" event="script" value="nome-do-arquivo.lua"> ========================================================================== Agora eu irei postar aqui uns print's dos script's!!! ;] ========================================================================== Agora eu irei postar aqui uns print's do poketibia!!! ;] Ajudei? REP +++!!!
  8. Bom, esse script funciona da seguinte maneira. Uma quest que ao clicar no baú, cada vocação ganha o Item configurável por voce. Ex: Mage ganha wand, Kina ganha Sword, Pally Bolt etc... Isso tudo em só 1 Chest. actions/scripts/script.lua Créditos: J.Dre
  9. Versão: 3.1 Versão de tibia: 9.7+ Descrição: Como muitos sabem na versão 9.7 a tfs removeu o rank system, e o tibia também adicionou os novos estilos de diálogos. Então eu resolvi fazer um novo rank system com esse sistema. Features: - Rank system em tempo real. - Janela personalisada. - Frags rank (Mock) TAG: <talkaction words="!rank;/rank;!ranks;/ranks" event="script" value="rank.lua"/> Script: data/talkactions/rank.lua modaldialog2 = { title = "Rank", message = "Escolha o rank que você quer visualizar:", buttons = { { id = 1, value = "Ver" }, { id = 2, value = "Cancelar" }, }, buttonEnter = 1, buttonEscape = 2, choices = { { id = 1, value = "Fist" }, { id = 2, value = "Club" }, { id = 3, value = "Sword" }, { id = 4, value = "Axe" }, { id = 5, value = "Distance" }, { id = 6, value = "Shield" }, { id = 7, value = "Fish" }, { id = 8, value = "Magic" }, { id = 9, value = "Level" }, { id = 10, value = "Frags" } }, popup = false } function callback2(cid, button, choice) if (button == 1) then local str = "" local name_now if (choice == 1) then str = "--[ Fist Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 0 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 2) then str = "--[ Club Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 1 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 3) then str = "--[ Sword Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 2 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 4) then str = "--[ Axe Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 3 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 5) then str = "--[ Distance Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 4 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 6) then str = "--[ Shield Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 5 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 7) then str = "--[ Fish Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 6 ORDER BY `value` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 8) then str = "--[ Magic Rank ]--\n" query = db.getResult("SELECT `maglevel`, `name` FROM `players` WHERE `group_id` < 3 ORDER BY `maglevel` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(query:getDataString("name")).." - [" .. query:getDataInt("maglevel") .. "]" k = k + 1 until not query:next() end elseif (choice == 9) then str = "--[ Level Rank ]--\n" query = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` < 3 ORDER BY `experience` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(query:getDataString("name")).." - [" .. query:getDataInt("level") .. "]" k = k + 1 until not query:next() end elseif (choice == 10) then str = "--[ Kills Rank ]--\n" query = db.getResult("SELECT `p`.`name` AS `name`, COUNT(`p`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` WHERE `k`.`unjustified` = 1 GROUP BY `name` ORDER BY `frags` DESC;") if query:getID() == -1 then str = str .. "\nNinguém matou ninguém." end if (query:getID() >= 0) then k = 1 repeat if k > 20 then break end name_now, l = query:getDataString("name"), string.len(query:getDataString("name")) str = str .. "\n " .. k ..". ".. name_now .." - [" .. query:getDataInt("frags") .. "]" k = k + 1 until not query:next() end end doShowTextDialog(cid, 2529, str) end end function onSay(cid, words, param) addDialog(modaldialog2, 1002, cid, callback2); return true end Como usar: No servidor digite /rank e selecione o tipo de rank ou skill que você deseja visualizar. Video: (Antigo mais explicativo) Creditos: Comedinha (Bruno Carvalho) Mock Tutoriais de query em vários fórums. Oneshot
  10. Fala ae falera do Tibia King, resolvi fazer uma Script para fazer o Pokemon Falar hehehe'.... Vamos lá: 1º -> Data/Talkaction/Script Faça um arquivo com o nome de pokemontalk.lua e Cola isso dentro: 2º Vá em Data/Talkaction E abra o Talkactions.xml e cole está tag dentro: Para fazer o pokemon falar o comando é: !x O QUE VOCÊ QUISER QUISE O POKEMON FALE !! Bom galera, é só isso msm !! Qualquer duvida comenta ae. Ajudei ? Rep + Não custa nada (:
  11. Nome: Tranformação Autor: SkyFail Versão Testada: Original Tibia 8.54 - Cliente 8.54 Informações Adicionais Transformações de Classes Obs:So Serve em Servers ATS pois não pode Trocar Outfuit Cada Classe Tem que ter a Propria. Vamos la, Va em: Código PHP: Data/Talkaction/Talkaction.xml Adicione esta Tag: Código PHP: <talkaction words="!transf" event="script" value="transf.lua"/> Entre em: Código PHP: Data/Talkaction/Script Copie um Arquivo Qualquer Renomeie para: transf e apague o que estiver dentro e adicione: Configurando: Código PHP:
  12. Sistema de Reset igual ao do Rozinx. Ao resetar voce é promovida para uma classe superior. Vá em talkactions e crie "reset.lua" e coloque isso dentro: function onSay(cid, words, param, channel) local tabble = { ["mixed"] = {reqVoc= nil, needLevel=10000}, ["spin"] = {reqVoc= 5, needLevel=30000}, ["sacred"] = {reqVoc= 6, needLevel=60000}, ["loney"] = {reqVoc= 7, needLevel=110000}, ["falling"] = {reqVoc= 8, needLevel=130000}, ["hellborn"] = {reqVoc= 9, needLevel=250000}, ["supreme"] = {reqVoc= 10, needLevel=310000}, ["forgotten"] = {reqVoc= 11, needLevel=550000}, ["nova"] = {reqVoc= 12, needLevel=715000}, ["zealot1"] = {reqVoc= 13, needLevel=715000}, ["zealot2"] = {reqVoc= 14, needLevel=715000} } local param,config = string.lower(param),{pid = getPlayerGUID(cid),newlv = 8,life = 185,mana = 35} if not tabble[param] then doPlayerSendCancel(cid, "digite o nome correto.") return true elseif getTilePzInfo(getCreaturePosition(cid)) == false then doPlayerSendCancel(cid, "precisa estar em pz.") return true elseif getPlayerLevel(cid) < tabble[param].needLevel then doPlayerSendCancel(cid, "You need be "..tabble[param].needLevel.." level or more.") return true elseif tabble[param].reqVoc == nil and getPlayerStorageValue(cid, 887978) >= 1 then doPlayerSendCancel(cid, "você já virou mixed.") return true elseif tabble[param].reqVoc ~= nil and getPlayerVocation(cid) ~= tabble[param].reqVoc then doPlayerSendCancel(cid, "You dont have the required vocation.") return true end if tabble[param].reqVoc == nil then setPlayerStorageValue(cid, 887978, 1) end local newvoc = tabble[param].reqVoc ~= nil and (tabble[param].reqVoc+1) or 5 setPlayerStorageValue(cid, 887979, newvoc) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.newlv..", `experience` = "..getExperienceForLevel(config.newlv)..",`manamax` = "..config.mana..",`health` = "..config.life..", `healthmax` = "..config.life..",`mana` = "..config.mana.." WHERE `id` = "..config.pid) return true end Após isso, adicione a linha no talkactions.xml: <talkaction words="!reset" event="script" value="reset.lua"/> Em creaturescripts/scripts/login.lua adicione isso antes do ultimo "return true": if getPlayerStorageValue(cid, 887979) ~= -1 then doPlayerSetVocation(cid, getPlayerStorageValue(cid, 887979)) end Como funciona? Bom, se voce for querer ser mixed voce vai dizer "!reset" e no caso, pode ser qualquer vocação e ter no mínimo level 10.000. Créditos: Vodkart e Gleison
  13. Eae galerinha do TK, como estão vocês ? Bom, como vocês devem ter percebidos, eu estou meio parado aqui no tibia king, mas é que to meio sem tempo msm, bom, mas como estou viajando, e eu to sem nada para fazer aqui em casa, resolvi criar um script, para 'parecer' com a famosa quest SOI do global war, vocês conhecem ? Aquela que voce tem que passar em um monte de tronos para adquirir storage e poder continuar (no script vai ser por action). Bem, o script é bem simples, grande, mas simples, então vamos lá ? 1º: Vá em action/scripts e crie uma pasta com o nome SOI. 2º: Vá em action/script/SOI , pegue um arquivo de outra pasta, copie e cole na pasta SOI, agora renomei-o para Spirit_One, abra-o, apague o que estiver dentro e ponha isto: --[[ By Slaake: Spirit Quest ]]-- function onUse(cid, item, frompos, item2, topos) if (getPlayerLevel >= 1) then setPlayerStorageValue(cid, 35001) else doPlayerSendTextMessage(cid, 20, 'Voce nao tem level para completar esta parte da SOI.') return true end end --[[ By Slaake: Spirit Quest ]]-- function onUse(cid, item, frompos, item2, topos) if (getPlayerLevel >= 1) then setPlayerStorageValue(cid, 35002) else doPlayerSendTextMessage(cid, 20, 'Voce nao tem level para completar esta parte da SOI.') return true end end --[[ By Slaake: Spirit Quest ]]-- function onUse(cid, item, frompos, item2, topos) if (getPlayerLevel >= 1) then setPlayerStorageValue(cid, 35003) else doPlayerSendTextMessage(cid, 20, 'Voce nao tem level para completar esta parte da SOI.') return true end end --[[ By Slaake: Spirit Quest ]]-- function onUse(cid, item, frompos, item2, topos) if (getPlayerLevel >= 1) then setPlayerStorageValue(cid, 35004) else doPlayerSendTextMessage(cid, 20, 'Voce nao tem level para completar esta parte da SOI.') return true end end function onUse(cid, item, frompos, item2, topos) if (getPlayerLevel >= 1) then setPlayerStorageValue(cid, 35005) else doPlayerSendTextMessage(cid, 20, 'Voce nao tem level para completar esta parte da SOI Quest.') return true end end function onUse(cid, item, frompos, item2, topos) one = getPlayerStorageValue(cid, 35001) two = getPlayerStorageValue(cid, 35002) three = getPlayerStorageValue(cid, 35003) four = getPlayerStorageValue(cid, 35004) five = getPlayerStorageValue(cid, 35005) newPos = {x=160, y=54, z=7} if (one == 1 and two == 1 and three == 1 and four == 1 and five == 1) then doTeleportThing(cid, newPos) doPlayerSendTextMessage(cid, 20, 'Cuidado, voce esta continuando a SOI, o boss pode aparecer a quaquer hora, entao preste bastante atencao!') doSendMagicEffect(cid, math.random(28,30)) else doPlayerSendTextMessage(cid, 20, 'Voce nao completou todos elementos para poder continuar esta quest, faca os que faltam e depois volte aqui.') return true end end <action actionid="35001" script="SOI/Spirit_One.lua"> <action actionid="35002" script="SOI/Spirit_Two.lua"> <action actionid="35003" script="SOI/Spirit_Three.lua"> <action actionid="35004" script="SOI/Spirit_Four.lua"> <action actionid="35005" script="SOI/Spirit_Five.lua"> <action actionid="35006" script="SOI/Spirit_End.lua"> pROnto, agr basta voce colocar esses IDS em cada parte do seu MAP, o action ID 35006 é o utimo, se o player tiver todas ele podera usar ela, arrume essa parte newPos = {x=160, y=54, z=7} pois será para onde o player ira. Bom, é isso, espero ter ajudado vocês. Créditos: Slaake Gostou ??? Da um rep ae : D 3º Copie outro arquivo .lua abra-o e apague o que estiver dentro, depois, renomeie para Spirit_Two, agora, abra-o e coloque isto: 4º Copie outro arquivo .lua, renomeio para Spirit_Three, abra-o, apague o que estiver dentro, e ponha isto: 5º Copie outro arquivo ;x renomeio para, Spirit_Four, abra-o, apague o que estiver dentro, e ponha isto: 6º Copie otro arquivo (relax que ta acabano ;X) , renomeio para Spirit_Five, abra-o, apague o que estiver dentro, e ponha isto: 7º: Copie outro arquivo que seja .lua, renomeio para Spirit_End, abra-o, apague o que estiver dentro, e ponha isto: Bom, agora vá em data/action/action.xml e adicione todas estas tag's:
  14. Versão: 1.1 Versão testada: 9.4+ (acho que funciona em anteriores). Descrição: O script foi criado para caso os membros da staff (CM+) do servidor quiser dar um bônus a todos os players online ele pode digitar o comando e dar o premio a todos. Tag: <talkaction words="!ta;/ta" access="4" event="script" value="createitemall.lua"/> [/code] [b]Code:[/b] data/talkactions/createitemall.lua [code]function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end for _, pid in ipairs(getPlayersOnline()) do local t = string.explode(param, ",") local ret = RETURNVALUE_NOERROR local pos = getCreaturePosition(cid) local id = tonumber(t[1]) if(not id) then errors(false) id = getItemIdByName(t[1]) errors(true) if(not id) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end end amount = t[2] if(not t[2]) then amount = 1 end local item = doCreateItemEx(id, amount) if(t[3] and getBooleanFromString(t[3])) then if(t[4] and getBooleanFromString(t[4])) then pos = getCreatureLookPosition(cid) end ret = doTileAddItemEx(pos, item) else doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "O "..getCreatureName(cid).." deu ("..amount.."x) "..getItemNameById(id).." para todos os players online.") ret = doPlayerAddItemEx(pid, item, true) end if(ret ~= RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Couldn't add item: " .. t[1]) return true end doDecayItem(item) if(not isPlayerGhost(cid)) then doSendMagicEffect(pos, CONST_ME_MAGIC_RED) end end return true end Creditos: TFS Team Comedinha (Bruno Carvalho)
  15. Ae galera, ta ai pra vocês um produto que ja EXISTIA NA INTERNET. Em talkactions.xml Em talkactions/scripts crie bomb.lua Em talkactions/scripts crie lever.lua Em items.xml modifique os items listados abaixo do jeito que estão: Em movements/scripts crie powerups.lua: Crie outro arquivo bombtiles.lua Em movements.xml coloque: Download do Mapa
  16. Versão: 1.0 Versão suportada: 9.7+ Descrição: O script consiste em um teleport para as áreas de fácil acesso do servidor, como numa ilha de gms, no templo ou até numa ilha de eventos para prepará-lo. Comentário: Eu tive a idéia pois uma vez foi lançada o manual do GM do tibia (em versão antiga) e lá tinha comandos onde o GM podia ir a pontos de referencia, então me perguntei. Por que não tentar? E por que não simplificar em um unico comando? TAG: <talkaction words="!tp;/tp" access="3" event="script" value="tp.lua"/> [/code] [i][b]Script:[/b][/i] data/talkactions/scripts/tp.lua [code] modaldialog3 = { title = "Acesso Rapido", message = "Para onde você quer ir?", buttons = { { id = 1, value = "Ir" }, { id = 2, value = "Cancelar" }, }, buttonEnter = 1, buttonEscape = 2, choices = { { id = 1, value = "Templo" }, { id = 2, value = "Gm Island" }, { id = 3, value = "XedeguX Island" }, { id = 4, value = "Sala de eventos" } }, popup = false } function callback3(cid, button, choice) if (button == 1) then local pos = 0 if (choice == 1) then pos = {x=100, y=40, z=6} elseif (choice == 2) then pos = {x=95, y=28, z=7} elseif (choice == 3) then pos = {x=318, y=330, z=7} elseif (choice == 4) then pos = {x=393, y=667, z=6} end doTeleportThing(cid, pos) end end function onSay(cid, words, param) addDialog(modaldialog3, 1003, cid, callback3); return true end Configuração: 1- Janelas: Explicação: As janelas são aquelas janelas do novo tibia onde aparece o que você pode selecionar. Configurando: O script tem uma facil configuração onde você precisa mudar nas janelas só: choices = { { id = 1, value = "Templo" }, { id = 2, value = "Gm Island" }, { id = 3, value = "XedeguX Island" }, { id = 4, value = "Sala de eventos" } }, [/code] [i]Adicionando uma nova linha com um novo id. Ex:[/i] [i]Não se esqueça de adicionar uma , no final de cada config.[/i] [code] choices = { { id = 1, value = "Templo" }, { id = 2, value = "Gm Island" }, { id = 3, value = "XedeguX Island" }, { id = 4, value = "Sala de eventos" }, { id = 5, value = "Exemplo" } }, 2- Configuração do script: Explicação: A configuração do script é simplismente definir o que cada seleção irá fazer. Configurando: É de simples configuração, já existem alguns pré programados e vocês podem usa-los como modelo. elseif (choice == 4) then pos = {x=393, y=667, z=6} [/code] [i]É só adicionar mais umas linha embaixo e modificar o numero do choice (para 5 no caso) e o numero da pos que o player vai.[/i] [i][EX]:[/i] [code] elseif (choice == 4) then pos = {x=393, y=667, z=6} elseif (choice == 5) then pos = {x=100, y=40, z=6} Aviso: Você pode modificar as outras posições como quiser, problemas é só dizer aqui =D Créditos: Comedinha
  17. Eae Gente... Esse é meu primeiro topico! N sei se esta na seçao certa. mas vamos lá Changer Outfit!!! É um script simples. Eu peguei de um outro sistema de mount system e editei. -Oq ele faz? -Quando o player um determinado item. ele troka seu outfit para um looktype de monstro. SAKO? Vamos lá. Primeiro duplique um arquivo em data/actions/scripts e renomei-e para ---> outfit's.lua <--- e dentro cole isso... ----------------------------------------------------------------------------------------------------------------------------- -------------------- ---- CONDITION ----- -------------------- local wolfCondition = createConditionObject(CONDITION_OUTFIT) setConditionParam(wolfCondition, CONDITION_PARAM_TICKS, 1000000) addOutfitCondition(wolfCondition, {lookType = 4, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 7, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 6, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 16, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 23, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 17, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 22, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 27, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 12, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 44, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 48, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 51, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 47, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 73, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 75, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 123, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 125, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 159, lookHead = 79, lookBody = 65, lookLegs = 114, lookFeet = 94}) addOutfitCondition(wolfCondition, {lookType = 194, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 198, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 203, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 206, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 209, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 210, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 217, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 228, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 229, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 234, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 231, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 243, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 253, lookHead = 79, lookBody = 65, lookLegs = 114, lookFeet = 94}) addOutfitCondition(wolfCondition, {lookType = 266, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 275, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 290, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 292, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 302, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 317, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 320, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 342, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 344, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) addOutfitCondition(wolfCondition, {lookType = 351, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0}) -------------------- ----- config ------- -------------------- local t = { [6579] = {article='a' ,name='wolf', text='changer outfit!', dtext='changer outfit!', s=100, condition=wolfCondition}, } ------------------------------------ --- don't change if you are noob --- ------------------------------------ function onUse(cid, item, fromPosition, itemEx, toPosition) local v, r = getCreaturePosition(cid), t[item.itemid] local s = r.s local pos = {x = v.x, y = v.y, z = v.z} if r then if getPlayerStorageValue(cid, s) <= 0 then doSendMagicEffect(pos, 13) doCreatureSay(cid, r.text, 19) setPlayerStorageValue(cid, s, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'You have new looktype ' .. r.article .. ' '.. r.name .. '.') return doAddCondition(cid, r.condition) elseif getPlayerStorageValue(cid, s) == 1 then doSendMagicEffect(pos, 13) doCreatureSay(cid, r.dtext, 19) setPlayerStorageValue(cid, s, 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'You have new looktype ' .. r.article .. ' '.. r.name .. '.') return doRemoveCondition(cid, CONDITION_OUTFIT) else return doPlayerSendCancel(cid, 'You can\'t do this.') end else return doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, 'There has been some error, try contacting a staff member.') end end ----------------------------------------------------------------------------------------------------------------------------- e agora em data/actions/actions.xml e adicione essa tag : <action itemid="6579" event="script" value="outfit's.lua"/> ali em 6579 é o item q o player vai uzar... q é o tibia doll. End
  18. Versão: 1.0 By Comedinha Versão suportada: 9.4+ (funciona em anteriores) Descrição: O script é o mesmo /online da tfs, porém com uma modificação em GM+, assim ajudando a identificar os membros da staff. Features: - Ao dizer /online os membros (GM+) irão ficar ao invés do level aparecendo Staff Member. TAG: <talkaction words="!online;/online" event="script" value="online.lua"/> [/code] [i][b]Script:[/b][/i] [i]data/talkactions/scripts/online.lua[/i] [code] function onSay(cid, words, param, channel) local strings, i, position, added, showGamemasters = {""}, 1, 1, false, getBooleanFromString(getConfigValue('displayGamemastersWithOnlineCommand')) for _, pid in ipairs(getPlayersOnline()) do if(added) then if(i > (position * 7)) then strings[position] = strings[position] .. "," position = position + 1 strings[position] = "" else strings[position] = i == 1 and "" or strings[position] .. ", " end end added = false if((not getPlayerCustomFlagValue(pid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES))) then strings[position] = strings[position] .. getCreatureName(pid) .. " [" .. getPlayerLevel(pid) .. "]" i = i + 1 added = true else if((showGamemasters or getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES) and (not isPlayerGhost(pid) or getPlayerGhostAccess(cid) >= getPlayerGhostAccess(pid)))) then strings[position] = strings[position] .. getCreatureName(pid) .. " [Staff Member]" i = i + 1 added = true end end end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, (i - 1) .. " player" .. (i > 1 and "s" or "") .. " online:") for i, str in ipairs(strings) do if(str:sub(str:len()) ~= ",") then str = str .. "." end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) end return true end Aviso: É só substituir o script original por este, ele não causará bugs. Créditos: Comedinha TFS
  19. Versão: 1.0 Versão do tibia: 9.4+ (funciona em anteriores) Descrição: O script tem a mesma função do !buypremium, mas utiliza premium scroll. TAG: <action itemid="16101" event="script" value="other/premium.lua"/> [/code] [b][i]Script:[/i][/b] [i]data\actions\scripts\other[/i] [code] config = { days = 30, maxDays = 360 } function onUse(cid, item, fromPosition, itemEx, toPosition) if(getPlayerPremiumDays(cid) > config.maxDays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You can not buy more than " .. config.maxDays .. " days of Premium Account.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return end doRemoveItem(item.uid, 1) doPlayerAddPremiumDays(cid, config.days) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have bought " .. config.days .. " days of premium account.") return true end Creditos: Comedinha TFS
  20. Olá galera , como eu estava sem nada pra fazer , estou postando aqui um script que eu fiz , para tirar o tédio Então vamos lá , em Data/Movements/Scripts . crie um arquivo com o nome de (amuletelemental.lua) , e dentro adicione Em Movements.xml , adicone : Em XXXX , voce coloca o ID do item que irá ser ultilizado como amulet of elemental Agora em Data/Actions/Scripts . crie um arquivo chamado (amuletelemental.lua) e dentro adicione Agora em Actions.xml , adicione : Em XXXX , o mesmo ID que voce pos em Movements. Agora para finalizar o SCRIPT , vá em Data/CreatureScript/Scripts , crie um arquivo chamado (amuletelemental.lua) , e dentro adicione Continuando dentro da pasta CreatureScripts/Scripts . Vá em login.lua , e adicione E para dar akela finalizada , vá em CreatureScripts.xml , e adicione Como Usar : Para se usar é muito facil , basta equipar-se com o ITEM , e para mudar de efeito é so ir clicando no item Como Configurar Para configurar é simples também , basta ir em creaturescript/scripts/amuletelemental.lua , e ir editando os efeitos OBS : façam isso , porque eu nao tenho o DAT EDITOR , e eu nao arrumei os efeitos direitin , apenas do AR , pq eu tinha de cabeça , Sorry Crédits ; Eu \o/
  21. Olá galera , um amigo me pediu um script aqui que quando o player clicasse numa statua , ele fosse teleportado para uma sala , por alguns minutos , porém só podia um player , e depois de algumas horas , outro carinha poderia entrar na sala. Então vamos makear o script né? Em : Data/Actions/Scripts . Crie um arquivo chamado (magicroom.lua) e dentro adicione : Em Actions.xml adicione : Agora , para evitar bugs , ao player deslogar dentro da sala , vá em Data/CreatureScript/Scripts . e crie um arquivo chamado (roomlogout.lua) e dentro adicione : Ainda em creaturescripts/scripts , vá em (login.lua) e lá dentro adicione: Agora em creaturescripts.xml adicone Então galera , é isso ai , faça bom proveito do Script. Crrédits : Tony.PlySon // OrochiElf @Fixed : Tirado o bug de teleportar todos
  22. Versão do Script: V0.1 By Comedinha Versão testada: 9.4+ (pode funcionar em versões anteriores). Descrição: Quem não se lembra do velho Notice System feito pelo esk? Aquele que toda a noticia nova você tinha que abrir o txt e escrever nele as novidades? Agora não precisa mais disso. Nota: O script no momento está mais parecido com um ticker system do que um notice system. Novas Funções: - Adicionar noticias em tempo real para todo o servidor com a data. - Limpar a janela de noticias em tempo real para todo o servidor. TAG: <talkaction words="!notice;!news;/notice;/news" event="script" value="notice.lua"/> [/code] [i][b]Script:[/b][/i] [code] local config = { add = {"add", "adicionar", "new"}, clean = {"clean", "limpar"} } function onSay(cid, words, param, channel) local t = string.explode(param, ",") if(table.isStrIn(param, config.add)) then if getPlayerGroupId (cid) >= 5 then file = io.open('data/txt/notice.txt','a+') if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end notice = file:write("\n"..getPlayerName(cid).." at " .. os.date("%d %B %Y - %X ", os.time()) .."\n"..t[2].."\n") file:close() return true end elseif(table.isStrIn(param, config.clean)) then if getPlayerGroupId (cid) >= 5 then file = io.open('data/txt/notice.txt','w') if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end notice = file:write("Server News\n") file:close() return true end return false end file = io.open('data/txt/notice.txt','r') notice = file:read(-1) doShowTextDialog(cid, 7528, notice) file:close() return true end Aviso: Na pasta data crie uma pasta chamada txt e dentro dela um arquivo chamado notice.txt. Após a instalação do script dentro do servidor digite /notice clean para não ter problemas futuros. Como usar: Para ver as noticias digite /notice Para adiconar noticias digite /notice add, (texto) Para limpar a janela de noticias digite /notice clean Créditos: Esk Comedinha (Bruno Carvalho)
  23. Evil Spirit Olá, venho trazer esta spell Evil Spirit, que fiz baseada na magia do MuOnline. -- SPELL EVIL SPIRIT BY: XOTSERVX -- local min, max = 100, 200 -- dano function isWalkable(pos, creature, proj, pz)-- by 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 pz then return false, true 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) 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 posIgual(pos1, pos2) return pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z and true or false end effect = 62 distance = 31 damage = COMBAT_DEATHDAMAGE evilspirit = { walk = function (cid, min, max, pos, rounds, ultimapos) if rounds == 0 then return true end if not isCreature(cid) then return true end posdisp = {} for _, dir in pairs({1, 5, 7, 3}) do if isWalkable(getPosDirs(pos, dir)) and not posIgual(getPosDirs(pos, dir), getThingPos(cid)) and not posIgual(getPosDirs(pos, dir), ultimapos) then table.insert(posdisp, getPosDirs(pos, dir)) end end if #posdisp < 1 then return true end posesc = posdisp[math.random(1, #posdisp)] ultimapos = pos doSendDistanceShoot(pos, posesc, distance) doAreaCombatHealth(cid, damage, posesc, 0, -min, -max, effect) addEvent(evilspirit.walk, 140, cid, -min, -max, posesc, rounds - 1, ultimapos) end } function onUse(cid,item,item2,frompos,pos,topos) evilspirit.walk(cid, 10, 20, getThingPos(cid), 40, {x=1, y=1, z=1}) for i = 1, 13 do addEvent(evilspirit.walk, i * math.random(300, 500), cid, min, max, getThingPos(cid), 40, {x=1, y=1, z=1}) end return true end créditos Xotserv As configurações está no script, vcs montam a tag agora. Ai vai um video paraver como tá:
  24. Olá pessoal, venho lhes trazer um sistema, que por minha parte achei legal, feito por mim ele se chama Advertence System. Funciona basicamente em cima de advertências; que o player poderá receber caso uma ocasião aconteça. Só existem duas ocasiões até o momento, porque fiquei sem ideias de mais. Vamos ver(ler) um exemplo: Quote Um player coloca PremiumAccount em um ot(o seu ot), após o login dele ele recebera um item que terá uma imagem de uma Exclamação. Quando ele clicar nesse item(com o botão direito) será enviada uma mensagem para ele com a Advertência "Parabéns, você agora é premium account.". Há mais um ocasião em que o player pode e recebera uma advertência; quando ele for FreeAccount. Chega de Delongas e vamos ao que interessa. Crie um arquivo no diretório data/actions/scripts chamado(nomeado) advertenciaSystemAction.lua abra-o e cole o seguinte código dentro: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, advertenceStorage) == 1 then doPlayerPopupFYI(cid, advertencia_Premium) doRemoveItem(item.uid, 1) elseif getPlayerStorageValue(cid, advertenceStorage) == 2 then doPlayerPopupFYI(cid, msgNotIsPremium) doRemoveItem(item.uid, 1) end end Agora abra o arquivo actions.XML encontrado no diretório data/actions e cole a tag a seguir: <action itemid="" script="advertenciaSystemAction.lua"/> Agora vamos em data/creaturescript/script e em seguida crie um arquivo chamado(nomeado) advertenciaSystemCreatureScript.lua e cole o seguinte código dentro: function onLogin(cid) doPlayerSendIconAdvertencia(cid, premium) doPlayerSendIconAdvertencia(cid, notpremium) return true end Agora vamos abrir o arquivo creaturescript.XML e colaremos a tag abaixo: <event type="login" name="advertenciaSystem" event="script" value="advertenciaSystemCreatureScript.lua"/> Agora vamos a parte final dos scripts, vá até a pasta data/lib e crie um arquivo chamado(nomeado) advertenciaSystemLib.lua e cole o seguinte código dentro: ----------- Mensagens de Advertencias ----------- advertencia_Premium = "Congrulations, you now is a player Premium." msgNotIsPremium = ""..getCreatureName(cid)..", you dont have a premium. You need buy! /n Go to WebSite this ot for more informations." ----------- Mensagens de Advertencias ----------- ----------- Configuração Gerais ----------- iconAdvertence = advertenceStorage = 8274 ----------- Configuração Gerais ----------- --[[ Tabela dos Tipos de Advertencias contidos nesta Versão 1.0 types = { ["premium"] ["notpremium"] } ]]-- function doPlayerSendIconAdvertencia(cid, type) if type == "premium" and getPlayerPremiumDays(cid) > 0 then doPlayerAddItem(cid, iconAdvertence, 1) setPlayerStorageValue(cid, advertenceStorage, 1) elseif type == "notpremium" and getPlayerPremiumDays(cid) < 1 then doPlayerAddItem(cid, iconAdvertence, 1) setPlayerStorageValue(cid, advertenceStorage, 2) end end end Agora vamos colocar a imagem do Ícone de Advertência em seu cliente. Programas necessários: Quote DatEditor 8.54-8.60 ItemOtEditor 8.54-8.60 Imagem do Icone.png Siga o tutorial abaixo a risca caso contrário será inútil sua tentativa. Abra o DatEditor com o seu cliente como na imagem abaixo: Depois de feito vá ate o botão no “FILE->New->Item” como na imagem abaixo: Anote o itemtype do novo item: Agora vá ao botão “Import->Sprites” e procure a imagem do Ícone que você salvou. Agora aperte a tecla “INSERT” do seu teclado e a sua imagem irá aparecer deste lado <<: Agora aperte “CTRL+S” para salvar e pronto a 1ª parte de adicionar o item ao seu ot esta completa. Vamos agora introduzir o item no item.XML, abra o ItemOtEditor com o item.OTB do seu ot. Após feito isso vá a “Other” e procure qualquer um dos últimos itens da mesma lista e selecione-o. Em “sid” você colocara o “itemtype” do DatEditor que lhe mandei gravar. Agora marque a opção “Pickupable” agora salve e pronto. Abra seu item.XML e cole a seguinte linha: <item id="idDoItemDaListaOther" article="a" name="Advertence Icon"></item> idDoItemDaListaOther = Nesta parte você coloca o id do item da lista other que você selecionou. Pegue este mesmo id e vá na lib colocalo lá. Uffffa Terminou... Espero que gostem, façam criticas e reportem bugs. Mais por favor reportem bugs e não erro de instalação. Quem quiser postar mais advertências podem me dizer que eu faço... Créditos: Formatação: SmiX Scripts: SmiX Tutorial: SmiX
  25. Galera, nos ultimos dias percebi que os scripts de Ban está bugado na versão 9.60 e 9.70, então achei esse script na internet e trouxe pra voces. Exemplo de Uso: /ban player, 3, using bug abuse Em talkactions.xml coloque: <talkaction log="yes" words="/ban" access="3" event="script" value="ban.lua"/> e em /talkactions/scripts crie ban.lua: function onSay(cid, words, param) local parametres = string.explode(param, ",") if(parametres[1] ~= nil) then local accId = getAccountIdByName(parametres[1]) if(accId > 0) then local comment = "" if(parametres[2] == nil) then doPlayerSendCancel(cid, "You must enter ban days.") return true elseif(isNumber(parametres[2]) == false) then doPlayerSendCancel(cid, "Ban days use only numbers.") return true end if(parametres[3] ~= nil) then comment = parametres[3] end doAddAccountBanishment(accId, getPlayerGUIDByName(parametres[1]), os.time() + (86400 * parametres[2]), 4, 2, comment, getPlayerGUID(cid), '') local player = getPlayerByNameWildcard(parametres[1]) if(isPlayer(player) == TRUE) then doRemoveCreature(player) end else doPlayerSendCancel(cid, "Player with name " .. parametres[1] .. " doesn't exist.") end else doPlayerSendCancel(cid, "You must enter name.") end return true end Crédito: LukeSkywalker

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 começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário 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!

×
×
  • Create New...