Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado
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

  • Respostas 10
  • Visualizações 783
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • tenta trocar a função do top pra essa:   function getNameTopServer() -- eu alteraria pra getNameTopCinco local i = 1 local query, name = db.getResult("SELECT `name`, `level` FROM `pla

  • tira o break desse segundo kkkkkk coloca assim: if NaoEstaCinco == 0 then if item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, expOutros) doSe

  • funcionou perfeitamente, mt obrigado man, Rep++

Posted Images

Postado
  • 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 por poko360 (veja o histórico de edições)

Postado
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

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo