Interiores e virtual worlds: organizando o mundo do servidor
Duas funções simples permitem que um único mapa de San Andreas abrigue centenas de casas, empresas e eventos ao mesmo tempo: interiores e virtual worlds.
Qual a diferença
- Interior (
SetPlayerInterior): diz ao cliente qual "conjunto" de ambiente carregar. O GTA SA tem interiores prontos (lojas, casas, bares) em IDs diferentes. Afeta o que o jogo mostra; - Virtual world (
SetPlayerVirtualWorld): uma "dimensão" do servidor. Jogadores só veem jogadores, veículos e objetos do mesmo mundo. Afeta o que o servidor mostra.
O problema que eles resolvem
O GTA SA tem um número limitado de interiores. Se 50 casas usam o mesmo interior, todos os moradores se encontrariam no mesmo cômodo. Com um virtual world por casa, cada um fica na sua.
stock EntrarCasa(playerid, casaid)
{
SetPlayerInterior(playerid, Casa[casaid][cInterior]);
SetPlayerVirtualWorld(playerid, 1000 + casaid); // mundo único da casa
SetPlayerPos(playerid, Casa[casaid][cIntX], Casa[casaid][cIntY], Casa[casaid][cIntZ]);
return 1;
}
Organize faixas de mundos
| Faixa | Uso |
|---|---|
| 0 | Mundo principal |
| 1-99 | Eventos e minigames |
| 1000-2999 | Casas |
| 3000-3999 | Empresas |
| 5000+ | Prisão, tutorial, área de login |
Documente a faixa para que ninguém use o mesmo número em dois sistemas.
Veículos também
Veículos têm mundo próprio (SetVehicleVirtualWorld) e interior (LinkVehicleToInterior). Ao teleportar um jogador dentro do veículo para outro mundo, mude os dois.
Objetos com Streamer
Crie objetos de interiores personalizados com o worldid e interiorid corretos. Assim eles só existem para quem está lá dentro.
Evite jogadores "presos"
Um erro comum: o jogador sai de um interior, mas continua no mundo 1000 e não vê ninguém. Garanta:
- Ao sair, voltar para interior 0 e mundo 0 (ou o mundo de origem);
- Ao morrer ou spawnar, resetar interior e mundo;
- Ao desconectar, salvar a posição externa (entrada da casa), não a interna.
Usos criativos
- Área de login/tutorial isolada;
- Prisão em mundo próprio;
- Arenas simultâneas de DM;
- "Instâncias" de missões para grupos.
Hospede seu servidor com a VittHost
Nos planos OPENMP-BR da VittHost, seus sistemas de casas, empresas e eventos rodam em servidores no Brasil com painel Pterodactyl, proteção DDoS, MySQL incluso, compatibilidade total com scripts SA-MP e teste grátis de 3 dias.