Portal SAMP
[Ajuda] Detectar qual pickup o player está - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Detectar qual pickup o player está (/showthread.php?tid=1071)



Detectar qual pickup o player está - annety - 12/04/2021

Existe alguma forma inteligente de guardar numa variavel qual casa o jogador está pisando?

Código:
PickupHouse[houseid] = CreateDynamicPickup(pickupModel, 1, HouseInfo[houseid][hOutPosX], HouseInfo[houseid][hOutPosY], HouseInfo[houseid][hOutPosZ], -1);

Pq eu tenho varios outros pickups, como:
Código:
PickupBizz[bizzid] = CreateDynamicPickup(pickupID, 1, BizzInfo[bizzid][bizzX], BizzInfo[bizzid][bizzY], BizzInfo[bizzid][bizzZ], -1);

PickUp_AmmunationGuns = CreateDynamicPickup(355, 1, 312.4893,-165.6870,999.6010, -1);

PickUp_247 = CreateDynamicPickup(1241, 1, -29.0454,-185.1313,1003.5469, -1);

Pq tem uns comandos que são usados em empresas,casas ou lojas e sempre que tenho que fazer isso tem que rodar um monte de loop...

Se eu pudesse armazenar isso de forma inteligente reduziria bastante o peso do meu gm rodando

Alguém sabe?


RE: Detectar qual pickup o player está - xbruno1000x - 12/04/2021

Explique um pouco mais sobre o que deseja fazer e sobre como está fazendo atualmente.


RE: Detectar qual pickup o player está - annety - 12/04/2021

(12/04/2021 11:35)xbruno1000x Escreveu: Explique um pouco mais sobre o que deseja fazer e sobre como está fazendo atualmente.

Queria setar duas variaveis
        inPickUpType[playerid] = 1;
        inPickUpTypeID[playerid] = 1;

E aí
inPickUpType seria tipo 1 = casa, 2= empresa
inPickUpTypeID seria o id da casa ou id da empresa

O que eu to fazendo atualmente é por exemplo, toda vez que o cara aperta F
faz um loop por todas as casas pra ver se tá em uma casa, dps em todas as empresas...
Isso só pra entrar na empresa/casa

Sendo que aí tem outras teclas que eu uso que fazem esses tipos de loops e faço isso em varios lugares
Se eu conseguisse controlar isso no enterdynamicpickup por exemplo, meu servidor gastaria MUITO menos recursos


RE: Detectar qual pickup o player está - MatheuzPatoo - 13/04/2021

(12/04/2021 21:42)annety Escreveu:
(12/04/2021 11:35)xbruno1000x Escreveu: Explique um pouco mais sobre o que deseja fazer e sobre como está fazendo atualmente.

Queria setar duas variaveis
        inPickUpType[playerid] = 1;
        inPickUpTypeID[playerid] = 1;

E aí
inPickUpType seria tipo 1 = casa, 2= empresa
inPickUpTypeID seria o id da casa ou id da empresa

O que eu to fazendo atualmente é por exemplo, toda vez que o cara aperta F
faz um loop por todas as casas pra ver se tá em uma casa, dps em todas as empresas...
Isso só pra entrar na empresa/casa

Sendo que aí tem outras teclas que eu uso que fazem esses tipos de loops e faço isso em varios lugares
Se eu conseguisse controlar isso no enterdynamicpickup por exemplo, meu servidor gastaria MUITO menos recursos

cara não seria melhor usar a propria funçao do pickup? tipo


Código PHP:
new Entrada;
new 
Saida;


public 
OnGameModeInit()
{
    Entrada CreatePickup(ID PICKUP1XYZ);
    Saida CreatePickup(ID PICKUP1XYZ);
    return 1;
}

public 
OnPlayerPickUpPickup(playeridpickupid)
{

    if(pickupid == Entrada)
    {
        SetPlayerInterior(playeridINTERIOR);
        SetPlayerPos(playeridXYZ);
    }
    else if(pickupid == Saida)
    {
        SetPlayerInterior(playeridINTERIOR);
        SetPlayerPos(playeridXYZ);
    }
    return 1;




RE: Detectar qual pickup o player está - annety - 04/05/2021

(13/04/2021 11:14)MatheuzPatoo Escreveu:
(12/04/2021 21:42)annety Escreveu:
(12/04/2021 11:35)xbruno1000x Escreveu: Explique um pouco mais sobre o que deseja fazer e sobre como está fazendo atualmente.

Queria setar duas variaveis
        inPickUpType[playerid] = 1;
        inPickUpTypeID[playerid] = 1;

E aí
inPickUpType seria tipo 1 = casa, 2= empresa
inPickUpTypeID seria o id da casa ou id da empresa

O que eu to fazendo atualmente é por exemplo, toda vez que o cara aperta F
faz um loop por todas as casas pra ver se tá em uma casa, dps em todas as empresas...
Isso só pra entrar na empresa/casa

Sendo que aí tem outras teclas que eu uso que fazem esses tipos de loops e faço isso em varios lugares
Se eu conseguisse controlar isso no enterdynamicpickup por exemplo, meu servidor gastaria MUITO menos recursos

cara não seria melhor usar a propria funçao do pickup? tipo


Código PHP:
new Entrada;
new 
Saida;


public 
OnGameModeInit()
{
    Entrada CreatePickup(ID PICKUP1XYZ);
    Saida CreatePickup(ID PICKUP1XYZ);
    return 1;
}

public 
OnPlayerPickUpPickup(playeridpickupid)
{

    if(pickupid == Entrada)
    {
        SetPlayerInterior(playeridINTERIOR);
        SetPlayerPos(playeridXYZ);
    }
    else if(pickupid == Saida)
    {
        SetPlayerInterior(playeridINTERIOR);
        SetPlayerPos(playeridXYZ);
    }
    return 1;


Isso não responde minha pergunta...
E no caso de uma casa? Como pegar o ID da casa que vc está pisando?

Código:
PickupHouse[houseid] = CreateDynamicPickup(pickupModel, 1, HouseInfo[houseid][hOutPosX], HouseInfo[houseid][hOutPosY], HouseInfo[houseid][hOutPosZ], -1);



RE: Detectar qual pickup o player está - ipsLuan - 05/05/2021

Use os exemplos da documentação do SA:MP.

https://open.mp/pt/docs/scripting/functions/CreatePickup
https://open.mp/pt/docs/scripting/callbacks/OnPlayerPickUpPickup


RE: Detectar qual pickup o player está - annety - 05/05/2021

(05/05/2021 08:52)ipsLuan Escreveu: Use os exemplos da documentação do SA:MP.

https://open.mp/pt/docs/scripting/functions/CreatePickup
https://open.mp/pt/docs/scripting/callbacks/OnPlayerPickUpPickup









(04/05/2021 19:53)annety Escreveu:
(13/04/2021 11:14)MatheuzPatoo Escreveu:
(12/04/2021 21:42)annety Escreveu:
(12/04/2021 11:35)xbruno1000x Escreveu: Explique um pouco mais sobre o que deseja fazer e sobre como está fazendo atualmente.

Queria setar duas variaveis
        inPickUpType[playerid] = 1;
        inPickUpTypeID[playerid] = 1;

E aí 
inPickUpType seria tipo 1 = casa, 2= empresa
inPickUpTypeID seria o id da casa ou id da empresa

O que eu to fazendo atualmente é por exemplo, toda vez que o cara aperta F
faz um loop por todas as casas pra ver se tá em uma casa, dps em todas as empresas...
Isso só pra entrar na empresa/casa

Sendo que aí tem outras teclas que eu uso que fazem esses tipos de loops e faço isso em varios lugares
Se eu conseguisse controlar isso no enterdynamicpickup por exemplo, meu servidor gastaria MUITO menos recursos

cara não seria melhor usar a propria funçao do pickup? tipo


Código PHP:
new Entrada;
new 
Saida;


public 
OnGameModeInit()
{
    Entrada CreatePickup(ID PICKUP1XYZ);
    Saida CreatePickup(ID PICKUP1XYZ);
    return 1;
}

public 
OnPlayerPickUpPickup(playeridpickupid)
{

    if(pickupid == Entrada)
    {
        SetPlayerInterior(playeridINTERIOR);
        SetPlayerPos(playeridXYZ);
    }
    else if(pickupid == Saida)
    {
        SetPlayerInterior(playeridINTERIOR);
        SetPlayerPos(playeridXYZ);
    }
    return 1;


Isso não responde minha pergunta...
E no caso de uma casa? Como pegar o ID da casa que vc está pisando?

Código:
PickupHouse[houseid] = CreateDynamicPickup(pickupModel, 1, HouseInfo[houseid][hOutPosX], HouseInfo[houseid][hOutPosY], HouseInfo[houseid][hOutPosZ], -1);



RE: Detectar qual pickup o player está - ipsLuan - 06/05/2021

Use loop + IsPlayerInRangeOfPoint pra saber a casa mais perto de você.


RE: Detectar qual pickup o player está - xbruno1000x - 06/05/2021

(06/05/2021 12:21)ipsLuan Escreveu: Use loop + IsPlayerInRangeOfPoint pra saber a casa mais perto de você.

O problema é que ele diz no tópico que deseja diminuir os loopings do gamemode