Ir para conteúdo
  • Cadastre-se

(Resolvido)Ganhar mais exp com cast aberto.


Ir para solução Resolvido por Lyu,

Posts Recomendados

Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website).

TFS 1.3

Base: 

OTX 3

 

Qual erro está surgindo/O que você procura?

Alguém pode me ajudar desenvolver algo que eu ganhasse mais exp por estar com o cast aberto? por exemplo eu abri o cast e daqui uns 30min eu comece a ganhar mais exp, tipo 0,5x+

 

Você tem o código disponível? Se tiver publique-o aqui:

 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.

Link para o post
Compartilhar em outros sites

Vamos lá irmão, preciso que você faça os testes e me informe se ocorrerá tudo bem.

 

primeiramente vamos criar uma lib em data/libs com o nome lib-castexp.lua.

data/lib/lib-castexp.lua :

CASTEXP = {}

CASTEXP_PERCENT = 0.5
CASTEXP_NEEDTIME = 20 -- seconds

 

agora precisamos carregar essa biblioteca a partir do arquivo lib.lua que é carregado por global.lua.

data/lib/lib.lua :

dofile('data/lib/lib-castexp.lua')

 

sabe as talkactions !cast e !stopcast? Então, iremos dar uma mexidinha nas mesmas. Irei disponibilizar ambos já mexidos porque acho que é o mesmo que o seu.

data/talkactions/scripts/start_cast.lua :

function onSay(player, words, param)
	if (param == "on") then
		param = nil
	end
	if player:startLiveCast(param) then
		player:sendTextMessage(MESSAGE_INFO_DESCR, "You have started casting your gameplay.")
		
		CASTEXP[player:getName()] = os.time() + CASTEXP_NEEDTIME	
	else
		player:sendCancelMessage("You're already casting your gameplay.")
	end
	return false
end

 

data/talkactions/scripts/stop_cast.lua :

function onSay(player, words, param)
	if player:stopLiveCast(param) then
		player:sendTextMessage(MESSAGE_INFO_DESCR, "You have stopped casting your gameplay.")
		
		CASTEXP[player:getName()] = nil
	else
		player:sendCancelMessage("You're not casting your gameplay.")
	end
	return false
end

 

Vamos então mexer no evento onGainExperience que é encontrado em data/events/scripts/player.lua.

CTRL + F, procure por onGainExperience e no final antes do return exp, adicione isso :

	if CASTEXP[self:getName()] then
		if CASTEXP[self:getName()] <= os.time() then
			exp = (exp * CASTEXP_PERCENT) + exp
			self:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Voce recebeu mais experiencia por manter o cast aberto.')
		end
	end

 

E pra finalizar, vamos anular o valor da chave caso o player deslogue.

data/creaturescripts/scripts/logout.lua (Adicionar no final antes do return true) :

CASTEXP[player:getName()] = nil

 

Lembrando que o CASTEXP_NEEDTIME é em segundos, então caso queira 30 minutos, põe 1800.

Lembre-se também de me manter informado caso haja bugs.

Um forte abraço!

Editado por Lyu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 05/11/2018 em 16:59, Lyu disse:

Vamos lá irmão, preciso que você faça os testes e me informe se ocorrerá tudo bem.

 

primeiramente vamos criar uma lib em data/libs com o nome lib-castexp.lua.

data/lib/lib-castexp.lua :


CASTEXP = {}

CASTEXP_PERCENT = 0.5
CASTEXP_NEEDTIME = 20 -- seconds

 

agora precisamos carregar essa biblioteca a partir do arquivo lib.lua que é carregado por global.lua.

data/lib/lib.lua :


dofile('data/lib/lib-castexp.lua')

 

sabe as talkactions !cast e !stopcast? Então, iremos dar uma mexidinha nas mesmas. Irei disponibilizar ambos já mexidos porque acho que é o mesmo que o seu.

data/talkactions/scripts/start_cast.lua :


function onSay(player, words, param)
	if (param == "on") then
		param = nil
	end
	if player:startLiveCast(param) then
		player:sendTextMessage(MESSAGE_INFO_DESCR, "You have started casting your gameplay.")
		
		CASTEXP[player:getName()] = os.time() + CASTEXP_NEEDTIME	
	else
		player:sendCancelMessage("You're already casting your gameplay.")
	end
	return false
end

 

data/talkactions/scripts/stop_cast.lua :


function onSay(player, words, param)
	if player:stopLiveCast(param) then
		player:sendTextMessage(MESSAGE_INFO_DESCR, "You have stopped casting your gameplay.")
		
		CASTEXP[player:getName()] = nil
	else
		player:sendCancelMessage("You're not casting your gameplay.")
	end
	return false
end

 

Vamos então mexer no evento onGainExperience que é encontrado em data/events/scripts/player.lua.

CTRL + F, procure por onGainExperience e no final antes do return exp, adicione isso :


	if CASTEXP[self:getName()] then
		if CASTEXP[self:getName()] <= os.time() then
			exp = (exp * CASTEXP_PERCENT) + exp
			self:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Voce recebeu mais experiencia por manter o cast aberto.')
		end
	end

 

E pra finalizar, vamos anular o valor da chave caso o player deslogue.

data/creaturescripts/scripts/logout.lua (Adicionar no final antes do return true) :


CASTEXP[player:getName()] = nil

 

Lembrando que o CASTEXP_NEEDTIME é em segundos, então caso queira 30 minutos, põe 1800.

Lembre-se também de me manter informado caso haja bugs.

Um forte abraço!

 

 

Desculpe a demora, tava no job.

Irmão, seu topico ficou muito bem organizado, limpo e detalhado, parabéns.

Quando fui testar no distro não acusou nenhum erro, nem quando eu abri o cast in-game, mas a exp continua a mesma.

Mesmo testando com 1 seg etc, não mudou.

Link para o post
Compartilhar em outros sites
39 minutos atrás, Jobs disse:

 

Desculpe a demora, tava no job.

Irmão, seu topico ficou muito bem organizado, limpo e detalhado, parabéns.

Quando fui testar no distro não acusou nenhum erro, nem quando eu abri o cast in-game, mas a exp continua a mesma.

Mesmo testando com 1 seg etc, não mudou.

 

Da uma olhadinha em data/events/events.xml e veja se o evento onGainExperience está ativado.

<event class="Player" method="onGainExperience" enabled="1" />

 

Testei com o protocolo 8.60 e funcionou direitinho aqui rs

Link para o post
Compartilhar em outros sites
9 minutos atrás, Lyu disse:

Da uma olhadinha em data/events/events.xml e veja se o evento onGainExperience está ativado.


<event class="Player" method="onGainExperience" enabled="1" />

 

Testei com o protocolo 8.60 e funcionou direitinho aqui rs

 

aqui não foi, ta ativado lá no xml, adicionei como tu pois em talkactions, adicionei em global etc.

e aqui em players ficou assim.

 

function Player:onGainExperience(source, exp, rawExp)
	if not source or source:isPlayer() then
		if CASTEXP[self:getName()] then
		if CASTEXP[self:getName()] <= os.time() then
			exp = (exp * CASTEXP_PERCENT) + exp
			self:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Voce recebeu mais experiencia por manter o cast aberto.')
		end
	end
		return exp
	end

 

não dá nenhum erro, mas também não dá mais exp.

Link para o post
Compartilhar em outros sites

esse é o onGainExperience completo?

Se sim, tenta assim :

function Player:onGainExperience(source, exp, rawExp)
	if not source or source:isPlayer() then
		return exp
	end
	
	if CASTEXP[self:getName()] then
		if CASTEXP[self:getName()] <= os.time() then
			exp = (exp * CASTEXP_PERCENT) + exp
			self:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Voce recebeu mais experiencia por manter o cast aberto.')
		end
	end
	
	return exp
end

 

Editado por Lyu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
1 hora atrás, Lyu disse:

esse é o onGainExperience completo?

Se sim, tenta assim :


function Player:onGainExperience(source, exp, rawExp)
	if not source or source:isPlayer() then
		return exp
	end
	
	if CASTEXP[self:getName()] then
		if CASTEXP[self:getName()] <= os.time() then
			exp = (exp * CASTEXP_PERCENT) + exp
			self:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Voce recebeu mais experiencia por manter o cast aberto.')
		end
	end
	
	return exp
end

 

 

Sim é, está dando erro nessa linha

    if not source or source:isPlayer() then

 

[Warning - Events::load] Can not load script: player.lua
data/events/scripts/player.lua:926: unexpected symbol near char(239)

 

Editado por Jobs (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
7 minutos atrás, Jobs disse:

Sim é, está dando erro nessa linha

    if not source or source:isPlayer() then

 


[Warning - Events::load] Can not load script: player.lua
data/events/scripts/player.lua:926: unexpected symbol near char(239)

 

 

Agora provavelmente é um bug no código, vi aqui é no último end. Apague o end e escreva novamente.

*edit : no começo abaixo de function também te um bugzinho, apaga tb.

*edit2: pra aparecer esses simbolos, só mudar a encoding para ANSI no Notepad++

image.thumb.png.974a9837f15052f67325d2113339ee6d.png

Editado por Lyu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
19 minutos atrás, Lyu disse:

Agora provavelmente é um bug no código, vi aqui é no último end. Apague o end e escreva novamente.

image.thumb.png.974a9837f15052f67325d2113339ee6d.png

 

Consegui resolver aqui, só que tipo com o cast aberto eu recebo menos exp do que com ele ligado.

 

20:53 You gained 24000 experience points.
20:53 Loot of a rotworm: 2 gold coins, a mace, ham
20:53 You have started casting your gameplay.
20:53 A rotworm loses 65 hitpoints due to your attack.
20:53 Voce recebeu mais experiencia por manter o cast aberto.
20:53 You gained 60 experience points.

Editado por Jobs (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@Jobs que estranho! Coloquei o código sem os bugs no pastebin talvez funcione dessa vez, copie e cole la no seu arquivo :

https://pastebin.com/gVn7BtzV 

Link para o post
Compartilhar em outros sites

tinha visto aqui

hahahaha bizarro, nunca vi debugar codigo assim

R2VReaR.png

1 minuto atrás, Lyu disse:

@Jobs que estranho! Coloquei o código sem os bugs no pastebin talvez funcione dessa vez, copie e cole la no seu arquivo :

https://pastebin.com/gVn7BtzV 

 

Consegui resolver aqui, só que tipo com o cast aberto eu recebo menos exp do que com ele ligado.

 

20:53 You gained 24000 experience points.
20:53 Loot of a rotworm: 2 gold coins, a mace, ham
20:53 You have started casting your gameplay.
20:53 A rotworm loses 65 hitpoints due to your attack.
20:53 Voce recebeu mais experiencia por manter o cast aberto.
20:53 You gained 60 experience points.

Link para o post
Compartilhar em outros sites
22 minutos atrás, Jobs disse:

Consegui resolver aqui, só que tipo com o cast aberto eu recebo menos exp do que com ele ligado.

 

Quanto tá o seu CASTEXP_PERCENT lá em data/lib/lib-castexp.lua?

Link para o post
Compartilhar em outros sites
4 minutos atrás, Jobs disse:

CASTEXP_PERCENT = 0.5

 

Estranho ter bugado, olha o meu resultado :
 

Spoiler

20:24 Welcome to Ocean Server!
20:24 Your last visit was on Tue Nov 06 20:24:47 2018.
20:25 A rotworm loses 4 hitpoints due to your attack.
20:25 A rotworm loses 10 hitpoints due to your attack.
20:25 A rotworm loses 8 hitpoints due to your attack.
20:25 A rotworm loses 11 hitpoints due to your attack.
20:25 A rotworm loses 32 hitpoints due to your attack.
20:25 You gained 9000 experience points.
20:25 Loot of a rotworm: 11 gold coins, 2 worms, meat, ham
20:25 You have started casting your gameplay.
20:25 Testzin looking at you.
20:25 You see yourself. You are a druid. You are the Leader of the Secondz, which has 1 member, 1 of them online.
20:25 A rotworm loses 10 hitpoints due to your attack.
20:25 A rotworm loses 3 hitpoints due to your attack.
20:25 A rotworm loses 20 hitpoints due to your attack.
20:25 A rotworm loses 3 hitpoints due to your attack.
20:25 A rotworm loses 22 hitpoints due to your attack.
20:25 A rotworm loses 6 hitpoints due to your attack.
20:25 A rotworm loses 1 hitpoint due to your attack.
20:25 Voce recebeu mais experiencia por manter o cast aberto.
20:25 You gained 13500 experience points.
20:25 Loot of a rotworm: 8 gold coins, 2 worms, meat, ham, a mace

 

Link para o post
Compartilhar em outros sites
4 minutos atrás, Lyu disse:

Estranho ter bugado, olha o meu resultado :
 

  Ocultar conteúdo

20:24 Welcome to Ocean Server!
20:24 Your last visit was on Tue Nov 06 20:24:47 2018.
20:25 A rotworm loses 4 hitpoints due to your attack.
20:25 A rotworm loses 10 hitpoints due to your attack.
20:25 A rotworm loses 8 hitpoints due to your attack.
20:25 A rotworm loses 11 hitpoints due to your attack.
20:25 A rotworm loses 32 hitpoints due to your attack.
20:25 You gained 9000 experience points.
20:25 Loot of a rotworm: 11 gold coins, 2 worms, meat, ham
20:25 You have started casting your gameplay.
20:25 Testzin looking at you.
20:25 You see yourself. You are a druid. You are the Leader of the Secondz, which has 1 member, 1 of them online.
20:25 A rotworm loses 10 hitpoints due to your attack.
20:25 A rotworm loses 3 hitpoints due to your attack.
20:25 A rotworm loses 20 hitpoints due to your attack.
20:25 A rotworm loses 3 hitpoints due to your attack.
20:25 A rotworm loses 22 hitpoints due to your attack.
20:25 A rotworm loses 6 hitpoints due to your attack.
20:25 A rotworm loses 1 hitpoint due to your attack.
20:25 Voce recebeu mais experiencia por manter o cast aberto.
20:25 You gained 13500 experience points.
20:25 Loot of a rotworm: 8 gold coins, 2 worms, meat, ham, a mace

 

 

Estranho, ;s

Link para o post
Compartilhar em outros sites
3 horas atrás, Jobs disse:

Estranho, ;s

 

se quiser que eu dê uma olhada mais de perto, me adiciona no Discord (ta no meu perfil) que lhe ajudo mais tarde. Deve ser algo que vc esteja errando.

*Edit: Resolvido, o código está 100%!

Editado por Lyu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 month later...
  • 1 month later...
  • 7 months later...

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo