Ir para conteúdo

Featured Replies

Postado

Boa noite, estou tentando uma spell cuja função será mudar a aparencia do player até que ataque alguém ou seja atacado.

 

Enquanto o player estiver com tal aparencia, ele terá o movement speed buffado.

 

Dai pensei em fazer uma spell que:

 

  • Guarda o outfit do caster (antes de mudar a aparencia);
  • Muda o outfit do player para o 318;
  • Aumenta a velocidade dele por 1 segundo.

 

Spoiler

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

local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 3000)
setConditionFormula(condition, 0.7, -56, 0.7, -56)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
local outfitback = getCreatureOutfit(cid)
setPlayerStorageValue(cid, 89945, outfitback)
local outfit = {lookType = 318, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
if isPlayer(cid) then
doCreatureChangeOutfit(cid, outfit)
end
	return doCombat(cid, combat, var)
end

 

 

Dai, criei um globalevent com intervalo de 1 segundo para adicionar mais 1s de buff de mov speed para o player que estiver com o outfit 318:

 

Spoiler

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

local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 1000)
setConditionFormula(condition, 0.7, -56, 0.7, -56)
setCombatCondition(combat, condition)


function onThink(interval, lastExecution)
    local outfit = {lookType = 318, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
    if getCreatureOutfit(getPlayersOnline()) == outfit then
	end
    return doCombat(cid, combat, var)
end

 

 

Acredito que esteja bem errado.

Além disso, falta o script q tornaria possivel o retorno do outfit normal do player ao entrar em combat( e assim, perderia o buff do mov speed), so q nao tenho ideia de onde devo tentar fazer esse script e nem como começar a faze-lo

 

Peço a ajuda de voces de novo c:

  • Respostas 8
  • Visualizações 3.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • muito complexa a sua linha de raciocínio.. pensa cmg: Uma spell que seta a outfit e velocidade por tempo indeterminado, caso o player perca vida ou ataque alguém ela remove as conditions responsáve

  • onde tá  not getCreatureTarget(uid) coloca   getCreatureTarget(uid) ~= nil --------------------------------------------------------------------- Eu uso uid porque é uma convenção

  • não sei como funciona a getCreatureTarget no seu servidor, mas usa assim q deve dar certo:   local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 2) setCombatParam(com

Postado

muito complexa a sua linha de raciocínio.. pensa cmg:

Uma spell que seta a outfit e velocidade por tempo indeterminado, caso o player perca vida ou ataque alguém ela remove as conditions responsáveis pelo haste e pelo outfit ->

e temos isso daqui:
 

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

local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1) -- seta por tempo ilimitado
setConditionFormula(condition, 0.7, -56, 0.7, -56)
setCombatCondition(combat, condition)

local function checker(uid, health)
	if isPlayer(uid) then		
		if not getCreatureTarget(uid) and getCreatureHealth(uid) >= health then --se ele tiver um target ou perder vida cancela.
			local health = getCreatureHealth(uid)
			addEvent(checker, 200, uid, health) -- checa a cada 200 milisegundos
		else
			if getCreatureCondition(cid, CONDITION_HASTE)
				doRemoveCondition(uid, CONDITION_HASTE)
			end
			if getCreatureCondition(cid, CONDITION_OUTFIT)
				doRemoveCondition(uid, CONDITION_OUTFIT)
			end
			doSendMagicEffect(getCreaturePosition(uid), 2)
		end	
	end
return true
end

function onCastSpell(cid, var)
	doSetCreatureOutfit(cid, {lookType = 318}, -1) -- seta o outfit 318 por tempo ilimitado
	checker(cid, getCreatureHealth(cid))
	doCombat(cid, combat, var)
return true
end

 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

Obrigado por responder.

Verdade, foi bem complexo DOSAKOPDASKPODKASKPODKSAPDSA

Não sabia que se colocasse o tempo -1 seria infinito daí nem pensei em colocar doSetCreatureOutfit

Usei o script e não deu certo, o outfit do player é mudado e o mov speed buffado, entretanto, ao atacar ou ser atacado, o player continua com o mov speed e o outfit da skill.

Coloquei os dois 'then' que estavam faltando depois dos dois 'if'

Btw, quando tiver um tempo livre, pode me explicar essa parte abaixo ? Tipo, pq usa uid?

 

Spoiler

function checker(uid, health)
	if isPlayer(uid) then		
		if not getCreatureTarget(uid) and getCreatureHealth(uid) >= health then --se ele tiver um target ou perder vida cancela.
			local health = getCreatureHealth(uid)
			addEvent(checker, 200, uid, health) -- checa a cada 200 milisegundos

 

 

Obrigado mais uma vez :D

Postado

onde tá 

not getCreatureTarget(uid)

coloca
 

getCreatureTarget(uid) ~= nil



---------------------------------------------------------------------
Eu uso uid porque é uma convenção.. na vdd eu posso colocar qualquer coisa ali.

Pensa numa função que recebe um numero qualquer e incrementa 10 no valor dele:
 

local function increment10 (x)
   return x + 10
end

se eu trocar o nome do x no parâmetro e trocar ali no return continua a mesma coisa
 

local function increment10 (qualquercoisa)
 return qualquercoisa + 10
end


uid é a sigla para uniqueid e cid é a sigla para creatureid, muita gente adota cid em tudo mas usar cid em parametros de funções locais pode acabar confundindo quem não é programador e induzindo a pensar que cid representa sempre o player, oque não é verdade.
 

local function increment10 (cid)
return cid + 10
end

 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

Entendi!

Então, mesmo depois da substituição, o personagem continua no outfit 318 e com a speed modificada depois de ser atacado ou atacar

 

 

Edit: Apareceu um erro na distro:

In a timer event called

Description:

<luaGetCreatureCondition>  Creature not found

Editado por Hoad (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo