[Ajuda] Interiores
#1

Boa noite, Bom pessoal, to com uma duvida aqui sobre interiores.

Bom, eu sei como criar um sisteminha de entrar pra dentro de um interior etc ... Mas eu queria criar um apertando F e sim tambйm sei criar apertando F mais eu queria saber como posso fazer um sistema de entrar no interior apertando F e usar o mesmo interior em mais de 1 local, Exemplo.

Tenho 3 delegacias.

Delegacia Las Venturas.
Delegacia Los Santos.
Delegacia San Fierro.

E as trкs delegacia ter o mesmo interior. Porem se eu criar da conflito. Exemplo, Entro na de LS e saiu na de LV entro na de LV e saiu na de SF e assim vбi, eu quero fazer se o player entrar em Los Santos ele sai em Los Santos, se o player entrar em LV ele sai em LV.

Conheзo o modo q usa o ''SetPlayerVirtualWolrd'' mais nгo quero isso, eu quero q os players de LS quando entra na delegacia veja os player q entro na delegacia de LV ou seja, uma delegacia para o servidor todo.

e aproveitando o tуpico, queria saber qual й o nome da Tecla E para colocar no Samp ''para entrar em interior''
porem a tecla ''E'' sera para entrar nas casas e a tecla ''F'' sera para entrar em interiores como agencias delegacias etc ...

Desde jб obrigado.
Reply
#2

Bom para as teclas https://sampwiki.blast.hk/wiki/Keys, eu acho que nгo da para utilizar a tecla E apй

Agora o conflito que da quando vocк sai do interior deve ser por que vocк tem que definir em qual pickup o jogador vai sair, nгo tem como saber o motivo desse conflito sem ver o cуdigo
Reply
#3

Acho que da pra fazer assim:
PHP код:
new bool:Entrada[MAX_PLAYERS][3]; 
OnPlayerKeyStateChange, Onde verifica sua tecla para entrada de interior:
PHP код:
if(IsPlayerInRangeOfPoint(...) // Quando entra por LS
{
    
Entrada[playerid][0] = true;
    
SetPlayerPos(...); // Coordenadas do interior
    
SetPlayerInterior(...);
}
else if(
IsPlayerInRangeOfPoint(...) // Quando entra por SF
{
    
Entrada[playerid][1] = true;
    
SetPlayerPos(...); // Coordenadas do interior
    
SetPlayerInterior(...);
}
else if(
IsPlayerInRangeOfPoint(...) // Quando entra por LV
{
    
Entrada[playerid][2] = true;
    
SetPlayerPos(...); // Coordenadas do interior
    
SetPlayerInterior(...);

Tecla para saнda do interior:
PHP код:
if(IsPlayerInRangeOfPoint(...) // saida do interior
{
    if(
Entrada[playerid][0] == true)
    {
        
SetPlayerPos(...); // poe as coordenada pra saida de LS
        
SetPlayerInterior(...);
        
Entrada[playerid][0] = false;
    }
    else if(
Entrada[playerid][1] == true)
    {
        
SetPlayerPos(...); // poe as coordenada pra saida de SF
        
SetPlayerInterior(...);
        
Entrada[playerid][1] = false;
    }
    else if(
Entrada[playerid][2] == true)
    {
        
SetPlayerPos(...); // poe as coordenada pra saida de LV
        
SetPlayerInterior(...);
        
Entrada[playerid][2] = false;
    }

Fiz meio rбpido isto, e nгo testei, estou com sono xD, mas veja se assim vocк consegue.
Reply
#4

IsPlayerInRangeOfPoint Se ele estiver no local indicado
SetPlayerVirtualWorld Setar um mundo ex: 1
SetPlayerInterior Setar o interior da Delegacia
SetPlayerPos Setar o player para dentro da posiзгo desejada
Reply
#5

Obrigado, irei testar nгo pensei fazer desta maneira. caso der certo aviso, Obrigado a todos q estгo ajudando.
Reply
#6

PHP код:
#define INTERIOR<%0>    _:%0,_Interior[%0][I_interior]
enum INTERIOR_INFO
{
    
I_interior,
    
I_nome[32]
}
enum INTERIORES
{
    
_MUNDO,
    
_PREF_LS,
    
_PREF_LV,
    
_PREF_BC
}
new 
_Interior[INTERIORES][INTERIOR_INFO]=
{
    {
0,                "Mundo"},
    {
3,                "Prefeitura LS"},
    {
3,                "Prefeitura LV"},
    {
3,                "Prefeitura BC"}
};
stock GetWord(i)
    return 
_:i;
stock GetInterior(i)
    return 
_:_Interior[_:i][I_interior];
stock GetInteriorNome(wordid)
    return 
_Interior[_:wordid][I_nome]; 
Reply
#7

Quote:
Originally Posted by AllanSG
Посмотреть сообщение
Acho que da pra fazer assim:
PHP код:
new bool:Entrada[MAX_PLAYERS][3]; 
OnPlayerKeyStateChange, Onde verifica sua tecla para entrada de interior:
PHP код:
if(IsPlayerInRangeOfPoint(...) // Quando entra por LS
{
    
Entrada[playerid][0] = true;
    
SetPlayerPos(...); // Coordenadas do interior
    
SetPlayerInterior(...);
}
else if(
IsPlayerInRangeOfPoint(...) // Quando entra por SF
{
    
Entrada[playerid][1] = true;
    
SetPlayerPos(...); // Coordenadas do interior
    
SetPlayerInterior(...);
}
else if(
IsPlayerInRangeOfPoint(...) // Quando entra por LV
{
    
Entrada[playerid][2] = true;
    
SetPlayerPos(...); // Coordenadas do interior
    
SetPlayerInterior(...);

Tecla para saнda do interior:
PHP код:
if(IsPlayerInRangeOfPoint(...) // saida do interior
{
    if(
Entrada[playerid][0] == true)
    {
        
SetPlayerPos(...); // poe as coordenada pra saida de LS
        
SetPlayerInterior(...);
        
Entrada[playerid][0] = false;
    }
    else if(
Entrada[playerid][1] == true)
    {
        
SetPlayerPos(...); // poe as coordenada pra saida de SF
        
SetPlayerInterior(...);
        
Entrada[playerid][1] = false;
    }
    else if(
Entrada[playerid][2] == true)
    {
        
SetPlayerPos(...); // poe as coordenada pra saida de LV
        
SetPlayerInterior(...);
        
Entrada[playerid][2] = false;
    }

Fiz meio rбpido isto, e nгo testei, estou com sono xD, mas veja se assim vocк consegue.



if(IsPlayerInRangeOfPoint(1022.5699,-1121.4214,23.8723); // Quando entra por LS
{
Entrada[playerid][0] = true;
SetPlayerPos(1727.0101, -1642.7483,20.2253); // Coordenadas do interior
SetPlayerInterior(1;
}
else if(IsPlayerInRangeOfPoint(2015.2194,1106.3938,10.8 203); // Quando entra por SF
{
Entrada[playerid][1] = true;
SetPlayerPos(1727.0101, -1642.7483,20.2253); // Coordenadas do interior
SetPlayerInterior(1;
}

Coloquei deste jeito, mais da erros.

error 001: expected token: ")", but found ";"
error 036: empty statement
error 029: invalid expression, assumed zero
error 001: expected token: ";", but found "if"
error 001: expected token: ")", but found ";"
fatal error 107: too many error messages on one line

estao dando esses erros
Reply
#8

Quote:
Originally Posted by RazorGuigo
Посмотреть сообщение
PHP код:
#define INTERIOR<%0>    _:%0,_Interior[%0][I_interior]
enum INTERIOR_INFO
{
    
I_interior,
    
I_nome[32]
}
enum INTERIORES
{
    
_MUNDO,
    
_PREF_LS,
    
_PREF_LV,
    
_PREF_BC
}
new 
_Interior[INTERIORES][INTERIOR_INFO]=
{
    {
0,                "Mundo"},
    {
3,                "Prefeitura LS"},
    {
3,                "Prefeitura LV"},
    {
3,                "Prefeitura BC"}
};
stock GetWord(i)
    return 
_:i;
stock GetInterior(i)
    return 
_:_Interior[_:i][I_interior];
stock GetInteriorNome(wordid)
    return 
_Interior[_:wordid][I_nome]; 
Interessante como posso colocar coordenas aqui ? Nгo entendi 100% do codigo, sу fiquei perdido na hora de colocar varias Coordenadas de entradas e saidas.
Reply
#9

Quote:
Originally Posted by Ryuzaki07
Посмотреть сообщение
if(IsPlayerInRangeOfPoint(1022.5699,-1121.4214,23.8723); // Quando entra por LS
{
Entrada[playerid][0] = true;
SetPlayerPos(1727.0101, -1642.7483,20.2253); // Coordenadas do interior
SetPlayerInterior(1;
}
else if(IsPlayerInRangeOfPoint(2015.2194,1106.3938,10.8 203); // Quando entra por SF
{
Entrada[playerid][1] = true;
SetPlayerPos(1727.0101, -1642.7483,20.2253); // Coordenadas do interior
SetPlayerInterior(1;
}

Coloquei deste jeito, mais da erros.

error 001: expected token: ")", but found ";"
error 036: empty statement
error 029: invalid expression, assumed zero
error 001: expected token: ";", but found "if"
error 001: expected token: ")", but found ";"
fatal error 107: too many error messages on one line

estao dando esses erros
PHP код:
if(IsPlayerInRangeOfPoint(playerid1.5 1022.5699,-1121.4214,23.8723)) // Quando entra por LS
{
    
Entrada[playerid][0] = true;
    
SetPlayerPos(playerid1727.0101, -1642.748320.2253); // Coordenadas do interior
    
SetPlayerInterior(playerid18);
}
else if(
IsPlayerInRangeOfPoint(playerid1.52015.21941106.393810.8203)) // Quando entra por SF
{
    
Entrada[playerid][1] = true;
    
SetPlayerPos(playerid1727.0101, -1642.748320.2253); // Coordenadas do interior
    
SetPlayerInterior(playerid18);

SetPlayerPos
SetPlayerInterior
IsPlayerInRangeOfPoint
Reply
#10

Quote:
Originally Posted by AllanSG
Посмотреть сообщение
PHP код:
if(IsPlayerInRangeOfPoint(playerid1.5 1022.5699,-1121.4214,23.8723)) // Quando entra por LS
{
    
Entrada[playerid][0] = true;
    
SetPlayerPos(playerid1727.0101, -1642.748320.2253); // Coordenadas do interior
    
SetPlayerInterior(playerid18);
}
else if(
IsPlayerInRangeOfPoint(playerid1.52015.21941106.393810.8203)) // Quando entra por SF
{
    
Entrada[playerid][1] = true;
    
SetPlayerPos(playerid1727.0101, -1642.748320.2253); // Coordenadas do interior
    
SetPlayerInterior(playerid18);

SetPlayerPos
SetPlayerInterior
IsPlayerInRangeOfPoint
Os erros pararam, porem quando eu entro, entro normal, mais ao sair, eu caiu do cйu, aqui esta o cуdigo com as coordenas talvez tenha algum erro q eu nгo reparei


Entrada

Quote:

if(IsPlayerInRangeOfPoint(playerid, 1.5, 1219.1832,-1812.1083,16.593) // Quando entra por LS
{
Entrada[playerid][0] = true;
SetPlayerPos(playerid, 1490.4620,1305.9231,1093.2964); // Coordenadas do interior
SetPlayerInterior(playerid, 3);
}
Saida

if(IsPlayerInRangeOfPoint(playerid, 1.5, 1494.4674,1303.7887,1093.2891)) // saida do interior
{
if(Entrada[playerid][0] == true)
{
SetPlayerPos(1219.1832,-1812.1083,16.593; // poe as coordenada pra saida de LS
SetPlayerInterior(playerid, 0);
Entrada[playerid][0] = false;
}

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)