Advertisement
garfield

[FS]: Sistema de administração simples

Jan 8th, 2013
379
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.20 KB | None | 0 0
  1. // Lembre-se de criar a pasta "Contas" !
  2.  
  3. #include a_samp
  4. #include YSI\y_commands
  5. #include sscanf2
  6. #include bINi
  7.  
  8.  
  9. #define GetNick(%0)                     (GetPlayerName(playerid, gPlayerData[%0][E_NOME], 24), gPlayerData[%0][E_NOME])
  10. #define IsPlayerLogged(%0)              gPlayerData[%0][E_LOGGED]
  11.  
  12.  
  13. #define Vermelho                        0xFF0000FF
  14.  
  15.  
  16.  
  17. enum E_ADMIN{
  18.     bool: E_LOGGED,
  19.    
  20.     E_NOME[24],
  21.     E_PLAYER,
  22.     E_VALOR,
  23.     E_NIVEL
  24. };
  25.  
  26. new
  27.     gPlayerData [ MAX_PLAYERS ] [ E_ADMIN ],
  28.     gString [128]
  29. ;
  30.  
  31. public OnPlayerConnect(playerid){
  32.  
  33.     for(new i, e = _:E_ADMIN; i != e; ++i){
  34.         gPlayerData[playerid][E_ADMIN: i] = 0;
  35.     }
  36.     return true;
  37. }
  38.  
  39.  
  40. public OnPlayerRequestSpawn(playerid){
  41.  
  42.     format(gString, 128, "/Contas/%s.ips", GetNick(playerid));
  43.  
  44.     if(fexist(gString) && !IsPlayerLogged(playerid)){
  45.         SendClientMessage(playerid, 0x00FF00FF, "[Info]: Sua conta está registrada em nosso banco de dados, por favor digite /Logar.");
  46.         return false;
  47.     }
  48.     return true;
  49. }
  50.  
  51.  
  52. CMD:registrar(playerid, params[]){
  53.  
  54.     if(IsPlayerLogged(playerid)){
  55.         return SendClientMessage(playerid, Vermelho, "[Erro]: Você já está logado!");
  56.     }
  57.    
  58.     new Senha[32];
  59.     if(sscanf(params, "s[32]", Senha))
  60.         return SendClientMessage(playerid, Vermelho, "[Erro]: /Registrar <Senha>");
  61.        
  62.     if(strlen(Senha) < 3)
  63.         return SendClientMessage(playerid, Vermelho, "[Erro]: Sua senha tem que ter no mínimo 3 caracteres!");
  64.        
  65.  
  66.     format(gString, 128, "/Contas/%s.ips", GetNick(playerid));
  67.    
  68.     INI_Open(gString);
  69.     INI_WriteString(gString, "Senha",   Senha);
  70.     INI_WriteInt(gString,    "Score",    GetPlayerScore(playerid));
  71.     INI_WriteInt(gString,    "Dinheiro", GetPlayerMoney(playerid));
  72.     INI_Save();
  73.     INI_Close();
  74.    
  75.     SendClientMessage(playerid, -1, "Registrado!");
  76.     return true;
  77. }
  78.  
  79. CMD:logar(playerid, params[]){
  80.  
  81.     if(IsPlayerLogged(playerid)){
  82.         return SendClientMessage(playerid, Vermelho, "[Erro]: Você já está logado!");
  83.     }
  84.    
  85.     format(gString, 128, "/Contas/%s.ips", GetNick(playerid));
  86.    
  87.     if(!fexist(gString)){
  88.         return SendClientMessage(playerid, Vermelho, "[Erro]: Em nosso banco de dados a sua conta não está registrada. Digite /Registrar.");
  89.     }
  90.    
  91.     new Senha[32];
  92.     if(sscanf(params, "s[32]", Senha))
  93.         return SendClientMessage(playerid, Vermelho, "[Erro]: /Logar <Senha>");
  94.        
  95.     if(strlen(Senha) < 3)
  96.         return SendClientMessage(playerid, Vermelho, "[Erro]: Sua senha tem que ter no mínimo 3 caracteres!");
  97.        
  98.     INI_Open(gString);
  99.  
  100.     if(strcmp(INI_ReadString(gString, "Senha"), Senha, false) != 0)
  101.         return SendClientMessage(playerid, Vermelho, "[Erro]: Senha incorreta.");
  102.        
  103.  
  104.     ResetPlayerMoney(playerid);
  105.     SetPlayerScore(playerid, 0);
  106.  
  107.    
  108.     SetPlayerScore(playerid, INI_ReadInt(gString, "Score"));
  109.     GivePlayerMoney(playerid, INI_ReadInt(gString, "Dinheiro"));
  110.    
  111.    
  112.     SendClientMessage(playerid, -1, "Logado");
  113.    
  114.    
  115.     gPlayerData[playerid][E_LOGGED] = true;
  116.     return true;
  117. }
  118.  
  119.  
  120. CMD:setlevel(playerid, params[]){
  121.  
  122.     if(!IsPlayerAdmin(playerid)){
  123.  
  124.         if(!IsPlayerLogged(playerid))
  125.             return SendClientMessage(playerid, Vermelho, "[Erro]: Você não está logado para usar este comando");
  126.  
  127.         if(gPlayerData[playerid][E_NIVEL] < 5)
  128.             return SendClientMessage(playerid, Vermelho, "[Erro]: Você não tem nível suficiente para usar este comando!");
  129.     }
  130.        
  131.     if(sscanf(params, "ii", gPlayerData[playerid][E_PLAYER],    gPlayerData[playerid][E_VALOR]))
  132.         return SendClientMessage(playerid, Vermelho, "[Erro]: Uso: /Setlevel <id> <level>");
  133.        
  134.     if(!IsPlayerConnected(gPlayerData[playerid][E_PLAYER]))
  135.         return SendClientMessage(playerid, Vermelho, "[Erro]: Player não conectado!");
  136.        
  137.     if(gPlayerData[playerid][E_VALOR] < 0 || gPlayerData[playerid][E_VALOR] > 5)
  138.         return SendClientMessage(playerid, Vermelho, "[Erro]: Nível inválido!, escolha de 0(retirar moderação) até 5(admin master)");
  139.        
  140.     static tempID;
  141.     tempID = gPlayerData[playerid][E_PLAYER];
  142.    
  143.     if(!gPlayerData[tempID][E_LOGGED])
  144.         return SendClientMessage(playerid, Vermelho, "[Erro]: Player não logado!");
  145.  
  146.     gPlayerData[tempID][E_NIVEL] = gPlayerData[playerid][E_VALOR];
  147.  
  148.     format(gString, 128, "O Administrador %s deu ao player %s o nível de administração #%i", GetNick(playerid), GetNick(tempID), gPlayerData[playerid][E_VALOR]);
  149.     SendClientMessageToAll(-1, gString);
  150.  
  151.  
  152.     return true;
  153. }
  154.  
  155.  
  156.  
  157.  
  158. CMD:kick(playerid, params[]){
  159.  
  160.     if(!IsPlayerLogged(playerid))
  161.         return SendClientMessage(playerid, Vermelho, "[Erro]: Você não está logado para usar este comando");
  162.  
  163.     if(gPlayerData[playerid][E_NIVEL] < 3)
  164.         return SendClientMessage(playerid, Vermelho, "[Erro]: Você não tem nível suficiente para usar este comando!");
  165.  
  166.     if(sscanf(params, "u", gPlayerData[playerid][E_PLAYER]))
  167.         return SendClientMessage(playerid, Vermelho, "[Erro]: Uso: /Kick <id>");
  168.        
  169.     if(!IsPlayerConnected(gPlayerData[playerid][E_PLAYER]))
  170.         return SendClientMessage(playerid, Vermelho, "[Erro]: Player não conectado!");
  171.        
  172.     static tempID;
  173.     tempID = gPlayerData[playerid][E_PLAYER];
  174.  
  175.     format(gString, 128, "O Administrador %s Kickou o player %s", GetNick(playerid), GetNick(tempID));
  176.     SendClientMessageToAll(-1, gString);
  177.    
  178.     Kick(tempID);
  179.     return true;
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement