LE
dúvida

ajuda com script de spell

Por leandrozera, 05 de ago. de 2015 em Scripts

otserv
22
3.1k
BrunoB
05 de agosto de 2015 às 10:03

CONST_ME_POFF agora deu certo so não esta mostrando mensagem

 

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")

local ml = 100 --- QUANTO DE ML VAI PRECISAR
local storage = 99488 -- STORAGE PARA CONTROLAR O EXAUST
local seconds = 60 -- TEMPO EM SEGUNDOS PARA REPETIR A MENSAGEM

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -60.0, -30, -50.0, 90)

local arr = {
	{0, 1, 0},
	{0, 1, 0},
	{0, 1, 0}
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	local exhaust = getPlayerStorageValue(cid, storage)
	local left = exhaust - os.time()
	if getPlayerMagLevel(cid) < ml then
		if left > 0 then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
			setPlayerStorageValue(cid, storage, os.time() + seconds)
		end
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
		return false
	else
		return doCombat(cid, combat, var)
	end
end
leandrozeraL
05 de agosto de 2015 às 10:49

só aparece efeito CONST_ME_POFF mensagem não aparece

 

p4QRHHY.png

BrunoB
05 de agosto de 2015 às 11:13

só aparece efeito CONST_ME_POFF mensagem não aparece

 

p4QRHHY.png

Man, se a intenção é não causar lag, você pode usar assim:

 

local ml = 100 --- QUANTO DE ML VAI PRECISAR

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -60.0, -30, -50.0, 90)

local arr = {
	{0, 1, 0},
	{0, 1, 0},
	{0, 1, 0}
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	if getPlayerMagLevel(cid) < ml then
		doPlayerSendCancel(cid, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
		return false
	else
		return doCombat(cid, combat, var)
	end
end

 

leandrozeraL
05 de agosto de 2015 às 11:21

Man, se a intenção é não causar lag, você pode usar assim:

 

 

local ml = 100 --- QUANTO DE ML VAI PRECISAR

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -60.0, -30, -50.0, 90)

local arr = {
	{0, 1, 0},
	{0, 1, 0},
	{0, 1, 0}
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	if getPlayerMagLevel(cid) < ml then
		doPlayerSendCancel(cid, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
		return false
	else
		return doCombat(cid, combat, var)
	end
end

 

mais assim não aparece mensagem so efeito CONST_ME_POFF

BrunoB
05 de agosto de 2015 às 11:25

mais assim não aparece mensagem so efeito CONST_ME_POFF

Está no spoiler o script...eu refiz de uma outra forma, usando o doPlayerSendCancel, que é o padrão para o "Sorry, not possible", "You're full", dentre outros.

Segue novamente:

 

local ml = 100 --- QUANTO DE ML VAI PRECISAR

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -60.0, -30, -50.0, 90)

local arr = {
	{0, 1, 0},
	{0, 1, 0},
	{0, 1, 0}
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	if getPlayerMagLevel(cid) < ml then
		doPlayerSendCancel(cid, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
		return false
	else
		return doCombat(cid, combat, var)
	end
end
leandrozeraL
05 de agosto de 2015 às 11:36

assim fica do modo normal preciso em

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")

 

 

se player ficar dando spam no default da muted nele

BrunoB
05 de agosto de 2015 às 11:45
Melhor resposta

assim fica do modo normal preciso em

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")

 

 

se player ficar dando spam no default da muted nele

Tenta assim:

 

local ml = 100 --- QUANTO DE ML VAI PRECISAR
local storage = 99488 -- STORAGE PARA CONTROLAR O EXAUST
local seconds = 10 -- TEMPO EM SEGUNDOS PARA REPETIR A MENSAGEM

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -60.0, -30, -50.0, 90)

local arr = {
	{0, 1, 0},
	{0, 1, 0},
	{0, 1, 0}
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	if getPlayerMagLevel(cid) < ml then
		if exhaustion.check(cid, storage) > 0 then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
			exhaustion.set(cid, storage, seconds)
		end
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
		return false
	else
		return doCombat(cid, combat, var)
	end
end