| Introdução |
Como eu criei o Wing, e simplesmente lancei ele sem instruções ou documentação, a Taberna vai se tornar a documentação de que precisam.
Um dos pontos interessantes no projeto sem sombra de dúvidas é a forma como o banco de dados funciona.
Era realmente um problema não conseguir dar o controle de tudo para o servidor, pelo fato do RPG Maker estar com os editores. E eu realmente não queria traduzir a forma como os arquivos do rmvxa eram encriptados.
Cheguei em uma conclusão mais simples: O Admin envia para o servidor!
| Vamos lá! |
WOW, E COMO ENVIO NOVOS DADOS PRO SERVIDOR?
É simples. Após definir sua conta como a conta do administrador, você vai ter acesso a vários comandos.
Vou puxar do próprio código para que vocês vejam como é simples ver os comandos existentes:
- Código:
if text.include?("/senditems")
@textchar.clear
Network.send_items
return
end
if text.include?("/spam")
for i in 0..200
Network.RequestPing
end
end
if text.include?("/pos")
Network.SendMessage("X:#{$game_player.x}/Y:#{$game_player.y}")
@textchar.clear
return
end
if text.include?("/sendenemies")
@textchar.clear
Network.send_enemies
return
end
if text.include?("/sendskills")
@textchar.clear
Network.send_skills
return
end
if text.include?("/sendweapons")
@textchar.clear
Network.send_weapons
return
end
if text.include?("/sendarmors")
@textchar.clear
Network.send_armors
return
end
if text.include?("/warpto")
data = text.split(" ")
Network.RequestWarp(data[1])
@textchar.clear
return
end
if text.include?("/premmy")
data = text.split(" ")
Network.RequestPremmy(data[1], data[2])
@textchar.clear
return
end
if text.include?("/ban")
data = text.split(" ")
Network.RequestBan(data[1], data[2])
@textchar.clear
return
end
if text.include?("/kick")
data = text.split(" ")
Network.RequestKick(data[1])
@textchar.clear
return
end
if text.include?("/wpoints")
data = text.split(" ")
Network.RequestWPoints(data[1], data[2])
@textchar.clear
return
end
if text.include?("/sendallmaps")
@textchar.clear
Network.RequestWarp(1);
$warping = true
$saving_maps = $game_map.map_id;
end
if text.include?("/sendmap")
Network.send_map;
else
if text.length > 0
Network.SendMessage(text)
end
end
Notem que existem comandos como /sendmap, /senditems, /sendskills.
Esses são os comandos que enviam para o servidor os dados novos sobre a database que foi editada. Dessa forma, o servidor sabe onde existe um bloqueio no mapa, como funciona uma skill, e tem o controle de valores de itens e monstros.
E então você me pergunta o porquê disso?
Porquê assim não existem hackers! Ninguém poderá burlar o mapa, é o servidor quem dita as regras.
Façam um teste!
Editem um mapa existente, e tentem andar sobre ele. Verão que existem tiles que o servidor vai bloquear o acesso. Em seguida, digitem o comando /sendmap. Verão que o servidor entrará em sincronia com o mapa.
Enjoy. ;D
| Conclusão |
Abraço do tio Tera. o/




Portal











