LU
pedido

Piso especial..

Por Lumus, 17 de mai. de 2015 em Scripts

resolvido
19
3k
LumusL
17 de maio de 2015 às 17:42

Galera, tudo bom?

 

Preciso de um piso que enquanto o player estiver em cima dele, ele vai recebendo uma quantia aleatória de mana entre 1 e 25... neste mesmo piso, ele vai recuperando pontos de stamina(menos a bônus)... se for possível é claro!

 

Uso tfs 1.1. Grato.

FurabioF
19 de maio de 2015 às 18:28
local min , max = 1, 25 -- Recuperação de mana entre 1 e 25
local sta = 1 -- Recuperação de 1 minuto de stamina
local t = 5 -- Tempo em segundos da recuperação fica se repetindo
local event = {}

function Player.autoRege(self)

	local player = Player(self)
	local pid = player:getGuid()

	if player:isPlayer() then
		if player:getStamina() < 2400 then
			player:setStamina(player:getStamina() + sta)
		end

		if player:getMana() ~= player:getMaxMana() then
			player:addMana(math.random(min, max))
		end
		event[pid] = addEvent(function() player:autoRege() end, t* 1000)
	end

end


function onStepIn(creature, item, position, fromPosition)

	local player = Player(creature)

	if player:isPlayer() then
		return true
	end

	player:autoRege()

	return true
end

function onStepOut(creature, item, position, fromPosition)

	local player = Player(creature)
	local pid = player:getGuid()

	stopEvent(event[pid])

	return true
end
        <movevent event="StepIn" actionid="7454" script="ARQUIVO.lua" />
	<movevent event="StepOut" actionid="7454" script="ARQUIVO.lua" />

Coloque actionid 7454 no piso pelo RME.

Editado Maio 19 por ScreaM

LumusL
20 de maio de 2015 às 00:06

@Scream não foi.. não deu erro mas também não funcionou.

 

function onStepIn(creature, item, position, fromPosition)
 
	local player = Player(creature)
 
	if player:isPlayer() then
		return true
	end
 
	player:autoRege()
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Funcionou, OK.")
	return true
end
 
function onStepOut(creature, item, position, fromPosition)
 
	local player = Player(creature)
	local pid = player:getGuid()
 
	stopEvent(event[pid])
 	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Funcionou, OK 2")
	return true
end

Eu coloquei pra enviar a msg a fim de teste, somente na stepout que foi, quando ele pisa, nem a msg, envia...

Editado Maio 20 por Fawz

1 mês depois...
BrunoB
03 de junho de 2015 às 14:35

@Scream não foi.. não deu erro mas também não funcionou.

 

Eu coloquei pra enviar a msg a fim de teste, somente na stepout que foi, quando ele pisa, nem a msg, envia...

Tenta assim:

 

local config = {
	minimo = 1, -- Recuperação mínima de mana
	maximo = 25, -- Recuperação máxima de mana
	stamina = 60, -- Segundos de stamina a serem recuperados
	tempo = 10 -- Tempo em segundos da recuperação fica se repetindo
}

local function Player.autoRege(self)
 
	if self:isPlayer() then
		if self:getStamina() < 2400 then
			self:setStamina(self:getStamina() + config.stamina)
		end
 
		if self:getMana() ~= player:getMaxMana() then
			self:addMana(math.random(config.minimo, config.maximo))
		end
	end
 
end
 
 
function onStepIn(creature, item, position, fromPosition)
	local cid = creature:getId() 
	addEvent(
		function()
            local player = Player(cid)
            if player then
                player:autoRege()
            end
        end,
        config.tempo * 1000
    )
	return true
end
 
function onStepOut(creature, item, position, fromPosition)
	local cid = creature:getId()
	local player = Player(cid)
 
	if player then
		stopEvent(event[cid])
	end
	return true
end 

 

LumusL
03 de junho de 2015 às 15:01

Tenta assim:

 

 

local config = {
	minimo = 1, -- Recuperação mínima de mana
	maximo = 25, -- Recuperação máxima de mana
	stamina = 60, -- Segundos de stamina a serem recuperados
	tempo = 10 -- Tempo em segundos da recuperação fica se repetindo
}

local function Player.autoRege(self)
 
	if self:isPlayer() then
		if self:getStamina() < 2400 then
			self:setStamina(self:getStamina() + config.stamina)
		end
 
		if self:getMana() ~= player:getMaxMana() then
			self:addMana(math.random(config.minimo, config.maximo))
		end
	end
 
end
 
 
function onStepIn(creature, item, position, fromPosition)
	local cid = creature:getId() 
	addEvent(
		function()
            local player = Player(cid)
            if player then
                player:autoRege()
            end
        end,
        config.tempo * 1000
    )
	return true
end
 
function onStepOut(creature, item, position, fromPosition)
	local cid = creature:getId()
	local player = Player(cid)
 
	if player then
		stopEvent(event[cid])
	end
	return true
end 

 

Erro linha 8 '(' expected near '.'

BrunoB
03 de junho de 2015 às 15:08

Erro linha 8 '(' expected near '.'

Tem certeza que não foi durante sua edição?

Verifiquei tudo aqui e não achei erro de sintaxe...

LumusL
03 de junho de 2015 às 15:10

Tem certeza que não foi durante sua edição?

Verifiquei tudo aqui e não achei erro de sintaxe...

Eu nao editei nada o.O do jeito que tu postou eu copiei e colei

BrunoB
03 de junho de 2015 às 15:23

Eu nao editei nada o.O do jeito que tu postou eu copiei e colei

Já descobri '-' era o local...

Segue:

local config = {
	minimo = 1, -- Recuperação mínima de mana
	maximo = 25, -- Recuperação máxima de mana
	stamina = 60, -- Segundos de stamina a serem recuperados
	tempo = 10 -- Tempo em segundos da recuperação fica se repetindo
}

function Player.autoRege(self)
	if self:isPlayer() then
		if self:getStamina() < 2400 then
			self:setStamina(self:getStamina() + config.stamina)
		end
 
		if self:getMana() ~= player:getMaxMana() then
			self:addMana(math.random(config.minimo, config.maximo))
		end
	end
end
 
function onStepIn(creature, item, position, fromPosition)
	local cid = creature:getId() 
	addEvent(
		function()
            local player = Player(cid)
            if player then
                player:autoRege()
            end
        end,
        config.tempo * 1000
    )
	return true
end
 
function onStepOut(creature, item, position, fromPosition)
	local cid = creature:getId()
	local player = Player(cid)
 
	if player then
		stopEvent(event[cid])
	end
	return true
end 
LumusL
03 de junho de 2015 às 15:35

JmP3lV7.png

BrunoB
03 de junho de 2015 às 15:57

 

local config = {
	minimo = 1, -- Recuperação mínima de mana
	maximo = 25, -- Recuperação máxima de mana
	stamina = 60, -- Segundos de stamina a serem recuperados
	tempo = 10 -- Tempo em segundos da recuperação fica se repetindo
}

function Player.autoRege(self)
	if self:isPlayer() then
		if self:getStamina() < 2400 then
			self:setStamina(self:getStamina() + config.stamina)
		end
 
		if self:getMana() ~= self:getMaxMana() then
			self:addMana(math.random(config.minimo, config.maximo))
		end
	end
end
 
function onStepIn(creature, item, position, fromPosition)
	local cid = creature:getId() 
	addEvent(
		function()
            local player = Player(cid)
            if player then
                player:autoRege()
            end
        end,
        config.tempo * 1000
    )
	return true
end
 
function onStepOut(creature, item, position, fromPosition)
	local cid = creature:getId()
	local player = Player(cid)
 
	if player then
		stopEvent(event[cid])
	end
	return true
end 
LumusL
03 de junho de 2015 às 16:15

Funcionou em partes.

 

Ele só adiciona a mana 1x, eu tenho que ficar andando em cima do piso para dar a mana. Se possível adequar para o player ficar parado recebendo a mana.

 

Se possível e claro se pude, por aquele magiceffect que mostra quanto de mana foi healado(tipo o de dano) só que mostrando a quantia de mana que ele recebeu.

FurabioF
03 de junho de 2015 às 16:49

Verifica se funciona normal agora :

local config = {
	minimo = 1, -- Recuperação mínima de mana
	maximo = 25, -- Recuperação máxima de mana
	stamina = 1, -- Minutos de stamina a serem recuperados
	tempo = 10 -- Tempo em segundos da recuperação fica se repetindo
}
local events {}
function Player.autoRege(self)
	if self:isPlayer() then
		if self:getStamina() < 2400 then
			self:setStamina(self:getStamina() + config.stamina)
		end
		if self:getMana() ~= player:getMaxMana() then
			self:addMana(math.random(config.minimo, config.maximo))
		end
		addEvent(function() player:autoRege() end, config.tempo* 1000)
	end
end
function onStepIn(creature, item, position, fromPosition)
	local cid = creature:getId() 
    local player = Player(cid)
    if player then
        events[player] = player:autoRege()
    end
	return true
end
function onStepOut(creature, item, position, fromPosition)
	local cid = creature:getId()
	local player = Player(cid)
	if player then
		stopEvent(events[player])
	end
	return true
end 
BrunoB
03 de junho de 2015 às 17:12

Funcionou em partes.

 

Ele só adiciona a mana 1x, eu tenho que ficar andando em cima do piso para dar a mana. Se possível adequar para o player ficar parado recebendo a mana.

 

Se possível e claro se pude, por aquele magiceffect que mostra quanto de mana foi healado(tipo o de dano) só que mostrando a quantia de mana que ele recebeu.

Da forma que você pediu, creio que agora funcione :p

local config = {
	minimo = 1, -- Recuperação mínima de mana
	maximo = 25, -- Recuperação máxima de mana
	stamina = 60, -- Segundos de stamina a serem recuperados
	tempo = 10 -- Tempo em segundos da recuperação fica se repetindo
}
local events = {}

function Player.autoRege(self)
	if self:getStamina() < 2400 then
		self:setStamina(self:getStamina() + config.stamina)
	end
	
	if self:getMana() ~= self:getMaxMana() then
		self:addMana(math.random(config.minimo, config.maximo))
	end
	self:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
	addEvent(function() self:autoRege() end, config.tempo* 1000)
end
 
function onStepIn(creature, item, position, fromPosition)
	if not creature:isPlayer() then
		return false
	end
	events[creature] = creature:autoRege()
	return true
end
 
function onStepOut(creature, item, position, fromPosition)
	if not creature:isPlayer() then
		return false
	end
	stopEvent(events[creature])
	return true
end 

Editado Junho 3 por Bruno Minervino

LumusL
03 de junho de 2015 às 17:30

Em ambos:

 

Erro na linha 7 unxpected simbol near '{'

 

PS: Só copiei e colei não editei nada.

Editado Junho 3 por Fawz

BrunoB
03 de junho de 2015 às 17:30

Erro na linha 7 unxpected simbol near '{'

 

PS: Só copiei e colei não editei nada.

editado