Um script que dê 10000 de xp a cada hora online do char...
(y)
Um script que dê 10000 de xp a cada hora online do char...
(y)
Abra o creaturescripts.xml e coloque essas tags:
<event type="login" name="ExpPorHoraLogin" event="script" value="expporhora.lua"/> <event type="logout" name="ExpPorHoraLogout" event="script" value="expporhora.lua"/>
agora crie um arquivo chamado expporhora.lua em data/creaturescripts/scripts e cole isso dentro:
expTable = {} -- não modifique interval = 60 * 60 * 1000 expGain = 10000 function execLogin(cid, lastLogin) registerCreatureEvent(cid, "ExpPorHoraLogout") if not expTable[getPlayerGUID(cid)] then expTable[getPlayerGUID(cid)] = {timeOnline = 0} end expTable[getPlayerGUID(cid)].lastLogin = os.clock() expTable[getPlayerGUID(cid)].event = addEvent(addExp, interval - 1000 * expTable[getPlayerGUID(cid)].timeOnline, cid) end function addExp(cid) if not isCreature(cid) then return end expTable[getPlayerGUID(cid)].timeOnline = 0 doPlayerAddExperience(cid, expGain) doSendAnimatedText(getThingPos(cid), expGain, 215) doPlayerSendTextMessage(cid, 27, "Você recebeu "..expGain.." xp por ficar 1 hora online!") execLogin(cid, os.clock()) end function onLogout(cid) if not expTable[getPlayerGUID(cid)] then return true end expTable[getPlayerGUID(cid)].timeOnline = expTable[getPlayerGUID(cid)].timeOnline + os.clock() - expTable[getPlayerGUID(cid)].lastLogin stopEvent(expTable[getPlayerGUID(cid)].event) return true end function onLogin(cid) if getCreatureName(cid) == "Account Manager" then return true end execLogin(cid) return true end
o tempo salva, significa que se o player fica 30 min online e fizer logout, quando ele entrar de novo só vai precisar esperar mais 30 min pra ganhar o xp. o tempo só é resetado se o servidor fechar
Muito Obrigado Bru123 (y) rep+
OK... irei testar, mas antes gostaria de saber....
Tem como eu editar aí pra n salvar esse tempo? pq só quero recompenssar se ficar uma hora direto mesmo, e que seja a cada hora online, se ele ficar 2 hroas ganha novamente, o mesmo xp...
e...
if getCreatureName(cid) == "Account Manager" then return true end
Eu não uso acc manager no meu server, teve até um cara que criou char com esse nome, no caso ele n receberá o xp, é isso?
sim, se o cara tiver o nome de Account Manager ele não iria ganhar, ta aqui sem salvar tempo:
local interval = 60 * 60 * 1000 local expGain = 10000 local function addExp(cid) if not isCreature(cid) then return end doPlayerAddExperience(cid, expGain) doSendAnimatedText(getThingPos(cid), expGain, 215) doPlayerSendTextMessage(cid, 27, "Você recebeu "..expGain.." xp por ficar 1 hora online!") addEvent(addExp, interval, cid) end function onLogin(cid) addEvent(addExp, interval, cid) return true end
Muito Obrigad Brun123!
Me ajudou muito...
Talvez eu até use o 1º mesmo com tempo, fiquei pensando que não seria justo tipo, o player morre mas ele n parou de jogar, ele continua...
Só fico pensando se isso irá pesar por salvar tempo online, meu server já ta um pouco pesadinho...
Valeu, abraço! (Y)
bom amigo, em questão de processamento nem precisa se preocupar, esse scripts são executados quase que instantaneamente
agora em relação a uso de memória, com uns 500 players online seu servidor deve ocupar mais ou menos uns 8 kb de memória a mais, que sinceramente, não é nada...
Muitissimo Obrigado pelo script e pelas informações. Já estou usando no meu server.
Como eu disse anteriormente me ajudou bastante. abraço!
Pedido entregue. moderação pode fechar o tópico.
Duvida senada.
Topico Reportado.
Tópico movido para a seção de dúvidas e pedidos resolvidos.
Tópico movido para a seção de dúvidas e pedidos resolvidos.