Postado Maio 3, 2019 6 anos 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.
Postado Maio 3, 2019 6 anos 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 Maio 3, 2019 6 anos 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 Maio 3, 2019 6 anos 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
Postado Maio 3, 2019 6 anos Autor @SpriGGan dessa maneira a spell não funciona, fica como se eu estivesse apenas mandando uma mensagem.
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.