Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ola queria pedir dessa ves que ao equipar serto item no meu inventario esse item meda um efeito em volta do meu corpo ex:buff. Que almentase minha velocidade e Ml em 30 a + pfv tem como ajudar agradeço muito vlw.

 

Rep++ :D

 

Ajudei Rep+ :D

Link para o post
Compartilhar em outros sites

no meu corpo mlz ai. na verdade no meu slot kk ?

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

Ajudei Rep+ :D

Link para o post
Compartilhar em outros sites

ao equipar serto item no meu inventario esse item meda um efeito em volta do meu corpo Que almentase minha velocidade e Ml em 30 a +

O aumento de velocidade e magic level, você pode editar em items.xml, aplicando as seguintes linhas no código referente ao item em questão:

<attribute key="speed" value="30" />
<attribute key="magiclevelpoints" value="30" />
<attribute key="showattributes" value="1" />

Script do buff ao equipar o item:

itembuff.lua (data/movements/scripts):

local effect = {55, 1000} -- {effectNumber, delay em milissegundos}

function buffEffect(cid, delay, effect)
    doSendMagicEffect(getThingPos(cid), effect)
    addEvent(buffEffect, delay, cid, effect, delay)
end

function onEquip(cid, item, slot)
    return buffEffect(cid, effect[2], effect[1])
end

Tag - movements.xml (data/movements):

<movevent type="Equip" itemid="ITEMID" slot="VALUE" event="script" value="itembuff.lua"/>

Basta configurar a tag com o ITEMID e o VALUE do slot, que varia de acordo com o item (onde ele pode ser equipado).

Aqui estão os valores, caso você não saiba como configurar:

Values:
	head
	necklace
	backpack
	armor
	right-hand, left-hand
	two-handed, hand/shield
	legs
	feet
	ring
	ammo
Editado por Suicide (veja o histórico de edições)

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

/\ O Script acima funcionou só que você não coloco pra quando tirar acabar o efeito tambem ;/

Editado por leonardobo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

é mesmo pfv tem como colocar


man eu kero que fique assim quando o player poro item no slot o buff (effect) fica sobre ele quando ele retirar o item do slot o buff sai pfv ajuda ai

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

Ajudei Rep+ :D

Link para o post
Compartilhar em outros sites

Fiz ai pra você LEMBRANDO olha até ali embaixo o DeEquip é importante na xml.

local config = {
    tempo = 1,
    items = {11384} -- ITEM QUE VAI 
}

function MagicBuff(cid, tempo, item)

if (isCreature(cid) == FALSE) then
return false
end

if getPlayerStorageValue(cid, 192388) < 1 then
return TRUE
end

local position256 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
doSendMagicEffect(position256, 228)
return addEvent(MagicBuff, config.tempo * 1000, cid)
end

function onEquip(cid, item)
if isInArray(config.items, item.itemid) then
if getPlayerStorageValue(cid, 192388) < 1 then
setPlayerStorageValue(cid, 192388, 1)
return addEvent(MagicBuff, config.tempo * 1000, cid)
end
end
return TRUE
end

function onDeEquip(cid, item)
if isInArray(config.items, item.itemid) then
setPlayerStorageValue(cid, 192388, 0)
end
return TRUE
end

Movements.xml eu fiz com um ring

<movevent type="Equip" itemid="11384" slot="ring" event="script" value="itembuff.lua"/>
<movevent type="DeEquip" itemid="11384" slot="ring" event="script" value="itembuff.lua"/>

Esse quando desloga, você tem q tirar e colocar o item de novo pra o efeito funcionar

 

 

E quanto aos atributos, o Suicide já falou é só você seguir.

 

 

Se a sprite do seu buff ficar torta é só mexer nessa linha tira o +1 é por que meu buff precisava ser direcionado aqui.

{x=getPlayerPosition(cid).x+1
Editado por leonardobo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

local position256 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}

doSendMagicEffect(position256, 228)

Simplifique, use a função getCreaturePosition(cid) dentro dos parâmetros da outra função. Ela já retorna os valores de x, y, z da posição do uid, evitando códigos desnecessários..

Estou sem tempo, quando der eu refaço o script e edito aqui.

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

leonardobo a script fico muito boa mais tem como colocar pra ao mentar dentro ML e velocidade pfv ?

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

Ajudei Rep+ :D

Link para o post
Compartilhar em outros sites

Simplifique, use a função getCreaturePosition(cid) dentro dos parâmetros da outra função. Ela já retorna os valores de x, y, z da posição do uid, evitando códigos desnecessários..

Estou sem tempo, quando der eu refaço o script e edito aqui.

Amigão getCreaturePosition, pode ser bom mas não simplifica nada é a mesma coisa só que a sprite q eu usei é torta e ela não ajeita a sprite por isso tive que manusear.

 

 

 

leonardobo a script fico muito boa mais tem como colocar pra ao mentar dentro ML e velocidade pfv ?

Mano eu tentei adicionar uma condition no item mas não deu em nada, pro seu item pegar ml la nos item.xml voce teria que adicionar em Movements.

 

Só que ai seria Duplicate, e eu não sei um modo de adicionar Magic Level e Speed no seu item por que a condition não funcionou aqui vou tentar novamente e trago respostas.

Link para o post
Compartilhar em outros sites

pode ser bom mas não simplifica nada é a mesma coisa

Só pelo fato de ser a mesma coisa, já significa que utilizando-a vai simplificar.

Keep it simple, stupid.

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Alguem poderia fazer isso pra mim pfv colocar pra aumentar velocidade e Ml na script dele ?

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

Ajudei Rep+ :D

Link para o post
Compartilhar em outros sites

Ai mano testei e funciono aqui perfeitamente segue exatamente oque eu vou passar ;D.

 

Em data/movements/itembuff.lua coloque esse codigo:

local config = {
    tempo = 1,
    items = {11384} -- ITEM QUE VAI SAIR O EFEITO
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 50)

function MagicBuff(cid, tempo, item)
    if (isCreature(cid) == FALSE) then
        return false
    end

    if getPlayerStorageValue(cid, 19238) < 1 then
        return true
    end

    local position256 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
    
    doSendMagicEffect(position256, 228)
    return addEvent(MagicBuff, config.tempo * 1000, cid)
end

function onEquip(cid, item)
    if isInArray(config.items, item.itemid) then
        if getPlayerStorageValue(cid, 19238) < 1 then		
	        doChangeSpeed(cid, getCreatureSpeed(cid) + 50)
	        doAddCondition(cid, condition)            
            setPlayerStorageValue(cid, 19238, 1)
            return addEvent(MagicBuff, config.tempo * 1000, cid)
        end
    end
    return TRUE
end

function onDeEquip(cid, item)
    if isInArray(config.items, item.itemid) then
		doChangeSpeed(cid, getCreatureSpeed(cid) - 50)
	    doRemoveCondition(cid, CONDITION_ATTRIBUTES)  
        setPlayerStorageValue(cid, 19238, 0)
    end
    return TRUE
end

Agora em data/creaturescripts/ CRIE Um arquivo chamado itembuff.lua e coloque o seguinte código:

local config = {
    tempo = 1,
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 50)

function MagicBuff(cid, tempo, item)
    if (isCreature(cid) == FALSE) then
        return false
    end

    if getPlayerStorageValue(cid, 19238) < 1 then
        return true
    end

    local position256 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
    
    doSendMagicEffect(position256, 228)
    return addEvent(MagicBuff, config.tempo * 1000, cid)
end

function onLogin(cid)
    if getPlayerStorageValue(cid, 19238) >= 1 then
	        doChangeSpeed(cid, getCreatureSpeed(cid) + 50)
	        doAddCondition(cid, condition)       
        return addEvent(MagicBuff, config.tempo * 1000, cid)
    end
    return TRUE
end

Vá em data/creaturescripts em creaturescripts.xml adiciona a seguinte linha:

<event type="login" name="ItemBuff" event="script" value="itembuff.lua"/>

em data/creaturescripts vá em login.lua e registra o seguinte evento:

registerCreatureEvent(cid, "ItemBuff")

Esse script está funcionando da seguinte forma:

Voce equipa ele vai dar o efeito,ml e speed quando tirar vai remover os atributos, quando deslogar com o item e logar vai loga com a ml,speed e efeito seja feliz amigo demorei mas consegui.

Editado por leonardobo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Ai mano testei e funciono aqui perfeitamente segue exatamente oque eu vou passar ;D.

 

Em data/movements/itembuff.lua coloque esse codigo:

local config = {
    tempo = 1,
    items = {11384} -- ITEM QUE VAI SAIR O EFEITO
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 50)

function MagicBuff(cid, tempo, item)
    if (isCreature(cid) == FALSE) then
        return false
    end

    if getPlayerStorageValue(cid, 19238) < 1 then
        return true
    end

    local position256 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
    
    doSendMagicEffect(position256, 228)
    return addEvent(MagicBuff, config.tempo * 1000, cid)
end

function onEquip(cid, item)
    if isInArray(config.items, item.itemid) then
        if getPlayerStorageValue(cid, 19238) < 1 then		
	        doChangeSpeed(cid, getCreatureSpeed(cid) + 50)
	        doAddCondition(cid, condition)            
            setPlayerStorageValue(cid, 19238, 1)
            return addEvent(MagicBuff, config.tempo * 1000, cid)
        end
    end
    return TRUE
end

function onDeEquip(cid, item)
    if isInArray(config.items, item.itemid) then
		doChangeSpeed(cid, getCreatureSpeed(cid) - 50)
	    doRemoveCondition(cid, CONDITION_ATTRIBUTES)  
        setPlayerStorageValue(cid, 19238, 0)
    end
    return TRUE
end

Agora em data/creaturescripts/ CRIE Um arquivo chamado itembuff.lua e coloque o seguinte código:

local config = {
    tempo = 1,
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 50)

function MagicBuff(cid, tempo, item)
    if (isCreature(cid) == FALSE) then
        return false
    end

    if getPlayerStorageValue(cid, 19238) < 1 then
        return true
    end

    local position256 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
    
    doSendMagicEffect(position256, 228)
    return addEvent(MagicBuff, config.tempo * 1000, cid)
end

function onLogin(cid)
    if getPlayerStorageValue(cid, 19238) >= 1 then
	        doChangeSpeed(cid, getCreatureSpeed(cid) + 50)
	        doAddCondition(cid, condition)       
        return addEvent(MagicBuff, config.tempo * 1000, cid)
    end
    return TRUE
end

Vá em data/creaturescripts em creaturescripts.xml adiciona a seguinte linha:

<event type="login" name="ItemBuff" event="script" value="itembuff.lua"/>

em data/creaturescripts vá em login.lua e registra o seguinte evento:

registerCreatureEvent(cid, "ItemBuff")

Esse script está funcionando da seguinte forma:

Voce equipa ele vai dar o efeito,ml e speed quando tirar vai remover os atributos, quando deslogar com o item e logar vai loga com a ml,speed e efeito seja feliz amigo demorei mas consegui.

Além de ter copiado os códigos de um outro script meu e nem sequer ter editado os valores dos atributos da condição dada ao uid, ainda faz um creature script sem noção e com callback de login registrando creature event (?!). Pô, cara..

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

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Sim,  eu copiei para facilitar é verdade mas está funcionando, se está achando ruim por que não fez da forma desejada do membro, cara fica quieto meu deus pode ta do jeito que tiver o script funcionando é o que vale na minha opinião, obrigado e tenha um bom dia !

 

 

 

 

 

O Meu esta funcionando da devida forma e o seu Gonna cry ?

Editado por leonardobo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Não que esteja ruim, não. Não foi por isso que eu citei, mas você copiar algo e nem sequer citar sobre o desenvolvedor é plágio.
Tá certo, haja como quiser.

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Tá bom, mestre da arte do CTRL+C/CTRL+V.
Enfim, não vou discutir com criança.


@avalax
Apropriei o script:

local tab = {
	effect = {55, 1000}, --  {magicEffectNumber, delay em milissegundos}
	stor = 54321 -- storage
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 30)

function effectOnEquip(cid)
	if not isCreature(cid) then return false end
		if getPlayerStorageValue(cid, tab.stor) < 1 then return false end
	doSendMagicEffect(getThingPos(cid), tab.effect[1])
	return addEvent(effectOnEquip, tab.effect[2] * 1000, cid)
end

function onEquip(cid, item)
	if getPlayerStorageValue(cid, tab.stor) < 1 then
		setPlayerStorageValue(cid, tab.stor, 1)
		doChangeSpeed(cid, getCreatureSpeed(cid) + 30)
		doAddCondition(cid, condition)
		return addEvent(effectOnEquip, tab.effect[2] * 1000, cid)
	end
	return true
end

function onDeEquip(cid, item)
	setPlayerStorageValue(cid, tab.stor, -1)
	doChangeSpeed(cid, getCreatureSpeed(cid) - 30)
	doRemoveCondition(cid, CONDITION_ATTRIBUTES)
	return true
end




Só pra garantir que o player fique com a storage negativa ao morrer/fazer logout:

itembuff.lua (data/creaturescripts/scripts):

local item, stor = 1234, 54321 -- itemID, storage

function onPrepareDeath(cid)
    if getPlayerStorageValue(cid, stor) > 0 then
        setPlayerStorageValue(cid, stor, -1)
        if isContainer(getPlayerSlotItem(cid, 3).uid) then
            doRemovePlayerItem(cid, item, 1)
            doAddContainerItem(getPlayerSlotItem(cid, 3).uid, item, 1)
        end
    end
    return true
end

function onLogout(cid)
    if getPlayerStorageValue(cid, stor) > 0 then
        setPlayerStorageValue(cid, stor, -1)
        if isContainer(getPlayerSlotItem(cid, 3).uid) then
            doRemovePlayerItem(cid, item, 1)
            doAddContainerItem(getPlayerSlotItem(cid, 3).uid, item, 1)
        end
    end
    return true
end

PS: a storage usado no creature script tem de ser a mesma do movement script.




Tag - creaturescripts.xml (data/creaturescripts):

<event type="preparedeath" name="ItemBuffPD" event="script" value="itembuff.lua"/>
<event type="logout" name="ItemBuffLO" event="script" value="itembuff.lua"/>

 


Adicione o registro do creature event (preparedeath) em login.lua (data/creaturescripts/scripts):

registerCreatureEvent(cid, "ItemBuffPD")

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo