Ir para conteúdo

Fazer o Buff trocar de vocation por 30 min depois voltar ao normal.

Featured Replies

Postado
6 minutos atrás, Nother disse:

[Error - LuaInterface::loadFile] data/spells/scripts/Goku/gogeta.lua:5: unexpected symbol near 'local'
[23:12:50.060] [Warning - Event::loadScript] Cannot load script (data/spells/scripts/Goku/gogeta.lua)
[23:12:50.061] data/spells/scripts/Goku/gogeta.lua:5: unexpected symbol near 'local'

 

dessa vez deu esse errinho na distro


Tira a virgula dessa linha:

local msg = "Voce precisa aguardar %d segundos.",

 

  • Respostas 18
  • Visualizações 1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Testa,  

  • Agora que eu parei pra ler o script inteiro. Tava cheio de problemas, esse do tempo era um deles, a vocação de fato mudava pra 11, mas 0.030 segundos depois o char voltava pra voc original  Essa var

  • Se deslogar, morrer, ou passar 30 min, perde a transformação. O cooldown é 30 min e continua contando mesmo se o player morrer.

Posted Images

Postado
  • Autor
8 minutos atrás, 139 disse:


Tira a virgula dessa linha:


local msg = "Voce precisa aguardar %d segundos.",

 

KKK foi mal cara, acho que ja estou enchendo seu saco kkk. Tipo to com 2 problemas, ele troca de vocation certinho agora e retorna, o problema e que ele retorna para a vocation 9 e não a vocation 1 e eu removi a vocation 9 dai ele fala que eu não tenho vocação. tanto se eu morrer e tanto se eu esperar acabar o tempo. e quando eu me transformo aparece uma sprite aleatoria por 1 segundo e depois vai para a sprite correta, so que essa sprite não sai mais do personagem mesmo se ele voltar para a vocação anterior

Postado

Solução do outfit:

Spoiler

local tempo = 30 * 60
local storage_time = 102053
local storage_voc = 102054
local msg = "Voce precisa aguardar %d segundos.",
local effect = {80}
local effect1 = {80}
local outfit = {lookType = 3}
local points = 20
local health = 0.05
local new_voc = 11 -- id da voc

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo * 1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, points)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setCombatCondition(combat, condition)

function doHealthSecond(cid, amount, delay) -- function by vodka
    if not isCreature(cid) then 
        return 
        LUA_ERROR 
    end
    doCreatureAddHealth(cid, amount)
    if delay ~= 1 then 
        addEvent(doHealthSecond, 1000, cid, amount, delay-1) 
    end
end

local function doMagica(cid, times)
    if times > 0 and isCreature(cid) then
        for i=1, #effect do
            local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
            local position1 = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
            doSendMagicEffect(position, effect[i])
            doSendMagicEffect(position1, effect1[i])
        end
        addEvent(doMagica, 1000, cid, times-1)
    end
end

local function doOutfitzinha(cid, times)
    if times > 0 and isCreature(cid) then
        if hasCondition(cid, CONDITION_OUTFIT) then
            doRemoveCondition(cid, CONDITION_OUTFIT)
        end
        addEvent(doOutfitzinha, 1000, cid, times-1)
    end
end

local function deTransform(cid)
    if isCreature(cid) then
        doPlayerSetVocation(cid, getPlayerStorageValue(cid, storage_voc))
    end
end
                  
function onCastSpell(cid, var)
    if tempo-(os.time()-getPlayerStorageValue(cid, storage_time)) > 0 then
        doPlayerSendCancel(cid, string.format(msg, tempo-(os.time()-getPlayerStorageValue(cid, storage_time))))
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
        return false
    end
    setPlayerStorageValue(cid, storage_time, os.time())
    setPlayerStorageValue(cid, storage_voc, getPlayerVocation(cid))
    registerCreatureEvent(cid, "stordeath")
    registerCreatureEvent(cid, "stordeath_off")
    addEvent(deTransform, tempo * 1000, cid)
    doPlayerSetVocation(cid, new_voc)
    doMagica(cid, tempo)
    doOutfitzinha(cid, tempo)
    local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
    doCreatureSay(cid, "KAIOKEEEEEEEN", TALKTYPE_MONSTER)
    doSendMagicEffect(position, 80)
    doHealthSecond(cid, -getCreatureMaxHealth(cid) * health, tempo)
    doSetCreatureOutfit(cid, outfit)
    return doCombat(cid, combat, var)
end


Sobre a vocação bugada, já te falei a função que altera vocação, usa ela pra corrigir.
Se não der pra corrigir com ela, altera o char direto na database.

Postado
  • Autor
  • Solução

Consegui resolver quase os problemas de ficar infinitamente na vocação. Ainda esta com o problema da outfit mas se eu resolver posto aqui tbm.

local tempo = 1 * 60
local storage_time = 102053
local storage_voc = 102054
local msg = "Voce precisa aguardar %d segundos."
local effect = {80}
local effect1 = {80}
local outfit = {lookType = 9}
local points = 20
local health = 0.05
local new_voc = 11 -- id da voc

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo * 1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, points)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setCombatCondition(combat, condition)

function doHealthSecond(cid, amount, delay) -- function by vodka
    if not isCreature(cid) then 
        return 
        LUA_ERROR 
    end
    doCreatureAddHealth(cid, amount)
    if delay ~= 1 then 
        addEvent(doHealthSecond, 1000, cid, amount, delay-1) 
    end
end

local function doMagica(cid, times)
    if times > 0 and isCreature(cid) then
        for i=1, #effect do
            local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
            local position1 = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
            doSendMagicEffect(position, effect[i])
            doSendMagicEffect(position1, effect1[i])
        end
        addEvent(doMagica, 1000, cid, times-1)
    end
end

local function doOutfitzinha(cid, times)
    if times > 0 and isCreature(cid) then
        doRemoveCondition(cid, CONDITION_OUTFIT)
        addEvent(doOutfitzinha, 1000, cid, times-1)
    end
end

local function deTransform(cid)
    if isCreature(cid) then
        doPlayerSetVocation(cid, getPlayerStorageValue(cid, storage_voc))
    end
end
                  
function onCastSpell(cid, var)
    if tempo-(os.time()-getPlayerStorageValue(cid, storage_time)) > 0 then
        doPlayerSendCancel(cid, string.format(msg, tempo-(os.time()-getPlayerStorageValue(cid, storage_time))))
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
        return false
    end
    setPlayerStorageValue(cid, storage_time, os.time())
    setPlayerStorageValue(cid, storage_voc, getPlayerVocation(cid))
    registerCreatureEvent(cid, "stordeath")
    registerCreatureEvent(cid, "stordeath_off")
    addEvent(deTransform, tempo * 1000, cid)
    doPlayerSetVocation(cid, new_voc)
    doMagica(cid, tempo)
    doOutfitzinha(cid, tempo)
    local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
    doCreatureSay(cid, "KAIOKEEEEEEEN", TALKTYPE_MONSTER)
    doSendMagicEffect(position, 80)
    doHealthSecond(cid, -getCreatureMaxHealth(cid) * health, tempo)
    doSetCreatureOutfit(cid, outfit)
    return doCombat(cid, combat, var)
end

Estou utilizando aquele codigo la de cima passado anteriormente. E em
creaturescripts/scripts/niwdeath.lua
eu alterei para caso a vocação 11 morra ela retorne para a vocação 1.
e em vocations.xml alterei a fromvoc da voc 11 para voc 1 caso relogue tbm volte para a vocação 1.
Agora so falta eu resolver o bug da outfit que quando eu uso ele se transforma mas logo em seguida a outfit volta para a antiga.

local tempo = 1 * 60
local storage_time = 102053
local storage_voc = 102054
local msg = "Voce precisa aguardar %d segundos."
local effect = {87}
local effect1 = {87}
local outfit = {lookType = 9}
local points = 20
local mana = 0.01
local new_voc = 11 -- id da voc

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo * 1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, points)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, points)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setCombatCondition(combat, condition)

function doManaSecond(cid, amount, delay) -- function by vodka
    if not isCreature(cid) then 
        return 
        LUA_ERROR 
    end
    doCreatureAddMana(cid, amount)
    if delay ~= 1 then 
        addEvent(doManaSecond, 1000, cid, amount, delay-1) 
    end
end

local function doMagica(cid, times)
    if times > 0 and isCreature(cid) then
        for i=1, #effect do
            local position = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
            local position1 = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
            doSendMagicEffect(position, effect[i])
            doSendMagicEffect(position1, effect1[i])
        end
        addEvent(doMagica, 1000, cid, times-1)
    end
end

local function Outfitzinha(cid)
doRemoveCondition(cid, CONDITION_OUTFIT)
end

local function deTransform(cid)
    if isCreature(cid) then
        doPlayerSetVocation(cid, getPlayerStorageValue(cid, storage_voc))
    end
end
                  
function onCastSpell(cid, var)
    if tempo-(os.time()-getPlayerStorageValue(cid, storage_time)) > 0 then
        doPlayerSendCancel(cid, string.format(msg, tempo-(os.time()-getPlayerStorageValue(cid, storage_time))))
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
        return false
    end
    setPlayerStorageValue(cid, storage_time, os.time())
    setPlayerStorageValue(cid, storage_voc, getPlayerVocation(cid))
    registerCreatureEvent(cid, "stordeath")
    registerCreatureEvent(cid, "stordeath_off")
    addEvent(deTransform, tempo * 1000, cid)
    doPlayerSetVocation(cid, new_voc)
    doMagica(cid, tempo)
	addEvent(Outfitzinha, tempo*1000, cid)
    local position = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z}
    doCreatureSay(cid, "KAIOKEEEEEEEN", TALKTYPE_MONSTER)
    doSendMagicEffect(position, 121)
    doManaSecond(cid, -getCreatureMaxMana(cid) * mana, tempo)
    doSetCreatureOutfit(cid, outfit)
    return doCombat(cid, combat, var)
end

BOM ESSE E O CODIGO, DEPOIS DE VARIOS TESTES COM OS CODIGOS DISPONIBILIZADOS AI PARA CIMA FINALMENTE CONSEGUI ARRUMAR OS PROBLEMAS E FA TUDO OK, LEMBRANDO QUE CASO ESTEJAM QUERENDO USAR ESSE CODIGO, PRECISAM FAZER AS ALTERAÇOES QUE INFORMEI AI EM CIMA. OBRIGADO A TODOS QUE ME AJUDARAM

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

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