Ir para conteúdo

[Pedido] Restringir Um Item Por Resets !


teteusinhu

Posts Recomendados

Tipo do script: Acho que Spells ou Items.

Protocolo (versão do Tibia): 8.6

Servidor utilizado: Styller Yurotz

Nível de experiência: Intermediário

Adicionais/Informações:

 

Antes de mais nada boa tarde a todos, bom gostaria de uma ajuda de vocês:

Bom gostaria que minha runa só pudesse ser usada por players com mais de 2 resets, como exemplo:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

function onCastSpell(cid, var)
doPlayerAddMana(cid, math.random(45000, 55000))
return doCombat(cid, combat, var)
end

 

e temos :

<rune name="Mana Rune" id="2284" allowfaruse="1" charges="1" lvl="20" maglv="4" exhaustion="550" aggressive="0" needtarget="1" blocktype="solid" script="healing/mana rune.lua"/>

 

e meu script de resets é este:

function onSay(cid, words, param)

--[Configurações de Condição]__

   config = {                                                                             --[[verdadeiro / Falso]]

     needPa = false,                   -- Precisa de Premium Account?                          [true / false]
     needPz = true,                    -- Precisa estar em Protection Zone?                    [true / false]      
     battle = false,                   -- Precisa estar sem Batlle para Resetar?               [true / false]
     withe = false,                    -- Players PK Withe pode Resetar?                       [true / false]       
     red = false,                      -- Players PK Red pode Resetar?                         [true / false]
     tp = true,                        -- Teleportar para o Templo após o reset?               [true / false]
     look = true,                      -- Mostrar Resets no Look do Player?                    [true / false]
     addLimite = false,                -- Abilitar Limite de Resets?                           [true / false]
     setClasse = false,                 -- Mudar Vocação do player quando resetar?              [true / false]
     storage = 2310,                   -- Storage                                                 [valor]


--[Configurações do Reset]__ 

             resetStatus = {    

             player = getPlayerGUID(cid),          -- Não Mude.
             lvl = 50000 ,                         -- Level Necessário para Resetar.                                 [valor]
             lvlreset = 100,                        -- Level que retornará após o Reset.                              [valor]
             limite = 200,                       -- Máximo de resets que um player pode chegar.                    [valor]
             newClasse = 0,                        -- Id da Nova Vocação após o Reset.                               [valor]
             tempo= 5                              -- Tempo para o Player deslogar para Resetar. Em segundos.        [valor]
       },
   }   

--[Funções]__

                  function Reseting(cid)
            resets = getResets(cid)
                 setPlayerStorageValue(cid,config.storage,resets+1)
                  doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
                    doPlayerSetVocation(cid, config.resetStatus.newClasse)
                    doRemoveCreature(cid)
                   db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
                        db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
                         return TRUE
           end

                   function noAll(cid)
                  resets = getResets(cid)
                    setPlayerStorageValue(cid,config.storage,resets+1)
                    doRemoveCreature(cid)
                    db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
                        db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
                return TRUE
               end

                       function noTeleporting(cid)
                      resets = getResets(cid)
                        setPlayerStorageValue(cid,config.storage,resets+1)
                         doPlayerSetVocation(cid, config.resetStatus.newClasse)
                        doRemoveCreature(cid)
                      db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
                        db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
            return TRUE
           end

                       function noLook(cid)
                      resets = getResets(cid)
                        setPlayerStorageValue(cid,config.storage,resets+1)
                        doPlayerSetVocation(cid, config.resetStatus.newClasse)
                        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
                        doRemoveCreature(cid)
                    db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
                        db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
            return TRUE
           end

                       function noClasse(cid)
                     resets = getResets(cid)
                        setPlayerStorageValue(cid,config.storage,resets+1)
                        doTeleportThing(cid,   getTownTemplePosition(getPlayerTown(cid)))
                        doRemoveCreature(cid)
                       db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
                        db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
                         return TRUE
           end

                       function setClasse(cid)
                        resets = getResets(cid)
                        setPlayerStorageValue(cid,config.storage,resets+1)
                        doPlayerSetVocation(cid, config.resetStatus.newClasse)                  
                        doRemoveCreature(cid)
                       db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
                        db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
                         return TRUE
           end

                       function look(cid)
            resets = getResets(cid)
                        setPlayerStorageValue(cid,config.storage,resets+1)
                        doRemoveCreature(cid)
                      db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
                        db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
                         return TRUE
           end

                       function teleporting(cid)
            resets = getResets(cid)
                        setPlayerStorageValue(cid,config.storage,resets+1)
                        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
                        doRemoveCreature(cid)
            db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
                        db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
                         return TRUE
           end

                 function getResets(cid)
           resets = getPlayerStorageValue(cid,config.storage)

              if resets < 1 then
            resets = 1
          end
           return resets

       end


   local resets = getResets(cid)
   local needLvl ="Você precisa de "..config.resetStatus.lvl-getPlayerLevel(cid).." level's para resetar."
   local msg ="~~[Reset: "..getResets(cid).."]~~ 'Sucesso ao Resetar!  Você será deslogado em "..config.resetStatus.tempo.." Segundos."


 --[Condiçoes]__       

 if(config.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
  doPlayerSendTextMessage(cid,22,"Você Precisa estar em Protection Zone Para Resetar.")
   return TRUE

   elseif(config.addLimite == true) and (getResets(cid) == config.resetStatus.limite) then
       doPlayerSendTextMessage(cid, 22, "Você ja atingiu o Limite de Resets.")
   return TRUE

       elseif(config.withe == false) and (getCreatureSkullType(cid) == 3) then
    doPlayerSendTextMessage(cid,22,"Você ta PK White, por isso não pode resetar.")
   return TRUE

   elseif(config.red == false) and (getCreatureSkullType(cid) == 4) then
    doPlayerSendTextMessage(cid,22,"Você ta PK Red, por isso não pode resetar.")
    return TRUE

   elseif(config.needPa == true) and not isPremium(cid) then
    doPlayerSendTextMessage(cid,22,"Você Precisa ser Premium Account para Resetar.")
    return TRUE

   elseif(config.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
    doPlayerSendTextMessage(cid,22,"Você Precisa estar sem Battle para Resetar.")      
   return TRUE 

       elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == true) then
         addEvent(Reseting, config.resetStatus.tempo* 1000, cid)

       elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == false) then 
        addEvent(noAll, config.resetStatus.tempo* 1000, cid)

       elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == true) then
         addEvent(noTeleporting, config.resetStatus.tempo* 1000, cid)

       elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == true) then
         addEvent(noLook, config.resetStatus.tempo* 1000, cid)

       elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == false) then
          addEvent(noClasse, config.resetStatus.tempo* 1000, cid)

       elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == true) then
          addEvent(setClasse, config.resetStatus.tempo* 1000, cid)

       elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == false) then
          addEvent(look, config.resetStatus.tempo* 1000, cid)

       elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == false) then
          addEvent(teleporting, config.resetStatus.tempo* 1000, cid)

   elseif doPlayerSendCancel(cid, needLvl) then
      doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
          return TRUE
   end

       if doPlayerPopupFYI(cid, msg) then

       end
       return TRUE

end

--[by: MarcelloMkez]__

 

Bom desde ja serei grato.

Abraços.

Editado por teteusinhu
Link para o comentário
Compartilhar em outros sites

local combat = createCombatObject() 
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) 
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) 
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) 

local reset_min = 2

function onCastSpell(cid, var)
if getResets(cid) >= reset_min then
doPlayerAddMana(cid, math.random(45000, 55000)) 
doCombat(cid, combat, var) 
else
doPlayerSendCancel(cid, "Sorry, you need "..reset_min.." reset's or more to use this spell.")
end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

Bom amigo o codigo fico assim:

local combat = createCombatObject() 
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) 
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) 
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) 

local reset_min = 70

function onCastSpell(cid, var)
if getResets(cid) >= reset_min then
doPlayerAddMana(cid, math.random(100000, 110000))
doPlayerAddHealth(cid, math.random(100000, 110000))
doCombat(cid, combat, var) 
else
doPlayerSendCancel(cid, "Sorry, you need "..reset_min.." reset's or more to use this spell.")
end
return TRUE
end

 

e deu o seguinte erro:

[19/01/2011 21:02:32] [Error - Spell Interface] 
[19/01/2011 21:02:32] data/spells/scripts/healing/super mana e life rune.lua:onCastSpell
[19/01/2011 21:02:32] Description: 
[19/01/2011 21:02:32] ...ta/spells/scripts/healing/super mana e life rune.lua:9: attempt to call global 'getReset' (a nil value)
[19/01/2011 21:02:32] stack traceback:
[19/01/2011 21:02:32] 	...ta/spells/scripts/healing/super mana e life rune.lua:9: in function <...ta/spells/scripts/healing/super mana e life rune.lua:8>

 

se puder resolver serei grato.

Abraços.

Link para o comentário
Compartilhar em outros sites

achei que já tava na lib a função :p

 

local combat = createCombatObject()  
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)  
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)  
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)  

local reset_min = 2



                 function getResets(cid) 
           resets = getPlayerStorageValue(cid,2310) 
              if resets < 1 then 
            resets = 1 
          end 
           return resets 

       end

function onCastSpell(cid, var) 
if getResets(cid) >= reset_min then 
doPlayerAddMana(cid, math.random(45000, 55000))  
doCombat(cid, combat, var)  
else 
doPlayerSendCancel(cid, "Sorry, you need "..reset_min.." reset's or more to use this spell.") 
end 
return TRUE 
end

Link para o comentário
Compartilhar em outros sites

  • 6 months later...

fmz manos ?? como restringir spells por reset baseado no q tu fez eu fiz na magia da isso ou uma hora aparece vc tem q ter 50 reset pra da a magia so q a magia sai normalmente como q faz ?? flws fmz

 

[Error - Spell Interface]

[14/08/2011 02:45:36] data/spells/scripts/ThorKiller.lua:onCastSpell

[14/08/2011 02:45:36] Description:

[14/08/2011 02:45:36] data/spells/scripts/ThorKiller.lua:157: attempt to call global 'getPlayerReset' (a nil value)

[14/08/2011 02:45:36] stack traceback:

[14/08/2011 02:45:36] data/spells/scripts/ThorKiller.lua:157: in function <data/spells/scripts/ThorKiller.lua:156>

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...