Postado Novembro 13, 2021 3 anos 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 Novembro 13, 2021 3 anos É 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 Novembro 13, 2021 3 anos Autor 9 minutos atrás, 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. 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 Novembro 14, 2021 3 anos É 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 Novembro 16, 2021 3 anos Autor Em 14/11/2021 em 13: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. 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.