Ir para conteúdo

Featured Replies

Postado

Venho aqui após pesquisar muito e testar todas as formas que encontrei de fazer isso funcionar.

Preciso criar magias por resets em meu servidor, porem nenhuma das formas que encontrei funcionou.

minha script reset é essa:

Citar

 --[[ <(Advanced Reset System 2.0)>

          Autor: MarcelloMkez. Contato: ([email protected])
          Versão: 2.0
          Testado em: 8.50 e 8.60
          TFS: 0.3.6 and 0.4.0
          Fórum: http://www.xtibia.com/forum/topic/142463-advanced-reset-system-20/

      -=[Características]=-
       ~( Versão 2.0 )~

      - Resets agora Armazenados na DataBase; (Sem Valor de Storage)
      - Instala o System e cria a Tabela de Resets com o comando "/installreset";
      - Resets no Look do jogador ex: 22:10 You see Marcello [Reset 2] (Level 8). He is an elder druid.;
      - [sTAGES] para "Premium Account" e "Free Account";  ]] 

--=[Functions]=--

-- installReset()'                    [instala o Sistema.]
-- tableResetInstall()'               [Verifica Se o Sistema ja foi instaladao.]
-- nowReseting()'                     [Verifica, retorna o erro ou reseta.]
-- getPlayerReset(cid)'               [Pega numero de resets do player.]
-- checLevelStageReset(cid)'          [Verifica o Level para Resetar.]
-- newReset(cid)'                     [Verifica todas as Condições de Reset.]
-- addValue(value)'                   [Adiciona numero de resets.]

--=[Comandos de Jogadores]=--
--  "/installreset"   -- Só será usado uma vez, para instalar o sistema.
--  "!resetar"        -- Para Resetar.

function onSay(cid, words, param)

           if words =="!resetar" then

--[ Condições de Reset ] --
local coNdConf = {

needPz = true,                  -- Precisa estar em Pz pra resetar?               [true, false]
needPa = false,                 -- Precisa ser Premium Account Pra resetar?       [true, false]
withe = false,                  -- Players com Pk Withe podem resetar?            [true, false]
red = false,                    -- Players com Pk Red pode resetar?               [true, false]
battle = false,                 -- Players precisão estar sem battle pra resetar? [true, false]
teleport = true,                -- Teleportar Player para o templo após resetar?  [true, false]
look = true,                   -- Aparecer Resets no Look do Player?             [true, false]
pid = getPlayerGUID(cid),       -- Não Mexer.


--[ Configurações do Reset ] --
resetConf = {

Level = 350,                    -- Level Necessário para Resetar.                         [Valor]
backLvl = 1000,                    -- Level que voltará após o Reset.                        [Valor]
time = 3,                       -- Tempo para o Player deslogar ao resetar, em segundos.  [Valor]

 },
}
         --[[>> STAGES <<]]--
x=true;X=true -- Não Mexer.
local stage = {Abilitar = {x}, Desabilitar = {},     --<< Abilitar Stages?? >>--            [{x};{}]

--      [RESETS]    |  [PREMMY]  |   [FREE]
stage1= {resets= 4,  premmy= 30000, free= 30000},
stage2= {resets= 9,  premmy= 40000, free= 40000},     -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}])
stage3= {resets= 14, premmy= 60000, free= 60000},     -- resets = Número de resets para o Stage;
stage4= {resets= 19, premmy= 20000, free= 20000},     -- premmy = Level necessário para Premium Accounts;
stage5= {resets= 24, premmy= 25000, free= 25000},     -- free    = Level necessário para Free Accounts;
stage6= {resets= 29, premmy= 30000, free= 30000},       -- Coloque em Ordem...
stage7= {resets= 7, premmy= 35000, free= 35000},     -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES]
stage8= {resets= 8, premmy= 40000, free= 40000},     -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x}
stage9= {resets= 9, premmy= 45000, free= 45000},
stage10={resets= 10, premmy= 50000, free= 50000},

}
       --[[>> FIM STAGES <<]]--

--=[Pega Valor de Resets]=--
function getPlayerReset(cid)
local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";")
rss = qr:getDataInt("reset", coNdConf.pid)
if rss < 0 then
rss = 0
end
return rss
end

local success = "                   ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage
local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid)
local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";"
local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";"
local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";"
local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";"

--=[Reseta]=--
function addValue(value)
if coNdConf.look == false then
 doRemoveCreature(cid)
db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query)
else
 doRemoveCreature(cid)
  db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query)
 return LUA_NO_ERROR
end
end

function nowReseting()
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -")
 return true
end
if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
     doPlayerPopupFYI(cid, success)
     addEvent(addValue, coNdConf.resetConf.time*1000, value)
   else
     doPlayerPopupFYI(cid, success)
     addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid)))
     addEvent(addValue, coNdConf.resetConf.time*1000, value)
 return true
end
end

--[sTAGES Nao mexer em nada.]--
function checkLevelStageReset(cid)

local stages = {
   {resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free},
   {resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free},
   {resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free},
   {resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free},
   {resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free},
   {resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free},
   {resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free},
   {resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free},
   {resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free},
   {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free},
}
   local resets = getPlayerReset(cid)
       for i, tab in ipairs(stages) do
           if resets <= tab.resets then
               coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free
               break
           end
       end
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -")
return TRUE
end

 if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
    doPlayerPopupFYI(cid, success)
    addEvent(addValue, coNdConf.resetConf.time*1000, value)
  else
  doPlayerPopupFYI(cid, success)
  addEvent(addValue, coNdConf.resetConf.time*1000, value)
  addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid)))
   return true
 end
end
   function newReset(cid)
   if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then
    err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end
   if(coNdConf.needPa == true) and not isPremium(cid) then
    err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end
   if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then
    err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end
   if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then
    err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end
   if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
    err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end

local xy = {true,false}
table.insert(stage.Abilitar, false)
table.insert(stage.Desabilitar, false)
if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then
checkLevelStageReset(cid)
elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then
nowReseting()
else
doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!")
end
return true
end
   function tableResetInstall()
    print(not rss_db  and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ")
    addEvent(newReset, 1000, cid)
    return false
    end
   if tableResetInstall() then
 end
end
   --=[install System]=--
      function installReset()
       if db.executeQuery("ALTER TABLE `players` ADD reset INT(11) NOT NULL DEFAULT 0;") then
               print("[MarcelloMkez] -= Advanced Reset System 2.0 por DataBase =- Instalado com sucesso!")
               return TRUE
       end
       print('[Advanced Reset System/MarcelloMkez] Não foi possível instalar o Sistema.')
       return FALSE
    end
       local tt = {
          "Preparando Instalação...",
          "Instalando: TableReset Db...",
          "Instalando: getPlayerReset()...",
          "Instalando: addValue()...",
          "Instalando: checkLevelStageReset()...",
          "Instalando: newReset() and nowReseting()...",
          "Finalizando Instalação...",
          "...",
          success = {
          "Iniciando...",
          "function: TableReset Db...    [success]",
          "function: getPlayerReset()...    [success]",
          "function: addValue(value)...       [success]",
          "function: checkLevelStageReset()... [success]",
          "function: newReset() and nowReseting()...     [success]",
          "Fim da Instalação.  ",
          "by: ~~ MarcelloMkez ~~              \nContato: [email protected]",
          inst = {"MarcelloMkez","Advanced Reset System 2.0 por DataBase"

          },

        },

       }
    if words == "/installreset" and getPlayerAccess(cid) >= 3 then
           function install()
           if installReset() then
               print(""..tt.success[7].."")
                  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,""..tt.success[8].."")
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] -="..tt.success.inst[2].."=- Instalado com sucesso!")
          else
               print("["..tt.success.inst[1].."]  FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].")
                 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].")
           end
           return 1
       end
         function concl(cid)
           local typetx = MESSAGE_STATUS_CONSOLE_BLUE
               print(""..tt.success[7].."")
                print(""..tt[8].."")
               doPlayerSendTextMessage(cid, typetx,""..tt.success[7].."")
               doPlayerSendTextMessage(cid, typetx,""..tt[8].."")
               addEvent(install, 1000,cid)
           end
           function finall(cid)
               local typetx = MESSAGE_STATUS_CONSOLE_BLUE
               print(""..tt.success[6].."")
               print(""..tt[7].."")
               doPlayerSendTextMessage(cid, typetx,""..tt.success[6].."")
               doPlayerSendTextMessage(cid, typetx,""..tt[7].."")
               addEvent(concl, 3000,cid)
           end
            function installDd(cid)
              local typetx = MESSAGE_STATUS_CONSOLE_BLUE
               print(""..tt.success[5].."")
               print(""..tt[6].."")
               doPlayerSendTextMessage(cid, typetx,""..tt.success[5].."")
               doPlayerSendTextMessage(cid, typetx,""..tt[6].."")
               addEvent(finall, 1000,cid)
           end
           function installCc(cid)
              local typetx = MESSAGE_STATUS_CONSOLE_BLUE
               print(""..tt.success[4].."")
               print(""..tt[5].."")
               doPlayerSendTextMessage(cid, typetx,""..tt.success[4].."")
               doPlayerSendTextMessage(cid, typetx,""..tt[5].."")
             addEvent(installDd, 1000,cid)
           end
           function installBb(cid)
              local typetx = MESSAGE_STATUS_CONSOLE_BLUE
               print(""..tt.success[3].."")
               print(""..tt[4].."")
               doPlayerSendTextMessage(cid, typetx,""..tt.success[3].."")
             doPlayerSendTextMessage(cid, typetx,""..tt[4].."")
           addEvent(installCc, 1000,cid)
           end
           function installAa(cid)
             local typetx = MESSAGE_STATUS_CONSOLE_BLUE
               print(""..tt.success[2].."")
               print(""..tt[3].."")
               doPlayerSendTextMessage(cid, typetx,""..tt.success[2].."")
               doPlayerSendTextMessage(cid, typetx,""..tt[3].."")
               addEvent(installBb, 1000,cid)
           end
           function toInstall()
             local typetx = MESSAGE_STATUS_CONSOLE_BLUE
               print(""..tt.success[1].."")
               print(""..tt[2].."")
               doPlayerSendTextMessage(cid, typetx,""..tt.success[1].."")
               doPlayerSendTextMessage(cid, typetx,""..tt[2].."")
              addEvent(installAa, 1000,cid)
             end
           function preparation()
             local typetx = MESSAGE_STATUS_CONSOLE_BLUE
              print(""..tt[1].."")
            doPlayerSendTextMessage(cid, typetx,""..tt[1].."")
           addEvent(toInstall, 3000,cid)
       end
           if preparation() then
           end
       end
return 1
end
--=[by: MarcelloMkez]=--? 

A partir desse sistema de reset quero utilizar essa spell como base para criar as demais:

Citar

-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat0_Brush = {CONST_ANI_FIRE,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1,2,3,1,3,0,3,-1,3,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,3,3,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1}

-- Areas/Combat for 200ms
local combat2_Brush = createCombatObject()
setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat2_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat2_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat2_Brush = {CONST_ANI_FIRE,3,3,2,3,1,3,0,3,-1,3,-2,2,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,2,2,1,2,0,2,-1,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1,1,1,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0}

-- Areas/Combat for 400ms
local combat4_Brush = createCombatObject()
setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat4_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat4_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat4_Brush = {CONST_ANI_FIRE,3,3,2,3,1,3,0,3,-1,3,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1,1,1,0,1,-1,1,-1,0,-1,-1,1,-1,1,0,0,-1}

-- Areas/Combat for 600ms
local combat6_Brush = createCombatObject()
setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat6_Brush,createCombatArea({{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 2, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat6_Brush = {CONST_ANI_FIRE,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1}

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
    if (isCreature(cid)) then
        doCombat(cid, c, var)
        if (dirList ~= nil) then -- Emit distance effects
            local i = 2;
            while (i < #dirList) do
                doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
                i = i + 2
            end        
        end
    end
end

function onCastSpell(cid, var)
    local startPos = getCreaturePosition(cid)
    RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
    addEvent(RunPart,200,combat2_Brush,cid,var,dfcombat2_Brush,startPos)
    addEvent(RunPart,400,combat4_Brush,cid,var,dfcombat4_Brush,startPos)
    addEvent(RunPart,600,combat6_Brush,cid,var,dfcombat6_Brush,startPos)
    return true
end

Se alguem puder me explicar, e adicionar os comandos na spell e enviar novamente ja sendo para determinado reset. ficarei muito agradecido.

  • Respostas 5
  • Visualizações 471
  • Created
  • Última resposta

Top Posters In This Topic

Postado

Eu fiz assim peguei uma função no seu sistema que checa quantos resets o player deu(getPlayerReset(cid)) e se for menor que o numero que o numero desejado ele não usa a spell.

Para configurar é só mudar o número dessa linha:

local nreset = 1 --Onde 1 é o número de reset necessário para usar a spell

 

local nreset = 1 --Onde 1 é o número de reset necessário para usar a spell

-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat0_Brush = {CONST_ANI_FIRE,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1,2,3,1,3,0,3,-1,3,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,3,3,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1}

-- Areas/Combat for 200ms
local combat2_Brush = createCombatObject()
setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat2_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat2_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat2_Brush = {CONST_ANI_FIRE,3,3,2,3,1,3,0,3,-1,3,-2,2,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,2,2,1,2,0,2,-1,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1,1,1,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0}

-- Areas/Combat for 400ms
local combat4_Brush = createCombatObject()
setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat4_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat4_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat4_Brush = {CONST_ANI_FIRE,3,3,2,3,1,3,0,3,-1,3,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1,1,1,0,1,-1,1,-1,0,-1,-1,1,-1,1,0,0,-1}

-- Areas/Combat for 600ms
local combat6_Brush = createCombatObject()
setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat6_Brush,createCombatArea({{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 2, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat6_Brush = {CONST_ANI_FIRE,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1}

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
    if (isCreature(cid)) then
        doCombat(cid, c, var)
        if (dirList ~= nil) then -- Emit distance effects
            local i = 2;
            while (i < #dirList) do
                doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
                i = i + 2
            end        
        end
    end
end

function onCastSpell(cid, var)
if (getPlayerReset(cid) < nreset) then
	doPlayerSendCancel(cid, "Você precisa ter ao menos "..nreset.." reset para usar esta spell")
	return true
else
    local startPos = getCreaturePosition(cid)
    RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
    addEvent(RunPart,200,combat2_Brush,cid,var,dfcombat2_Brush,startPos)
    addEvent(RunPart,400,combat4_Brush,cid,var,dfcombat4_Brush,startPos)
    addEvent(RunPart,600,combat6_Brush,cid,var,dfcombat6_Brush,startPos)
    return true
end
end

Bom eu não testei, mas acho que funciona

Postado
  • Autor

@SpriGGan 

21 minutos atrás, SpriGGan disse:

Eu fiz assim peguei uma função no seu sistema que checa quantos resets o player deu(getPlayerReset(cid)) e se for menor que o numero que o numero desejado ele não usa a spell.

Para configurar é só mudar o número dessa linha:

local nreset = 1 --Onde 1 é o número de reset necessário para usar a spell

  


local nreset = 1 --Onde 1 é o número de reset necessário para usar a spell

-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat0_Brush = {CONST_ANI_FIRE,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1,2,3,1,3,0,3,-1,3,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,3,3,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1}

-- Areas/Combat for 200ms
local combat2_Brush = createCombatObject()
setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat2_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat2_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat2_Brush = {CONST_ANI_FIRE,3,3,2,3,1,3,0,3,-1,3,-2,2,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,2,2,1,2,0,2,-1,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1,1,1,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0}

-- Areas/Combat for 400ms
local combat4_Brush = createCombatObject()
setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat4_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat4_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat4_Brush = {CONST_ANI_FIRE,3,3,2,3,1,3,0,3,-1,3,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1,1,1,0,1,-1,1,-1,0,-1,-1,1,-1,1,0,0,-1}

-- Areas/Combat for 600ms
local combat6_Brush = createCombatObject()
setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat6_Brush,createCombatArea({{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 2, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat6_Brush = {CONST_ANI_FIRE,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1}

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
    if (isCreature(cid)) then
        doCombat(cid, c, var)
        if (dirList ~= nil) then -- Emit distance effects
            local i = 2;
            while (i < #dirList) do
                doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
                i = i + 2
            end        
        end
    end
end

function onCastSpell(cid, var)
if (getPlayerReset(cid) < nreset) then
	doPlayerSendCancel(cid, "Você precisa ter ao menos "..nreset.." reset para usar esta spell")
	return true
else
    local startPos = getCreaturePosition(cid)
    RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
    addEvent(RunPart,200,combat2_Brush,cid,var,dfcombat2_Brush,startPos)
    addEvent(RunPart,400,combat4_Brush,cid,var,dfcombat4_Brush,startPos)
    addEvent(RunPart,600,combat6_Brush,cid,var,dfcombat6_Brush,startPos)
    return true
end
end

Bom eu não testei, mas acho que funciona

 

Desde já obrigado por ter respondido, porem eu testei da forma que você me passou, e quando uso a spell em um char ele usa sem precisar ter o reset necessario. um char 0 reset usa a spell para 1,2,5. Sabe se tenho que mudar algo?

Postado

Testa assim:

 

-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat0_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat0_Brush = {CONST_ANI_FIRE,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1,2,3,1,3,0,3,-1,3,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,3,3,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1}

-- Areas/Combat for 200ms
local combat2_Brush = createCombatObject()
setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat2_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat2_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat2_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat2_Brush = {CONST_ANI_FIRE,3,3,2,3,1,3,0,3,-1,3,-2,2,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,2,2,1,2,0,2,-1,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1,1,1,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0}

-- Areas/Combat for 400ms
local combat4_Brush = createCombatObject()
setCombatParam(combat4_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat4_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat4_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat4_Brush,createCombatArea({{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 2, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat4_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat4_Brush = {CONST_ANI_FIRE,3,3,2,3,1,3,0,3,-1,3,-2,3,-3,3,-3,2,-3,1,-3,0,-3,-1,-3,-2,-3,-3,-2,-3,-1,-3,0,-3,1,-3,2,-3,3,-3,3,-2,3,-1,3,0,3,1,3,2,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1,1,1,0,1,-1,1,-1,0,-1,-1,1,-1,1,0,0,-1}

-- Areas/Combat for 600ms
local combat6_Brush = createCombatObject()
setCombatParam(combat6_Brush, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat6_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatParam(combat6_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat6_Brush,createCombatArea({{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 2, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}}))
function getDmg_Brush(cid, level, maglevel)
    return (20000)*-1,(25000)*-1 
end
setCombatCallback(combat6_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
local dfcombat6_Brush = {CONST_ANI_FIRE,2,2,1,2,0,2,-1,2,-2,2,-2,1,-2,0,-2,-1,-2,-2,-1,-2,0,-2,1,-2,2,-2,2,-1,2,0,2,1}

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
    if (isCreature(cid)) then
        doCombat(cid, c, var)
        if (dirList ~= nil) then -- Emit distance effects
            local i = 2;
            while (i < #dirList) do
                doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
                i = i + 2
            end        
        end
    end
end

function onCastSpell(cid, var)
if (getPlayerReset(cid) > 1) then -- 1 é o número de reset
    local startPos = getCreaturePosition(cid)
    RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos)
    addEvent(RunPart,200,combat2_Brush,cid,var,dfcombat2_Brush,startPos)
    addEvent(RunPart,400,combat4_Brush,cid,var,dfcombat4_Brush,startPos)
    addEvent(RunPart,600,combat6_Brush,cid,var,dfcombat6_Brush,startPos)
    return true
else
	doPlayerSendCancel(cid, "Você precisa ter ao menos 1 reset para usar esta spell")
	return true
end
end

 

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo