[Ajuda] Pegar 2 Players aleatoriamente
#1

Ola pessoal, estou desenvolvendo meu gm de zombie ( totalmente do 0 ), nesse gm estou trabalhando com um sistema de xp,levels e upgrades, mas estou com um problema para escolher os zombies iniciais, ja que, nao gostaria que o player escolhesse seu time, pois a maioria iria ficar de humano e nao teria nenhum zombie, ou seja, ia perder totalmente a graзa.
Meu problema como ja disse, й para escolher os zombies iniciais, que seriam 2, ja й o segundo dia que estou quebrando a cabeзa para fazer algum codigo que de certo mas nada.
O maximo que consegui foi o seguinte:

pawn Код:
new zm[][0] =
{
    {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25},
    {26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50}
}; // Aqui seria todos os ids possiveis no meu servidor, ou seja 50 ( 50 slots );
pawn Код:
forward Tempo();
public Tempo() // esta public й para devinir os raund que sao 5 minutos cada
{
    SetTimer("Tempo2", 300000, true);
    return 1;
}
forward Tempo2();
public Tempo2() /* apos os 5 minutos de raund ele salvara todos os dados, xp,levels e tals... e fazendo um restart para escolher os novos zombies. */
{
    Restart();
    SetTimer("Tempo", 15000, true);
    for(new playerid = 0; playerid < GetMaxPlayers(); ++playerid)
    {
        AtualizarStatus(playerid);
    }
    return 1;
}
pawn Код:
Restart(playerid)
{
    for(new playerid; playerid < MAX_PLAYERS; playerid++)
    {
        if(IsPlayerConnected(playerid))
        {
            PlayerInfo[playerid][time] = 0;
            SendClientMessage(playerid, COLOR_GRAD, "Sorteando novos times...");
            SetPlayerPos(playerid, 2343.9089,134.6476,26.3359);
            SetPlayerColor(playerid,0xFF0A00FF);
            AtualizarStatus(playerid);
            return 1;
        }
        return 1;
    }
        new zms = random(sizeof(zm));
        new primeirozm = zm[zms][0];
        new segundozm = zm[zms][1];
        if(IsPlayerConnected(primeirozm))
        {
            new name[MAX_PLAYER_NAME];
            GetPlayerName(primeirozm, name, sizeof(name));
            PlayerInfo[primeirozm][time] = 1;
            SendClientMessageToAll(verde, "Fujam ou se escondam, %s й o primeiro zombie!", name);
            SetPlayerColor(playerid,0xFF0A00FF);
            SetPlayerSkin(playerid,162);
            SetPlayerDrunkLevel (playerid, 10000);
            return 1;
        }
        if(IsPlayerConnected(primeirozm))
        {
            new name[MAX_PLAYER_NAME];
            GetPlayerName(segundozm, name, sizeof(name));
            PlayerInfo[segundozm][time] = 1;
            SendClientMessageToAll(verde, "Fujam ou se escondam, %s й o ajudante do primeiro zombie!", name);
            SetPlayerColor(playerid,0xFF0A00FF);
            SetPlayerSkin(playerid,162);
            SetPlayerDrunkLevel (playerid, 10000);
            return 1;
        }
    for(new playerid; playerid < MAX_PLAYERS; playerid++)
    {
        if(IsPlayerConnected(playerid) && PlayerInfo[playerid][time] == 0)
        {
            SetPlayerColor(playerid,0x0A00FFFF);
            if(PlayerInfo[playerid][vip] == 1)
            {
                SetPlayerSkin(playerid,165);
            }
            if(!PlayerInfo[playerid][vip] == 1)
            {
                new rand = random(sizeof(RandomSpawn));
                SetPlayerSkin(playerid,RandomSpawn[rand][0]);
            }
            GivePlayerWeapon(playerid,30,500);
            GivePlayerWeapon(playerid,24,500);
            GivePlayerWeapon(playerid,5,1);
            return 1;
        }
        return 1;
    }
    return true;
}
Nгo sou um profissional em pawn como muito de voces, e se poderem me dar uma luz agradeceria muito
So uma outra coisinha, evitem me dar codigos prontos, prefiro que me mostre o que eu preciso fazer e o que aprender para chegar a desenvolver tal funзao :/

Qualquer coisa a mais que nгo ficou explicita neste topico me contate.
obrigado.
Reply
#2

Nгo entendi muito bem sua dъvida, mas acho que й isso

Por exemplo vou usar esta funзгo abaixo e setar a posiзгo dos dois players
pawn Код:
new p[2];

PlayersRandom(p[0],p[1]);

SetPlayerPos(p[0],0.0,0.0,0.0);
SetPlayerPos(p[1],0.0,0.0,0.0);
pawn Код:
PlayersRandom(&p1,&p2)
{
    p1 = random(GetMaxPlayers());
    p2 = random(GetMaxPlayers());
    return 1;
}
Reply
#3

pawn Код:
RandomID()
{
    new
        bk = GetMaxPlayers(),
        pl[MAX_PLAYERS],
        ii = -1,
        xx = -1;
       
    while(++ii != bk)
    {
        if(IsPlayerConnected(ii))
        {
            pl[++xx] = ii;
        }
    }
    return xx == -1 ? (-1) : (ii = random(xx),pl[ii]);
}
Fiz ai, sу dar uma adaptada. Se nгo tiver players conectados retorna a -1, claro.
Reply
#4

PHP код:
stock randomplayer()
{
    new 
0wGetMaxPlayers();
    static 
Conectados[MAX_PLAYERS];
    while(
y)
    {
        if(
IsPlayerConnected(z))
        {
            
Conectados[w] = z;
            
w++;
        }
        
z++;
    }
    return !
? -Conectados[random(w)];

http://forum.sa-mp.com/showpost.php?...&postcount=610
Reply
#5

O meu cуdigo funciona perfeitamente tanto quanto o do rjj facepalms.

Manolinho й sу tu adaptar para as infos de seu Zombie.
Reply
#6

[S]trong, nгo disse que o seu nгo funcionava, sу coloquei "um codigo alternativo" ao seu.

Lбstimas.
Reply
#7

Lбstimas digo eu, se eu jб respondi o tуpico para que vem postar um cуdigo que nem seu й? Cуdigo alternбtivo й o caralho 1+1 sempre vai dar 2.

Mas devo admitir o Lбstimas vindo de vocк me fez rir.
Reply
#8

Quote:
Originally Posted by [S]trong
Посмотреть сообщение
Lбstimas digo eu, se eu jб respondi o tуpico para que vem postar um cуdigo que nem seu й? Cуdigo alternбtivo й o caralho 1+1 sempre vai dar 2.

Mas devo admitir o Lбstimas vindo de vocк me fez rir.
Do not cry baby.
Reply
#9

Quote:
Originally Posted by Shadoww5
Посмотреть сообщение
Do not cry baby.
Tu й o cara, realmente, nem matemбtica tu sabe, inclusгo digital й febre ai, nгo?
Reply
#10

Quote:
Originally Posted by [S]trong
Посмотреть сообщение
Tu й o cara, realmente, nem matemбtica tu sabe, inclusгo digital й febre ai, nгo?
Pelo menos ele ta ajudando e nгo reclamando do post dos outros e iniciando brigas.
Faзa-me o favor nй, estб estressado , vai para o banheiro.
O cara sу quis ajudar, nгo tem o menor problema, se a pessoa tem uma dъvida, uma pessoa responde, a outra tem total razгo de responder com outro cуdigo, diversificando mais o conhecimento do novato.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)