Ir para conteúdo

Solução Para Clone Items!


Natanael Beckman

Posts Recomendados

Boa galera...

Como o clone items é realizado devido um player salvar e o outro não, decidi ir em busca de um script que resolva esse problema.

 

Vamos nois.

 

Vai em otserv/data/globalevents/scripts:

 

Copia um arquivo .lua e renomeia ele pra saveplayer.lua

 

Adicione nele este coder:

 

function onThink(cid, interval) 
   for _, cid in ipairs(getPlayersOnline()) do 
       doPlayerSave(cid, true) 
       return true 
   end 
end

 

Agora vai até globalevents.xml adiciona essa tag:

 

      <globalevent name="saveplayer" interval="30" event="script" value="saveplayer.lua"/> 

 

Explicando... Com esse sistema o player que estiver online estará sendo salvo de 30 em 30 segundos, com isso ficará impossivél de ocorrer clone items.

 

Isso também é bom para prolongar o seu serversave, e te livra das grandes travadas no seu servidor de hora em hora.

Link para o comentário
Compartilhar em outros sites

Isso não resolve não...esse script apenas salva os players de 30 em 30 segundos, mas o server volta e meia cai, isso se alguem não descobrir um bug pra ficar derrubando o server, se isso acontecer, mesmo tendo esse script no server, seria muito fácil clonar. Se algum moderador disser que eu posso explicar como que isso pode ocorrer e explicar também uma outra maneira que imaginei de evitar as clonagens, eu posto.

Link para o comentário
Compartilhar em outros sites

Que funciona, funciona, mais é preciso ter um distro que não seja bugado, o distro correto pra o uso do mesmo.

Normalmente o que ajuda a nukar o server é um distro instavél, exemplo:

Real Server 2.2.2 se não me engano tinha um distro bom, mais o 2.2.5 basta jogar um moeda em uma área bugada do mapa já era, o server trava e cai.

O mais recomendado pra versão 8.54 seria o The Forgotten Server 0.3.6pl1.

Se tem algo a mais que possa resolver esse problema, não vejo o porque de algum moderador impedir a sua colaboração.

Editado por GM Bekman
Link para o comentário
Compartilhar em outros sites

Que funciona, funciona, mais é preciso ter um distro que não seja bugado, o distro correto pra o uso do mesmo.

Normalmente o que ajuda a nukar o server é um distro instavél, exemplo:

Real Server 2.2.2 se não me engano tinha um distro bom, mais o 2.2.5 basta jogar um moeda em uma área bugada do mapa já era, o server trava e cai.

O mais recomendado pra versão 8.54 seria o The Forgotten Server 0.3.6pl1.

Se tem algo a mais que possa resolver esse problema, não vejo o porque de algum moderador impedir a sua colaboração.

 

 

Tpw, o seu script funciona(pelo menos eu axo, pois não cheguei a testar), mas o que to querendo dizer, é que mesmo ele funcionando não evita as clonagens pois elas podem ser feitas de outras maneiras principalmente se o server cair e bugs pra derrubar server quase sempre tem, mesmo quando os distros são bons, um simples erro de script de algum npc, monstro, magia, etc, pode derrubar o server.

 

Um bom exemplo era de alguns servers vim com o monstro Water Elemental bugado e quando alguem o matava o server caia. Claro que aí era só retirar o mosntro do mapa ou arrumar o script dele. Mas pra quem quer ter server sério, clonagem é uma coisa que deve ser levada muito a sério, pois você sempre tem que manter seu server atualizado e a cada atualização vem os novos bugs...E se seus itens vips forem clonados, adeus rendimentos...

 

Mas indo agora direto ao assunto eu disse q seu script não evitava as clonagens pelo seguinte, exemplo: Eu compro um item vip no seu server e largo ele no chão dentro da minha casa e espero até dar um server save. O meu item vip foi salvo na tabela tile_items(isso se você usar o sistema mysql) ou na tabela house_data(dependendo de como você configurou no config.lua). Até aqui beleza, se o server cair, o item vai estar no chão dentro da minha casa.

 

Agora digamos que eu vá na minha casa e pegue o meu item vip e coloque ele no meu char e deslogue meu char ou se você estiver utilizando akele seu script, basta eu esperar apenas 30 segundos pra ter certeza que meu item vip foi salvo na tabela player_items. Pronto, é nesse momento que a clonagem pode ser feita, o meu item vip está salvo no meu char, mas ainda está salvo na casa e o item vip vai continuar salvo na casa até que seja feito o próximo server save. Se antes do proximo server save por algum motivo o server cair, ocorre a clonagem, pois o item vai estar salvo no char e na casa ao mesmo tempo... Esse mesmo problema ocorre também com o depot.

 

Pode também acontecer o inverso, o item vip pode ser perdido sem que o player tenha qualquer culpa nisso. Digamos que eu esteja usando o item vip no meu char e eu vá lá na minha casa e largue o item vip no chão. Com o seu script, em 30 segundos no máximo o meu char terá sido salvo na tabela player_items SEM O ITEM VIP e a tabela tile_items terá que esperar o próximo server save pra atualizar a informação de que o item vip está no chão da casa. Se o server cair antes do server save... já viu neh.. o item já não estava mais na tabela player_items e nem na tabela tile_items... O item vip acaba de sumir do server...

 

E agora.. como vou comprovar pra você de que meu item simplesmente sumiu... Como você você vai acreditar em mim sendo que GM nenhum pode confiar na palavra de um player, ainda mais envolvendo dinheiro...

 

O problema está na diferença de tempo em que as coisas são salvas, não poderia ser assim, todos os items e informações deveriam ser salvas ao mesmo tempo. Esse negócio de o player deslogar e nisso o char dele ser salvo, é errado. Mas também se quando ele deslogar o char não salvar, ele acaba perdendo tudo o que ele fez enquanto ele estava logado...

 

Creio que a solução para isso é modificar esse sistema no distro do ot, fazendo com que tudo seja salvo ao mesmo tempo, e quando um player deslogar, que essa informação fique temporariamente salva na memoria ram utilizada pelo ot ou até mesmo em uma tabela secundária. Mas como eu não entendo nada nessa parte...

 

Claro que quanto menos o server cair, menos chances tem disso acontecer, mas pra quem quer server sério, não pode deixar que um player possa correr esse risco.

 

Pode haver melhores soluções, mas por enquanto nenhuma me veio na cabeça.

Desculpe aí pela extensão da minha explicação, e se não entenderam alguma coisa, só perguntar.

Link para o comentário
Compartilhar em outros sites

Parabéns. Vai ajudar muito, pena que não tenho servidor. Tenho certeza que tem vários donos de servidores que estão pulando de alegria com esse Script!

 

Bom ai /\ está um exemplo de quem posta por postar, sem ler o mas importante (na mim opinião é claro) os postes dos outros...

@Miter - se vc tivesse lido o topico do Richard1985 vc iria ver que o script não funciona respectivamente como o nome diz.

 

Bom, @ Richard1985 tem como configurar para quando o player sair do servidor, salvar a casa junto ao player (os 2 ao mesmo tempo, mas sem envolver todos do servidor) ?

Link para o comentário
Compartilhar em outros sites

se existir SavehouseDada(cid,1)

se existir kk nao sei se existe esse tipo.

 

talvez fosse legal um comando pra o player mesmo salvar sua data por exemplo !save,ae o player salva ele tudo que é dele,talvez fosse util.

Link para o comentário
Compartilhar em outros sites

Parabéns. Vai ajudar muito, pena que não tenho servidor. Tenho certeza que tem vários donos de servidores que estão pulando de alegria com esse Script!

 

Bom ai /\ está um exemplo de quem posta por postar, sem ler o mas importante (na mim opinião é claro) os postes dos outros...

@Miter - se vc tivesse lido o topico do Richard1985 vc iria ver que o script não funciona respectivamente como o nome diz.

 

Bom, @ Richard1985 tem como configurar para quando o player sair do servidor, salvar a casa junto ao player (os 2 ao mesmo tempo, mas sem envolver todos do servidor) ?

 

 

Se tem eu não sei...

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
×
×
  • Criar Novo...