Ir para conteúdo
  • 0

ajuda com script de spell


leandrozera

Pergunta

olá galerinha do Xtibia gostaria de saber como faço para por quando player não tiver ml para usar tal magia usar a forma

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

em vez de

 

sendCancel("You do not have enough magic level.");

 

 

nessa magia aqui no caso

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)
    return doCombat(cid, combat, var)
end
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

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

 

Link para o comentário
Compartilhar em outros sites

  • 0

tente

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)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml x para usar essa magia!.")
    return doCombat(cid, combat, var)
end
Link para o comentário
Compartilhar em outros sites

  • 0

 

tente

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)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml x para usar essa magia!.")
    return doCombat(cid, combat, var)
end

dessa forma se ele não tiver ml continua usando função

sendCancel("You do not have enough magic level.");

caso tenha ele tenha ml vai apenas executar magia normalmente + mensagem em

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml x para usar essa magia!.")
Link para o comentário
Compartilhar em outros sites

  • 0

foi mal msm pensei merda na hora.

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 ml = 100 --- QUANTO DE ML VAI PRECISAR

if getPlayerMagLevel(cid) == ml then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml x para usar essa magia!.")
    return doCombat(cid, combat, var)
end
end

edita o ml na linha ali e poem no spells.xml também

Link para o comentário
Compartilhar em outros sites

  • 0

foi mal msm pensei merda na hora.

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 ml = 100 --- QUANTO DE ML VAI PRECISAR

if getPlayerMagLevel(cid) == ml then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml x para usar essa magia!.")
    return doCombat(cid, combat, var)
end
end

edita o ml na linha ali e poem no spells.xml também

não apareceu nem um erro no console mais também não esta aparecendo nem uma mensagem quando mando spell

Link para o comentário
Compartilhar em outros sites

  • 0


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 ml = 100 --- QUANTO DE ML VAI PRECISAR

 

if getPlayerMagLevel(cid) == ml then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "")

else

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

return doCombat(cid, combat, var)

end

end

 

Link para o comentário
Compartilhar em outros sites

  • 0
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 ml = 100 --- QUANTO DE ML VAI PRECISAR

if getPlayerMagLevel(cid) == ml then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml x para usar essa magia!.")
    return doCombat(cid, combat, var)
end
end

agora aparece mensagem "você precisa ter ml x para usar essa magia!." + mensagem do nome da spell e gasta a mana se player n tiver magic level

Link para o comentário
Compartilhar em outros sites

  • 0

agora aparece mensagem "você precisa ter ml x para usar essa magia!." + mensagem do nome da spell e gasta a mana se player n tiver magic level

Tente 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
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
		return false
	else
		return doCombat(cid, combat, var)
	end
end
Link para o comentário
Compartilhar em outros sites

  • 0


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 ml = 100 --- QUANTO DE ML VAI PRECISAR

 

if getPlayerMagLevel(cid) == ml then

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

return doCombat(cid, combat, var)

end

end

 

Link para o comentário
Compartilhar em outros sites

  • 0

 

Tente 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
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
		return false
	else
		return doCombat(cid, combat, var)
	end
end

 

v5uJ14u.png

dessa forma agora deu certo só que player fica apertando hotkay sem parar n tem exhausted isso pode lagar o server, poderia colocar um magicefect tb, constpoft?

Editado por leandrozera
Link para o comentário
Compartilhar em outros sites

  • 0

com exhaust

local ml = 100 --- QUANTO DE ML VAI PRECISAR
local exhastor = 5 --- Segundos de exhaust

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 exhaustion.check(cid, exhastor) then
return true
end
	if getPlayerMagLevel(cid) < ml then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
		return false
	else
		return doCombat(cid, combat, var)
	end
end
Link para o comentário
Compartilhar em outros sites

  • 0

dessa forma agora deu certo só que player fica apertando hotkay sem parar n tem exhausted isso pode lagar o server, poderia colocar um magicefect tb, constpoft?

Segue:

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)
	if getPlayerMagLevel(cid) < ml then
		if getPlayerStorageValue(tid, storage) < os.time() then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
			setPlayerStorageValue(tid, storage, os.time() + seconds)
		end
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
		return false
	else
		return doCombat(cid, combat, var)
	end
end
Link para o comentário
Compartilhar em outros sites

  • 0

 

com exhaust

local ml = 100 --- QUANTO DE ML VAI PRECISAR
local exhastor = 5 --- Segundos de exhaust

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 exhaustion.check(cid, exhastor) then
return true
end
	if getPlayerMagLevel(cid) < ml then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
		return false
	else
		return doCombat(cid, combat, var)
	end
end

ainda fico do mesmo jeito amigo

Segue:

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)
	if getPlayerMagLevel(cid) < ml then
		if getPlayerStorageValue(tid, storage) < os.time() then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa ter ml " .. ml .. " para usar essa magia!.")
			setPlayerStorageValue(tid, storage, os.time() + seconds)
		end
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
		return false
	else
		return doCombat(cid, combat, var)
	end
end
[5/8/2015 9:25:44] [Error - Spell Interface] 
[5/8/2015 9:25:45] data/spells/scripts/magias/super exevo mas mort.lua:onCastSpell
[5/8/2015 9:25:45] Description: 
[5/8/2015 9:25:45] data/spells/scripts/magias/super exevo mas mort.lua:24: attempt to compare boolean with number
[5/8/2015 9:25:45] stack traceback:
[5/8/2015 9:25:45] 	data/spells/scripts/magias/super exevo mas mort.lua:24: in function <data/spells/scripts/pbot/super exevo mas mort.lua:22>

Link para o comentário
Compartilhar em outros sites

  • 0

 

[5/8/2015 9:25:44] [Error - Spell Interface] 
[5/8/2015 9:25:45] data/spells/scripts/magias/super exevo mas mort.lua:onCastSpell
[5/8/2015 9:25:45] Description: 
[5/8/2015 9:25:45] data/spells/scripts/magias/super exevo mas mort.lua:24: attempt to compare boolean with number
[5/8/2015 9:25:45] stack traceback:
[5/8/2015 9:25:45] 	data/spells/scripts/magias/super exevo mas mort.lua:24: in function <data/spells/scripts/pbot/super exevo mas mort.lua:22>

 

Usando a função que já existe no servidor:

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)
	if getPlayerMagLevel(cid) < ml then
		if exhaustion.check(cid, storage) 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
Link para o comentário
Compartilhar em outros sites

  • 0

Usando a função que já existe no servidor:

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)
	if getPlayerMagLevel(cid) < ml then
		if exhaustion.check(cid, storage) 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

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!.")

Editado por leandrozera
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...