Quero colocar um comando /MudarNick, mais nгo sei como salvar o nick e muito menos como fazer o comando pra funcionar com dudb :S
Код:
/*
FilterScript de registro Feito por: [Joaum]
E baseado em uma demostra de como fazer um script
Voce pode Incluir mais coisa ou usar no Gamemode mas por favor Nгo Mude uma Linha e Reupe com Seu nome
Quando Testei Alguns nomes com [] podem ficar como numeros
Se bugar me Avisem
Como Usar:Ponha na linha filtersrpits no seu GameMode
Como mudar o status:irei por esse funcao mas voce pode editalo apos criar uma conta
ele fikara na pasta do scriptFiles com o nome
*/
/*
VERSAO 2.0 Com Alguns codigos como:
Stats Visivel Para outras pessoas
Registro tem que ter entre 3 a 20 Linhas
Horas e Minutos logados
Anti flood Que Fazia aperecer varias mensagem
As tentativas antes do kick
*/
#include <a_samp>
#include <dutils>
#include <dudb>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define MAXIMAS_TENTATIVAS 3 // numero de tentativas antes do kick
#define MINIMO 4 //Minimas letras da senha
#define MAXIMO 20//Maximas Letras Da senha
#define ANTIFLOOD 3
new PLAYERLIST_authed[MAX_PLAYERS];
new pkills[MAX_PLAYERS];
new pdeaths[MAX_PLAYERS];
new tentativas[MAX_PLAYERS];
new MinutosDeJogo[MAX_PLAYERS];
new HorasJogo[MAX_PLAYERS];
new inominado[MAX_PLAYERS];//anti flood
new ConnectTimer;
forward HorasDeJogo();
//===============================================[CORES]============================
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_DARKRED 0x660000AA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_TEAL 0x00808000
#define COLOR_PINK 0xFF66FFAA
#define COLOR_BRIGHTRED 0xFF0000AA
#define COLOR_INDIGO 0x4B00B0AA
#define COLOR_VIOLET 0x9955DEEE
#define COLOR_LIGHTRED 0xFF99AADD
#define COLOR_SEAGREEN 0x00EEADDF
#define COLOR_GRAYWHITE 0xEEEEFFC4
#define COLOR_LEMON 0xDDDD2357
#define COLOR_BLACK 0x000000AA
#define COLOR_LIGHTGREEN 0x24FF0AB9
#define COLOR_DARKBLUE 0x3399FFAA
#define COLOR_PURPLE 0x800080AA
#define COLOR_CYAN 0x00FFFFAA
#define COLOR_BROWN 0x993300AA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_SYSTEM 0xEFEFF7AA
public OnFilterScriptInit()
{
print("\n================================================================");
print(" Sistema de registro 2.0:");
print(" Iniciado");
print(" Created By: Joaum");
print("================================================================");
print("\n");
ConnectTimer = SetTimer("HorasDeJogo",60000,1);
}
public OnFilterScriptExit()
{
KillTimer(ConnectTimer);
}
stock SystemMsg(playerid,msg[]) {
if ((IsPlayerConnected(playerid))&&(strlen(msg)>0)) {
SendClientMessage(playerid,COLOR_SYSTEM,msg);
}
return 1;
}
stock PlayerName(playerid) {
new name[255];
GetPlayerName(playerid, name, 255);
return name;
}
dcmd_register(playerid,params[]) {
// Se ja logou o comando nao pode funcionar
if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"| ERRO | Vocк jб estб logado.");
// Nao funcionara se a conta existir
if (udb_Exists(PlayerName(playerid))) return SendClientMessage(playerid,COLOR_BRIGHTRED,"| ERRO | A conta jб existe, use /Login [Senha].");
// Esqueceu a senha?
if (strlen(params)==0) return SendClientMessage(playerid,COLOR_BRIGHTRED,"| ERRO | Use: /Register [Senha]");
if (strlen(params)>MAXIMO) return SendClientMessage(playerid,COLOR_BRIGHTRED,"| ERRO | A senha nгo deve ser maior que 20 caracteres.");
if (strlen(params)<MINIMO) return SendClientMessage(playerid,COLOR_BRIGHTRED,"| ERRO | A senha nгo deve ser menor que 4 caracteres.");
// Salvar o dinheiro e os status
if (udb_Create(PlayerName(playerid),params)) {
PLAYERLIST_authed[playerid]=true;
SendClientMessage(playerid,COLOR_LIGHTGREEN,"| INFO | Registrado com sucesso!");
GivePlayerMoney(playerid,0);
new Float:X;
new Float:Y;
new Float:Z;
GetPlayerPos(playerid, X, Y, Z);
PlayerPlaySound(playerid,1147, X, Y, Z);//musiquinha
}
return true;
}
public OnPlayerConnect(playerid) {
tentativas[playerid] = 0;
PLAYERLIST_authed[playerid]=false;
if (udb_Exists(PlayerName(playerid))) return SendClientMessage(playerid, COLOR_SEAGREEN, "");
return false;
}
public OnPlayerCommandText(playerid,cmdtext[]) {
dcmd(login,5,cmdtext); // login tem 5 letras
dcmd(register,8,cmdtext); // register tem 8 letras
dcmd(stats,5,cmdtext);
return false;
}
public OnPlayerDisconnect(playerid) {
if (PLAYERLIST_authed[playerid]) {
// se ele estava logado salve!!!
dUserSetINT(PlayerName(playerid)).("Money",GetPlayerMoney(playerid));
dUserSetINT(PlayerName(playerid)).("Score",GetPlayerScore(playerid));
dUserSetINT(PlayerName(playerid)).("Kills",pkills[playerid]);
dUserSetINT(PlayerName(playerid)).("Deaths",pdeaths[playerid]);
dUserSetINT(PlayerName(playerid)).("Minutos",MinutosDeJogo[playerid]);
dUserSetINT(PlayerName(playerid)).("Horas",HorasJogo[playerid]);
}
PLAYERLIST_authed[playerid]=false;
return false;
}
public OnPlayerRequestSpawn(playerid)
{
new Float:X;
new Float:Y;
new Float:Z;
inominado[playerid]++;
if (!PLAYERLIST_authed[playerid]){
if (udb_Exists(PlayerName(playerid))) {
if (inominado[playerid] == ANTIFLOOD){
SendClientMessage(playerid, COLOR_BRIGHTRED, "| ERRO | Vocк deve logar primeiro.");
GetPlayerPos(playerid, X, Y, Z);
PlayerPlaySound(playerid,1147, X, Y, Z);//musiquinha
inominado[playerid] = 0;
return 0;
}
return 0;
}
}
return 1;
}
public OnPlayerText(playerid, text[])
{ if (!PLAYERLIST_authed[playerid]){
if (udb_Exists(PlayerName(playerid))){
SystemMsg(playerid,"{FF0000}| ERRO | Vocк deve logar primeiro.");
new Float:X;
new Float:Y;
new Float:Z;
GetPlayerPos(playerid, X, Y, Z);
PlayerPlaySound(playerid,1147, X, Y, Z);//musiquinha
}
return 0;
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if (killerid != INVALID_PLAYER_ID) {
pkills[killerid] ++;
pdeaths[playerid] ++;
}
return 1;
}
dcmd_login(playerid,params[]) {
// Porque logar-se dinovo??
if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"{FF0000}| ERRO | Vocк jб estб logado.");
// O Comando Naso pode funcioanr se
// a conta nao existe
if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"{FF0000} | ERRO | A conta nгo existe, use /Register [Senha].");
// Esqueceu a senha?
if (strlen(params)==0) return SendClientMessage(playerid,COLOR_BRIGHTRED,"| ERRO | Use: /Login [Senha]");
if (udb_CheckLogin(PlayerName(playerid),params)) {
// Acertou a senha
// Aki devolver os status da ultima conta
GivePlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money")+GetPlayerMoney(playerid));
SetPlayerScore(playerid,dUserINT(PlayerName(playerid)).("Score")+GetPlayerScore(playerid));
pkills[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Kills")+pkills[playerid]);
pdeaths[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Deaths")+pdeaths[playerid]);
MinutosDeJogo[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Minutos")+MinutosDeJogo[playerid]);
HorasJogo[playerid] = (playerid,dUserINT(PlayerName(playerid)).("Horas")+HorasJogo[playerid]);
PLAYERLIST_authed[playerid]=true;
return SystemMsg(playerid,"{FFFF00}| INFO | Logado com sucesso!");
}
// Senha incorreta
tentativas[playerid]++;
if(tentativas[playerid] == MAXIMAS_TENTATIVAS) {
SystemMsg(playerid,"{FF0000}» Vocк foi kickado por tentar entrar em contas de outros.");
new string[258];
format(string,258,PlayerName(playerid));
print(string);
Kick(playerid);
}
else if (tentativas[playerid] == MAXIMAS_TENTATIVAS-1){
SendClientMessage(playerid, COLOR_BRIGHTRED, "| ERRO | Senha incorreta, na prуxima serб kickado.");//ui...
}
return SystemMsg(playerid,"| ERRO | Senha incorreta!");
}
dcmd_stats(playerid,params[])
{
new string[128];
if(!strlen(params)) {
format(string, sizeof(string),"{FFFF00} | STATUS | DM: Matou: %d • Morreu: %d • Mйdia: %f | Race: Score: %d • Dinheiro: $%d • Tempo de Jogo: %d:%d",
pkills[playerid], pdeaths[playerid], (Float:pkills[playerid]/Float:pdeaths[playerid]), GetPlayerScore(playerid),
GetPlayerMoney(playerid),HorasJogo[playerid],MinutosDeJogo[playerid]);
}
else
{
new player1, playername[MAX_PLAYER_NAME];
player1 = strval(params);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
GetPlayerName(player1, playername, sizeof(playername));
format(string, sizeof(string),"{FFFF00} | STATUS | %s [id %d]: DM: Matou: %d • Morreu: %d • Mйdia: %f | Race: Score: %d • Dinheiro: $%d • Tempo de jogo: %d:%d",
playername, player1, pkills[player1], pdeaths[player1], (Float:pkills[player1]/Float:pdeaths[player1]),
GetPlayerScore(player1), GetPlayerMoney(player1),HorasJogo[player1],MinutosDeJogo[player1]);
} else return SendClientMessage(playerid,COLOR_RED, "{FF0000}| ERRO | Jogador nгo conectado.");
}
return SendClientMessage(playerid,COLOR_WHITE,string);
}
public HorasDeJogo()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(MinutosDeJogo[i] < 60)
{
MinutosDeJogo[i]++;
}else{
MinutosDeJogo[i] = 0;
HorasJogo[i]++;
}
}
}
}