Ir para conteúdo

Featured Replies

Postado

queria ajuda com esse script para separar algumas conditions por vocaçao tipo na conditionML so funciona-se com druids e sorc e na conditionMELEE so funciona-se com paladin e knights

local conditionSUP,conditionML,conditionMELEE,conditionSPEED,conditionWARLOCK,conditionAMP = {},{},{},{},{},{}
for i=1,300 do
  conditionSUP[i] = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionSUP[i], CONDITION_PARAM_SUBID, 50)
  setConditionParam(conditionSUP[i], CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionSUP[i], CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i)
  setConditionParam(conditionSUP[i], CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i)

  conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 51)
  setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICPOINTS, i)
  setConditionParam(conditionML[i], CONDITION_PARAM_SKILL_SHIELD, i)

  conditionMELEE[i] = createConditionObject(CONDITION_ATTRIBUTES)
  setConditionParam(conditionMELEE[i], CONDITION_PARAM_SUBID, 52)
  setConditionParam(conditionMELEE[i], CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionMELEE[i], CONDITION_PARAM_SKILL_MELEE, i)
  setConditionParam(conditionMELEE[i], CONDITION_PARAM_SKILL_SHIELD, i)
  setConditionParam(conditionMELEE[i], CONDITION_PARAM_SKILL_DISTANCE, i)
  
  conditionSPEED[i] = createConditionObject(CONDITION_HASTE)
  setConditionParam(conditionSPEED[i], CONDITION_PARAM_SUBID, 53)
  setConditionParam(conditionSPEED[i], CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionSPEED[i], CONDITION_PARAM_SPEED, 50+i)
  
  conditionWARLOCK[i] = createConditionObject(CONDITION_REGENERATION)
  setConditionParam(conditionWARLOCK[i], CONDITION_PARAM_SUBID, 54) 
  setConditionParam(conditionWARLOCK[i], CONDITION_PARAM_TICKS, -1)
  setConditionParam(conditionWARLOCK[i], CONDITION_PARAM_HEALTHGAIN, i)
  setConditionParam(conditionWARLOCK[i], CONDITION_PARAM_HEALTHTICKS, 2000)
  setConditionParam(conditionWARLOCK[i], CONDITION_PARAM_MANAGAIN, i)
  setConditionParam(conditionWARLOCK[i], CONDITION_PARAM_MANATICKS, 2000)
end
function 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
  end
end
local function loadSet(cid)
  local t = {}
  for slot=1,9 do
  t[slot] = ''
  local s = getPlayerSlotItem(cid,slot).uid
  if s ~= 0 then
  t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
  end
  end
  return t
end
function chk(cid,f)
  if not isPlayer(cid) then return false end
  local t = loadSet(cid)
  for i=1,#f do
  if f[i] ~= t[i] then
  equip(cid,nil,slot)
  break
  end
  end
  addEvent(chk,2000,cid,t)
end
function 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
  end
return false
end
function equip(cid,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(cid,i).itemid ~= 0 then
  local aab = getPlayerSlotItem(cid,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 == 'supreme' then
  doAddCondition(cid,conditionSUP[tonumber(n)])
  Player(cid):addHealth(Player(cid):getMaxHealth() - Player(cid):getHealth())
  ca[50] = 1
  doSendTutorial(cid,19)
  elseif sl == 'magically' then
  doAddCondition(cid,conditionML[tonumber(n)])
  ca[51] = 1
  elseif sl == 'blessed' then
  doAddCondition(cid,conditionMELEE[tonumber(n)])
  ca[52] = 1
  elseif sl == 'speedy' then
  doAddCondition(cid,conditionSPEED[tonumber(n)])
  ca[53] = 1
  elseif sl == 'warlock' then
  doAddCondition(cid,conditionWARLOCK[tonumber(n)])
  ca[54] = 1
  end
  end
  if fu > 0 then
  for i=50,54 do
  if not ca[i] then
  doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
  doRemoveCondition(cid,CONDITION_REGENERATION,i)
  doRemoveCondition(cid,CONDITION_HASTE,i)
  end
  end
  else
  for i=50,54 do
  doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
  doRemoveCondition(cid,CONDITION_REGENERATION,i)
  doRemoveCondition(cid,CONDITION_HASTE,i)
  end
  end
  return true
end
function onLogin(creature)
  local cid = creature:getId()
  equip(cid,nil,slot)
  addEvent(chk,2000,cid,loadSet(cid))
  return true
end

 

Editado por Luccan Medeiros (veja o histórico de edições)

Postado

vc se refere ao treinamento de skills?

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Postado
  • Autor

nao nao esse é so as conditions depois desse tem outro em action onde o player usa em qualquer item

local conf = {
maxSlotCount=1,
ignoredIds={}
}
function choose(...)
  local arg = {...}
  return arg[math.random(1,#arg)]
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
if isInArray({26032}, itemEx.itemid) then 
          return false 
      end
      if isCreature(itemEx.uid) then
          return false
      end
      local nam = Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
      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('blessed')
          local p = (10)
          local armors = {1987,1988,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2365,3939,3940,3960,5801,5926,5927,5949,5950,7342,7343,9075,9077,9774,9775,10070,10518,10519,10520,10521,10522,11119,11241,11242,11243,11244,11263,15645,15646,16007,18393,18394,22696,23656,23659,24912,21518}
   if isInArray(armors, itemEx.itemid) then
          doSendMagicEffect(toPosition,30)
          nam = nam..' ['..l..'.+'..p..'%]'
          doPlayerSendTextMessage(cid, 20,l..'.+'..p..'%')
          doSetItemSpecialDescription(itemEx.uid, nam.."\nSpecial abilities: extra 10 sword, axe, club, distance and shield skills. \nIts Belongs "..getCreatureName(cid)..".")
          doRemoveItem(item.uid,1)
      else
          doPlayerSendTextMessage(cid, 20,"Slot limit reached.")
      end
      end
      return true
  end

 

sss.png

up

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo