random - Tonnob V2 - 08/04/2024
opa queria saber como faço pro nao repetir o random,
fiz um sistema de entrega ela seta o check point, so que as vezes o check point cai no mesmo lugar.
RE: random - pushline - 08/04/2024
Código PHP: cock() { static lastRand; new rand;
do { rand = random(sizeof(checkpoint)); } while (rand == lastRand);
lastRand = rand; }
RE: random - Tonnob V2 - 08/04/2024
(08/04/2024 08:45)pushline Escreveu: Código PHP: cock() { static lastRand; new rand;
do { rand = random(sizeof(checkpoint)); } while (rand == lastRand);
lastRand = rand; }
ele faz o que exatamente ?, so pra eu saber como uso
RE: random - pushline - 08/04/2024
a função "do while" vai repetir a funçao do random enquanto a ultima randomização (lastRand) seja igual ao rand (prevenir oq vc pediu).
e o lastRand está estático para a variável não esquecer o ultimo valor. então se você tiver o lastRand igual a 5, e rodar a função novamente, não vai ser resetado para 0 (que seria o caso do new), e sim vai ter o valor de 5.
RE: random - Tonnob V2 - 09/04/2024
(08/04/2024 13:11)pushline Escreveu: a função "do while" vai repetir a funçao do random enquanto a ultima randomização (lastRand) seja igual ao rand (prevenir oq vc pediu).
e o lastRand está estático para a variável não esquecer o ultimo valor. então se você tiver o lastRand igual a 5, e rodar a função novamente, não vai ser resetado para 0 (que seria o caso do new), e sim vai ter o valor de 5.
agr fiquei na duvida de como adapitala ao SetPlayerCheckPoint sabe me dizer como ?
eu teria que criar essa função e chama
RE: random - pushline - 09/04/2024
Não sei como adaptar pq eu não sei como sua gm funciona e aquilo que eu mandei é só um exemplo da randomização não ser a mesma.
RE: random - Tonnob V2 - 09/04/2024
(09/04/2024 11:54)pushline Escreveu: Não sei como adaptar pq eu não sei como sua gm funciona e aquilo que eu mandei é só um exemplo da randomização não ser a mesma.
eu criei um pastebin com o foco na parte
https://pastebin.com/niM8WuXG
RE: random - pushline - 09/04/2024
Testa isso:
Código PHP: new Float:RotasSedex[][4] = { {2347.5012,-1164.4919,27.4431, 3.0}, {2095.0173,-1308.8472,24.0986, 3.0}, {2001.0612,-1127.2688,25.5954, 3.0}, {804.6202,-1455.2427,13.6652, 3.0} }; public OnPlayerEnterCheckpoint(playerid) { if(ServicoS[playerid] != 1) { DisablePlayerCheckpoint(playerid); } else { new money = random(500); new local; static ultimoLocal;
do { local = random(sizeof(RotasSedex)); } while (local == ultimoLocal);
ultimoLocal = local;
SetPlayerCheckpoint(playerid, RotasSedex[local][0], RotasSedex[local][1], RotasSedex[local][2], RotasSedex[local][3]); new string[246]; format(string, sizeof(string), "<!> Entrega Sedex Voce recebeu {00FF00}R$%d", money); SCM(playerid, -1, string);
Player[playerid][pDinheiro] += money; pCarga[playerid] -= 1; } return 1; } //======= CMD CMD:carregar(playerid) { if(Player[playerid][pEmprego] != 1) return SCM(playerid, Vermelho, "<!> Voce nao e entregador"); if(!IsPlayerInRangeOfPoint(playerid, 3.0, 211.1068,24.8129,2.3410)) return SCM(playerid, Vermelho, "<!> Voce nao esta no local para carregar"); if(pCarga[playerid] >= 1) return SCM(playerid, Vermelho, "<!> Veiculo ja esta carregado"); { ServicoS[playerid] = 1; pCarga[playerid] = 3; new local; static ultimoLocal;
do { local = random(sizeof(RotasSedex)); } while (local == ultimoLocal);
ultimoLocal = local;
SetPlayerCheckpoint(playerid, RotasSedex[local][0], RotasSedex[local][1], RotasSedex[local][2], RotasSedex[local][3]); SCM(playerid, -1, "<!> Nao podera usar Gps em servico"); SCM(playerid, Amarelo, "<!> Veiculo carregado"); } return 1; }
RE: random - Tonnob V2 - 09/04/2024
(09/04/2024 13:45)pushline Escreveu: Testa isso:
Código PHP: new Float:RotasSedex[][4] = { {2347.5012,-1164.4919,27.4431, 3.0}, {2095.0173,-1308.8472,24.0986, 3.0}, {2001.0612,-1127.2688,25.5954, 3.0}, {804.6202,-1455.2427,13.6652, 3.0} }; public OnPlayerEnterCheckpoint(playerid) { if(ServicoS[playerid] != 1) { DisablePlayerCheckpoint(playerid); } else { new money = random(500); new local; static ultimoLocal;
do { local = random(sizeof(RotasSedex)); } while (local == ultimoLocal);
ultimoLocal = local;
SetPlayerCheckpoint(playerid, RotasSedex[local][0], RotasSedex[local][1], RotasSedex[local][2], RotasSedex[local][3]); new string[246]; format(string, sizeof(string), "<!> Entrega Sedex Voce recebeu {00FF00}R$%d", money); SCM(playerid, -1, string);
Player[playerid][pDinheiro] += money; pCarga[playerid] -= 1; } return 1; } //======= CMD CMD:carregar(playerid) { if(Player[playerid][pEmprego] != 1) return SCM(playerid, Vermelho, "<!> Voce nao e entregador"); if(!IsPlayerInRangeOfPoint(playerid, 3.0, 211.1068,24.8129,2.3410)) return SCM(playerid, Vermelho, "<!> Voce nao esta no local para carregar"); if(pCarga[playerid] >= 1) return SCM(playerid, Vermelho, "<!> Veiculo ja esta carregado"); { ServicoS[playerid] = 1; pCarga[playerid] = 3; new local; static ultimoLocal;
do { local = random(sizeof(RotasSedex)); } while (local == ultimoLocal);
ultimoLocal = local;
SetPlayerCheckpoint(playerid, RotasSedex[local][0], RotasSedex[local][1], RotasSedex[local][2], RotasSedex[local][3]); SCM(playerid, -1, "<!> Nao podera usar Gps em servico"); SCM(playerid, Amarelo, "<!> Veiculo carregado"); } return 1; }
deu uns erro de "loose indentation"
(09/04/2024 18:37)Tonnob V2 Escreveu: (09/04/2024 13:45)pushline Escreveu: Testa isso:
Código PHP: new Float:RotasSedex[][4] = { {2347.5012,-1164.4919,27.4431, 3.0}, {2095.0173,-1308.8472,24.0986, 3.0}, {2001.0612,-1127.2688,25.5954, 3.0}, {804.6202,-1455.2427,13.6652, 3.0} }; public OnPlayerEnterCheckpoint(playerid) { if(ServicoS[playerid] != 1) { DisablePlayerCheckpoint(playerid); } else { new money = random(500); new local; static ultimoLocal;
do { local = random(sizeof(RotasSedex)); } while (local == ultimoLocal);
ultimoLocal = local;
SetPlayerCheckpoint(playerid, RotasSedex[local][0], RotasSedex[local][1], RotasSedex[local][2], RotasSedex[local][3]); new string[246]; format(string, sizeof(string), "<!> Entrega Sedex Voce recebeu {00FF00}R$%d", money); SCM(playerid, -1, string);
Player[playerid][pDinheiro] += money; pCarga[playerid] -= 1; } return 1; } //======= CMD CMD:carregar(playerid) { if(Player[playerid][pEmprego] != 1) return SCM(playerid, Vermelho, "<!> Voce nao e entregador"); if(!IsPlayerInRangeOfPoint(playerid, 3.0, 211.1068,24.8129,2.3410)) return SCM(playerid, Vermelho, "<!> Voce nao esta no local para carregar"); if(pCarga[playerid] >= 1) return SCM(playerid, Vermelho, "<!> Veiculo ja esta carregado"); { ServicoS[playerid] = 1; pCarga[playerid] = 3; new local; static ultimoLocal;
do { local = random(sizeof(RotasSedex)); } while (local == ultimoLocal);
ultimoLocal = local;
SetPlayerCheckpoint(playerid, RotasSedex[local][0], RotasSedex[local][1], RotasSedex[local][2], RotasSedex[local][3]); SCM(playerid, -1, "<!> Nao podera usar Gps em servico"); SCM(playerid, Amarelo, "<!> Veiculo carregado"); } return 1; }
deu uns erro de "loose indentation"
deu certo conseguir compilar vou testar
|