SA-MP Forums Archive
[FilterScript] Sistema de Overdose de drogas (BASE) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [FilterScript] Sistema de Overdose de drogas (BASE) (/showthread.php?tid=605283)



Sistema de Overdose de drogas (BASE) - focaximubh - 17.04.2016

Olб pessoal, bom comecei a fazer uma base para um sistema de overdose, mas me deu priguiзa de terminar, estou voltando agora para o samp, mas estou meio sem cabeзa, e como disse estou com priguiзa. Vou estar disponibilizando essa base para alguйm poder terminar ou ter a idйia e jб recriar ele melhorado.

Nгo contem Print's pois n tive tempo de tirar.

Segue abaixo o Link do pastebin para poder visualizar o cуdigo.

LINK

OBS: Utilizei um macro do JFS para conversгo de tempo e resolvi nгo remover pois pode ser ъtil. Antes que me esqueзa. Para o FS funcionar й necessбrio a criaзгo de uma pasta chamada FocaOverdose na ScriptFiles.
pawn Код:
/*
////////////////////////////////////////////////////////////////////////////////
//
//       $$$$$$$$$$  $$$$$$$$$$$$$$$$  $$$$$$$$$$$$$  $$$$$$$$$$$$$$$$$$$
//       $$$         $$$          $$$  $$$            $$$             $$$
//       $$$         $$$          $$$  $$$            $$$             $$$
//       $$$$$$$$$$  $$$          $$$  $$$            $$$             $$$
//       $$$         $$$          $$$  $$$            $$$$$$$$$$$$$$$$$$$
//       $$$         $$$          $$$  $$$            $$$             $$$
//       $$$         $$$          $$$  $$$            $$$             $$$
//       $$$         $$$          $$$  $$$            $$$             $$$
//       $$$         $$$          $$$  $$$            $$$             $$$
//       $$$         $$$$$$$$$$$$$$$$  $$$$$$$$$$$$$  $$$             $$$
//
////////////////////////////////////////////////////////////////////////////////
FilterScript Criado por: Focaximubh
Skype: lucas5563
*/

#include <a_samp>
#include <sscanf2>
#include <zcmd>
#include <dof2>

#define minutos(%0) (1000 * %0 * 60)
#define horas(%0) (1000 * %0 * 60 * 60)
#define segundos(%0) (1000 * %0)
#define dias(%0) (1000 * %0 * 60 * 60  * 24)
#define semanas(%0) (1000 * %0 * 60 * 60  * 24 * 7)
#define meses(%0) (1000 * %0 * 60 * 60  * 24 * 30)
#define anos(%0) (1000 * %0 * 60 * 60  * 24 * 30 * 12)
//====================[Definiзхes!!]============================================

#define     FocaOverdose    "FocaOverdose/%s.ini"
enum InfoOverdose
{
    Crack,
    Maconha,
    Cocaina,
    UsouCrack,
    UsouCocaina,
    UsouMaconha,
    VicioCrack,
    VicioCocaina,
    VicioMaconha,
    Overdose,
    Abstinencia

}
new OverdoseInfo[MAX_PLAYERS][InfoOverdose];

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
    print("\n----------------------------------");
    print(" >>> Iniciando sistema de Overdose <<< ");
    print(" >>> Criado por Focaximubh <<< ");
    print(" >>> Nao remova os creditos!!! <<< ");
    print(" >>> Livre postagem com os devidos creditos!!! <<< ");
    print(" >>> 15/04/2016 <<< ");
    print("----------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

#else

main()
{
    print("\n----------------------------------");
    print(" >>> Sistema de Overdose <<< ");
    print(" >>> Ideia para servidores RPG <<< ");
    print(" >>> Criado por Focaximubh <<< ");
    print(" >>> Nao remova os creditos!!! <<< ");
    print(" >>> Livre postagem com os devidos creditos!!! <<< ");
    print(" >>> 15/04/2016 <<< ");
    print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
    print("\n----------------------------------");
    print(" >>> Encerrando sistema de Overdose <<< ");
    print(" >>> Criado por Focaximubh <<< ");
    print(" >>> Nao remova os creditos!!! <<< ");
    print(" >>> Livre postagem com os devidos creditos!!! <<< ");
    print(" >>> 15/04/2016 <<< ");
    print("----------------------------------\n");
    return 1;
}

public OnGameModeExit()
{
    DOF2_Exit();
    return 1;
}

public OnPlayerConnect(playerid)
{
    CarregarCrackudo(playerid);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    SalvarCrackudo(playerid);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(OverdoseInfo[playerid][Abstinencia] != 1){
    if(OverdoseInfo[playerid][VicioCrack] == 1 || OverdoseInfo[playerid][VicioMaconha] == 1 || OverdoseInfo[playerid][VicioCocaina] == 1){
    SetTimerEx("TerAbstinencia", segundos(30), true, "i", playerid);
    }
}
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}
public OnPlayerUpdate(playerid)
{
    TerVicio(playerid);
    return 1;
}

//===============================[Stock's]======================================

stock NomeCrakudo(playerid)
{
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    return Name;
}

stock SalvarCrackudo(playerid)
{
    new Farquivos[50];
    format(Farquivos, sizeof(Farquivos), FocaOverdose, NomeCrakudo(playerid));
    if(DOF2_FileExists(Farquivos))
    {

        DOF2_SetInt(Farquivos, "Crack", OverdoseInfo[playerid][Crack]);
        DOF2_SetInt(Farquivos, "Maconha", OverdoseInfo[playerid][Maconha]);
        DOF2_SetInt(Farquivos, "Cocaina", OverdoseInfo[playerid][Cocaina]);

        DOF2_SetInt(Farquivos, "UsouCrack", OverdoseInfo[playerid][UsouCrack]);
        DOF2_SetInt(Farquivos, "UsouMaconha", OverdoseInfo[playerid][UsouMaconha]);
        DOF2_SetInt(Farquivos, "UsouCocaina", OverdoseInfo[playerid][UsouCocaina]);

        DOF2_SetInt(Farquivos, "VicioCrack", OverdoseInfo[playerid][VicioCrack]);
        DOF2_SetInt(Farquivos, "VicioMaconha", OverdoseInfo[playerid][VicioMaconha]);
        DOF2_SetInt(Farquivos, "VicioCocaina", OverdoseInfo[playerid][VicioCocaina]);

        DOF2_SetInt(Farquivos, "Overdose", OverdoseInfo[playerid][Overdose]);
        DOF2_SetInt(Farquivos, "Abstinencia", OverdoseInfo[playerid][Abstinencia]);
        DOF2_SaveFile();
    }
    return 1;
}

stock CarregarCrackudo(playerid)
{
    new Farquivos[50];
    format(Farquivos, sizeof(Farquivos), FocaOverdose, NomeCrakudo(playerid));
    if(DOF2_FileExists(Farquivos))
    {

        OverdoseInfo[playerid][Crack] = DOF2_GetInt(Farquivos, "Crack");
        OverdoseInfo[playerid][Maconha] = DOF2_GetInt(Farquivos, "Maconha");
        OverdoseInfo[playerid][Cocaina] = DOF2_GetInt(Farquivos, "Cocaina");

        OverdoseInfo[playerid][UsouCrack] = DOF2_GetInt(Farquivos, "UsouCrack");
        OverdoseInfo[playerid][UsouMaconha] = DOF2_GetInt(Farquivos, "UsoMaconha");
        OverdoseInfo[playerid][UsouCocaina] = DOF2_GetInt(Farquivos, "UsouCocaina");

        OverdoseInfo[playerid][VicioCrack] = DOF2_GetInt(Farquivos, "VicioCrack");
        OverdoseInfo[playerid][VicioMaconha] = DOF2_GetInt(Farquivos, "VicioMaconha");
        OverdoseInfo[playerid][VicioCocaina] = DOF2_GetInt(Farquivos, "VicioCocaina");

        OverdoseInfo[playerid][Overdose] = DOF2_GetInt(Farquivos, "Overdose");
        OverdoseInfo[playerid][Abstinencia] = DOF2_GetInt(Farquivos, "Abstinencia");


    }else DOF2_CreateFile(Farquivos);
    return 1;
}
stock TerVicio(playerid)
{
    if(OverdoseInfo[playerid][UsouCrack] == 5 && OverdoseInfo[playerid][VicioCrack] != 1)
    {
        SendClientMessage(playerid, -1, "[AVISO] Vocк usou muito Crack e acabou se viciando! <<");
        OverdoseInfo[playerid][VicioCrack] = 1;
        OverdoseInfo[playerid][UsouCrack] ++;
    }
    else if(OverdoseInfo[playerid][UsouMaconha] == 5 && OverdoseInfo[playerid][VicioMaconha] != 1)
    {
        SendClientMessage(playerid, -1, "[AVISO] Vocк usou muita Maconha e acabou se viciando! <<");
        OverdoseInfo[playerid][VicioMaconha] = 1;
        OverdoseInfo[playerid][UsouMaconha] ++;
    }
    else if(OverdoseInfo[playerid][UsouCocaina] == 5 && OverdoseInfo[playerid][VicioCocaina] != 1)
    {
        SendClientMessage(playerid, -1, "[AVISO] Vocк usou muita Cocaina e acabou se viciando! <<");
        OverdoseInfo[playerid][VicioCocaina] = 1;
        OverdoseInfo[playerid][UsouCocaina] ++;
    }
    return 1;
}
forward TerAbstinencia(playerid);
public TerAbstinencia(playerid)
{
    if(OverdoseInfo[playerid][VicioCrack] == 1)
    {
    OverdoseInfo[playerid][Abstinencia] = 1;
    SendClientMessage(playerid, -1, "[AVISO] Vocк estб sofrendo de abstinencia de Crack! <<");
    SetPlayerDrunkLevel(playerid, 6400);
    }
    else if(OverdoseInfo[playerid][VicioMaconha] == 1)
    {
    OverdoseInfo[playerid][Abstinencia] = 1;
    SendClientMessage(playerid, -1, "[AVISO] Vocк estб sofrendo de abstinencia de Maconha! <<");
    SetPlayerDrunkLevel(playerid, 6400);
    }
    else if(OverdoseInfo[playerid][VicioCocaina] == 1)
    {
    OverdoseInfo[playerid][Abstinencia] = 1;
    SendClientMessage(playerid, -1, "[AVISO] Vocк estб sofrendo de abstinencia de Cocaina! <<");
    SetPlayerDrunkLevel(playerid, 6400);
    }
    return 1;
}
stock TirarAbstinencia(playerid)
{
    if(OverdoseInfo[playerid][Abstinencia] == 1)
    {
    if(OverdoseInfo[playerid][UsouCrack] == 1 || OverdoseInfo[playerid][UsouMaconha] == 1 || OverdoseInfo[playerid][UsouCocaina] == 1)
    {
    OverdoseInfo[playerid][Abstinencia] = 0;
    SetPlayerDrunkLevel(playerid, 0);
    SendClientMessage(playerid, -1, "[AVISO] Vocк usou sua droguinha e saiu do estado de abstinencia! <<");
    }
}
    return 1;
}

//================================[COMANDOS]====================================
CMD:dardroga(playerid, params[])
{
    new cmd[32], pid, pquantidade, string[ 164 ];
    if(sscanf(params, "us[32]i", pid, cmd,pquantidade))return SendClientMessage(playerid, -1, "[AVISO] Uso >> /dardroga [nick] [droga] [valor] <<");

    if(!strcmp(cmd, "crack", true))
    {

        OverdoseInfo[playerid][Crack] += pquantidade;
        format(string,sizeof(string),"Vocк deu %d de Crack para o player %s",pquantidade, NomeCrakudo(pid));
        SendClientMessage(playerid, -1, string);
    }
    if(!strcmp(cmd, "maconha", true))
    {

        OverdoseInfo[playerid][Maconha] += pquantidade;
        format(string,sizeof(string),"Vocк deu %d de Maconha para o player %s",pquantidade, NomeCrakudo(pid));
        SendClientMessage(playerid, -1, string);
    }
    if(!strcmp(cmd, "cocaina", true))
    {

        OverdoseInfo[playerid][Cocaina] += pquantidade;
        format(string,sizeof(string),"Vocк deu %d de Cocaina para o player %s",pquantidade, NomeCrakudo(pid));
        SendClientMessage(playerid, -1, string);
    }

    return 1 ;
}

CMD:usardroga(playerid, params[])
{
    new cmd[32];
    if(sscanf(params, "s[32]", cmd)) return SendClientMessage(playerid, -1, "[AVISO] Uso >> /usardroga [droga] <<");

    if(!strcmp(cmd, "crack", true))
    {

        if(OverdoseInfo[playerid][Crack] < 1) return SendClientMessage(playerid, -1, "[ATENЗГO] Vocк nгo tem nenhuma grama de Crack! <<");
        OverdoseInfo[playerid][Crack] -= 1;
        OverdoseInfo[playerid][UsouCrack] += 1;
        TirarAbstinencia(playerid);
        SendClientMessage(playerid, -1, "Vocк usou Crack e ficou fudidao!!");
    }
    if(!strcmp(cmd, "maconha", true))
    {

        if(OverdoseInfo[playerid][Maconha] < 1) return SendClientMessage(playerid, -1, "[ATENЗГO] Vocк nгo tem nenhuma grama de Maconha! <<");
        OverdoseInfo[playerid][Maconha] -= 1;
        OverdoseInfo[playerid][UsouMaconha] += 1;
        TirarAbstinencia(playerid);
        SendClientMessage(playerid, -1, "Vocк usou Maconha e ficou brisadao!!");
    }
    if(!strcmp(cmd, "cocaina", true))
    {

        if(OverdoseInfo[playerid][Cocaina] < 1) return SendClientMessage(playerid, -1, "[ATENЗГO] Vocк nгo tem nenhuma grama de cocaнna! <<");
        OverdoseInfo[playerid][Cocaina] -= 1;
        OverdoseInfo[playerid][UsouCocaina] += 1;
        TirarAbstinencia(playerid);
        SendClientMessage(playerid, -1, "Vocк usou Cocaina e ficou Loucao!!");
    }
    return 1 ;
}

CMD:minhasdrogas(playerid, params[])
{
    new string[ 164 ];
    format(string,sizeof(string),"Crack: %d \n Maconha: %d \n Cocaina: %d", OverdoseInfo[playerid][Crack], OverdoseInfo[playerid][Maconha], OverdoseInfo[playerid][Cocaina]);
    SendClientMessage(playerid, -1, string);
    return 1;
}



Re: Sistema de Overdose de drogas (BASE) - HaRdiiZin - 17.04.2016

Dei uma leve olhada no cуdigo e parece estar уtimos sу em alguns pontos que poderiam ser otimizados como por exemplo este:
PHP код:
if(OverdoseInfo[playerid][VicioCrack] == || OverdoseInfo[playerid][VicioMaconha] == || OverdoseInfo[playerid][VicioCocaina] == 1
para

PHP код:
if(OverdoseInfo[playerid][VicioCrack] | OverdoseInfo[playerid][VicioMaconha] | OverdoseInfo[playerid][VicioCocaina] == 1
--

PHP код:
if(OverdoseInfo[playerid][UsouCrack] == || OverdoseInfo[playerid][UsouMaconha] == || OverdoseInfo[playerid][UsouCocaina] == 1
para

PHP код:
if(OverdoseInfo[playerid][UsouCrack] | OverdoseInfo[playerid][UsouMaconha] | OverdoseInfo[playerid][UsouCocaina] == 1
etc... mas no geral, estб bom.


Re: Sistema de Overdose de drogas (BASE) - bruxo00 - 17.04.2016

Quote:
Originally Posted by HaRdiiZin
Посмотреть сообщение
Dei uma leve olhada no cуdigo e parece estar уtimos sу em alguns pontos que poderiam ser otimizados como por exemplo este:
PHP код:
if(OverdoseInfo[playerid][VicioCrack] == || OverdoseInfo[playerid][VicioMaconha] == || OverdoseInfo[playerid][VicioCocaina] == 1
para

PHP код:
if(OverdoseInfo[playerid][VicioCrack] | OverdoseInfo[playerid][VicioMaconha] | OverdoseInfo[playerid][VicioCocaina] == 1
--

PHP код:
if(OverdoseInfo[playerid][UsouCrack] == || OverdoseInfo[playerid][UsouMaconha] == || OverdoseInfo[playerid][UsouCocaina] == 1
para

PHP код:
if(OverdoseInfo[playerid][UsouCrack] | OverdoseInfo[playerid][UsouMaconha] | OverdoseInfo[playerid][UsouCocaina] == 1
etc... mas no geral, estб bom.
Isso й uma optimizaзгo visual apenas. De certeza que de um cуdigo para o outro nгo hб ganho de performance.


Para base ficou bom.


Re: Sistema de Overdose de drogas (BASE) - focaximubh - 17.04.2016

Agradeзo os elogios, assim que a preguiзa passar talvez eu termine ele pois estou cheio de idйias, o site cagou a tabulaзгo do cуdigo todo ¬¬, Hard essa modificaзгo que vocк me sugeriu й algo bacana, mas como o bruxo disse, nгo hб melhorias na performance, eu costumo utilizar daquele jeito mas agradeзo.


Re: Sistema de Overdose de drogas (BASE) - F1N4L - 17.04.2016

Quote:
Originally Posted by HaRdiiZin
Посмотреть сообщение
Dei uma leve olhada no cуdigo e parece estar уtimos sу em alguns pontos que poderiam ser otimizados como por exemplo este:
PHP код:
if(OverdoseInfo[playerid][VicioCrack] == || OverdoseInfo[playerid][VicioMaconha] == || OverdoseInfo[playerid][VicioCocaina] == 1
para

PHP код:
if(OverdoseInfo[playerid][VicioCrack] | OverdoseInfo[playerid][VicioMaconha] | OverdoseInfo[playerid][VicioCocaina] == 1
--

PHP код:
if(OverdoseInfo[playerid][UsouCrack] == || OverdoseInfo[playerid][UsouMaconha] == || OverdoseInfo[playerid][UsouCocaina] == 1
para

PHP код:
if(OverdoseInfo[playerid][UsouCrack] | OverdoseInfo[playerid][UsouMaconha] | OverdoseInfo[playerid][UsouCocaina] == 1
etc... mas no geral, estб bom.
Quote:
Originally Posted by bruxo00
Посмотреть сообщение
Isso й uma optimizaзгo visual apenas. De certeza que de um cуdigo para o outro nгo hб ganho de performance.


Para base ficou bom.
Pelo visto, essas variбveis ganham somente valores 0 / 1. Utilizando variбvel booleana seria melhor nesse caso.

@TOPIC

Ficou bacana!


Re: Sistema de Overdose de drogas (BASE) - HaRdiiZin - 17.04.2016

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Pelo visto, essas variбveis ganham somente valores 0 / 1. Utilizando variбvel booleana seria melhor nesse caso.

@TOPIC

Ficou bacana!
Sim, realmente.


Re: Sistema de Overdose de drogas (BASE) - focaximubh - 17.04.2016

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Pelo visto, essas variбveis ganham somente valores 0 / 1. Utilizando variбvel booleana seria melhor nesse caso.

@TOPIC

Ficou bacana!
Eu entendo, mas na minha cabeзa eu iria fazer nнveis de abstinкncia por exemplo por isso precisava de variбveis que fossem possнveis atribuir valores maiores que 1 no caso a booleana seria t/f o que nгo tornaria isso possнvel. Minha idйia seria que o player iria sofrer de abstinкncia da droga eu estava preparando para criar as TextDraws com os nнveis coloridos para os diferentes valores de abstinencia 1 2 3 4 assim assumindo vбrios efeitos diferentes no player como drunk ou cair no meio da rua por alguns segundos(fraqueza) essas coisas de crackudo ai.....