Como colocar mais locais -
WalterSantos - 16.11.2017
Bom, estou de volta codando, fiz os interior tudo bacana e pa, porйm й o seguinte, como todos sabemos nгo existe sу um Departamento de Policia em San Andreas, fiz sу o de ls, quero saber como faz mais sem bugar o interior, tipo mesmas coordenadas o interior porйm quando sair, sai onde entrou...
Aqui estб para entrar e sair na DP de ls
PHP код:
//Departamento de Policia em LS
if(PlayerToPoint(playerid, 1.0, 1555.1127, -1675.5417, 16.1953))
{
SetPlayerPos(playerid, 246.783996, 63.900199, 1003.640625);
SetPlayerInterior(playerid, 6);
}
//Saida Departamento de Policia
if(PlayerToPoint(playerid, 2.0, 246.783996,63.900199,1003.640625))
{
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, 1555.1127, -1675.5417, 16.1953);
}
Re: Como colocar mais locais -
Naine - 16.11.2017
e sobre tua pergunta, use virtual world
Re: Como colocar mais locais -
WalterSantos - 16.11.2017
@Topic
Desculpa nгo explicar isso kkk, mas coloquei isso quando aperta F na posiзгo PlayerToPoint (que й na frente da dp), a minha dъvida mesmo й tipo colocar
PHP код:
//Saida Departamento de Policia
if(PlayerToPoint(playerid, 2.0, 246.783996,63.900199,1003.640625))
{
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, pos);
Aн esse if(PlayerToPoint(playerid, 2.0, 246.783996,63.900199,1003.640625)) й a coordenada dentro da dp, to querendo й tipo eu apertar F dentro da dp e sair onde eu entrei nгo em ls, sacou?
Re: Como colocar mais locais -
Naine - 16.11.2017
Sim mano, use virtual world.
Re: Como colocar mais locais -
WalterSantos - 16.11.2017
Quote:
Originally Posted by Naine
Sim mano, use virtual world.
|
Acho q saquei agora, fazer nesse estilo?
PHP код:
//Departamento de Policia
if(PlayerToPoint(playerid, 1.0, 1555.1127, -1675.5417, 16.1953))
{
SetPlayerVirtualWorld(playerid, 3);
SetPlayerPos(playerid, 246.783996, 63.900199, 1003.640625);
SetPlayerInterior(playerid, 6);
}
//Saida Departamento de Policia
if(PlayerToPoint(playerid, 2.0, 246.783996,63.900199,1003.640625))
{
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, 1555.1127, -1675.5417, 16.1953);
}
Re: Como colocar mais locais -
Naine - 16.11.2017
Quote:
Originally Posted by WalterSantos
Acho q saquei agora, fazer nesse estilo?
PHP код:
//Departamento de Policia
if(PlayerToPoint(playerid, 1.0, 1555.1127, -1675.5417, 16.1953))
{
SetPlayerVirtualWorld(playerid, 3);
SetPlayerPos(playerid, 246.783996, 63.900199, 1003.640625);
SetPlayerInterior(playerid, 6);
}
//Saida Departamento de Policia
if(PlayerToPoint(playerid, 2.0, 246.783996,63.900199,1003.640625))
{
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, 1555.1127, -1675.5417, 16.1953);
}
|
por exemplo.. em cada interior voce coloca um virtual world diferente.. ai pra saber em qual lugar o jogador sera colocado quando sair.. basta verificar o virtual world
eu te recomendo criar um sisteminha de entradas ao inves de fazer tudo isso manualmente
Re: Como colocar mais locais -
WalterSantos - 16.11.2017
Hmmmm, vou procurar por alguns tutoriais, no mais... Obrigado.
Re: Como colocar mais locais -
Naine - 16.11.2017
Quote:
Originally Posted by WalterSantos
Hmmmm, vou procurar por alguns tutoriais, no mais... Obrigado.
|
PHP код:
#include a_samp
#define DOOR_LIMIT 10
enum e_DOOR_DATA
{
Float:DOOR_ENTRY[3],
Float:DOOR_EXIT[3],
DOOR_INTERIOR
}
new Door[DOOR_LIMIT][e_DOOR_DATA];
new gDoorIndex;
public OnGameModeInit()
{
// entrada_x, entrada_y, entrada_z, saida_x, saida_y, saida_z, interior
// db de ls
Door_Create(1555.1127, -1675.5417, 16.1953, 246.783996,63.900199,1003.640625, 6);
return true;
}
stock Door_Create(Float:entry_x, Float:entry_y, Float:entry_z, Float:exit_x, Float:exit_y, Float:exit_z, interior)
{
if(DOOR_LIMIT <= gDoorIndex)
return -1;
Door[gDoorIndex][DOOR_ENTRY][0] = entry_x;
Door[gDoorIndex][DOOR_ENTRY][1] = entry_y;
Door[gDoorIndex][DOOR_ENTRY][2] = entry_z;
Door[gDoorIndex][DOOR_EXIT][0] = exit_x;
Door[gDoorIndex][DOOR_EXIT][1] = exit_y;
Door[gDoorIndex][DOOR_EXIT][2] = exit_z;
Door[gDoorIndex][DOOR_INTERIOR] = interior;
return (gDoorIndex++);
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & 16)
{
for(new i = 0; i < gDoorIndex; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, Door[i][DOOR_ENTRY][0], Door[i][DOOR_ENTRY][1], Door[i][DOOR_ENTRY][2]))
{
SetPlayerPos(playerid, Door[i][DOOR_EXIT][0], Door[i][DOOR_EXIT][1], Door[i][DOOR_EXIT][2]);
SetPlayerInterior(playerid, Door[i][DOOR_INTERIOR]);
SetPlayerVirtualWorld(playerid, i);
break;
}
}
for(new i = 0; i < gDoorIndex; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, Door[i][DOOR_EXIT][0], Door[i][DOOR_EXIT][1], Door[i][DOOR_EXIT][2]))
{
if(GetPlayerVirtualWorld(playerid) != i)
continue;
SetPlayerPos(playerid, Door[i][DOOR_ENTRY][0], Door[i][DOOR_ENTRY][1], Door[i][DOOR_ENTRY][2]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
break;
}
}
}
return true;
}
assim seria mais simples.. fiz rapidao aqui.. ve se funciona e se resolve teu problema.
(nгo testei in-game, nem compilei)
Re: Como colocar mais locais -
C4rtm4n - 16.11.2017
Quote:
Originally Posted by Naine
PHP код:
#include a_samp
#define DOOR_LIMIT 10
enum e_DOOR_DATA
{
Float:DOOR_ENTRY[3],
Float:DOOR_EXIT[3],
DOOR_INTERIOR
}
new Door[DOOR_LIMIT][e_DOOR_DATA];
new gDoorIndex;
public OnGameModeInit()
{
// entrada_x, entrada_y, entrada_z, saida_x, saida_y, saida_z, interior
// db de ls
Door_Create(1555.1127, -1675.5417, 16.1953, 246.783996,63.900199,1003.640625, 6);
return true;
}
stock Door_Create(Float:entry_x, Float:entry_y, Float:entry_z, Float:exit_x, Float:exit_y, Float:exit_z, interior)
{
if(DOOR_LIMIT <= gDoorIndex)
return -1;
Door[gDoorIndex][DOOR_ENTRY][0] = entry_x;
Door[gDoorIndex][DOOR_ENTRY][1] = entry_y;
Door[gDoorIndex][DOOR_ENTRY][2] = entry_z;
Door[gDoorIndex][DOOR_EXIT][0] = exit_x;
Door[gDoorIndex][DOOR_EXIT][1] = exit_y;
Door[gDoorIndex][DOOR_EXIT][2] = exit_z;
Door[gDoorIndex][DOOR_INTERIOR] = interior;
return (gDoorIndex++);
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & 16)
{
for(new i = 0; i < gDoorIndex; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, Door[i][DOOR_ENTRY][0], Door[i][DOOR_ENTRY][1], Door[i][DOOR_ENTRY][2]))
{
SetPlayerPos(playerid, Door[i][DOOR_EXIT][0], Door[i][DOOR_EXIT][1], Door[i][DOOR_EXIT][2]);
SetPlayerInterior(playerid, Door[i][DOOR_INTERIOR]);
SetPlayerVirtualWorld(playerid, i);
break;
}
}
for(new i = 0; i < gDoorIndex; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, Door[i][DOOR_EXIT][0], Door[i][DOOR_EXIT][1], Door[i][DOOR_EXIT][2]))
{
if(GetPlayerVirtualWorld(playerid) != i)
continue;
SetPlayerPos(playerid, Door[i][DOOR_ENTRY][0], Door[i][DOOR_ENTRY][1], Door[i][DOOR_ENTRY][2]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
break;
}
}
}
return true;
}
assim seria mais simples.. fiz rapidao aqui.. ve se funciona e se resolve teu problema.
(nгo testei in-game, nem compilei)
|
Esse jeito buga vou da um exemplo se eu criar uma entrada e ela for ID 5 do VW e eu criar outro cmd e por SetPlayerVirtualWorld com o id 5 ele vai sair e entrar em outro lugar igual acontece nessas GM de rpg.
Isso aconteceu comigo em varios sv que usa esse sistema ai por exemplo uma vez eu estava em uma loja de utilitarios ai eu sai e fui parar na saida da agкncia.
Re: Como colocar mais locais -
Naine - 16.11.2017
Quote:
Originally Posted by C4rtm4n
Esse jeito buga vou da um exemplo se eu criar uma entrada e ela for ID 5 do VW e eu criar outro cmd e por SetPlayerVirtualWorld com o id 5 ele vai sair e entrar em outro lugar igual acontece nessas GM de rpg.
|
mas pq diabos tu vai alterar o virtual world de um jogador? nгo й necessario.. se o cara entrar num interior tu vai chegar la e mudar o vw dele? pq ? nao precisa cara, nao precisa.