Ir para conteúdo

Posts Recomendados

Postado

Boa noite galera. Preciso de uma ajuda, estou com um server só para brincar com os amigos e nele tem um sistema de trocar o elemento do Wand pelo comando !wand, porém ele troca o efeito somente de um wand e eu gostaria de colocar outros wands para poderem utilizar o comando e trocar o efeito também.

 

Segue o código da talkactions:

local nme = "wand"
local storage = 722656

local storages = {
	
	["ice"] = 10,
	["earth"] = 11,
	["holy"] = 12,
	["energy"] = 13,
	["cake"] = 14,
	["fire"] = 15,
	["death"] = 16

}

local effects = {
	
	[10] = {dist = CONST_ANI_ICE, hit = CONST_ME_ICEATTACK},
	[11] = {dist = CONST_ANI_EARTH, hit = CONST_ME_CARNIPHILA},
	[12] = {dist = CONST_ANI_HOLY, hit = CONST_ME_HOLYDAMAGE},
	[13] = {dist = CONST_ANI_ENERGYBALL, hit = CONST_ME_PURPLEENERGY},
	[14] = {dist = CONST_ANI_CAKE, hit = CONST_ME_CAKE},
	[15] = {dist = CONST_ANI_FIRE, hit = CONST_ME_FIREATTACK},
	[16] = {dist = CONST_ANI_SUDDENDEATH, hit = CONST_ME_MORTAREA}

}

function onSay(cid, words, param)

	if not param or param == "" then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Wand Effect] Os efeitos disponíveis para a Staff são:\n\n!wand ice\n!wand holy\n!wand energy\n!wand fire\n!wand cake\n!wand earth\n!wand death")
		return true
	end

	local value = storages[param:lower()]
	if value then
		if (isSorcerer(cid) or isDruid(cid)) and getPlayerItemCount(cid, 12288) > 0 then
			if value ~= getCreatureStorage(cid, storage) then
				if getCreatureStorage(cid, 722657) < os.time() then
					doCreatureSetStorage(cid, storage, value)
					doSendMagicEffect(getThingPos(cid), effects[value].hit)
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Wand Effect] Você alterou o efeito da sua wand para "..param:lower().."!")
					doCreatureSetStorage(cid, 722657, os.time() + 10)
				else
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Wand Effect] Aguarde um pouco antes de mudar o efeito novamente.")
					doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
				end
			else
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Wand Effect] O efeito da sua wand já está definido como "..param:lower()..".")
				doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
			end
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Wand Effect] Somente sorcerers e druid que possuam uma Staff podem setar um efeito.")
			doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Este efeito não está disponível, use !wand para ver todos os efeitos.")
		doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
	end
	return true
end

 

Postado

É mais fácil colocar o damage dessa sua wand pra escalar com level e magic level do char (assim ninguém precisa usar outra) do que deixar todas as outras no mesmo molde.

Posta o script da sua wand.

Postado
  Em 13/11/2021 em 19:06, 139 disse:

É mais fácil colocar o damage dessa sua wand pra escalar com level e magic level do char (assim ninguém precisa usar outra) do que deixar todas as outras no mesmo molde.

Posta o script da sua wand.

Expand  

 

Obrigado por responder. Mas você acha que é possível deixar para mudar o efeito em mais 2 wand? pergunto pois, queria colocar 2 quest para gente fazer e ganhar uma cada wand e cada um ser um pouco mais forte no damage.

 

Segue script do wand conforme pediu:

local min, max = 870, 1000
local storage = 722656

local function getMinDamage(level, magLevel)
	local min = ((level * 1.05) + (magLevel * 1.00))
	local naturalDamage = math.random(-30,45)
	min = min + naturalDamage
	if min < 870 then
		min = 870
	end
	return math.floor(min)
end

local function getMaxDamage(level, magLevel)
	local max = ((level * 1.05) + (magLevel * 1.00))
	local naturalDamage = math.random(-20,45)
	max = max + naturalDamage
	if max < 1000 then
		max = 1000
	end
	return math.ceil(max)
end

local effects = {
	
	[10] = {dist = CONST_ANI_ICE, hit = CONST_ME_ICEATTACK, dmg = COMBAT_ICEDAMAGE},
	[11] = {dist = CONST_ANI_EARTH, hit = CONST_ME_CARNIPHILA, dmg = COMBAT_POISONDAMAGE},
	[12] = {dist = CONST_ANI_HOLY, hit = CONST_ME_HOLYDAMAGE, dmg = COMBAT_HOLYDAMAGE},
	[13] = {dist = CONST_ANI_ENERGYBALL, hit = CONST_ME_PURPLEENERGY, dmg = COMBAT_ENERGYDAMAGE},
	[14] = {dist = CONST_ANI_CAKE, hit = CONST_ME_CAKE, dmg = COMBAT_DROWNDAMAGE},
	[15] = {dist = CONST_ANI_FIRE, hit = CONST_ME_FIREATTACK, dmg = COMBAT_FIREDAMAGE},
	[16] = {dist = CONST_ANI_SUDDENDEATH, hit = CONST_ME_MORTAREA, dmg = COMBAT_DEATHDAMAGE}

}

function onUseWeapon(cid, var)
	local level, magLevel = getPlayerLevel(cid), getPlayerMagLevel(cid)
	local min, max = getMinDamage(level, magLevel), getMaxDamage(level, magLevel)

	local sto = getCreatureStorage(cid, storage)
	if not effects[sto] then
		sto = 14;
	end
	
	local target = variantToNumber(var)
	if isCreature(target) then
		doSendDistanceShoot(getThingPos(cid), getThingPos(target), effects[sto].dist)
		doAreaCombatHealth(cid, effects[sto].dmg, getThingPos(target), 0, -min, -max, effects[sto].hit)
	end
	return true
end

 

Postado

É possível sim.
Cria duas cópias desse script aí, nomeando como copia1.lua e copia2.lua por exemplo.

Aí você abre eles e altera o dano ali no "local min, max = 870, 1000", conforme forem os danos originais das suas wands.

 

local min, max = 870, 1000
local storage = 722656

local function getMinDamage(level, magLevel)
	local min = ((level * 1.05) + (magLevel * 1.00))
	local naturalDamage = math.random(-30,45)
	min = min + naturalDamage
	if min < 870 then
		min = 870
	end
	return math.floor(min)
end

local function getMaxDamage(level, magLevel)
	local max = ((level * 1.05) + (magLevel * 1.00))
	local naturalDamage = math.random(-20,45)
	max = max + naturalDamage
	if max < 1000 then
		max = 1000
	end
	return math.ceil(max)
end


Depois é só abrir o weapons.xml e designar os scripts copia1 e copia2 pras respectivas wands.

Postado
  Em 14/11/2021 em 16:31, 139 disse:

É possível sim.
Cria duas cópias desse script aí, nomeando como copia1.lua e copia2.lua por exemplo.

Aí você abre eles e altera o dano ali no "local min, max = 870, 1000", conforme forem os danos originais das suas wands.

 

local min, max = 870, 1000
local storage = 722656

local function getMinDamage(level, magLevel)
	local min = ((level * 1.05) + (magLevel * 1.00))
	local naturalDamage = math.random(-30,45)
	min = min + naturalDamage
	if min < 870 then
		min = 870
	end
	return math.floor(min)
end

local function getMaxDamage(level, magLevel)
	local max = ((level * 1.05) + (magLevel * 1.00))
	local naturalDamage = math.random(-20,45)
	max = max + naturalDamage
	if max < 1000 then
		max = 1000
	end
	return math.ceil(max)
end


Depois é só abrir o weapons.xml e designar os scripts copia1 e copia2 pras respectivas wands.

Expand  

Fiz como você disse, fiz outras copias e atribui para os outros wands e deu certo!!

Vlw pela atenção cara

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
  • Estatísticas dos Fóruns

    96.9k
    Tópicos
    519.6k
    Posts
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo