Saída de interior - PauloJBR7 - 19/09/2023
Tem alguma maneira de setar o player para sair do interior pela mesma entrada que ele entrou? Tenho 3 interiores com o mesmo id e sempre que entro e saio do interior ele não saí pela mesma entrada que eu entrei. Alguem pode me informar se tem como?
Código: //SAÍDA CLUCKIN BELL LS
if(IsPlayerInRangeOfPoint (playerid, 3.0, 364.9082,-11.1554,1001.8516))
{
SetPlayerInterior (playerid, 0);
SetPlayerPos(playerid, 927.9937,-1352.8876,13.3438);
}
//SAÍDA CLUCKIN BELL LS 2
if(IsPlayerInRangeOfPoint (playerid, 3.0, 364.9082,-11.1554,1001.8516))
{
SetPlayerInterior (playerid, 0);
SetPlayerPos(playerid, 2397.7510,-1898.4891,13.5469);
}
//SAÍDA CLUCKIN BELL LS 3
if(IsPlayerInRangeOfPoint (playerid, 3.0, 364.9082,-11.1554,1001.8516))
{
SetPlayerInterior (playerid, 0);
SetPlayerPos(playerid, 2397.7510,-1898.4891,13.5469);
}
RE: Saída de interior - zBreno - 19/09/2023
quando o jogador encostar no pickup você só precisa escrever a entrada onde ele passou, se tem dois burguer shot em los santos você tem a entrada um e entrada dois então na variável que você usa para anotar o nome do pickup de entrada você define entrada1 = 1; e entrada2 = 1; dentro da variável do pickup de entrada, já na variável do pickup de saída que ta dentro do interior se a condição if ( entrada1 for == 1 ) você teleporta ele para entrada do pickup 1, então no pickup que ta dentro do interior são colocadas duas variáveis dentro dele
if(pickupid == sair do burger shot)
{
if( se ele entrou pelo pickup 1 entrada1 == 1 )
{
entrada1[playerid] = 0;
set player pos entrada 1
}
if( se ele entrou pelo pickup 2 entrada2 == 1 )
{
entrada2[playerid] = 0;
set player pos entrada 2
}
}
RE: Saída de interior - PauloJBR7 - 19/09/2023
(19/09/2023 07:56)zBreno Escreveu: quando o jogador encostar no pickup você só precisa escrever a entrada onde ele passou, se tem dois burguer shot em los santos você tem a entrada um e entrada dois então na variável que você usa para anotar o nome do pickup de entrada você define entrada1 = 1; e entrada2 = 1; dentro da variável do pickup de entrada, já na variável do pickup de saída que ta dentro do interior se a condição if ( entrada1 for == 1 ) você teleporta ele para entrada do pickup 1, então no pickup que ta dentro do interior são colocadas duas variáveis dentro dele
if(pickupid == sair do burger shot)
{
if( se ele entrou pelo pickup 1 entrada1 == 1 )
{
entrada1[playerid] = 0;
set player pos entrada 1
}
if( se ele entrou pelo pickup 2 entrada2 == 1 )
{
entrada2[playerid] = 0;
set player pos entrada 2
}
}
Fiquei um pouco confuso com a explicação kkk (sou meio leigo no assunto, comecei a montar um servidor recentemente para aprender) Se puder deixar um pouco mais claro essa sua explicaçao vou agradecer muito
RE: Saída de interior - zBreno - 19/09/2023
new entrada1[MAX_PLAYRES] = 0;
new entrada2[MAX_PLAYERS] = 0;
new local1, local2, saida;
public OnPlayerConnect(playerid)
{
entrada1[playerid] = 0;
entrada2[playerid] = 0;
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == local1)
{
entrada1[playerid] = 1;
}
if(pickupid == local2)
{
entrada2[playerid] = 1;
}
if(pickupid == saida)
{
if(entrada1[playerid] == 1)
{
entrada1[playerid] = 0;
}
if(entrada2[playerid] == 1)
{
entrada2[playerid] = 0;
}
}
return 1;
}
RE: Saída de interior - PauloJBR7 - 19/09/2023
(19/09/2023 16:20)zBreno Escreveu: new entrada1[MAX_PLAYRES] = 0;
new entrada2[MAX_PLAYERS] = 0;
new local1, local2, saida;
public OnPlayerConnect(playerid)
{
entrada1[playerid] = 0;
entrada2[playerid] = 0;
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == local1)
{
entrada1[playerid] = 1;
}
if(pickupid == local2)
{
entrada2[playerid] = 1;
}
if(pickupid == saida)
{
if(entrada1[playerid] == 1)
{
entrada1[playerid] = 0;
}
if(entrada2[playerid] == 1)
{
entrada2[playerid] = 0;
}
}
return 1;
}
Mas no caso eu queria fazer por CMD para o player digitar /entrar ou entrar apertando F ou sair digitando /sair ou apertando F, tem como adaptar isso no comando? Pq esse código que mandei acima é por cmd que criei na minha GM
RE: Saída de interior - Aranha - 19/09/2023
(19/09/2023 19:41)PauloJBR7 Escreveu: (19/09/2023 16:20)zBreno Escreveu: new entrada1[MAX_PLAYRES] = 0;
new entrada2[MAX_PLAYERS] = 0;
new local1, local2, saida;
public OnPlayerConnect(playerid)
{
entrada1[playerid] = 0;
entrada2[playerid] = 0;
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == local1)
{
entrada1[playerid] = 1;
}
if(pickupid == local2)
{
entrada2[playerid] = 1;
}
if(pickupid == saida)
{
if(entrada1[playerid] == 1)
{
entrada1[playerid] = 0;
}
if(entrada2[playerid] == 1)
{
entrada2[playerid] = 0;
}
}
return 1;
}
Mas no caso eu queria fazer por CMD para o player digitar /entrar ou entrar apertando F ou sair digitando /sair ou apertando F, tem como adaptar isso no comando? Pq esse código que mandei acima é por cmd que criei na minha GM Código: CMD:entrar(playerid, params[])
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, x,y,z))
{
SetPlayerPos(playerid, x,y,z);
SetPlayerInterior(playerid, id);
}
else if(IsPlayerInRangeOfPoint(playerid, 2.0, x,y,z))
{
SetPlayerPos(playerid, x,y,z);
SetPlayerInterior(playerid, id);
}
return 1;
}
pode fazer o mesmo com o cmdair
apertando f para sair ou entrar use
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
Código: if(newkeys == KEY_SECONDARY_ATTACK)//tecla f
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, x,y,z))
{
SetPlayerPos(playerid, x,y,z);
SetPlayerInterior(playerid, id);
}
}
RE: Saída de interior - PauloJBR7 - 19/09/2023
(19/09/2023 16:20)zBreno Escreveu: new entrada1[MAX_PLAYRES] = 0;
new entrada2[MAX_PLAYERS] = 0;
new local1, local2, saida;
public OnPlayerConnect(playerid)
{
entrada1[playerid] = 0;
entrada2[playerid] = 0;
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == local1)
{
entrada1[playerid] = 1;
}
if(pickupid == local2)
{
entrada2[playerid] = 1;
}
if(pickupid == saida)
{
if(entrada1[playerid] == 1)
{
entrada1[playerid] = 0;
}
if(entrada2[playerid] == 1)
{
entrada2[playerid] = 0;
}
}
return 1;
}
Não deu certo aqui mano, continua saindo por outra entrada
RE: Saída de interior - zBreno - 21/09/2023
(19/09/2023 19:41)PauloJBR7 Escreveu: Mas no caso eu queria fazer por CMD para o player digitar /entrar ou entrar apertando F ou sair digitando /sair ou apertando F, tem como adaptar isso no comando? Pq esse código que mandei acima é por cmd que criei na minha GM
Não faça isso, se o relógio do jogador travar ele vai ficar preso dentro do interior use os pickups, veja agora to mandando um código funcional se você fizer ai e não funcionar provavelmente ta errando no SetPlayerPos
Código: #include <a_samp>
#include <timerfix>
#include <streamer>
main()
{
}
new entrada1[MAX_PLAYERS] = 0, entrada2[MAX_PLAYERS] = 0, EntrarCB1, EntrarCB2, SairCB;
public OnGameModeInit()
{
DisableInteriorEnterExits();
EntrarCB1 = CreateDynamicPickup(19198, 1, 2422.0315, -1508.9431, 23.9922, -1, -1, -1, 10.0); //
EntrarCB2 = CreateDynamicPickup(19198, 1, 924.6476, -1352.8187, 13.3766, -1, -1, -1, 10.0); //
SairCB = CreateDynamicPickup(19198, 1, 364.7711, -10.2328, 1001.8516, -1, -1, -1, 10.0); //
return 1;
}
public OnPlayerConnect(playerid)
{
entrada1[playerid] = 0, entrada2[playerid] = 0;
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetSpawnInfo(playerid, 1, 155, 2429.7324, -1511.2690, 23.8430, 119.3757, 24, 7, 29, 10, 31, 10);
return 1;
}
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
if(pickupid == SairCB)
{
if(entrada1[playerid] == 1)
{
entrada1[playerid] = 0;
SetPlayerPos(playerid, 2427.1233, -1509.2976, 23.8347); // SairCB1
SetPlayerInterior(playerid, 0);
}
if(entrada2[playerid] == 1)
{
entrada2[playerid] = 0;
SetPlayerPos(playerid, 919.1171, -1352.8507, 13.2010);
SetPlayerInterior(playerid, 0);
}
}
if(pickupid == EntrarCB1)
{
entrada1[playerid] = 1;
SetPlayerPos(playerid, 368.3214, -8.5612, 1001.8516); // EntrarCB1
SetPlayerInterior(playerid, 9);
}
if(pickupid == EntrarCB2)
{
entrada2[playerid] = 1;
SetPlayerPos(playerid, 368.3214, -8.5612, 1001.8516); // EntrarCB2
SetPlayerInterior(playerid, 9);
}
return 1;
}
RE: Saída de interior - PauloJBR7 - 21/09/2023
(21/09/2023 12:23)zBreno Escreveu: (19/09/2023 19:41)PauloJBR7 Escreveu: Mas no caso eu queria fazer por CMD para o player digitar /entrar ou entrar apertando F ou sair digitando /sair ou apertando F, tem como adaptar isso no comando? Pq esse código que mandei acima é por cmd que criei na minha GM
Não faça isso, se o relógio do jogador travar ele vai ficar preso dentro do interior use os pickups, veja agora to mandando um código funcional se você fizer ai e não funcionar provavelmente ta errando no SetPlayerPos
Código: #include <a_samp>
#include <timerfix>
#include <streamer>
main()
{
}
new entrada1[MAX_PLAYERS] = 0, entrada2[MAX_PLAYERS] = 0, EntrarCB1, EntrarCB2, SairCB;
public OnGameModeInit()
{
DisableInteriorEnterExits();
EntrarCB1 = CreateDynamicPickup(19198, 1, 2422.0315, -1508.9431, 23.9922, -1, -1, -1, 10.0); //
EntrarCB2 = CreateDynamicPickup(19198, 1, 924.6476, -1352.8187, 13.3766, -1, -1, -1, 10.0); //
SairCB = CreateDynamicPickup(19198, 1, 364.7711, -10.2328, 1001.8516, -1, -1, -1, 10.0); //
return 1;
}
public OnPlayerConnect(playerid)
{
entrada1[playerid] = 0, entrada2[playerid] = 0;
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetSpawnInfo(playerid, 1, 155, 2429.7324, -1511.2690, 23.8430, 119.3757, 24, 7, 29, 10, 31, 10);
return 1;
}
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
if(pickupid == SairCB)
{
if(entrada1[playerid] == 1)
{
entrada1[playerid] = 0;
SetPlayerPos(playerid, 2427.1233, -1509.2976, 23.8347); // SairCB1
SetPlayerInterior(playerid, 0);
}
if(entrada2[playerid] == 1)
{
entrada2[playerid] = 0;
SetPlayerPos(playerid, 919.1171, -1352.8507, 13.2010);
SetPlayerInterior(playerid, 0);
}
}
if(pickupid == EntrarCB1)
{
entrada1[playerid] = 1;
SetPlayerPos(playerid, 368.3214, -8.5612, 1001.8516); // EntrarCB1
SetPlayerInterior(playerid, 9);
}
if(pickupid == EntrarCB2)
{
entrada2[playerid] = 1;
SetPlayerPos(playerid, 368.3214, -8.5612, 1001.8516); // EntrarCB2
SetPlayerInterior(playerid, 9);
}
return 1;
}
Acabei conseguindo fazer isso, deixei o comando em "/entrar" e "/sair" mesmo, qualquer coisa caso o jogador bugar ele pode chamar algum administrador para puxar ou dar um tapa nele, creio que irá desbugar caso aconteça. Mas vllw ai por ajudar
|