RO
pedido

Item que ao dar use ganhe 10 de magic level (por tempo)

Por roriscrave, 20 de out. de 2013 em Scripts

resolvido
28
4.4k
SkymagnumS
21 de outubro de 2013 às 19:50

N vai mano, se o kra loga e removido pela db.

21 de outubro de 2013 às 23:23

Eu queria um script que não precisava remover o player para retirar o skill adicionado, parece que não da, então esse ai ta de boa!


OmegaO
22 de outubro de 2013 às 00:28

N vai mano, se o kra loga e removido pela db.

 

Sim, o que eu quis dizer é que se ele logasse e depois voltasse daria problema, mas me expressei mal.

 

Eu queria um script que não precisava remover o player para retirar o skill adicionado, parece que não da, então esse ai ta de boa!

Tente esse

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerStorageValue(cid, 129381) < os.time() then
		doPlayerAddMagLevel(cid, 10)
		doSendMagicEffect(getThingPos(cid), 1)
		addEvent(removeSkill, 2 * 60 * 1000, getCreatureName(cid), SKILL__MAGLEVEL, (getPlayerMagLevel(cid) - 10), getPlayerGUID(cid))
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu +10 no skill de Magic Level durante 2 minutos.")
		setPlayerStorageValue(cid, 129381, os.time() + 2 * 60)
	else
		doPlayerSendCancel(cid, "You must wait "..getPlayerStorageValue(cid, 129381) - os.time().." seconds before you can use this again.")
	end
	return true
end

function removeSkill(name, skill, amount, guid)
	local cid = getCreatureByName(name)
	if isCreature(cid) then
		doPlayerAddMagLevel(cid, -10)
	else
		db.executeQuery("UPDATE `player_skills` SET `value` = "..amount.." WHERE `player_id` = "..guid.. " AND `skillid` = "..skill..";")
	end
    return true
end

 

Editado Outubro 22 por omega blueheaven

22 de outubro de 2013 às 19:12

ômega, esse ai não ta adicionando 10 de magic level, ta adicionando apenas uma porcentagem ao magic level

ZarussZ
22 de outubro de 2013 às 19:46

 

local config = {
ml = 10,
interval = 12
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
local PZ = createConditionObject(CONDITION_INFIGHT)
setConditionParam(PZ, CONDITION_PARAM_TICKS, config.interval*10000)
local SKILL= createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(SKILL, CONDITION_PARAM_STAT_MAGICLEVEL, config.ml)

if getCreatureCondition(cid, CONDITION_ATTRIBUTES) then
doPlayerSendCancel(cid,"seu magic level aumentou 10!")
else
doAddCondition(cid, PZ)
doAddCondition(cid, SKILL)
addEvent(magicadd, 1000, cid, config.interval*10)
doRemoveItem(item.uid, 1)
end
return TRUE
end 


function magicadd(tid, rep)
local nb = getCreaturePosition(tid) 
rep = rep - 1
if rep > 0 then
addEvent(magicadd, 1000, tid, rep)
doSendMagicEffect(nb,31)
doPlayerSendCancel(tid,"Seu magic level ira descer em "..rep.." segundos." )
end
end 

 

Peguei um script do Adriano swatt e modifiquei n sei se vai funcionar pois nao sou bom em scripts.

alissonfgpA
23 de outubro de 2013 às 17:05

caso o dele n funcione...
se der erro reporta

 

actions.xml

    <action itemid="ITEMX" event="script" value="addml.lua"/>

addml.lua

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 60000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 10)

function onUse(cid, item, frompos, item2, topos)
if getPlayerStorageValue(cid, 750) < os.time() then
if(isInArray({1,5,2,6}, getPlayerVocation(cid)) == TRUE) then--vocaçoes
var = numberToVariant(cid)
doTargetCombatCondition(0, cid, condition, CONST_ME_MAGIC_RED)
setPlayerStorageValue(cid, 750, os.time() + 2 * 60)
else
doPlayerSendCancel(cid, "Voce precisa esperar "..getPlayerStorageValue(cid, 750) - os.time().." segundos antes de usar isso novamente.")
end
end
return true
end

Editado Outubro 23 por alissonfgp

23 de outubro de 2013 às 20:25

Alisson, o jogador da use e ganha 10 de magic, so que ao dar use novamente não aparece a mensagem negando:

doPlayerSendCancel(cid, "Voce precisa esperar "..getPlayerStorageValue(cid, 750) - os.time().." segundos antes de usar isso novamente.")

além disso a storage (750) não esta zerando, ou seja ele so pode usar 1x

alissonfgpA
23 de outubro de 2013 às 21:52

testa esse...

 

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 120000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 10)

local config = {
exhausttime = 1200, -- time in seconds
exhaustion = 760
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(exhaustion.check(cid, 760) == false) then
    if(isInArray({1,5,2,6}, getPlayerVocation(cid)) == TRUE) then--vocaçoes
        var = numberToVariant(cid)
        doTargetCombatCondition(0, cid, condition, CONST_ME_MAGIC_RED)
        doCreatureSay(cid, "Agora voce so pode usar este item apos 2 minutos.", TALKTYPE_ORANGE_1)
        exhaustion.set(cid, 760, 120)
        end
    end
    return true
end
24 de outubro de 2013 às 15:23

agora quando da use não acontece nada, não da erro, não da magic level, nem aparece msg alguma

OneshotO
24 de outubro de 2013 às 16:03

Um monte de gente tentou, tentou e não resolveu o pedido do cara.

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_SUBID, 101)

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 101) then
		return doPlayerSendCancel(cid, "Você já usou o item, aguarde o efeito acabar.")
	end
	
	doSendMagicEffect(fromPosition, CONST_ME_MAGIC_GREEN)
	return doAddCondition(cid, condition)
end

Sério, hilário, um corrigindo o outro e fazendo a mesma cagada de usar querys num bagulho desse (HUE HUE) icon_lol.gif

Editado Outubro 24 por Oneshot

24 de outubro de 2013 às 16:22

@Oneshot funcionou certinho, vou dar rep pra todos que ajudaram, vlw ae!

LumusL
24 de outubro de 2013 às 16:51

Dúvida sanada, reportado para que movam.

RoksasR
24 de outubro de 2013 às 18:27

Tópico movido para a seção de dúvidas e pedidos resolvidos.