Ir para conteúdo

Pesquisar na Comunidade

Showing results for tags 'action'.



More search options

  • Search By Tags

    Digite tags separadas por vírgulas
  • Search By Author

Tipo de Conteúdo


Fóruns

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Recursos
    • Suporte
    • Pedidos
    • Downloads
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Categorias

Não há resultados

Categorias

  • OTAAC
  • Apresente Seu Projeto!

Encontrado 1.440 registros

  1. Quando acaba a potion de double xp da esse erro: [Error - Action Interface] In a timer event called from: data/actions/scripts/donator/exp.lua:onUse Vou postar o meu exp. lua function onUse(cid, item, frompos, item2, topos) local pausa = 120*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "You have 3 times more experience for 60 minutes, do not logout or else you will loose the bonus." textofinal = "Your bonus time is gone." -- Texto que irá receber quando o efeito da potion acabar. local exp = 2.0 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server. expfinal = 1 --Não mude, isso é para a experiencia voltar ao normal. if item.itemid == 7443 then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,13) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) end end function potion(pos, cid) doPlayerSetExperienceRate(pos,expfinal) doPlayerSendTextMessage(pos,22,textofinal) end
  2. PORTA OU PISO POR RESET - [URGENTE] 8.60

    FALA FAMILIA XTIBIA, QUERIA MUITO ESSE SCRIPT.. EX:. AO CLICAR NA PORTA OU PASSAR NO PISO, APARECESSE " VOCÊ SÓ PODE PASSAR COM X RESETS". E QUERIA CRIAR VÁRIOS LOCAIS COM ESSE TIPO DE SCRIPT MUDANDO SÓ OS RESETS! MEU SISTEMA DE RESET.LUA QUEM PODER AJUDAR, AGRADEÇO. ABRAÇOS!
  3. Infos: Ao usar o comando !sellpoints quantidade , voce ira criar um item com a quantidade de pontos digitada assim voce podera vender pontos do site in game. Em data/libs Crie um Arquivo chamado PremiumPaper.lua function getPremiumPoints(cid) local query = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid)) return query:getDataInt("premium_points") <= 0 and 0 or query:getDataInt("premium_points")endfunction setPremiumPoints(cid, amount) return db.executeQuery("UPDATE `accounts` SET `premium_points` = "..amount.." WHERE `id` = "..getPlayerAccountId(cid))end Em data/talkactions/scripts Crie um arquivo chamado sell_points.lua function onSay(cid, words, param) local var,points = "[sell Point System] Este documento vale %s points para você usar no site.",getPremiumPoints(cid) local min,max = 5, 100 if param == "" or not tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, use somente numeros.") return true elseif tonumber(param) < min or tonumber(param) > max then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, Minimo "..min.." e Maximo "..max.." points.") return true elseif points < tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, mas você só possui "..points.." Premium Points.") return true end local item = doPlayerAddItem(cid, 7702,1) doItemSetAttribute(item, "description", var:format(tonumber(param))) setPremiumPoints(cid, points-tonumber(param)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[sell Point System] Você recebeu um paper com "..param.." Premium Points.") return trueend Em talkactions.xml <talkaction words="!sellpoints;/sellpoints" event="script" value="sell_points.lua"/> Em data/actions/scripts Crie um arquivo chamado paper_points.lua function onUse(cid, item, frompos, item2, topos) local var = getItemAttribute(item.uid, "description") if var == nil then return true end local x = var:match("%b[]") if x == "[sell Point System]" then local ret = var:match("%d+") doPlayerSendTextMessage(cid, 22,"você recebeu "..ret.." Premium Points.") setPremiumPoints(cid, getPremiumPoints(cid)+ret) doRemoveItem(item.uid) end return trueend Em Actions.xml adicione: ( Lembre-se de configurar o itemid para um que voce nao tenha usado ) <action itemid="7702" script="paper_points.lua"/> Imagem(1):
  4. Santa Claus

    Bom Dia, Boa Tarde, Boa Noite, e ae galera do Xtibia Tudo Bem Com Vocês? venho aqui trazendo uma script da santa claus, vejo muitas pessoas querendo essa script, então pensei em compartilhar com vocês, vamos lá então! vai na sua base, abre o Actions e cria um arquivo .lua ficando santaclaus.lua dentro dele add isso. vai no seu actions.XML e add essa tag! Te Ajudou? já deixa aquela REP pra ajudar, Tmj Galera <3
  5. Bom, creio que o titulo já diga por si só, porém venho a explicar melhor a situação. Preciso de uma alavanca a qual quando usada aparecem magic effects em determinados SQM's. Creio que seja um script simples, desde já agradeço
  6. Eae pessoal, Fiz esse script apenas para ajudar um membro, porém nunca vi nada parecido aqui, resolvi postar. É bem simples, mas da para fazer muita coisa legal. Quem quiser qualquer alteração como condição para usar, mudar para talkactions, etc... é só pedir no tópico. Basicamente é só dá use no item, que você fica invisível para players e monsters, por determinado tempo. Vamos usar CONDITION, porém só funciona se o player que usar o item, tiver group id maior que os outros, para que fique invisível. Mas nosso amigo @caotic vai nos ensinar a mudar isso: Faça isso e independente do seu grupo você vai fica invisível para todos. agora vá em data/actions/scripts e crie uma arquivo.lua, e cole isso dentro: local tempo = 1 -- tempo que o player vai ficar invisivel em segundos. local ghost = createConditionObject(CONDITION_GAMEMASTER, 1000*tempo, false, GAMEMASTER_INVISIBLE) local outfit = createConditionObject(CONDITION_INVISIBLE, 1000*tempo, false) function onUse(cid, item) if not isPlayerGhost(cid) then doRemoveItem(item.uid, 1) doSendMagicEffect(getCreaturePosition(cid), 12) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você está invisivel, agora ninguem pode te ver.") doAddCondition(cid, ghost) doAddCondition(cid, outfit) else doPlayerSendCancel(cid, "Você já está invisivel.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end depois vá em data/actions/actions.xml e adicione a tag: <action itemid="IDdoITEM" script="NomeDoArquivo.lua"/> pronto. Como falei é bem simples, qualquer coisa é só pedir...
  7. Olá, gostaria de pedir um script cuja o NPC de Torneio teleporte o player para uma determinada localização ao falar "Entrar". ^^ +REP
  8. Gostaria de um sistema nesse estilo: Ao upar para o level determinado abaixo, o player irá receber x itens, aparecerá uma mensagem em LARANJA no default e aqueles tipo de popup também. Upar level 20: Ganhar uma red backpack e dentro dela ter: 25 health potion, 25 mana potion, 30 fishs e Wand of Decay. Mensagem: Parabéns, você chegou ao nível 20! Você acaba de receber os itens que irão lhe ajudar à continuar em sua próxima jornada! *Pra druid, em vez de receber Wand of Decay, receberá Necrotic Rod. *Pra paladin, em vez de receber Wand of Decay, receberá 5 Hunting Spears Upar level 25: Ganhar uma green backpack e dentro dela ter: Wand of Cosmic Energy e 20 blank runes. Mensagem: Parabéns, você chegou ao nível 25! Você acaba de receber os itens que irão lhe ajudar à continuar em sua próxima jornada! *Pra druid, em vez de receber Wand of Cosmic Energy, receberá Terra Rod. *Pra paladin, em vez de receber Wand of Cosmic Energy e blank rune, receberá 5 Royal Spears e 20 bolts. Upar level 45: Ganhar uma yellow backpack e dentro dela ter: 10 sudden of death rune, 10 uh e 10k. Mensagem: Uau, chegou ao level 45, parabéns! Você acaba de receber os itens que irão lhe ajudar à continuar em sua próxima jornada! *Pra paladin, em vez de receber sudden of death rune, receberá 5 Enchanted Spears. Se o player NÃO tiver cap, seus itens recebidos irão diretamente ao depot da cidade de origem dele e aparecerá uma mensagem: Parabéns, você chegou ao nível x! Você não tem cap suficiente, então, seus itens foram enviados para o depot! Servidor: 8.60
  9. tfs 0.3 Sistema de Karma

    Opa galera, queria saber se tem como fazer um sistema de karma estou com uma ideia de um ot que teria o lado ruim e bom... Gostaria de saber se exemplo daria para criar algo tipo assim matei injustamente fico com ponto negativo e vá para o lado ruim com 3 pontos exemplo e bom se matar um Pk exemplo... Seria para versão 8.6 se alguém puder ajudar ou até falar comigo em pm...
  10. data/actions/double.lua function onUse(cid, item, fromPosition, itemEx, toPosition)local player = Player(cid)player:setStorageValue(80000, os.time() + 2 * 60 * 60)Item(item.uid):remove()player:say("You have just activated 2 hours of Double Experience!", TALKTYPE_MONSTER_SAY)return trueend data/actions.xml <action itemid="8981" script="double.lua"/> data/events/player.lua function Player:onGainExperience(source, exp, rawExp) local thing = self:getStorageValue(80000) if thing > os.time() then return exp * 2.0 end return expend data/events.xml Mude <event class="Player" method="onGainExperience" enabled="0" /> Para <event class="Player" method="onGainExperience" enabled="1" /> Créditos: imkingran
  11. Action abaixo, escolha o item que quiser para o script. Tempo (é em segundos): 7200 = 2 Horas Como converter: https://www.google.com.br/#q=2+horas+em+segundos function onUse(cid, item, fromPosition, itemEx, toPosition) local player = Player(cid) if player:getStorageValue(1234) >= os.time() then player:say('You already have double exp!', TALKTYPE_MONSTER_SAY) return true end player:setStorageValue(1234, os.time() + 7200) Item(item.uid):remove(1) player:say('Your 2 hours of double XP has started!', TALKTYPE_MONSTER_SAY) player:registerEvent("dblxp") return trueend Em creaturescripts.xml <event type="think" name="dblxp" script="dblxp.lua" /> Em creaturescripts/scripts crie dblxp.lua function onThink(creature, interval) local player = Player(creature) if not player then return true end if player:getStorageValue(1234) < os.time() then player:sendTextMessage(MESSAGE_STATUS_WARNING, "Your double XP has ended!") player:unregisterEvent("dblxp") end return trueend Créditos: RazorBlade
  12. antes de pedir tentei fazer ou apenas pegar de outros severs mais não consigo se alguem se quiser me ajudar ficarei grato .........sever base e poke flash e la o sistema de order e por icone e não da para dar mover no pokemon , obg.
  13. action Addon Box

    Olá Galera estava me arriscando em programar em lua e decidi criar algo bem simples mas útil ! vamos lá então ! Em Actions.xml Adiciona Isto: E Em Data/Actions/Scripts Cria um Arquivo Lua Chamado "addonbox" e Adiciona Isto Dentro Dele: REP +
  14. action Mining System

    Galera do XTibia, venho trazer um script bem simpleszinho mas que abre um leque de opções de RPG e diversão pro seu OT.. Trata-se do Mining System, um sistema que você pode utilizar a pick normal (ou uma outra pick especial) para minerar a terra e tentar conseguir items que você pode trocar por dinheiro ou items. São 70 leveis de Mining que vão upando conforme você minera. Enfim, vamos ao script: actions\scripts\mining.lua: Em terra, você coloca os ids dos chãos em que é possível minerar, levels é o level da skill e o ID do respectivo item que você fica capaz de conseguir após alcançar esse nível. Em outras palavras, no começo você só consegue minerar skull, no nv 70 você vai ter a chance de conseguir todos os items anteriores e não só life crystal. O restante das configurações está no meio do script: local config = { storage = 19333, chance = 40, --- chance de achar um item ou não k = 2, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante) experience = 19334 } o storage é onde vai salvar o seu nível chance é a chance de pegar um item cada vez que minera. k é a constante de level, o nivel 10 precisa de 10*10/k de experiencia para ser alcançado (com k sendo 2 dá 50 de experiencia), ou seja, com 50 picaretadas na terra vc pega nivel 10. experience é o storage que fica salvo sua experiencia. Bônus: Ao alcançar level 50 você ganha o Mining Helmet como prêmio, ele não faz nada de especial mas é como se fosse um troféu. No meu server tem uma série de troféus que voce pode colecionar e fica como sendo uma conquista épica para os players. e no actions.xml: <action itemid="2553" script="mining.lua"/> OBS: Sugiro que vcs utilizem uma outra pick pra não dar conflito mas você faz oque quiser. PS: Uma fotinha pra vcs verem Autor: WhiteWolf
  15. action [TFS 0.4] Dawnport Test Vocation System

    E aí galera do Xtibia, beleza? Hoje tô aqui trazendo um script que eu não encontrei aqui no Fórum, então resolvi fazer ele. "Ain, mas pra ki ki eli schervi?" Simples. Ele funciona de maneira muito semelhante ao "teste de vocations" de Dawnport. Vindo itens e pots ao passar pelo tile, e impedindo que tu passe pelo piso caso tenha ultrapassado o lvl máximo. Foi testado em TFS 0.4 rev 3777. Bom, sem mais enrolação: Crie um arquivo chamado knight.lua na pasta Movements e cole isso aqui: E adicione a tag no movements.xml: "Ain, mas esse aí só vai transformar em Knight" Simples, é só customizar a seu gosto, modificando no config{} o id da voc. Bem, foi isso aí. Caso alguém tenha erros, é só comentar aqui que tentarei ajudar. E caso alguém queira aprimorar e postar aqui, sinta-se livre, recomecei a scriptar há pouco tempo.
  16. Galera do Xtibia To com um bug na minha GOback alguem ai pode me ajuda pfv
  17. Vou usar esse script para que o player só passe pelo sqm se tiver todos storageid. Mas está montado da forma errada... function onStepIn(cid, item, pos)local position = {x = 830, y = 70, z = 7}local position2 = {x = 830, y = 69, z = 7}if (getPlayerStorageValue(cid, 10274, 10275, 10276, 10277, 10278, 10279, 10280) == 1 thendoTeleportThing(cid, position)doSendMagicEffect(position,10)elsedoTeleportThing(cid, position2)doSendMagicEffect(position2,10)endend
  18. Galera vou ser bem objetivo no problema. Consegui montar a Yalahar Quest no server. E está funcionando normal, as waves, o sqm no void, só poder clicar 1x no globo, os portais fechando... O que não funcionou é que em certo momento o Azerus da sala DEVERIA ser removido, para entrar o Azerus1. Mas isso não funciona e ficam dois Azerus na sala. Bem como o clear da room também não funciona e os próximos a fazer já começam com bixos que sobraram. movements/scripts function onStepIn(cid, item, position, fromPosition)--Config-->local queststatus = getPlayerStorageValue(cid, 50001)--EndConfig--> if item.actionid == 1974 and queststatus == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "It seems by defeating Azerus you have stoped this army from entering your world! Better leave this ghastly place forever.") setPlayerStorageValue(cid, 4765, 1) return TRUEendif item.actionid == 1973 and queststatus == -1 then-- Here is the code start:starting={x = 480, y = 178, z = 7, stackpos = 253}checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}ending={x = 500, y = 199, z = 7, stackpos = 253}players=0totalmonsters=0monster = {}repeatcreature= getThingfromPos(checking) if creature.itemid > 0 then if getPlayerAccess(creature.uid) == 0 then players=players+1 end if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then totalmonsters=totalmonsters+1 monster[totalmonsters]=creature.uid end endchecking.x=checking.x+1 if checking.x>ending.x then checking.x=starting.x checking.y=checking.y+1 enduntil checking.y>ending.yif players==0 thentrash= {x = 470, y = 188, z = 7}current=0repeatcurrent=current+1doTeleportThing(monster[current],trash)until current>=totalmonstersend-- Here is the end of itdoTeleportThing(cid, player_pos_entrada)doSendMagicEffect(player_pos_entrada, 10)elsedoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'You already done this quest!')endend action/scripts function onUse(cid, item, frompos, item2, topos) --Config-->local statue_pos = {x = 490, y = 188, z = 7}local new_portal_pos = {x = 490, y = 189, z = 7, stackpos = 1}local new_pos = {x = 542, y = 196, z = 5}local crystal_pos = {x = 490, y = 197, z = 7}--End Config--> function Potwoory1() doCreateMonster('Rift Brood', {x = statue_pos.x+1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x-1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster("Azerus", {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) addEvent(Potwoory2, 7 * 700)end function Potwoory2() doCreateMonster('Rift Brood', {x = statue_pos.x+1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x-1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster("Azerus", {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) addEvent(Potwory2, 30 * 1000)end function Potwoory3() removeFieldsTile() removeAzerusMonstersInArea() doCreateMonster('Rift Brood', {x = statue_pos.x-1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Brood', {x = statue_pos.x, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x-1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster('Rift Worm', {x = statue_pos.x+1, y = statue_pos.y, z = statue_pos.z, stackpos = 253}) doCreateMonster("Azerus1", {x = statue_pos.x-1, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) addEvent(Potwory3, 35 * 1000)end function Potwoory4()removeFieldsTile() removeAzerusMonstersInArea() doCreateMonster('Azerus', {x = statue_pos.x, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('War Golem', {x = statue_pos.x+1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('War Golem', {x = statue_pos.x-1, y = statue_pos.y+1, z = statue_pos.z, stackpos = 253}) doCreateMonster('War Golem', {x = statue_pos.x, y = statue_pos.y-1, z = statue_pos.z, stackpos = 253}) doCreateMonster('War Golem', {x = statue_pos.x-1, y = statue_pos.y, z = statue_pos.z, stackpos = 253})end function NewPortal()doCreateTeleport(1387, new_pos, new_portal_pos)addEvent(RemoveAll, 30 * 1000)end function RemoveAll()doRemoveItem(getThingfromPos(new_portal_pos).uid,1)doItemSetAttribute(getTileItemById(crystal_pos, 7493).uid, "aid", 57500)end if item.aid == 57500 and getThingfromPos(new_portal_pos).itemid ~= 17668 thendoCreateItem(17668,1,new_portal_pos)addEvent(Potwoory1, 0)doItemSetAttribute(getTileItemById(crystal_pos, 7493).uid, "aid", 57501)elsedoPlayerSendTextMessage(cid,18,"Sorry, not possible.")endreturn TRUEend Agradeço quem puder ajudar.
  19. Olá colegas, Estou fazendo o possível pra tirar apenas as dúvidas que eu não encontro forma de resolver e surgiu mais uma. Na Pits of Inferno tem uma parte que você precisa ter o The Holy Tible para passar pelo SQM X e ser transportado para SQM Y, caso não tenha o livro nada acontece. É esse script que desejo. 1. Para evitar spam, vou deixar outra dúvida aqui também. 2. Criei com ajuda do pessoal aqui do fórum um monstro que quando morre abre o portal para X local. Até ai tudo bem, mas o portal abre sempre onde o monstro morre, queria que ele abrisse em uma coordenada XYZ. local config = {message = "Take the Blue Tome, you have 60 seconds to leave! The room will collapse!",timeToRemove = 60, -- secondsteleportId = 1387,bosses = {["Raging Halcrof"] = {teleportPos = {x = 1071, y = 1124, z = 10, stackpos = 1}, toPos = {x = 1066, y = 1125, z = 6}}}}local function removal(position)doRemoveThing(getTileItemById(position, config.teleportId).uid, 1)return TRUEendfunction onDeath(cid, corpse, killer)registerCreatureEvent(cid, "halcrofteleport")local position = getCreaturePosition(cid)for name, pos in pairs(config.bosses) doif name == getCreatureName(cid) thenteleport = doCreateTeleport(config.teleportId, pos, position)doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1)addEvent(removal, config.timeToRemove * 1000, position)doSendMagicEffect(position,10)endendreturn TRUEend Esse é o script que estou usando mas não está funcionando. Ele abre o portal no corpo do monstro e não está enviando o player para posição desejada. 3. Esse é um NPC que o jogador vai desafiar se tiver lvl 100+ pode aceitar, então é movido para sala. Onde luta com o boss e se o player morrer pode tentar novamente, mas se conseguir eu queria criar um storageid onde o npc checasse se o player já derrotou o boss e se sim, não pode fazer de novo. local tab = { level = 100, pos = {x = 1071, y = 1135, z = 10}}local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction 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, 'challenge')) then talkState[talkUser] = 1 selfSay('You are sure you want to go? You can not return.', cid) elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if (getPlayerLevel(cid) <= tab.level) then talkState[talkUser] = 0 doTeleportThing(cid, tab.pos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) else talkState[talkUser] = 0 selfSay('I can only challenge players with level '..tab.level..' or less.', cid) end elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then talkState[talkUser] = 0 selfSay('Come back when you are ready learner.', cid) end return trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Agradeço desde já galera.
  20. action Pet System Simples

    Ha um tempo atrás eu procurei um Pet System bem simples pro meu servidor, e achei um muito bacana. TFS: 0.4 Tibia: 8.6 O script funciona corretamente, eu fiz apenas algumas alterações e queria compartilhar caso vocês tenham as mesmas exigências que eu; * Ao tentar usar o PET em PZ não da mais erro na distro, sobe um efeito FAILED! no player e manda uma mensagem. * Agora cada PET precisa de um storage para ser usado, no meu caso, cada PET tem sua quest individual. Indo para o assunto... Vá em "data/actions/scripts", copie algum arquivo da pasta e cole, renomeie para "simple_pet" e adicione isso dentro: function onUse(cid, item, frompos, item2, topos)local dolls = {[11256] = {pet = "Rat"},[11207] = {pet = "Demon"},[5791] = {pet = "Dragon"},}local go = dolls[item.itemid]local summon = getCreatureSummons(cid)---------------------------------------------------if not (getTilePzInfo(getCreaturePosition(cid))) thenif #summon >= 1 thenfor _, pid in ipairs(summon) dodoRemoveCreature(pid)doCreatureSay(cid, ""..go.pet..", Recuar!", TALKTYPE_ORANGE_1)endreturn trueendif item.itemid == 5791 thenif getPlayerStorageValue(cid, 6666) == 1 thendoConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid)))doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1)else doPlayerSendTextMessage(cid, 19, "Voce precisa da quest para usar esse PET!")doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180)endend if item.itemid == 11256 thenif getPlayerStorageValue(cid, 4444) == 1 thendoConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid)))doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1)else doPlayerSendTextMessage(cid, 19, "Voce precisa da quest para usar esse PET!")doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180)endendif item.itemid == 11207 thenif getPlayerStorageValue(cid, 4445) == 1 thendoConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid)))doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1)else doPlayerSendTextMessage(cid, 19, "Voce precisa fazer a quest para usar esse PET!")doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180)endendelsedoPlayerSendTextMessage(cid, 19, "Voce nao pode sumonar seu PET em Protect Zone!")doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180)return trueendend Muito bem, agora sigamos para "actions.xml" e adicione essa tag: <action itemid="11256;11207;11144;9019" event="script" value="simple_pet.lua"/> Agora para você configurar: Nesta parte do código: local dolls = {[11256] = {pet = "Crystal Spider"},[11207] = {pet = "Ashmunrah"},[11144] = {pet = "Demon"},[9019] = {pet = "Vampire"},} Oque está entre [ e ] nós colocamos os Item ID dos items que vão chamar o PET. Já entre { e } aonde está entre aspas, colocamos o nome do PET.E na tag do "actions.xml" adicionamos estes MESMOS Item Ids, separando-os por ; ficando: <action itemid="ID;ID;ID;ID" event="script" value="simple_pet.lua"/> Para o PET teleportar para você quando subir escadas, ou ficar muito longe, vá em "config.lua" e procure por: teleportPlayerSummons Se estiver false coloque true, se estiver "no", coloque "yes" Demonstração: http://imgur.com/a/emO4I Obrigado pela atenção galera, espero que tenham gostado, e qualquer dúvida tentarei ajudar vocês. Não tenho certeza se esse sistema não tem aqui, mas não estava achando então decidi postar :3 Se Ajudei Rep + CRÈDITOS: LUQUINHA "Um Sitezinho Qualquer"
  21. Fala dos pokemons em Laranja

    Eae Galerinha do Xtibia, estou aqui para trazer um "Sistema" que não achei no fórum e fuçando aqui acabei encontrando, O sistema serve para deixar as skills e o Goback "Vá Charmander", em laranja seguindo a imagem: http://imgur.com/a/MoN1I http://imgur.com/a/KCN7j Então vamos ao assunto... Primeiramente vá em "Data/lib", abra o arquivo some functions.lua e procure por: doCreatureSay(cid, mbk, TALKTYPE_SAY) e mude para: doCreatureSay(cid, mbk, TALKTYPE_ORANGE_1) Até aqui editamos só para ficar em laranja o Soltar e Voltar o Pokemon... Para mudar as skills vá em "Data/Talkactions" abra o arquivo move1.lua e procure por: doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) e mude para para: doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_ORANGE_1) e para mudar o soltar o pokemon para ficar em laranja vá em "Actions" abra o arquivo Goback.lua e procure por "doCreatureSay(cid, mgo, TALKTYPE_SAY)",e troque por "doCreatureSay(cid, mgo, TALKTYPE_ORANGE_1) é isso então qualquer erro deixe ai que eu tento ajudar :3, lembrando que não sou "Scripter", eu só entendo um pouco. OBS: Testado apenas em PDA, e desculpe pela mal organização não sei colocar Spoiler, deixa ai nos comentários como faz que eu edito o tópico. OBS: Meu servidor https://www.facebook.com/pokemonlegendaryy/ /\/\/\/\/\//\/\/\/\//\/\/\/\/\/\ O server está em manutenção mais fique ligado para quando voltar. Se Ajudei REP+.
  22. outfits e spells por storage

    Iae galera ... Queria saber se existiria a possibilidade de vcs disponibilizarem um script que funcionasse com storage. No caso seria um outfits e uma spells por storage. Se tiver como, agradeço desde de ja ! =D
  23. Visto que agora e aonda do tfs 1.2 vou trazer umas paradas do forum gringo. E como não vi no forum, acho que e bizu. Addon doll e Mount Doll por Modal Window... é fácil e simples. Primeiro vamos precisar instalar o modal window. va em data/lib/lib.lua e adiciona: dofile('data/lib/modalwindow.lua') Depois na pasta data/Lib crie um arquivo chamado modalwindow e adiciona esse code. Agora em data/creaturescripts/creaturescripts.xml Add a tag. <event type="modalwindow" name="ModalWindowHelper" script="modalwindowhelper.lua" /> Agora crie um arquivo chamado modalwindowhelper. e add o code nele. Pronto a parte da janela esta feita, agora vamos ao Addon em actions.xml add. <action itemid="ITEMID" script="addon_doll.lua"/> em item id coloque o id que desejar, depois disso crie um arquivo chamado de addon_doll.lua e add. em global.lua add dofile('data/lib/addon_doll.lua') para finalizar cria um arquivo em /data/lib/ com o nome de addon_doll.lua e add o code. Pronto Addon Doll Finalizado vamos ao Mount.... No arquivo /data/actions/actions.xml add. <action itemid="ITEMID" script="mount_doll.lua"/> Agora em /data/actions/scripts crie um arquivo com o nome mount_doll.lua e add. Agora no arquivo data/global.xml add. dofile('data/lib/mount_doll.lua') agora em /data/lib/ crie um arquivo com o nome "mount_doll.lua" e add. Pronto codigo finalizado. Espero que seja útil, lembrando não foi eu quem fiz, mais qualquer duvida e so falar que tento ajudar. foi o membro Strutz de um fórum gringo. Créditos todo dele.
  24. action Slot System (tfs 1.1)

    Oi. Vim trazer esse sistema postado por nosso amigo zbizu da comunidade otland. Se não sabe como funciona, veja o exemplo abaixo. Espero que seja útil! 07:39 You see a mastermind shield (Def:37). It weighs 57.00 oz. [shield.+5%] [mp.+10%] [melee.+2%] 07:40 You see a crossbow (Range:5). It weighs 40.00 oz. [shield.+2%] [mp.+14%] [hp.+4%] SLOT SYSTEM global.lua function getItemAttack(uid) return ItemType(getThing(uid).itemid):getAttack() end function getItemDefense(uid) return ItemType(getThing(uid).itemid):getDefense() end function getItemArmor(uid) return ItemType(getThing(uid).itemid):getArmor() end function getItemWeaponType(uid) return ItemType(getThing(uid).itemid):getWeaponType() end function isArmor(uid) if (getItemArmor(uid) ~= 0 and getItemWeaponType(uid) == 0) then return true else return false end end function isWeapon(uid) return (getItemWeaponType(uid) > 0 and getItemWeaponType(uid) ~= 4) end function isShield(uid) return getItemWeaponType(uid) == 4 end function isBow(uid) return (getItemWeaponType(uid) == 5 and (not ItemType(getThing(uid).itemid):isStackable())) end actions.xml <action itemid="8300" script="slot.lua"/> slot.lua action local conf = {maxSlotCount=3,ignoredIds={}}function choose(...) local arg = {...} return arg[math.random(1,#arg)]endfunction onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if isInArray(conf.ignoredIds, itemEx.itemid) or isItemStackable(itemEx.uid) or itemEx.itemid == 0 or itemEx.type > 1 or not(isArmor(itemEx.uid) or isWeapon(itemEx.uid) or isShield(itemEx.uid)) then return false end if isCreature(itemEx.uid) then return false end local nam = Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) function getper() local n = 1 for i=1,10 do n = n+math.random(0,10) if n < 8*i then break end end return n end function getSlotCount(nam) local c = 0 for _ in nam:gmatch('%[(.-)%]') do c = c+1 end return c end if getSlotCount(nam) < conf.maxSlotCount then local l = choose('hp','mp','ml','melee','shield','dist') local p = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..l..'.+'..p..'%]' doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,l..'.+'..p..'%') doSetItemSpecialDescription(itemEx.uid, nam) doRemoveItem(item.uid,1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Slot limit reached.") end return trueend creaturescripts.xml <event type="login" name="SlotLogin" script="slot.lua"/> slot.lua creaturescripts local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}for i=1,300 do conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50) setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i) conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51) setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i) conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52) setConditionParam(conditionML[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 100+i) conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53) setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_MELEEPERCENT, 100+i) conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54) setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i) conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55) setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF_SPELL, 1) setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)endfunction getSlotType(n) if not n then return false end if n:match('%[(.+)%]') then n = n:match('%[(.+)%]') if n == '?' then return 0,n else return n:match('(.-)%.([+-])(%d+)%%') end else return false endendlocal function loadSet(cid)local player = Player(cid)if not player then return false end local t = {} for slot=1,9 do t[slot] = '' local s = getPlayerSlotItem(player,slot).uid if s ~= 0 then t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION) end end return tendfunction chk(cid,f) if not Player(cid) then return false end local t = loadSet(cid) if not t then return false end for i=1,#f do if f[i] ~= t[i] then equip(player,nil,slot) break end end addEvent(chk,2000,cid,t)endfunction check_slot(aab, i) if i == 5 or i == 6 then if isWeapon(aab) or isShield(aab) or isBow(aab) then return true end else return true endreturn falseendfunction equip(player,item,slot) local t = {} if item then local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)) t[mm] = tonumber(qto) end for i=1,9 do if i ~= slot then if getPlayerSlotItem(player,i).itemid ~= 0 then local aab = getPlayerSlotItem(player,i).uid if aab and check_slot(aab,i) then for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do local mm,sinal,qto2 = getSlotType(_) if mm then if not t[mm] then t[mm] = 0 end t[mm] = t[mm]+tonumber(qto2) t[mm] = t[mm] > 300 and 300 or t[mm] end end end end end end local fu = 0 local ca = {} local s = '' for sl,n in pairs(t) do fu = fu+1 s = s..''..n..'% more of '..sl..'\n' if sl == 'hp' then player:addCondition(conditionHP[tonumber(n)]) ca[50] = 1 doSendTutorial(player,19) elseif sl == 'mp' then player:addCondition(conditionMP[tonumber(n)]) ca[51] = 1 doSendTutorial(player,19) elseif sl == 'ml' then player:addCondition(conditionML[tonumber(n)]) ca[52] = 1 elseif sl == 'melee' then player:addCondition(conditionCLUB[tonumber(n)]) ca[53] = 1 elseif sl == 'shield' then player:addCondition(conditionSHI[tonumber(n)]) ca[54] = 1 elseif sl == 'dist' then player:addCondition(conditionDIST[tonumber(n)]) ca[55] = 1 end end if fu > 0 then for i=50,55 do if not ca[i] then doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i) end end else for i=50,55 do doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i) end end return trueendfunction onLogin(player) equip(player,nil,slot)local cid = player:getId() addEvent(chk,2000,cid,loadSet(cid)) return trueend SLOT REMOVER actions.xml <action itemid="8299" script="slotremove.lua"/> slotremove.lua function getSlotType_full(n) if not n then return false end if n:match('%[(.+)%]') then n = n:match('%[(.+)%]') if n == '?' then return 0,n else return n end else return false endendfunction onUse(cid, item, fromPosition, itemEx, toPosition)item_slots_a = 0item_slots_n = ""item_slots_t = {} for _ in Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do item_slots_a = item_slots_a + 1 item_slots_t[item_slots_a] = getSlotType_full(_) end if item_slots_t[1] == nil then return false end for i = 1, #item_slots_t - 1 do item_slots_n = item_slots_n .. "[" .. item_slots_t[i] .. "]" end doRemoveItem(item.uid,1) doSendMagicEffect(toPosition,CONST_ME_MAGIC_RED) doSetItemSpecialDescription(itemEx.uid, item_slots_n) doPlayerSendTextMessage(cid,20,"Attribute removed.")return trueend
×