Sistema de Cinto de Seguranзa e Capacete
#1

Bem como me estou a iniciar no Pawn, decidi postar o meu primeiro trabalho.

BUGS:
Eu criei isto num GameMode em que estou a trabalhar, passei para FilterScript e tem um pequeno Bug. Os comandos do GameMode nгo funcionam. Mas irei postar na mesma para vocкs me poderem ajudar e ajudar tambйm a quem tem duvidas.
pawn Код:
#include <a_samp>
//=====[Defines]======
#define SLOT 1
#define FILTERSCRIPT
//=======[Cores]======
#define Amarelo 0xFFFF00AA
#define Azul 0x2641FEAA
#define Vermelho 0xA10000AA
//=====[FORWARDS]=====
forward Tontura(playerid);
forward IsABike(vehicleid);
//======[News's]======
new CintoStatus[MAX_PLAYERS];
new CapaceteStatus[MAX_PLAYERS];
//=====[Defines]======

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
    print("\n---------------------------------------------------------------");
    print(" Cinto de Seguranзa e Capacete Filterscript criado por SlinghShot");
    print("-----------------------------------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
        if(CintoStatus[playerid] == 0)
        {
        new Float:VIDA;
        GetPlayerHealth(playerid, VIDA);
        SetPlayerHealth(playerid, VIDA-20.0);
        SetTimer("Tontura",20000,0);
        SetPlayerDrunkLevel(playerid, 500000);
        }
        return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
   
    if (strcmp("/capacete", cmdtext, true) == 0)
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            if(IsABike(GetPlayerVehicleID(playerid)))
            {
                if(CapaceteStatus[playerid] == 0)
                {
                    SendClientMessage(playerid, Azul,"Clocas-te o Capacete.");
                    CapaceteStatus[playerid] = 1;
                    switch(GetPlayerSkin(playerid))
                    {
                        #define SPAO{%0,%1,%2,%3,%4,%5} SetPlayerAttachedObject(playerid, SLOT, 18645, 2, (%0), (%1), (%2), (%3), (%4), (%5));
                        case 0, 65, 74, 149, 208, 273:  SPAO{0.070000, 0.000000, 0.000000, 88.000000, 75.000000, 0.000000}
                        case 1..6, 8, 14, 16, 22, 27, 29, 33, 41..49, 82..84, 86, 87, 119, 289: SPAO{0.070000, 0.000000, 0.000000, 88.000000, 77.000000, 0.000000}
                        case 7, 10: SPAO{0.090000, 0.019999, 0.000000, 88.000000, 90.000000, 0.000000}
                        case 9: SPAO{0.059999, 0.019999, 0.000000, 88.000000, 90.000000, 0.000000}
                        case 11..13: SPAO{0.070000, 0.019999, 0.000000, 88.000000, 90.000000, 0.000000}
                        case 15: SPAO{0.059999, 0.000000, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 17..21: SPAO{0.059999, 0.019999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 23..26, 28, 30..32, 34..39, 57, 58, 98, 99, 104..118, 120..131: SPAO{0.079999, 0.019999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 40: SPAO{0.050000, 0.009999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 50, 100..103, 148, 150..189, 222: SPAO{0.070000, 0.009999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 51..54: SPAO{0.100000, 0.009999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 55, 56, 63, 64, 66..73, 75, 76, 78..81, 133..143, 147, 190..207, 209..219, 221, 247..272, 274..288, 290..293: SPAO{0.070000, 0.019999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 59..62: SPAO{0.079999, 0.029999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 77: SPAO{0.059999, 0.019999, 0.000000, 87.000000, 82.000000, 0.000000}
                        case 85, 88, 89: SPAO{0.070000, 0.039999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 90..97: SPAO{0.050000, 0.019999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 132: SPAO{0.000000, 0.019999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 144..146: SPAO{0.090000, 0.000000, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 220: SPAO{0.029999, 0.019999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 223, 246: SPAO{0.070000, 0.050000, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 224..245: SPAO{0.070000, 0.029999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 294: SPAO{0.070000, 0.019999, 0.000000, 91.000000, 84.000000, 0.000000}
                        case 295: SPAO{0.050000, 0.019998, 0.000000, 86.000000, 82.000000, 0.000000}
                        case 296..298: SPAO{0.064999, 0.009999, 0.000000, 88.000000, 82.000000, 0.000000}
                        case 299: SPAO{0.064998, 0.019999, 0.000000, 88.000000, 82.000000, 0.000000}
                    }
                }
                else if(CapaceteStatus[playerid] == 1)
                {
                    SendClientMessage(playerid,Azul,"Retiras-te o Capacete.");
                    CapaceteStatus[playerid] = 0;
                    RemovePlayerAttachedObject(playerid, SLOT);
                }
            }
        }
        else
        {
            SendClientMessage(playerid,Amarelo,"[CW-RP:] Nгo estбs numa mota!");
        }
        return 1;
    }
    if (strcmp("/cinto", cmdtext, true) == 0)
    {
        if(IsPlayerInAnyVehicle(playerid))
        {
            if(IsABike(GetPlayerVehicleID(playerid)))
            {
                SendClientMessage(playerid,Amarelo, "[CW-RP:] Nгo podes por o cinto numa mota. (Digita /capacete)");
                return 1;
            }
            if(CintoStatus[playerid] == 0)
            {
                SendClientMessage(playerid,Azul,"Clocas-te o Cinto de Seguranзa.");
                CintoStatus[playerid] = 1;
            }
            else if(CintoStatus[playerid] == 1)
            {
                SendClientMessage(playerid,Azul,"Retiras-te o Cinto de Seguranзa.");
                CintoStatus[playerid] = 0;
            }
        }
        else
        {
            SendClientMessage(playerid,Amarelo,"[CW-RP:] Nгo estбs num carro!");
        }
        return 1;
    }
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(CintoStatus[playerid] == 1)
    {
        SendClientMessage(playerid,Azul,"Retiras-te o Cinto de Seguranзa.");
        CintoStatus[playerid] = 0;
    }
    if(CapaceteStatus[playerid] == 1)
    {
        SendClientMessage(playerid,Azul,"Retiras-te o Capacete.");
        CapaceteStatus[playerid] = 0;
        RemovePlayerAttachedObject(playerid, SLOT);
    }
    return 1;
}

public IsABike(vehicleid)
{   new model = GetVehicleModel(vehicleid);
    if(model == 581 || model == 509 || model == 481 || model == 462 || model == 521 || model == 463 || model == 510 || model == 522 || model == 461 || model == 448 || model == 471 || model == 468 || model == 586)
    {
        return 1;
    }
    return 0;
}
#endif
//Fim do meu primeiro FilterScript :D
Aceito criticas, e principalmente ajudas no que devo fazer para melhorar e afins.

Cumps
SlinghShot
Reply
#2

Infelizmente seu filterscript estб INCORRETO.

Sei que criticas sгo incфmodas, mas sгo proveitosas.

Dei uma rapido olhada e encontrei estes erros:
  • No OnPlayerStateChange faltou colocar isto antes dos "if":

    PHP код:
    if(newstate == 2
  • Alem disso, se o player sair de um veiculo ele ficarб com o capacete e como se estivesse usando cinto tambйm.
  • Vocк definiu a cor Vermelho, mas nгo a usou. Logo este define era desnecessбrio.
  • Vocк criou um SetTimer com a public e uma forward com a public Tontura, sendo que nгo hб nenhuma public desta no FS.
  • No OnVehicleDamageStatusUpdate a indentaзгo estб incorreta.
  • Й isso. Caso eu encontre mais erros, atualizo este post.
Reply
#3

Pois . . .eu modeifiquei o script em antes de colocar aqui e esquecime de tratar da Tontura porque no meu GM eu tenho tudo certo . . . :S
Reply
#4

Tem tudo certo no seu GM, mas postou tudo ERRADO no forum.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)