Portal SAMP
[Ajuda] Random de posições - 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] Random de posições (/showthread.php?tid=969)



Random de posições - LeleziiN - 23/03/2021

Bom galera estou criando um sistema de entregador de jornal, e o sistema é nesse estilo eu pego uma moto e vou no icone  e digito /icniciarrota e aparece um CP na na casa pra mim ir entregar. Bom são 5 entregas que tenho que fazer e quando termina as 5 vou e começo mais 5.

Bom o meu problema é que no meu GM são mais de 200 casas, e não sei fazer a parte que entregar em 5 locais diferentes e depois faz mais 5 entregas em outras casas diferentes das 5 primeiras


RE: Random de posições - ProKillerPa - 23/03/2021

Se voce quer que o player SEMPRE entrege em casas diferentes, terá que fazer uma array que vai armazenar o random do ID da casa, e depois no proximo random voce verificar se esse id armazenado é igual ao da random, se sim, fará o random novamente. Porém é mais simples voce apenas fazer um random com o id da casa ( que poderá ocorrer de entregar na mesma casa, porém entre 200 casas é um pouco mais dificil de ocorrer ).


RE: Random de posições - LeleziiN - 23/03/2021

(23/03/2021 13:47)ProKillerPa Escreveu: Se voce quer que o player SEMPRE entrege em casas diferentes, terá que fazer uma array que vai armazenar o random do ID da casa, e depois no proximo random voce verificar se esse id armazenado é igual ao da random, se sim, fará o random novamente. Porém é mais simples voce apenas fazer um random com o id da casa ( que poderá ocorrer de entregar na mesma casa, porém entre 200 casas é um pouco mais dificil de ocorrer ).

Bom eu sei fazer todo o sistema, só não sei fazer essa parte se alguém por mim ajuda mim mostrando um exemplo ou sei lá agradeço muito


RE: Random de posições - k2bi_YT - 23/03/2021

Vou dar um exemplo, basta você adaptar criar no seus sistema como base:

Codigo de Exemplo
Código PHP:
enum enumHouse
{
    
Float:X,
    
Float:Y,
    
Float:Z
};
new 
Casa[200][enumHouse];

CMD:icniciarrota(playerid)
{
    new 
= (random(200));
    
SetPlayerCheckpoint(playeridCasa[i][X], Casa[i][Y], Casa[i][Z], 5));
    return 
1;


Confirmando o que @ProKillerPa disse, é bem difícil cair a mesma casa 2x isso é, vai depender muito da quantidade de casas, quanto mais casas criadas, mais difícil de se repetir


RE: Random de posições - LeleziiN - 23/03/2021

(23/03/2021 15:39)k2bi_YT Escreveu: Vou dar um exemplo, basta você adaptar criar no seus sistema como base:

Codigo de Exemplo
Código PHP:
enum enumHouse
{
    
Float:X,
    
Float:Y,
    
Float:Z
};
new 
Casa[200][enumHouse];

CMD:icniciarrota(playerid)
{
    new 
= (random(200));
    
SetPlayerCheckpoint(playeridCasa[i][X], Casa[i][Y], Casa[i][Z], 5));
    return 
1;


Confirmando o que @ProKillerPa disse, é bem difícil cair a mesma casa 2x isso é, vai depender muito da quantidade de casas, quanto mais casas criadas, mais difícil de se repetir

Vlw mano vou pegar essa sua base e da uma estudada. Muito obrigado


RE: Random de posições - Dayvison - 23/03/2021

Se você já usa y_iterate no seu GM, você pode criar um iterator, seria o método mais eficiente. Você não deveria contar com a probabilidade do aleatório.


RE: Random de posições - LeleziiN - 24/03/2021

(23/03/2021 19:54)Dayvison Escreveu: Se você já usa y_iterate no seu GM, você pode criar um iterator, seria o método mais eficiente. Você não deveria contar com a probabilidade do aleatório.

Mais não uso essa include
________________________________________________________________________________________________________________________

Nessa parte como eu ponho as cordenadas?
Código PHP:
enum enumTeste
{
    Float:X,
    Float:Y,
    Float:Z
}; 

Se eu já tendo um new
Código PHP:
new Float:TestePoints[TOTALCORTES][3] =
{
    {-581.9695,-212.4150,76.9287},
    {-
642.0160,-187.1326,66.5296},
    {-
640.4346,-203.5521,68.0812},
    {-
611.9803,-150.0795,73.0166},
    {-
611.2014,-111.6282,66.3444}
}; 



RE: Random de posições - Dayvison - 24/03/2021

Então crie uma array, preencha e esvazie os itens dela.


RE: Random de posições - k2bi_YT - 24/03/2021

(24/03/2021 09:25)LeleziiN Escreveu:
(23/03/2021 19:54)Dayvison Escreveu: Se você já usa y_iterate no seu GM, você pode criar um iterator, seria o método mais eficiente. Você não deveria contar com a probabilidade do aleatório.

Mais não uso essa include
________________________________________________________________________________________________________________________

Nessa parte como eu ponho as cordenadas?
Código PHP:
enum enumTeste
{
    Float:X,
    Float:Y,
    Float:Z
}; 

Se eu já tendo um new
Código PHP:
new Float:TestePoints[TOTALCORTES][3] =
{
    {-581.9695,-212.4150,76.9287},
    {-
642.0160,-187.1326,66.5296},
    {-
640.4346,-203.5521,68.0812},
    {-
611.9803,-150.0795,73.0166},
    {-
611.2014,-111.6282,66.3444}
}; 

Depende, se você ja tem as coordenadas prontas, não é necessário usar uma enum, usei só como demostração.
Basta você usar a TestePoints na Random


RE: Random de posições - LeleziiN - 25/03/2021

(24/03/2021 19:03)k2bi_YT Escreveu:
(24/03/2021 09:25)LeleziiN Escreveu:
(23/03/2021 19:54)Dayvison Escreveu: Se você já usa y_iterate no seu GM, você pode criar um iterator, seria o método mais eficiente. Você não deveria contar com a probabilidade do aleatório.

Mais não uso essa include
________________________________________________________________________________________________________________________

Nessa parte como eu ponho as cordenadas?
Código PHP:
enum enumTeste
{
    Float:X,
    Float:Y,
    Float:Z
}; 

Se eu já tendo um new
Código PHP:
new Float:TestePoints[TOTALCORTES][3] =
{
    {-581.9695,-212.4150,76.9287},
    {-
642.0160,-187.1326,66.5296},
    {-
640.4346,-203.5521,68.0812},
    {-
611.9803,-150.0795,73.0166},
    {-
611.2014,-111.6282,66.3444}
}; 

Depende, se você ja tem as coordenadas prontas, não é necessário usar uma enum, usei só como demostração.
Basta você usar a TestePoints na Random

A blz então vlw mano