[Ajuda] Random para chamar Publics
#1

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....
Reply
#2

Usa uma Variavel Com Switch.

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

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, "");
}
Reply
#4

Hum, e qual seria a melhor maneira ?
Reply
#5

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).
Reply
#6

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?
Reply
#7

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.
Reply
#8

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;

Reply
#9

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.
Reply
#10

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 ?
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)