Fiz o script, mas por falta de atenção minha, eu fiz de um jeito diferente do que você pediu .. rs' Só 1 min.. Vou modifica-lo.
@edit !
Bem, aqui voltamos nós.. rsrsrs'
A primeira configuração, é opcional, mas acho que seria uma boa ... Uma boa mesmo ! "Para o System que tu quer" ... Tanto que fiz. rsrs'
Bem, o primeiro System, é de o player receber mensagens ao ele chegar em X level, onde ele já possa comprar X magia.
Assim:
Bom.. Vamos lá, caso queira essa mensagenzinha, vá em: data/creaturescripts/creaturescript.xml e cole a
Tag:
<event type="advance" name="AdvanceLevel" event="script" value="checarlevel.lua"/>
Registre-a no login.lua com:
registerCreatureEvent(cid, "AdvanceLevel")
Ainda em data/creaturescripts vá em /scripts e copie um arquivo.lua qualquer, cole lá mesmo e renomeie para: "checarlevel"
Logo em seguida, isso dentro:
local config = {
levelgrupos = {grupo1 = 60, grupo2 = 100},
magiasgrupo1 = {magia1 = "exevo gran mas vis", magia2 = "exevo gran mas flam"},
magiasgrupo2 = {magia1 = "exevo gran mas mort", magia2 = "exevo gran mas san"}
}
function onAdvance(cid, skill, oldLevel, newLevel)
if getPlayerLevel(cid) == config.levelgrupos.grupo1 then
return doPlayerSendTextMessage(cid, 27, "Parabéns, você atingiu ao level ["..getPlayerLevel(cid).."] e ingressou ao Group1 ! Agora você pode obeter a ["..config.magiasgrupo1.magia1.."] ou ["..config.magiasgrupo1.magia2.."], utilize o comando !buysupreme+nomemagia para compra-la. Ex: !buysupreme "..config.magiasgrupo1.magia1..". Para mais informações, utilize o comando !buysupreme")
end
if getPlayerLevel(cid) == config.levelgrupos.grupo2 then
return doPlayerSendTextMessage(cid, 27, "Você chegou ao level ["..getPlayerLevel(cid).."] e recebeu as opções de compra das supremes magias ["..config.magiasgrupo2.magia1.."] ou ["..config.magiasgrupo2.magia2.."], utilize o comando !buysupreme+nome magia para compra-la. Ex: !buysupreme "..config.magiasgrupo2.magia1..". Para mais informações, utilize o comando !buysupreme")
end
return true
end
Agora, mudando de rumo, vamos à: data/talkactions/talkactions.xml e colocar:
<talkaction log="yes" words="!buysupreme" event="script" value="buyspells.lua"/>
Depois, vamos em talkactions/scripts e copiar um qualquer lá, renomear para "buyspells" e colcar isso dentro:
local config = {
levelgroup1 = 60, --Level Group1.
levelgroup2 = 100, --Level Group2.
magiasgroup1 = {magia1 = "exevo gran mas vis", magia2 = "exevo gran mas flam", storage = 465412}, --Magias Grupo 1. Lembrete: Você pode adicionar mais magias, se souber..
magiasgroup2 = {magia1 = "exevo gran mas mort", magia2 = "exevo gran mas san", storage = 456422}, --Magias Grupo 2. Lembrete: Você pode adicionar mais magias, se souber..
moneymagiasgroup1 = 20000, --Quanto vai Custar cada Magia do Grupo 1.
moneymagiasgroup2 = 40000, --Quanto vai Custar cada Magia do Grupo 2.
}
function onSay(cid, words, param)
if param == '' then
local str = ("SUPREME SPELLS:\n\n[Group 1] (Level "..config.levelgroup1.."): "..config.moneymagiasgroup1.." golds\n"..config.magiasgroup1.magia1.."\n"..config.magiasgroup1.magia2.."\n------------------------\n[Group 2] (Level "..config.levelgroup2.."): "..config.moneymagiasgroup2.." golds\n"..config.magiasgroup2.magia1.."\n"..config.magiasgroup2.magia2.."\n------------------------\n")
doShowTextDialog(cid, 1821, str)
return true
end
if param == config.magiasgroup1.magia1 then
if getPlayerStorageValue(cid, config.magiasgroup1.storage) == 1 then
return doPlayerSendTextMessage(cid, 27, "Você já comprou magias deste grupo.")
end
if getPlayerLevel(cid) >= config.levelgroup1 then
if doPlayerRemoveMoney(cid, config.moneymagiasgroup1) then
doPlayerSendTextMessage(cid,27, "Parabéééns! :V Você comprou a magia "..param..".")
setPlayerStorageValue(cid, config.magiasgroup1.storage, 1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE)
return doSendAnimatedText(getPlayerPosition(cid), "Buy Magia", 18)
else
return doPlayerSendTextMessage(cid, 27, "Você não possui dinheiro suficiente para comprar esta magia.")
end
else
return doPlayerSendTextMessage(cid, 27, "Você não possuir level suficiente para comprar esta magia. Utilize o comando !buysupreme para informações.")
end
elseif param == config.magiasgroup1.magia2 then
if getPlayerStorageValue(cid, config.magiasgroup1.storage) == 1 then
return doPlayerSendTextMessage(cid, 27, "Você já comprou magias deste grupo.")
end
if getPlayerLevel(cid) >= config.levelgroup1 then
if doPlayerRemoveMoney(cid, config.moneymagiasgroup1) then
doPlayerSendTextMessage(cid,27, "Parabéééns! :V Você comprou a magia "..param..".")
setPlayerStorageValue(cid, config.magiasgroup1.storage, 1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE)
return doSendAnimatedText(getPlayerPosition(cid), "Buy Magia", 18)
else
return doPlayerSendTextMessage(cid, 27, "Você não possui dinheiro suficiente para comprar esta magia.")
end
else
return doPlayerSendTextMessage(cid, 27, "Você não possuir level suficiente para comprar esta magia. Utilize o comando !buysupreme para informações.")
end
elseif param == config.magiasgroup2.magia1 then
if getPlayerStorageValue(cid, config.magiasgroup2.storage) == 1 then
return doPlayerSendTextMessage(cid, 27, "Você já comprou magias deste grupo.")
end
if getPlayerLevel(cid) >= config.levelgroup2 then
if doPlayerRemoveMoney(cid, config.moneymagiasgroup2) then
doPlayerSendTextMessage(cid,27, "Parabéééns! :V Você comprou a magia "..param..".")
setPlayerStorageValue(cid, config.magiasgroup2.storage, 1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE)
return doSendAnimatedText(getPlayerPosition(cid), "Buy Magia", 18)
else
return doPlayerSendTextMessage(cid, 27, "Você não possui dinheiro suficiente para comprar esta magia.")
end
else
return doPlayerSendTextMessage(cid, 27, "Você não possui level suficiente para comprar esta magia.")
end
elseif param == config.magiasgroup2.magia2 then
if getPlayerStorageValue(cid, config.magiasgroup2.storage) == 1 then
return doPlayerSendTextMessage(cid, 27, "Você já comprou magias deste grupo.")
end
if getPlayerLevel(cid) >= config.levelgroup2 then
if doPlayerRemoveMoney(cid, config.moneymagiasgroup2) then
doPlayerSendTextMessage(cid,27, "Parabéééns! :V Você comprou a magia "..param..".")
setPlayerStorageValue(cid, config.magiasgroup2.storage, 1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE)
return doSendAnimatedText(getPlayerPosition(cid), "Buy Magia", 18)
else
return doPlayerSendTextMessage(cid, 27, "Você não possui dinheiro suficiente para comprar esta magia.")
end
else
return doPlayerSendTextMessage(cid, 27, "Você não possui level suficiente para comprar esta magia.")
end
else
doPlayerSendTextMessage(cid, 27, "Esta magia não faz parte de nenhum grupo, utilize o comando: !buysupreme para informações.")
end
return true
end
Ps: lá em cima, é a configuração.
Dá para colocar mais spells, se você entender de scripts.. O script ficou meio grande, pois você queria algo configurável .. Certo? kk'
Enfim, vou dá um exemplo de spell aqui:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.5, -30, -120.1, 0)
local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 22000)
setConditionFormula(condition, -1.1, -1, -1.2, -1)
setCombatCondition(combat, condition)
local arr = {
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}
local area = createCombatArea(arr)
setCombatArea(combat, area)
function onCastSpell(cid, var)
if (getPlayerStorageValue(cid, 465412) == 1) then
doCombat(cid, combat, var)
return doCreatureSay(cid, "Exevo Gram Mas Vis", TALKTYPE_ORANGE_1)
else
doPlayerSendCancel(cid,"Você precisa de level 60 e precisa ter comprado esta magia.")
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
return true
end
Você vai me achar um mongol e me perguntar, "porque ele tá deixando essa spelll aq???" Bom, é para você ver um exemplo de:
if (getPlayerStorageValue(cid, 465412) == 1) then
Ele checa se o player tem a storage "465412" se sim, ele faz executar a spell, se não, ele volta uma mensagem... ONDE O PLAYER GANHA ESSA STORAGE? Ham ? Ham ? Bom, lá no talkactions, você vai ver que na parte de:
magiasgroup1 = {magia1 = "exevo gran mas vis", magia2 = "exevo gran mas flam", storage = 465412},
Ele envia essa storage para o player, quando o player compra a spell pelo comando...
Mais especificamente dizendo:
setPlayerStorageValue(cid, config.magiasgroup1.storage, 1)
:V
Era pra ser um comando, eu acabei criando um system .. hahaha'
Mais uma coisinha, se você usar o comando "!buysupreme" sem ter nada na frente, ele abre um popup, assim:
De acordo com as configurações que você fizer no local config.
Bom, testa aí, dps responde aí em baixo, aqui funcionou perfeitamente.. :V
(Se não souber adicionar mais spells no script, comenta aí.. Que eu ou alguém adc pra você.. rs')
Flw!