Postado Novembro 5, 2018 6 anos 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.
Postado Novembro 5, 2018 6 anos 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 Novembro 5, 2018 6 anos por Lyu (veja o histórico de edições)
Postado Novembro 6, 2018 6 anos Autor 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.
Postado Novembro 6, 2018 6 anos 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
Postado Novembro 6, 2018 6 anos Autor 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.
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.