pawn Код:
/*------------------------------------------------------------------------------
[INCLUDES]
------------------------------------------------------------------------------*/
#include a_samp
#include SII
/*------------------------------------------------------------------------------
[DINHEIRO]
------------------------------------------------------------------------------*/
#define DarDinheiro(%0,%1) Info[%0][Dinheiro] += %1
#define RetirarDinheiro(%0,%1) Info[%0][Dinheiro] -= %1
#define SetarDinheiro(%0,%1) Info[%0][Dinheiro] = %1
#define GetarDinheiro(%0) Info[%0][Dinheiro]
#define ResetarDinheiro(%0) Info[%0][Dinheiro] = 0;
/*------------------------------------------------------------------------------
[C & AB]
------------------------------------------------------------------------------*/
#define Contas "Contas/%s.ini"
#define AdminBot "Diogo B."
/*------------------------------------------------------------------------------
[DIALOGS]
------------------------------------------------------------------------------*/
#define DialogRegistar (100)
#define DialogLogar (101)
#define DialogSexo (102)
#define DialogKickado (104)
/*------------------------------------------------------------------------------
[CORES]
------------------------------------------------------------------------------*/
#define Esverdeado (0x808000AA)
#define Vermelho (0xE60000FF)
#define Amarelo (0xFFFF00FF)
#define Branco (0xFFFFFFAA)
#define Verde (0x21DD00FF)
#define aCor (0x0080C0AA)
/*------------------------------------------------------------------------------
[CORES VIP]
------------------------------------------------------------------------------*/
#define cVip1 (0xFFF000AA) //Alterar
#define cVip2 (0xFFF000AA) //Alterar
#define cVip3 (0xFFF000AA) //Alterar
/*------------------------------------------------------------------------------
[CS]
------------------------------------------------------------------------------*/
#define CASE_SENSITIVE false
/*------------------------------------------------------------------------------
[ARRAYS]
------------------------------------------------------------------------------*/
enum Informacoes
{
Administrador,
Jogador[24],
SenhaErrada,
Outro[24],
Dinheiro,
Logado,
Banco,
Senha,
Sexo,
Vip,
};
static
Info[MAX_PLAYERS][Informacoes],
sStringFrm[128],
sStringArq[128],
Data[3],
Time[3];
forward CallSalvar(playerid);
forward CallCarregar(playerid);
/*------------------------------------------------------------------------------
[CALBACKS]
------------------------------------------------------------------------------*/
public OnPlayerDisconnect(playerid, reason)
return CallSalvar(playerid);
public OnPlayerConnect(playerid)
{
CallCarregar(playerid);
GetPlayerName(playerid, Info[playerid][Jogador], 23);
format(sStringArq, sizeof(sStringArq), Contas, Info[playerid][Jogador]);
if(INI_Exist(sStringArq))
{
format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Registada!\n\nColoque a sua senha para se poder logar no servidor (:", Info[playerid][Jogador]);
ShowPlayerDialog(playerid, DialogLogar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Login:", sStringFrm, "Logar", "Cancelar" );
}
else
{
format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Nгo registada!\n\nColoque a sua senha para se registar no servidor (:", Info[playerid][Jogador]);
ShowPlayerDialog( playerid, DialogRegistar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Registo:", sStringFrm, "Registar", "Cancelar" );
}
return true;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
GetPlayerName(playerid, Info[playerid][Jogador], 23);
format(sStringArq, sizeof(sStringArq), Contas, Info[playerid][Jogador]);
if(dialogid == DialogLogar)
{
if(response)
{
if(strlen(inputtext) == 0)
{
format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Registada!\n\nColoque a sua senha para se poder logar no servidor (:", Info[playerid][Jogador]);
ShowPlayerDialog(playerid, DialogLogar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Login:", sStringFrm, "Logar", "Cancelar");
SendClientMessage(playerid, Verde, "A senha deve ter mais do que 0 digitos!");
}
static Input[20];
INI_Open(sStringArq);
INI_ReadString(Input, "Senha");
INI_Close();
if(!strcmp(inputtext, Input, CASE_SENSITIVE))
{
SpawnPlayer(playerid);
format(sStringFrm, sizeof(sStringFrm), "%s, seja bem-vindo ao servidor (:", Info[playerid][Jogador]);
SendClientMessage(playerid, Amarelo, sStringFrm);
if(Info[playerid][Administrador] >= 1)
{
format(sStringFrm, sizeof(sStringFrm), "Logado com nнvel %d de administrador (:", Info[playerid][Administrador]);
SendClientMessage(playerid, aCor, sStringFrm);
}
if(Info[playerid][Vip] == 1)
return SendClientMessage(playerid, cVip1, "Logado com Vip Gold (:");
if(Info[playerid][Vip] == 2)
return SendClientMessage(playerid, cVip2, "Logado com Vip Prata (:");
if(Info[playerid][Vip] == 3)
return SendClientMessage(playerid, cVip3, "Logado com Vip Bronze (:");
}
else
{
format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Registada!\n\nColoque a sua senha para se poder logar no servidor (:", Info[playerid][Jogador]);
ShowPlayerDialog(playerid, DialogLogar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Login:", sStringFrm, "Logar", "Cancelar");
SendClientMessage(playerid, Vermelho, "Senha errada! Se errar 3 vezes, й kickado!");
Info[playerid][SenhaErrada] += 1;
if(Info[playerid][SenhaErrada] == 3)
{
SendClientMessage(playerid, Branco, "Vocк foi kickado do servidor por errar a senha 3 vezes!");
Kickar(playerid, "Errou a senha 3 vezes");
}
}
}
else if(!response)
{
SendClientMessage(playerid, Branco, "Vocк foi kickado por nгo querer-se logar!");
Kickar(playerid, "Nгo quis logar");
}
}
else if(dialogid == DialogRegistar)
{
if(response)
{
if(!strlen(inputtext))
{
format(sStringFrm, sizeof(sStringFrm), "{5CACEE}Nome: {FFFFFF}%s\n{5CACEE}Tipo de conta: {FFFFFF}Nгo registada!\n\nColoque a sua senha para se registar no servidor (:", Info[playerid][Jogador]);
ShowPlayerDialog( playerid, DialogRegistar, DIALOG_STYLE_INPUT, "{5CACEE}Sistema de Registo:", sStringFrm, "Registar", "Cancelar" );
SendClientMessage(playerid, Verde, "A senha nгo pode conter 0 digitos!");
}
strmid(Info[playerid][Senha], inputtext, 0, strlen(inputtext), 128);
INI_Create(sStringArq);
INI_Open(sStringArq);
INI_WriteString("Senha", Info[playerid][Senha]);
ShowPlayerDialog(playerid, DialogSexo, DIALOG_STYLE_MSGBOX, "{5CACEE}A que sexo pertence?", "Para acabarmos de fazer o seu registo, precisamos de saber o seu sexo.\nEscolha o sexo abaixo", "Masculino", "Feminino");
}
else
{
SendClientMessage(playerid, Branco, "Vocк foi kickado por nгo querer-se registar!");
Kickar(playerid, "Nгo quis registar");
}
}
else if(dialogid == DialogSexo)
{
if(response)
{
Info[playerid][Sexo] = 1;
SendClientMessage(playerid, Esverdeado, "Agora que vocк acabou seu registo... logue-se (:");
Info[playerid][Logado] = true;
SetTimerEx("CallInicioPlayer", 2000, false, "i", playerid);
INI_WriteInt("Sexo", Info[playerid][Sexo]);
}
else if(!response)
{
Info[playerid][Sexo] = 2;
SendClientMessage(playerid, Esverdeado, "Agora que vocк acabou seu registo... logue-se (:");
Info[playerid][Logado] = true;
INI_WriteInt("Sexo", Info[playerid][Sexo]);
}
}
return true;
}
/*------------------------------------------------------------------------------
[SISTEMA DE REGISTO E LOGIN]
------------------------------------------------------------------------------*/
public CallSalvar(playerid)
{
GetPlayerName(playerid, Info[playerid][Jogador], 23);
format(sStringArq, sizeof(sStringArq), Contas, Info[playerid][Jogador]);
if(INI_Exist(sStringArq))
{
INI_Open(sStringArq);
INI_WriteInt("Dinheiro", GetarDinheiro(playerid));
INI_WriteInt("Banco", Info[playerid][Banco]);
INI_WriteInt("Sexo", Info[playerid][Sexo]);
INI_WriteInt("Vip", Info[playerid][Vip]);
INI_WriteInt("Administrador", Info[playerid][Administrador]);
INI_Save();
INI_Close();
}
else INI_Create(sStringArq);
return true;
}
public CallCarregar( playerid )
{
GetPlayerName(playerid, Info[playerid][Jogador], 23);
format(sStringArq, sizeof(sStringArq), Contas, Info[playerid][Jogador]);
if(INI_Exist(sStringArq))
{
INI_Open(sStringArq);
DarDinheiro(playerid, INI_ReadInt("Dinheiro"));
Info[playerid][Dinheiro] = INI_ReadInt("Dinheiro");
Info[playerid][Banco] = INI_ReadInt("Banco");
Info[playerid][Sexo] = INI_ReadInt("Sexo");
Info[playerid][Vip] = INI_ReadInt("Vip");
Info[playerid][Administrador] = INI_ReadInt("Administrador");
}
return true;
}
/*------------------------------------------------------------------------------
[KICKAR]
------------------------------------------------------------------------------*/
stock Kickar(playerid, motivo[])
{
getdate(Data[0], Data[1], Data[2]);
gettime(Time[0], Time[1], Time[2]);
GetPlayerName(playerid, Info[playerid][Jogador], 23);
format(sStringFrm, sizeof(sStringFrm), "{E60000}[Kickado] {FFFFFF}%s foi kickado do servidor. [{E60000}Motivo: {FFFFFF}%s]", Info[playerid][Jogador], motivo);
SendClientMessageToAll(Branco, sStringFrm);
format(sStringArq, sizeof(sStringArq), "%s, vocк foi kickado do servidor!\n{5CACEE}Administrador: {FFFFFF}%s\n{5CACEE}Motivo: {FFFFFF}%s\n{5CACEE}Data: {FFFFFF}%d/%d/%d\n{5CACEE}Hora: {FFFFFF}%d:%d:%d ", Info[playerid][Jogador], AdminBot, motivo, Data[2], Data[1], Data[0], Time[0], Time[1], Time[2]);
ShowPlayerDialog(playerid, DialogKickado, DIALOG_STYLE_MSGBOX, "{5CACEE}Sistema de Kick", sStringArq, "Concluir", "");
return true;
}