SA-MP Forums Archive
[Ajuda] Random para chamar Publics - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Random para chamar Publics (/showthread.php?tid=450121)



Random para chamar Publics - Gleisson_. - 11.07.2013

Gostaria de saber uma maneira para criar um Random que chamasse Publics..

por exemplo:

pawn Код:
new RandomEventos[] =
{
    EventoRace01,
    EventoRace02,
    EventoRace03,
    EventoTDM01,
    EventoTDM02
};
pawn Код:
forward EventoRace01(); public EventoRace01()
{
    //
    return 1;
}
Deveria ser assim ?

Pois nгo quero que toda vez seja o mesmo evento....


Re: Random para chamar Publics - SeV_ - 11.07.2013

Usa uma Variavel Com Switch.

Seria Melhor. Deste jeito. acho que nгo dб.


Re: Random para chamar Publics - WLSF - 11.07.2013

Vocк pode criar as publics tudo com o mesmo nome, adicionando um nъmero diferente no final.
Ai tu aleatoriza um nъmero e faz a junзгo: nomeCallBack + numAleatorio, e joga isso no CallLocalFunction.

Exemplinho:
pawn Код:
forward c0();
forward c1();
forward c2();

public c0() return 1;
public c1() return 1;
public c2() return 1;

public OnGameModeInit()
{
    new n = random(3);
    new sStr[10];
    format(sStr, 10, "c%d", n);
    CallLocalFunction(sStr, "");
}



Re: Random para chamar Publics - Gleisson_. - 11.07.2013

Hum, e qual seria a melhor maneira ?


Re: Random para chamar Publics - WLSF - 11.07.2013

Acho que vocк tem uma dinamicidade maior da forma que eu te exemplifiquei, sem tirar que nгo faria o uso do switch, em termos de processamento й uma 'treta' a menos.

Com o switch teria que criar as funзхes(уbvio), e uma estrutura com cada caso e seus respectivos valores(randфmicos).


Re: Random para chamar Publics - Gleisson_. - 11.07.2013

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Acho que vocк tem uma dinamicidade maior da forma que eu te exemplifiquei, sem tirar que nгo faria o uso do switch, em termos de processamento й uma 'treta' a menos.

Com o switch teria que criar as funзхes(уbvio), e uma estrutura com cada caso e seus respectivos valores(randфmicos).
Hum, valew, vou dar umas testadas aqui, ver se consigo!

Ah, ao return de cada public devo colocar isto: ?

PHP код:
return new random(3), new sStr[10], format(sStr10"c%d"n), CallLocalFunction(sStr""); 
Devo colocar isto?


Re: Random para chamar Publics - WLSF - 11.07.2013

O quк ? nгo entendi muito bem oque vocк quis dizer, eu fiz um exemplo pra testes, vou te mandar espero que dк pra vocк se basear nele.

Exemplinho:
pawn Код:
// INICIALIZADORES
forward t();
forward c0();
forward c1();
forward c2();
forward c3();
forward c4();
forward c5();
forward c6();
forward c7();
forward c8();

main() print("Initializing..");

// CALLBACKS
public OnGameModeInit()
{
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
   
    SetTimer("t", 2000, 1);
    return 1;
}

public t()
{
    new i = random(9);
    new sStr[10];
    format(sStr, 10, "c%d", i);
    CallLocalFunction(sStr, "");
}
public c0() return printf("oi c1");
public c1() return printf("oi c2");
public c2() return printf("oi c3");
public c3() return printf("oi c4");
public c4() return printf("oi c5");
public c5() return printf("oi c6");
public c6() return printf("oi c7");
public c7() return printf("oi c8");
public c8() return printf("oi c9");
O Timer tб com repeat = 1, ou seja vai ficar repetindo, e ele sempre fica chamando uma funзгo aleatуria.
Copie esse cуdigo e cole em um pwn novo e faзa seus testes, para poder aprimorar e deixar do seu jeito.

Abraзos.


Re: Random para chamar Publics - Gleisson_. - 11.07.2013

Ah, nem tinha me ligado uaposkpaoskaposaoskaps..

Tenho que fazer isto ao final de Cada public:

PHP код:
public OnGameModeInit() {
    
SetTimer("CarregarEvento"180000false);
    return 
1;

Ja na public

PHP код:
forward CarregarEvento(playerid); public CarregarEvento(playerid) {
    new 
random(9);
    new 
sStr[10];
    
format(sStr10"c%d"i);
    
CallLocalFunction(sStr"");
    return 
1;




Re: Random para chamar Publics - WLSF - 11.07.2013

Praticamente isso, mas se vocк quer que os eventos fiquem acontecendo de hora em hora, ou etc, teria que deixar o timer repeat ativo, mas eu creio que vocк jб saiba disso nй.

Abraзos.


Re: Random para chamar Publics - Gleisson_. - 12.07.2013

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Praticamente isso, mas se vocк quer que os eventos fiquem acontecendo de hora em hora, ou etc, teria que deixar o timer repeat ativo, mas eu creio que vocк jб saiba disso nй.

Abraзos.
Apskaopskapsok, eu pretendia colocar
PHP код:
return SetTimer("CarregarEvento"180000false); 
@EDIT:

Gostaria de colocar 1 player do lado do outro, com uma visгo de longe, que se nгo me engano й
pawn Код:
SetPlayerCameraPos
Conforme os jogares iriam para o evento, 1 player ficaria do lado do outro, o mesmo com os carros, para nгo bugarem um em cima do outro...

Tem algum cуdigo assim ?