[FilterScript] Sistema de Presentes
#1

Sistema de Presentes !

Olб pessoal, venho trazer um FilterScript de Presentes.

Bom, eu dei uma pequena procurada no fуrum e nгo achei nada parecido com oque estou trazendo a vocкs.
Vamos lб, esse FS cria 5 objetos (Pode ser facilmente alterado) que sгo os presentes e, ao pegar algum, ganha-se prкmios (Me Gusta)

Comandos para Players.
•/PegarPresente - Pega o presente.

Comandos para Admins (Logados na Rcon)
•/DarPresentes - Solta os presentes
•/IrPresente - Teleporta atй o Presente

Cуdigo:
pawn Код:
/*
                            Sistema de Presentes V-1.2
                            Este й um Sistema simples, уtimo para servidores RP ou RPG.
                            Creditos: AnonymouSs - Criaзгo
                            Dicas/Ajuda: BlueX, Mandrack_Freeze
                            Favor nao retirar os crйditos :)
*/

//[Includes]
#include <a_samp>
#include <zcmd>
#include <sscanf2>

//[Variaveis]
new Presentes[10];
new str[256];
new nome[MAX_PLAYER_NAME];
new bool:PresentesON;
new bool:Presente1;
new bool:Presente2;
new bool:Presente3;
new bool:Presente4;
new bool:Presente5;
new PresentesS;
new Carro;
//      Pos Randomicos dos Presentes
new Float:PosP1[][3] = { // Presente 1
    {1679.3547,764.7830,10.8203},
    {1074.7871,1360.4675,10.8203},
    {409.0438,2445.8823,16.5000},
    {170.7376,1834.8569,17.6406},
    {1565.9558,1680.5415,10.8203}
};

new Float:PosP2[][3] = { // Presente 2
    {410.3170,1165.4447,7.9069},
    {676.3964,828.6520,-42.9609},
    {1080.0352,1001.6307,11.0000},
    {1336.1379,1919.2657,11.4609},
    {1460.8502,2032.8099,10.8203}
};

new Float:PosP3[][3] = { // Presente 3
    {969.9153,2021.5613,11.3672},
    {1124.3917,2031.7479,10.8203},
    {1124.7054,1959.9232,24.9536},
    {1059.3982,1864.8138,14.9297},
    {937.2090,1747.9916,15.7941}
};

new Float:PosP4[][3] = { // Presente 4
    {1343.1893,1653.3903,10.8203},
    {1292.0728,1579.5107,19.8637},
    {1267.5626,1329.4642,10.8130},
    {1432.0682,1098.9417,10.8203},
    {1586.9862,1187.0731,38.0466}
};

new Float:PosP5[][3] = { // Presente 5
    {1714.5117,1317.8984,10.8203},
    {1678.8364,1447.7605,47.7780},
    {1659.1014,1727.3586,17.5223},
    {1631.3134,1978.1212,10.8203},
    {1681.2046,2108.9719,11.3667}
};

//[Defines]
//Mensagens
#define Msg SendClientMessage
#define MsgAll SendClientMessageToAll
//----------------------------------------------------------------------------//
public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" Sistema de Presentes --- Carregado com Sucesso!");
    print(" Sistema de Presentes --- Criado por: AnonymouSs");
    print("--------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    if(Presente1 == false) DestroyObject(Presentes[0]);
    if(Presente2 == false) DestroyObject(Presentes[1]);
    if(Presente3 == false) DestroyObject(Presentes[2]);
    if(Presente4 == false) DestroyObject(Presentes[3]);
    if(Presente5 == false) DestroyObject(Presentes[4]);
    DestroyVehicle(Carro);
    return 1;
}

public OnPlayerConnect(playerid)
{
    Msg(playerid, -1, "{FFFF00}Sistema de Presentes By: [AnonymouSs]");
    return 1;
}

CMD:darpresentes(playerid)
{
    GetPlayerName(playerid, nome, sizeof(nome));
    if(PresentesON == false)
    {
        if(IsPlayerAdmin(playerid))
        {
            format(str, sizeof(str), "{FF0000}O Admin {0000FF} %s {FF0000} soltou os presentes pela cidade, corram!", nome);
            MsgAll(-1, str);
            PresentesON = true;
            PresentesS = 5;
            new Random1 = random(sizeof(PosP1));
            new Random2 = random(sizeof(PosP2));
            new Random3 = random(sizeof(PosP3));
            new Random4 = random(sizeof(PosP4));
            new Random5 = random(sizeof(PosP5));
            Presentes[0] = CreateObject(19341, PosP1[Random1][0], PosP1[Random1][1], PosP1[Random1][2], 0.0, 0.0, 0.0);
            Presentes[1] = CreateObject(19342, PosP2[Random2][0], PosP2[Random2][1], PosP2[Random2][2], 0.0, 0.0, 0.0);
            Presentes[2] = CreateObject(19343, PosP3[Random3][0], PosP3[Random3][1], PosP3[Random3][2], 0.0, 0.0, 0.0);
            Presentes[3] = CreateObject(19344, PosP4[Random4][0], PosP4[Random4][1], PosP4[Random4][2], 0.0, 0.0, 0.0);
            Presentes[4] = CreateObject(19345, PosP5[Random5][0], PosP5[Random5][1], PosP5[Random5][2], 0.0, 0.0, 0.0);
            Presente1 = false;
            Presente2 = false;
            Presente3 = false;
            Presente4 = false;
            Presente5 = false;
        }
        else
        {
            Msg(playerid, -1, "[FaiL] Vocк nгo й Admin!");
        }
    }
    else
    {
        Msg(playerid, -1, "[FaiL]Jб foram soltados os presentes, aguardem todos acabarem");
    }
    return 1;
}

CMD:pegarpresente(playerid)
{
    GetPlayerName(playerid, nome, sizeof(nome));
    new Float:OP1[3], Float:OP2[3], Float:OP3[3], Float:OP4[3], Float:OP5[3];
    GetObjectPos(Presentes[0], OP1[0], OP1[1], OP1[2]);
    GetObjectPos(Presentes[1], OP2[0], OP2[1], OP2[2]);
    GetObjectPos(Presentes[2], OP3[0], OP3[1], OP3[2]);
    GetObjectPos(Presentes[3], OP4[0], OP4[1], OP4[2]);
    GetObjectPos(Presentes[4], OP5[0], OP5[1], OP5[2]);
    if(PresentesON == true)
    {
        if(IsPlayerInRangeOfPoint(playerid, 2.0, OP1[0], OP1[1], OP1[2]))
        {
            GivePlayerWeapon(playerid, 24, 999);
            GivePlayerWeapon(playerid, 31, 999);
            SetPlayerHealth(playerid, 200);
            SetPlayerArmour(playerid, 200);
            format(str, sizeof(str), "|Presentes|{FF0000} O jogador {0000FF}%s {FF0000}pegou o presente numero {0000FF}1{FF0000}, e ganhou um Kit Assassino", nome);
            MsgAll(-1, str);
            Presente1 = true;
            DestroyObject(Presentes[0]);
            PresentesS --;
            if(PresentesS < 1)
            {
                MsgAll(-1, "|Presentes| Ahhhh! Acabaram todos os presentes :(, aguarde mais :)");
                PresentesON = false;
            }
        }
        else if(IsPlayerInRangeOfPoint(playerid, 2.0, OP2[0], OP2[1], OP2[2]))
        {
            SetPlayerSkin(playerid, 299);
            format(str, sizeof(str), "|Presentes|{FF0000} O jogador {0000FF}%s {FF0000}pegou o presente numero {0000FF}2{FF0000}, e ganhou uma troca de Skin Grбtis!", nome);
            MsgAll(-1, str);
            DestroyObject(Presentes[1]);
            PresentesS --;
            Presente2 = true;
            if(PresentesS < 1)
            {
                MsgAll(-1, "|Presentes| Ahhhh! Acabaram todos os presentes :(, aguarde mais :)");
                PresentesON = false;
            }
        }
        else if(IsPlayerInRangeOfPoint(playerid, 2.0, OP3[0], OP3[1], OP3[2]))
        {
            SetPlayerHealth(playerid, 0);
            format(str, sizeof(str), "|Presentes|{FF0000} O jogador {0000FF}%s {FF0000}pegou o presente numero {0000FF}3{FF0000}, e ganhou uma visita do senhor Morte!", nome);
            MsgAll(-1, str);
            Presente3 = true;
            DestroyObject(Presentes[2]);
            PresentesS --;
            if(PresentesS < 1)
            {
                MsgAll(-1, "|Presentes| Ahhhh! Acabaram todos os presentes :(, aguarde mais :)");
                PresentesON = false;
            }
        }
        else if(IsPlayerInRangeOfPoint(playerid, 2.0, OP4[0], OP4[1], OP4[2]))
        {
            new Float:P[3], Float:Angulo;
            GetPlayerPos(playerid, P[0], P[1], P[2]);
            GetPlayerFacingAngle(playerid, Angulo);
            Carro = CreateVehicle(522, P[0], P[1], P[2], Angulo, -1, -1, 60);
            PutPlayerInVehicle(playerid, Carro, 0);
            format(str, sizeof(str), "|Presentes|{FF0000} O jogador {0000FF}%s {FF0000}pegou o presente numero {0000FF}4{FF0000}, e ganhou uma motoca novinha!!", nome);
            MsgAll(-1, str);
            Presente4 = true;
            DestroyObject(Presentes[3]);
            PresentesS --;
            if(PresentesS < 1)
            {
                MsgAll(-1, "|Presentes| Ahhhh! Acabaram todos os presentes :(, aguarde mais :)");
                PresentesON = false;
            }
        }
        else if(IsPlayerInRangeOfPoint(playerid, 2.0, OP5[0], OP5[1], OP5[2]))
        {
            new lvl = GetPlayerScore(playerid);
            SetPlayerScore(playerid, lvl + 50);
            format(str, sizeof(str), "|Presentes|{FF0000} O jogador {0000FF}%s {FF0000}pegou o presente numero {0000FF}5{FF0000}, e ganhou +50 de Score", nome);
            MsgAll(-1, str);
            Presente5 = true;
            DestroyObject(Presentes[4]);
            PresentesS --;
            if(PresentesS < 1)
            {
                MsgAll(-1, "|Presentes| Ahhhh! Acabaram todos os presentes :(, aguarde mais :)");
                PresentesON = false;
            }
        }
        else
        {
            Msg(playerid, -1, "[FaiL]Vocк nгo estб perto de um presente");
        }
    }
    else
    {
        Msg(playerid, -1, "[FaiL]Nгo foram soltados presente no momento, aguarde.");
    }
    return 1;
}

CMD:irpresente(playerid, params[])
{
    new LePresente;
    new Float:OP1[3], Float:OP2[3], Float:OP3[3], Float:OP4[3], Float:OP5[3];
    GetObjectPos(Presentes[0], OP1[0], OP1[1], OP1[2]);
    GetObjectPos(Presentes[1], OP2[0], OP2[1], OP2[2]);
    GetObjectPos(Presentes[2], OP3[0], OP3[1], OP3[2]);
    GetObjectPos(Presentes[3], OP4[0], OP4[1], OP4[2]);
    GetObjectPos(Presentes[4], OP5[0], OP5[1], OP5[2]);
    if(!IsPlayerAdmin(playerid)) return Msg(playerid, -1, "[FaiL] Vocк nгo й um Admin!");
    if(sscanf(params, "d", LePresente)) return Msg(playerid, -1, "Use: /irpresente [1-5]");
    if(LePresente < 1 || LePresente > 5) return Msg(playerid, -1, "Use: /irpresente [1-5]");
    if(PresentesON == false) return Msg(playerid, -1, "[FaiL] Desculpe, mas nгo foram dados presentes ainda");
    if(LePresente == 1)
    {
        if(Presente1 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
        SetPlayerPos(playerid, OP1[0], OP1[1], OP1[2]);
    }
    else if(LePresente == 2)
    {
        if(Presente2 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
        SetPlayerPos(playerid, OP2[0], OP2[1], OP2[2]);
    }
    else if(LePresente == 3)
    {
        if(Presente3 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
        SetPlayerPos(playerid, OP3[0], OP3[1], OP3[2]);
    }
    else if(LePresente == 4)
    {
        if(Presente4 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
        SetPlayerPos(playerid, OP4[0], OP4[1], OP4[2]);
    }
    else if(LePresente == 5)
    {
        if(Presente5 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
        SetPlayerPos(playerid, OP5[0], OP5[1], OP5[2]);
    }
    return 1;
}
OU

PasteBin

•ScreenShots:

Crйditos:
AnonymouSs - Pela criaзгo
Wiki SA:MP - Gata, se vocк nгo existisse esse tуpico nгo existiria, Зua Linda.
BlueX, Mandrack_Freeze - Dicas/Ajuda

Observaзхes:
0є - Olhem, o presente й o objeto 19341 atй o 19345(Uns OVOS), pois nгo achei coisa melhor (Se vocк me indicar um objeto melhor eu agradeзo muito e, obviamente ganha parte dos crйditos.
1є - Aceito CRITICAS desde que elas nгo me ofendam / esculachem pois sou INICIANTE.
2є - Se jб existir peзo desculpas por procurei e nгo achei (Prova)
3є - Nгo adianta falar "Cуdigos Ъteis", pois jб postei aqui e nгo seria necessбrio eu postar em Cуdigos Ъteis.
4є - Vocк pode publicar ele em seu Blog/Site, sу nгo retire os crйditos Por Favor.
5є - Espero fazer mais coisas com este FS e, com certeza, aceito ideias.
Reply
#2

Bom.

I'm Sexy you no!
Reply
#3

muito bom... so poderia colocar um sistema de random spawn de presentes assim o player q axar um, nгo sabera onde ele vai estar da prуxima vez.

mas ficou legel, parabйns.
Reply
#4

Quote:
Originally Posted by dPlaYer_
Посмотреть сообщение
Bom.

I'm Sexy you no!
Okay

Quote:
Originally Posted by Mandrack_FreeZe
Посмотреть сообщение
muito bom... so poderia colocar um sistema de random spawn de presentes assim o player q axar um, nгo sabera onde ele vai estar da prуxima vez.

mas ficou legel, parabйns.
Vlw, boa ideia, vou fazer isso jб para a prуxima versгo
Reply
#5

Bom... 6,7/10,0
Reply
#6

Tуpico: 10/10, muito organizado.
FS: 7/10 - Muito difнcil de ser adaptado, quem sabe adaptar, sabe fazer um =/
Reply
#7

Muito bom! 8/10.
Reply
#8

Quote:
Originally Posted by Rhayziin
Посмотреть сообщение
Bom... 6,7/10,0
Vlw kk, 6,7, numero de nota dificil hein, sу colocou ne? kk mas ta blz, vlw aew

Quote:
Originally Posted by Kuddy
Посмотреть сообщение
Tуpico: 10/10, muito organizado.
FS: 7/10 - Muito difнcil de ser adaptado, quem sabe adaptar, sabe fazer um =/
Vlw, vou ver se coloco mais configurбvel na prуxima versгo, sу que estou meio sem tempo...

Quote:
Originally Posted by jpeg
Посмотреть сообщение
Muito bom! 8/10.
Vlw ae
Reply
#9

Em vez de

pawn Код:
//Presentes
#define P1 1679.3547,764.7830,10.8203
#define P2 1074.7871,1360.4675,10.8203
#define P3 409.0438,2445.8823,16.5000
#define P4 170.7376,1834.8569,17.6406
#define P5 1565.9558,1680.5415,10.8203
Faзa

pawn Код:
new Float:PresentesP[][3] = {
    {1679.3547,764.7830,10.8203},
    {1074.7871,1360.4675,10.8203},
    {409.0438,2445.8823,16.5000},
    {170.7376,1834.8569,17.6406},
    {1565.9558,1680.5415,10.8203}
};
Depois em vez de usar P1,P2,..., use:
  • PresentesP[id][pos]
    • id - ID do presente, lembrando que й de 0 a 4 e nгo de 1 a 5.
    • pos - Pos do presente, x, y, z , lembrando que terб de usar os 3
Espero que isso ajude

---

Gostei muito do trabalho, achei criativo
Reply
#10

Tem muitas partes do cуdigo que vocк poderia utilizar o looping e arrays ao invйs
de borleanas..
Reply
#11

Queria uma ajudinha,

Tipo eu soltei os presentes uma vez, ok foi
se eu quizer soltar mais de 1 vez ? nao vai..
Alguem dб um Help ae
Reply
#12

Gostei talvez eu irei usar em meu servidor sem os crйditos RIARIA ( Zoa eu nunca ia fazer essa coisa de nb ))
Reply
#13

Quote:
Originally Posted by djlexvi
Посмотреть сообщение
Queria uma ajudinha,

Tipo eu soltei os presentes uma vez, ok foi
se eu quizer soltar mais de 1 vez ? nao vai..
Alguem dб um Help ae
Estб configurado para dar pra soltar os presentes uma vez sу atй todos acabarem, vocк pode editar isso, sу entender o codigo

Quote:
Originally Posted by Diogo123
Посмотреть сообщение
Gostei talvez eu irei usar em meu servidor sem os crйditos RIARIA ( Zoa eu nunca ia fazer essa coisa de nb ))
kkk

To com um pouco de tempo agora, vou fazer mais alguns ajustes e atualizar o sistema e o topico.
Reply
#14

Quote:
Originally Posted by AnonymouSs
Посмотреть сообщение
Estб configurado para dar pra soltar os presentes uma vez sу atй todos acabarem, vocк pode editar isso, sу entender o codigo
Tipo eu soltei uma vez , ai pegaram todos se eu digitar /darpresentes ele solta sу que nao da pra pegar.
Reply
#15

Sistema Atualizado.
Quote:
Originally Posted by djlexvi
Посмотреть сообщение
Tipo eu soltei uma vez , ai pegaram todos se eu digitar /darpresentes ele solta sу que nao da pra pegar.
Bom, vocк alterou o codigo?
Se sim, verifique oque vocк alterou.
Se nгo, veja a atualizaзгo que fiz.
Reply
#16

Tipo to meio deciso aqui por que meu gm totalmente completo asim desse geito


if(strcmp(cmd, "/irpresente", true) == 0)

^ ^ ^
so que esse fs que vc posto й todinho desse ai abaixo


CMD:irpresente(playerid, params[])
{
new LePresente;
new Float:OP1[3], Float:OP2[3], Float:OP3[3], Float:OP4[3], Float:OP5[3];
GetObjectPos(Presentes[0], OP1[0], OP1[1], OP1[2]);
GetObjectPos(Presentes[1], OP2[0], OP2[1], OP2[2]);
GetObjectPos(Presentes[2], OP3[0], OP3[1], OP3[2]);
GetObjectPos(Presentes[3], OP4[0], OP4[1], OP4[2]);
GetObjectPos(Presentes[4], OP5[0], OP5[1], OP5[2]);
if(!IsPlayerAdmin(playerid)) return Msg(playerid, -1, "[FaiL] Vocк nгo й um Admin!");
if(sscanf(params, "d", LePresente)) return Msg(playerid, -1, "Use: /irpresente [1-5]");
if(LePresente < 1 || LePresente > 5) return Msg(playerid, -1, "Use: /irpresente [1-5]");
if(PresentesON == false) return Msg(playerid, -1, "[FaiL] Desculpe, mas nгo foram dados presentes ainda");
if(LePresente == 1)
{
if(Presente1 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
SetPlayerPos(playerid, OP1[0], OP1[1], OP1[2]);
}
else if(LePresente == 2)
{
if(Presente2 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
SetPlayerPos(playerid, OP2[0], OP2[1], OP2[2]);
}
else if(LePresente == 3)
{
if(Presente3 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
SetPlayerPos(playerid, OP3[0], OP3[1], OP3[2]);
}
else if(LePresente == 4)
{
if(Presente4 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
SetPlayerPos(playerid, OP4[0], OP4[1], OP4[2]);
}
else if(LePresente == 5)
{
if(Presente5 == true) return Msg(playerid, -1, "[FaiL] Este presente jб foi pego");
SetPlayerPos(playerid, OP5[0], OP5[1], OP5[2]);
}
return 1;
}

ai queria que alguem de vcs ajuda-se eu a converter para

if(strcmp(cmd, "/irpresente", true) == 0)
por que o erro que dar na hora de compilar й esse aqui
" params "


ajudem!!!
Reply
#17

Gostei do hund qual voce usa??


@Topic muito bom!
Reply
#18

Dб pra melhorar isso aн hein...
Reply
#19

Bom..
Optimize o cуdigo com arrays loop,as condicionais e variaveis como garfield disse
8,5 / 10,0
Reply
#20

Hm bem massa! mais o problema й que nгo estб funcionando. Estranho isso! Aqui nгo estб funcionando nгo sei porquк.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)