19.04.2012, 22:03
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
esse й o cуdigo inteiro do meu sistema de registro, se alguem puder ajudar
Код:
/* 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]++; } } } }