[FilterScript] Sistema de "Achar Dinheiro no Chгo"
#1

MUUUUUUUUITO SIMPLES! Fiz em menos de 5 Minutos... Ficou legalzinho e irei utilizar em meu Servidor, espero que gostem:
pawn Code:
#include <a_samp>

#define TEMPO 5 //TEMPO EM MINUTOS (TROCAR O "5")

new BigEar[MAX_PLAYERS];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print("         FS by CidadeNovaRP ¬¬");
    print("--------------------------------------\n");
    return 1;
}

public OnGameModeInit()
{
    SetTimer("Ganhou", TEMPO*60000, true);
    return 1;
}

forward Ganhou();
public Ganhou()
{
    new Players = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i) && !IsPlayerNPC(i))
        {
            Players++;
        }
    }
    if(Players >= 15)
    {
        new PlayerWin = random(Players);
        if(!IsPlayerConnected(PlayerWin)) return Ganhou();
        new Moneys = 100 + random(1900);
        new PlayerName[64], string[128];
        GivePlayerMoney(PlayerWin, Moneys);
        GetPlayerName(PlayerWin, PlayerName, sizeof(PlayerName));
        format(string, sizeof(string), "* %s achou R$%d no chгo.", PlayerName, Moneys);
        ProxDetector(30.0, PlayerWin, string, -1, -1, -1, -1, -1);
        return 1;
    }
    return 1;
}

stock ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:posx, Float:posy, Float:posz;
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
            {
                if(!BigEar[i])
                {
                    GetPlayerPos(i, posx, posy, posz);
                    tempposx = (oldposx -posx);
                    tempposy = (oldposy -posy);
                    tempposz = (oldposz -posz);
                    if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
                    {
                        SendClientMessage(i, col1, string);
                    }
                    else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
                    {
                        SendClientMessage(i, col2, string);
                    }
                    else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
                    {
                        SendClientMessage(i, col3, string);
                    }
                    else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
                    {
                        SendClientMessage(i, col4, string);
                    }
                    else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
                    {
                        SendClientMessage(i, col5, string);
                    }
                }
                else
                {
                    SendClientMessage(i, col1, string);
                }
            }
        }
    }
    return true;
}


-------------------------------------------------------------------------------------------------

Quote:
Originally Posted by [Y]Falcon
View Post
pawn Code:
public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print("         FS by CidadeNovaRP ¬¬");
    print("--------------------------------------\n");
    return 1;
}

public OnGameModeInit()
{
    SetTimer("Ganhou", 60000, true);
    return 1;
}
Vocк estб fazendo isto errado...
Editado, nem percebi...


Quote:
Originally Posted by SuB_ZeRo0_
View Post
pawn Code:
for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i) && !IsPlayerNPC(i))
        {
            Players++;
        }
    }
Isso й ruim! Nгo irб pegar certos IDs e poderб ainda pegar IDs que nгo estгo online.

Um jeito bom:
pawn Code:
new max_id=-1,achou=-1;
for(id=0;id<MAX_PLAYERS;id++)
    if(IsPlayerConnected(id))
        max_id=id+1;
if(max_id!=-1)
    while(achou==-1)
    {
        new id_f=random(max_id);
        if(IsPlayerConnected(id_f)) achou=id_f;
    }
}
Explicaзгo:
- Ele irб procurar o maior ID online e adicionar + 1 nisso. (Imaginemos que seja 54 o maior, ou seja, 55).
- Ele irб procurar, no while, um ID online com o ID mбximo pego no processo a cima.
- Ao achar ele marcarб o ID na variбvel 'achou'
- Esta variбvel (achou) serб o ID do ganhador.

Obs: Caso nгo tenha ninguйm online irб retornar -1.
ObsІ: Claro que pode ser otimizado para obter o resultado mais rбpido, mas tome cuidado para nгo cair no memso erro de antes.
Atualizado e otimizado... (Apenas acha dinheiro se tiver mais de 15 Players Online, caso queria mais ou menos basta alterar ao seu gosto...
Reply
#2

legal kkk
Reply
#3

pawn Code:
public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print("         FS by CidadeNovaRP ¬¬");
    print("--------------------------------------\n");
    return 1;
}

public OnGameModeInit()
{
    SetTimer("Ganhou", 60000, true);
    return 1;
}
Vocк estб fazendo isto errado...
Reply
#4

Quote:
Originally Posted by Deanx
View Post
legal kkk

Thx
Reply
#5

Nada mau
Reply
#6

Esta otimo.
A Se isso fosse na real eu tava rico -q
Reply
#7

Quote:
Originally Posted by Gustavo_z
View Post
Nada mau
Vlwe

Quote:
Originally Posted by BreakDriFT
View Post
Esta otimo.
A Se isso fosse na real eu tava rico -q
Nй kk
Reply
#8

Уtimo filterscript, iria pegar muito bem em RolePlays.
Parabйns.
Reply
#9

Quote:
Originally Posted by Đeagle
View Post
Уtimo filterscript, iria pegar muito bem em RolePlays.
Parabйns.
Obrigado
Reply
#10

pawn Code:
for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i) && !IsPlayerNPC(i))
        {
            Players++;
        }
    }
Isso й ruim! Nгo irб pegar certos IDs e poderб ainda pegar IDs que nгo estгo online.

Um jeito bom:
pawn Code:
new max_id=-1,achou=-1;
for(id=0;id<MAX_PLAYERS;id++)
    if(IsPlayerConnected(id))
        max_id=id+1;
if(max_id!=-1)
    while(achou==-1)
    {
        new id_f=random(max_id);
        if(IsPlayerConnected(id_f)) achou=id_f;
    }
}
Explicaзгo:
- Ele irб procurar o maior ID online e adicionar + 1 nisso. (Imaginemos que seja 54 o maior, ou seja, 55).
- Ele irб procurar, no while, um ID online com o ID mбximo pego no processo a cima.
- Ao achar ele marcarб o ID na variбvel 'achou'
- Esta variбvel (achou) serб o ID do ganhador.

Obs: Caso nгo tenha ninguйm online irб retornar -1.
ObsІ: Claro que pode ser otimizado para obter o resultado mais rбpido, mas tome cuidado para nгo cair no memso erro de antes.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)