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
  • Respostas 21
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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? E

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

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  

Posted Images

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

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

    96844
    Tópicos
    519597
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo