Jump to content
  1. CainJ

    CainJ

  2. Vodkart

    Vodkart

  • Similar Content

    • By RicK Sanchez
      Salve TIBIA KING!
      Hoje trago pra vocês um sistema de skin.
      Como funciona? ao clicar em um certo item, ele ganhará uma skin.
      ------------------------------------------------------
      vou explicar direitinho tudo. espero que entenda. se não, comente ai que eu poderei da suporte.
      Então vamos lá.
       

      Em actions/scripts
      Crie um arquvio chamado skin.lua -- ou o nome da skin/personagem.
      Depois abra, e copie e cole isso aqui dentro da pasta
      function onUse(cid, item, fromPosition, itemEx, toPosition)     if item.itemid == 7379 and (getPlayerStorageValue(cid, 8002) == EMPTY_STORAGE) then         doPlayerAddOutfitId(cid, 44, 3)         setPlayerStorageValue(cid, 8002, 1)         doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYDAMAGE)         doPlayerSendTextMessage(cid,22,"Parabéns, você recebeu a Outfit!")         doRemoveItem(item.uid, 1)     else         doPlayerSendCancel(cid,"Você já recebeu essa roupa!")     end end em item.itemid == 7379 mude para o id para o seu item. 
      Em (getPlayerStorageValue(cid, 8002) -- mude de acordo se você for colocar mais SKINS. tipo tá 8002 ali, coloque 8003 8004 e por ai vai.
          mude também no setPlayerStorageValue(cid, 8002, 1) -- mude para outras skin também!
       
      Feito isso, depois vá em actions.xml e adicione isso lá.
      <action itemid="13646" script="skin.lua"/> Mude a id do item.
      Depois de ter feito tudo isso, vamos agora em pasta do servidor/data/XML/outfit.xml
       abra ele e adicione isso aqui lá:   
      <outfit id="44" premium="no" default="0">         <list gender="0-3" lookType="1250" name="NOME DA SKIN"/>     </outfit>     Antes disse. der espaço entrem o <outfits> e </outfits> e cole dentro!
          Mude o looktype para a roupa/skin que você deseja colocar para o personagem ganhar.
          outfit id="44" > Mude aqui. para 1. 2 3 4 5 6, vai até aonde tu achar bom.
          em List gender="0-3" mude para 0-1 ou para o que você quiser.

      Pronto, feito tudo ISSO é sucesso meu bom. se eu errei algo, perdão 😄
       
       
      Créditos pelo esse sistema: DBOHP Eu (por postar.)
    • By xWhiteWolf
      Olá meus caros do Tibia King, hoje vim trazer pra vocês um sistema que bolei pra um concurso em outro fórum mas acabei ficando descontente e nunca cheguei a disponibilizar.
      Eu gostaria de agradecer inicialmente à três acontecimentos que sem eles não seriam possíveis a criação desse sistema.
      - A otlist obrigar que os servidores utilizem anti idle 
      - Os mages do meu servidor reclamarem que não dava pra treinar ml nos trainers
      - Ao @Storm Night, que embora tenha me irritado muito nesse tópico aqui , botou a sementinha dessa idéia na minha cabeça. 
       

       
      Explicação É a combinação de dois sistemas que eu ja havia feito, o primeiro escolhe entre todas as salas de treiner aquela que está vazia pra te alocar e o segundo te mantém alimentado e rodando pra simular o anti idle. (Nota: ele não impede o anti idle de fato, se vc quiser fazer isso vc vai precisar editar o script de anti idle que vc utiliza pra ignorar players com determinado storage e adicionar o storage no player quando ele entrar na sala e tirar ao sair.. mas não sei até que ponto isso pode provocar ban da OTservlist por isso decidi não ensinar isso aqui.)

      Sem mais delongas, talk is cheap, show me the code. 
       
      Idéia Basicamente dá pra reduzir toda a idéia do código nessa foto aqui:
       

      Você tem diversas salas com trainers nesse formato (pode ser em linha reta horizontal ou vertical tb, mas assim fica melhor distribuído). Você inclusive pode criar salas no meio do void  de forma que a distancia de uma vc nao consiga ver a outra e vai ser uma experiencia muito amigável para o player ver que está treinando sozinho na paz. Ao entrar no tp ele te aloca na primeira sala vazia, se não houverem salas vazias ele retorna que não tem posições livres

       
      Instalação Você precisa criar as salinhas dos trainers equidistantemente, ou seja, tendo a mesma distância A em X e mesma distância B em Y. Sério, se vc errar nessa parte é porque vc não sabe oque significa equidistante. Vai pesquisar preguiçoso!! Já aviso que não vou dar suporte quanto à isso.

      Você vai precisar criar salas parecidas com isso daqui:
       

      Perceba que não tem como ter acesso a essa sala, não tem como ser puxado pra fora do trainer, não tem dor de cabeça nenhuma e quando o player quiser sair ele só entra no tp e volta pro templo ou pra onde vc definir.

      Nesse teleport da sala vc adiciona o actionid 14877 e não bota nenhuma posição nele.
      Naquele tile que o player irá ficar que inclusive tem id diferente vc bota actionid 14878.
      Agora seleciona a area dessa sala no rme e vai copiando e colando percebendo sempre se vc tá criando as salas com mesma distância em X. Se o ponto inicial de uma sala é 140 e vc quer que todas tenham 12 sqm de distancia vc cria em 152, 164, 178.. por aí vai. 

      Quando terminar as salas que quiser e tiver montado as linhas e colunas da forma que desejou, vc vai criar um tp principal pra alocar os players nessa sala:


      Lembrando que ele não deve ter posição no rme, vc só bota o actionID 14876 e deixa a toPos dele 0, 0, 0. Ele não tem q te teleportar pra nenhum lugar pois a posição será decidida por script.

      Se você fez tudo certo até agora vc deve ter algo +- assim:
       


      O importante é manter a distancia certinha entre cada sala. Aí no caso eu fiz rX = 11 e rY = 8 (é a terceira ou quarta vez q eu to falando isso, se vcs errarem pqp eu vou ficar muito irritado);

      Vc não bota os trainers, e ali embaixo do spawn vc tem que botar um outro obstáculo pra impedir que o player ande pra baixo e dê a sala como livre.


      Feito isso só adicionar os scripts abaixo:
      movements.xml
          <movevent type="StepIn" actionid="14876" event="script" value="trainertp.lua"/>     <movevent type="StepIn" actionid="14877" event="script" value="trainertp2.lua"/>     <movevent type="StepIn" actionid="14878" event="script" value="foodtrainer.lua"/>
      movements/scripts/trainertp.lua:

      movements/scripts/trainertp2.lua:
       


      movements/scripts/foodtrainer.lua:
       

      FIM, qualquer dúvida ou comentário ou sugestão coloquem abaixo. Se gostou REP+, se não gostou REP+ pq deu trabalho e vai ser útil pra alguém, mesmo que de estudo. 
      Abraços do Lobo. 

      E ao cara do outro fórum que ficou falando que ia dar erro e quis ficar me corrigindo e mandando scripts sem noção pra "mostrar" que sabia de lua: 
    • By Ryzor
      Nome: Cassino slot machine
      Autor: CyberM // otland
      Versão Testada: tfs 0.4
      Informações Adicionais: video auto-explicativo. Video:
      Frutas padrões

      Ganho padrão de combos

      Outras infos
      -Qualquer item jogado nos grounds de slot são deletados, para prevenir bugs e trapaças
      -Ao player "usar" a alavanca ele não pode se mover até o jogo acabar
      -Se o player "desaparecer" o jogo renicia
      Em actions/scripts crie um arquivo .lua chamado cassino e coloque isto dentro:
      Código:
      --[[
      Advanced Slot Machine
      by Cybermaster
      ]]--
      --REQUIRED MONEY(gp) TO PLAY SLOT MACHINE
      local money = 1000
      --MILISECONDS TO CHANGE FRUITS
      local time = 200
      --ITERATOR TIME TO STOP CHANGING FRUIT IF PLAYER DOESN'T (30 is like 7 seconds)
      local limit = 30
      --FRUITS THAT WILL RANDOMLY APPEAR AND SWITCH
      local fruits = {2674,2675,2676,2679,2680,2682,2683,5097,8841}
      --PRIZES TABLES
      local win = {
      -- [{FRUIT.1,FRUIT.2,FRUIT.3} = {PRIZE,#PRIZE}]
      --MIXED COMBOS
      [{2679,2683,2679}] = {2160,2}, -- cherry-pumpkin-cherry
      [{8841,2682,8841}] = {2160,1}, -- lemon-melon-lemon
      --TRIPLE COMBOS
      [{2680,2680,2680}] = {2152,80}, -- triple strawberry
      [{5097,5097,5097}] = {2152,60}, -- triple mango
      [{2683,2683,2683}] = {2152,80}, -- triple pumpkin
      [{2682,2682,2682}] = {2152,50}, -- triple melon
      [{2676,2676,2676}] = {2152,40}, -- triple banana
      [{8841,8841,8841}] = {2152,25}, -- triple lemon
      [{2679,2679,2679}] = {2152,20}, -- triple cherry
      [{2675,2675,2675}] = {2152,30}, -- triple orange
      [{2674,2674,2674}] = {2152,10}, -- triple apple
      --ANY COMBOS
      [{ANY,2683,2683}] = {2152,5}, -- double pumpkin right
      [{2683,2683,ANY}] = {2152,5}, -- double pumpkin left
      [{2683,ANY,2683}] = {2152,10}, -- pumpkin sides combo
      [{ANY,2679,2679}] = {2152,4}, -- double cherry right
      [{2679,2679,ANY}] = {2152,4}, -- double cherry left
      [{2679,ANY,2679}] = {2152,8}, -- cherry sides combo
      [{ANY,8841,8841}] = {2152,5}, -- double lemon right
      [{8841,8841,ANY}] = {2152,5}, -- double lemon left
      [{8841,ANY,8841}] = {2152,5}, -- lemon sides combo
      }
      --MESSAGES THAT RANDOMLY APPEAR WHEN PLAYER WINS
      local messages = {'Bingo!','Lucky!','Jackpot!','Win!'}
      --FRUITS ROWS
      local p = { --[LEVER.UNIQUEID]
      [6297] = {},[6298] = {},[6299] = {},[6300] = {}, --[6301] = {},
      } --JUST PUT THE INITIAL ROW POS FROM LEFT, SECOND & THIRD WILL BE AUTOM. GENERATED
      for i = 1,3 do --p, UNIQUEID.LEVER, {POS FROM TILE OF LEFT}
      table.insert(p[6297],i,{x=91+(i-1),y=145,z=7,stackpos=1})
      table.insert(p[6298],i,{x=95+(i-1),y=145,z=7,stackpos=1})
      table.insert(p[6299],i,{x=99+(i-1),y=145,z=7,stackpos=1})
      table.insert(p[6300],i,{x=103+(i-1),y=145,z=7,stackpos=1})
      -- table.insert(p[6301],i,{x=19+(i-1),y=145,z=7,stackpos=1})
      end
      function verifyRow(cid, array, pos)
      local result, prize = false, ''
      for a, b in pairs(win) do
      if getTileItemById(pos[1],a[1]).uid > 1 or a[1] == ANY then
      if getTileItemById(pos[2],a[2]).uid > 1 or a[2] == ANY then
      if getTileItemById(pos[3],a[3]).uid > 1 or a[3] == ANY then
      doPlayerAddItem(cid, b[1], b[2] or 1, true)
      doSendAnimatedText(getThingPos(cid), messages[math.random(#messages)], math.random(255))
      result, prize, amount = true, b[1], b[2]
      end
      end
      end
      end
      if prize ~= '' then
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Congratulations!! You won '..amount..' '..getItemPluralNameById(prize)..'!')
      end
      for i = 1,3 do
      doSendMagicEffect(pos, result and CONST_ME_GIFT_WRAPS or CONST_ME_EXPLOSIONHIT)
      doRemoveItem(getTileThingByPos(pos).uid)
      end
      return not result and doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'You have lost in the Slot Machine Try again')
      end
       
      function onUse(cid, item, fromPosition, itemEx, toPosition)
       
      local function doFruit(pos,cid,id,limit)
      if not isPlayer(cid) then
      return doItemEraseAttribute(item.uid, 'aid'), getTileThingByPos(pos).uid > 0 and doRemoveItem(getTileThingByPos(pos).uid)
      end
      if getTileThingByPos(pos).itemid < 1 then
      doSendMagicEffect(pos, CONST_ME_POFF)
      doCreateItem(fruits[math.random(#fruits)], 1, pos)
      else
      doTransformItem(getTileThingByPos(pos).uid,fruits[math.random(#fruits)],1)
      end
      if limit <= 0 then
      doSendMagicEffect(pos,math.random(28,30))
      doTransformItem(getTileThingByPos(pos).uid,fruits[math.random(#fruits)],1)
      doItemSetAttribute(getTileThingByPos(fromPosition) .uid, 'aid', getTileThingByPos(fromPosition).actionid+1)
      doTransformItem(getTileThingByPos(fromPosition).ui d, getTileThingByPos(fromPosition).itemid == 9826 and 9825 or 9826)
      elseif getTileThingByPos(fromPosition).actionid > id then
      doSendMagicEffect(pos,math.random(28,30))
      doTransformItem(getTileThingByPos(pos).uid,fruits[math.random(#fruits)],1)
      else
      addEvent(doFruit,time,pos,cid,id,limit-1)
      end
      end
       
      if item.actionid == 0 then
      if not doPlayerRemoveMoney(cid, money) then
      return doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'You need '..money..' gps to play Slot Machine.')
      end
      doItemSetAttribute(item.uid, 'aid', 1)
      doCreatureSetNoMove(cid, true)
      doTransformItem(item.uid, item.itemid == 9826 and 9825 or 9826)
      doSendAnimatedText(getThingPos(cid), '-$'..money,COLOR_RED)
      for i = 1,3 do doFruit(p[item.uid],cid,i,i*limit) end
      elseif isInArray({1,2,3},item.actionid) then
      doItemSetAttribute(item.uid, 'aid', item.actionid+1)
      doTransformItem(item.uid, item.itemid == 9826 and 9825 or 9826)
      elseif item.actionid == 4 then
      doCreatureSetNoMove(cid, false)
      doItemEraseAttribute(item.uid, 'aid')
      doTransformItem(item.uid, item.itemid == 9826 and 9825 or 9826)
      verifyRow(cid, win, p[item.uid])
      end
      return true
      end
      E em actions.xml adicione esta tag:
       
      Código:
      <action uniqueid="6297-6300" event="script" value="cassino.lua"/>
      Agora em movements/scripts crie um arquivo .lua chamado cassino e coloque isto dentro:
       
      Código:
      function onAddItem(moveItem, tileItem, position, cid)
      if isPlayer(cid) then
      doRemoveItem(moveItem.uid)
      doSendMagicEffect(position, CONST_ME_EXPLOSIONHIT)
      end
      end
      Agora em movements.xml adicione esta tag:
       
      Código:
      <movevent type="AddItem" tileitem="1" actionid="6577" event="script" value="cassino.lua"/>
      Mapa

       
       
       
      Código:
      --FRUITS ROWS
      local p = { --[LEVER.UNIQUEID]
      [6297] = {},[6298] = {},[6299] = {},[6300] = {}, --[6301] = {},
      } --JUST PUT THE INITIAL ROW POS FROM LEFT, SECOND & THIRD WILL BE AUTOM. GENERATED
      for i = 1,3 do --p, UNIQUEID.LEVER, {POS FROM TILE OF LEFT}
      table.insert(p[6297],i,{x=91+(i-1),y=145,z=7,stackpos=1})
      table.insert(p[6298],i,{x=95+(i-1),y=145,z=7,stackpos=1})
      table.insert(p[6299],i,{x=99+(i-1),y=145,z=7,stackpos=1})
      table.insert(p[6300],i,{x=103+(i-1),y=145,z=7,stackpos=1})
      -- table.insert(p[6301],i,{x=19+(i-1),y=145,z=7,stackpos=1})
      end
       
       
      NOTA: Coloque o actionid 6577 ao tile embaixo da alavanca
      Itemid das alavancas usadas: 9825 - 9826
      Actionid usado: 6577
      Uniqueid usado: 6297, ... etc (para cada alavanca usa-se um diferente uid)
      Espero que gostem
    • By isac001
      Gostaria de uma Script que funcione da seguinte forma:
       
      Um player chega em um Npc e pede para começar a partida war, 1v1 oque ganhar ganha Pontos e quem perder perde pontos o cara que chega 100 pontos Upa de Patente ex: Jogou umas 3 partidas do ferro 1 foi para Ferro 2! e no look do perssonagem mostrasse o rank dele! 
       
      TIPO LEAGUE OF LEGENDS alguem sabe fazer?
       
    • By edaegonis
      Bom pessoal, esse é um script bem simples, mas eu gosto da ideia dele, e não consegui encontrar por aí.
       
       
      É uma boa solução pra quando você quer summonar monstros numa quest, e se tiver vários players não ficará summonando monstros várias vezes.
       
      Esse script está sendo usado ao dar use num chest, mas está a seu critério onde utilizar.
      monstersToCreate = { [1] = { name = 'Lost Berserker', position = {x = 1034, y = 1425, z = 15} }, [2] = { name = 'Lost Thrower', position = {x = 1028, y = 1424, z = 15} }, [3] = { name = 'Lost Basher', position = {x = 1034, y = 1427, z = 15} }, [4] = { name = 'Lost Thrower', position = {x = 1040, y = 1423, z = 15} }, [5] = { name = 'Lost Husher', position = {x = 1030, y = 1430, z = 15} }, [6] = { name = 'Lost Husher', position = {x = 1038, y = 1429, z = 15} } } function onUse (player, item, param) if item:getActionId() == 45016 then if player:getStorageValue(45016) == -1 then player:addItem(2517, 1) -- shield of honour player:addItem(2502, 1) -- dwarven helmet local currentMonsters = Game.getStorageValue(45016) if currentMonsters then for v = 1, #currentMonsters do local monsterId = currentMonsters[v] local isMonsterAlive = Monster(monsterId) if not isMonsterAlive then local createdMonster = Game.createMonster(monstersToCreate[v].name, monstersToCreate[v].position) currentMonsters[v] = createdMonster:getId() end end Game.setStorageValue(45016, currentMonsters) else local createdMonsters = {} for i = 1, #monstersToCreate do local createdMonster = Game.createMonster(monstersToCreate[i].name, monstersToCreate[i].position) table.insert(createdMonsters, createdMonster:getId()) end Game.setStorageValue(45016, createdMonsters) end player:setStorageValue(45016, 1) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You've got a reward.") else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You've already got your reward.") end end return true end  
      actions.xml:
      <action actionid="45016" script="seu_script.lua" />  
      Se alguém quiser aprimorar o script, sinta-se à vontade 😃
  • Recently Browsing   0 members

    No registered users viewing this page.


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!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...