Postado Agosto 25, 2022 2 anos 9 minutos atrás, poko360 disse: se eu colocar um doPlayerSave(cid) no script ao executar a potion, da bom? (n da lag etc...?) ou tens uma ideia melhor? cara o doPlayerSave(cid, true) é perfeito sim, eu uso no meu server, e não laga nada, porém eu tenho uma estrutura muito boa, se vc tiver muita gente e uma VPS fraca, pode ser que lague, pq ele sempre vai ta executando um save na DB. vc pode sim usar o doPlayerSave(cid, true) porém eu indico vc usar SEMPRE que o player upar, CASO vc tenha uma VPS boa, se não, coloca o doPlayerSave(cid, true) no script mesmo, vai funcionar perfeitamente. caso queira usar o sempre que o player upar (necessário estrutura boa) eu uso esse script: creaturescripts > scripts > advancedSave.lua function onAdvance(cid, skill, oldLevel, newLevel) if(skill == SKILL__EXPERIENCE) then return true end if(skill == SKILL__LEVEL) then --sempre que upar level doPlayerSave(cid, true) -- salva o player (isso da update na DB pode lagar maquina fraca) end return true end creaturescripts > creaturescripts.xml <event type="advance" name="AdvanceSave" event="script" value="advancesave.lua"/> e no creaturescripts > scripts > login.lua procure por "registerCreatureEvents(........)" e adiciona abaixo de qualquer um: registerCreatureEvent(cid, "AdvanceSave") ai da reload no creature, e sempre vai salvar quando upar e lógicamente, vc precisa dar o save no player, logo após o onUse pra ficar tipo salva o player > atualiza na DB > roda o scripts pra saber a pos dele no rank
Postado Agosto 25, 2022 2 anos Autor eu botei por globalevent (creature n deu mt certo nao) ficou assim: Spoiler function onThink(interval, lastExecution) for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) if (getPlayerStorageValue(cid, 49015) - os.time() > 0) then doPlayerSave(cid, true) end end return true end eu so tenho mais uma pergunta, tipo nesse script ele mostra os jogadores de 1 a 5 do top rank, como que eu boto pra o RESTO dos jogadores receber um valor x de exp? tipo o rank 6 adiante (7...8...9...) eu tentei botar um "else" e n deu mt certo nao do jeito que botei kkkkkk Edit: if name[j] == getPlayerName(cid) and item.itemid == seuitem then como eu botaria um "elseif" nessa linha? name[j] ~=? Editado Agosto 25, 2022 2 anos por poko360 (veja o histórico de edições)
Postado Agosto 25, 2022 2 anos 2 minutos atrás, poko360 disse: eu tentei botar um "else" e n deu mt certo nao do jetio que bote e pq o else vai contrariar tudo do if kkkkk, tenta tipo assim local name = getNameTopServer() local exp = {5, 4, 3, 2, 1} local NaoEstaCinco = 0 local expOutros = 1 for j=1, 5 do print(name[j]) if name[j] == getPlayerName(cid) and item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, exp[j]) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 420) doPlayerSendTextMessage(cid,22,texto) NaoEstaCinco = 1 break return true end end if NaoEstaCinco == 0 then if item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, expOutros) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 420) doPlayerSendTextMessage(cid,22,texto) NaoEstaCinco = 1 break return true end end alias, pode tirar o "print(name[j])"
Postado Agosto 25, 2022 2 anos tira o break desse segundo kkkkkk coloca assim: if NaoEstaCinco == 0 then if item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, expOutros) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 420) doPlayerSendTextMessage(cid,22,texto) return true end end
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.