Ir para conteúdo

Mega War's Spirit Gems


Oneshot

Posts Recomendados

Nome: Mega War's Spirit Gems

Tipo: Action

Autor: Oneshot

 

 

Grande Éks.

 

Uma coisa que eu adoro fazer quando estou sem nada para fazer õ_o É reproduzir sistemas de servidores/projetos famosos para testar atÉ onde posso chegar com a programação Lua.

 

Notei que muita gente cobiça pelo sistema de Spirit Gems do servidor Mega War, então eu resolvi criar uma rÉplica não tão fiel desse sistema com base no que há disponível no site deles. Lá diz que são itens que adicionam certos atributos por tempo.

 

Como eu achei muito simples, eu adicionei algumas frescurinhas, um efeito mágico sendo enviado enquanto os atributos que o item dá durarem.

 

O sistema está bem fácil de configurar e intuitivo e isso É o que importa. Vamos lá.

 

 

Abra seu arquivo items.xml e procure por isto:

 

<item id="2153" article="a" name="violet gem">
	<attribute key="weight" value="30">
</item>
<item id="2154" article="a" name="yellow gem">
	<attribute key="weight" value="30">
</item>

 

Substitua por isso:

 

<item id="2153" article="a" name="knight spirit gem">
	<attribute key="description" value="Free the strongest medieval warrior's spirit that is inside you. (Melee +12%, Speed +40)">
	<attribute key="weight" value="30">
</item>
<item id="2154" article="a" name="paladin spirit gem">
	<attribute key="description" value="Free the strongest medieval archer's spirit that is inside you. (Distance +12%, Speed +40)">
	<attribute key="weight" value="30">
   </item>

 

Mais uma vez, procure por isso:

 

<item id="2156" article="a" name="red gem">
	<attribute key="weight" value="30">
</item>
<item id="2157" article="a" name="gold nugget" plural="gold nuggets">
	<attribute key="weight" value="10">
   </item>
<item id="2158" article="a" name="blue gem">
	<attribute key="weight" value="100">
</item>

 

Substitua por isso:

 

<item id="2156" article="a" name="sorcerer spirit gem">
	<attribute key="description" value="Free the strongest medieval mage's spirit that is inside you. (Magic +12%, Speed +40)">
	<attribute key="weight" value="30">
</item>
<item id="2157" article="a" name="gold nugget" plural="gold nuggets">
	<attribute key="weight" value="10">
   </item>
<item id="2158" article="a" name="druid spirit gem">
	<attribute key="description" value="Free the strongest medieval mage's spirit that is inside you. (Magic +12%, Speed +40)">
	<attribute key="weight" value="100">
</item>

 

Agora, crie um arquivo chamado gems.lua na pasta data/actions/scripts e adicione isso:

 

local GemsConfig = {
[2153] = {
	vocations = {4, 8},
	effect = CONST_ME_EXPLOSIONAREA,
	conditions = {		
		[CONDITION_ATTRIBUTES] = {
			[CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000,
			[CONDITION_PARAM_SKILL_MELEEPERCENT] = 112,
			[CONDITION_PARAM_BUFF] = true,
			[CONDITION_PARAM_SUBID] = 200
		},
		[CONDITION_HASTE] = {
			[CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000,
			[CONDITION_PARAM_SPEED] = 40
		}
	}
},
[2154] = {
	vocations = {3, 7},
	effect = CONST_ME_HOLYDAMAGE,
	conditions = {
		[CONDITION_ATTRIBUTES] = {
			[CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000,
			[CONDITION_PARAM_SKILL_DISTANCEPERCENT] = 112,
			[CONDITION_PARAM_BUFF] = true,
			[CONDITION_PARAM_SUBID] = 200
		},
		[CONDITION_HASTE] = {
			[CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000,
			[CONDITION_PARAM_SPEED] = 40
		}
	}
},
[2156] = {
	vocations = {1, 5},
	effect = CONST_ME_MORTAREA,
	conditions = {
		[CONDITION_ATTRIBUTES] = {
			[CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000,
			[CONDITION_PARAM_STAT_MAGICLEVELPERCENT] = 112,
			[CONDITION_PARAM_BUFF] = true,
			[CONDITION_PARAM_SUBID] = 200
		},
		[CONDITION_HASTE] = {
			[CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000,
			[CONDITION_PARAM_SPEED] = 40
		}
	}
},
[2158] = {
	vocations = {2, 6},
	effect = CONST_ME_SMALLPLANTS,
	conditions = {
		[CONDITION_ATTRIBUTES] = {
			[CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000,
			[CONDITION_PARAM_STAT_MAGICLEVELPERCENT] = 112,
			[CONDITION_PARAM_BUFF] = true,
			[CONDITION_PARAM_SUBID] = 200
		},
		[CONDITION_HASTE] = {
			[CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000,
			[CONDITION_PARAM_SPEED] = 40
		}
	}
}
}

local Conditions = {}

for itemid, info in pairs(GemsConfig) do
Conditions[itemid] = {}
for condition, parameters in pairs(info.conditions) do
	local new = createConditionObject(condition)
	for parameter, value in pairs(parameters) do
		setConditionParam(new, parameter, value)
	end
	table.insert(Conditions[itemid], new)
end
end

local function doShowGemAura(cid, type)
local position = getThingPosition(cid)
doSendMagicEffect(position, type)
if isCreature(cid) then
	if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then
		addEvent(doShowGemAura, 1 * 1000, cid, type)
	end
end

return true
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
if not GemsConfig[item.itemid] then
	return false
end

if not isInArray(GemsConfig[item.itemid].vocations, getPlayerVocation(cid)) then
	return doPlayerSendCancel(cid, "You cannot use this spirit gem.")
end

if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then
	return false
end

for _, condition in pairs(Conditions[item.itemid]) do
	doAddCondition(cid, condition)
end

doCreatureSay(cid, "AAAAH! I FEEL THE POWER!", TALKTYPE_ORANGE_1)
doSendMagicEffect(toPosition, GemsConfig[item.itemid].effect)
addEvent(doShowGemAura, 1 * 1000, cid, GemsConfig[item.itemid].effect)

doRemoveItem(item.uid, 1)

return true
end

 

Abra seu arquivo actions.xml e adicione isso:

 

<action itemid="2153;2154;2156;2158" event="script" value="gems.lua"/>

 

Caso você queria adicionar a restrição do utito tempo enquanto o efeito da spirit gem durar, abra o arquivo do utito tempo, apague tudo e coloque isso:

 

Ele normalmente está em data/spells/scripts/support.

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 10000)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEEPERCENT, 135)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, -100)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then
	return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
end
return doCombat(cid, combat, var)
end

 

 

Não sei se está 100% fiel ao sistema do Mega War, uma vez que não pagarei para provar isso.

 

Um abração.

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

Massa Oneshot, como sempre trazendo scripts muito bons.

Bom trabalho, conseguiu meu REP!

 

A simplicidade de seus scripts são impressionantes!

Abraço!

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

back.pngO Script Ficou Dahora Mais Poderia Ficar Melhor Se Coloca-se O Efeito Da Gem System Original E Tira-se O Efeito Que Ta Configurado No Script E Também Coloca-Se Pra Quando Desloga Continua O Efeito Da Gem.

Link para o comentário
Compartilhar em outros sites

Se você quiser, você pode fazer isso, disponibilizei o código justamente para ser estudado e editado a gosto. O meu sistema permanecerá assim.

 

Um grande abraço.

 

IRONIA

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

Se você quiser, você pode fazer isso, disponibilizei o código justamente para ser estudado e editado a gosto. O meu sistema permanecerá assim.

 

Um grande abraço.

 

IRONIA

 

 

back.pngBem Que Eu Gostaria De Fazer Só Que Não Sei Nada De Script :D

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...