Guest User

Untitled

a guest
Dec 21st, 2013
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.68 KB | None | 0 0
  1. // ----------------------------------
  2. // |                                |
  3. // |       Includes généraux        |
  4. // |                                |
  5. // ----------------------------------
  6.  
  7. #include <a_samp>
  8. #include <YSI\y_ini>
  9. #include <sscanf2>
  10. #include <zcmd>
  11.  
  12. // ----------------------------------
  13. // |                                |
  14. // |       Defines généraux         |
  15. // |                                |
  16. // ----------------------------------
  17.  
  18. #define COLOR_ARED 0xFF0000AA
  19.  
  20. // ----------------------------------
  21. // |                                |
  22. // |         Partie login           |
  23. // |                                |
  24. // ----------------------------------
  25.  
  26. #define dregister 2011
  27. #define dlogin 2012
  28. #define UserPath "Users/%s.ini"
  29.  
  30. native WP_Hash(buffer[], len, const str[]);
  31.  
  32. enum PlayerInfo
  33. {
  34.     Pass[129],
  35.     AdminLevel,
  36.     VIPLevel,
  37.     Money,
  38.     Skin
  39. }
  40. new pInfo[MAX_PLAYERS][PlayerInfo];
  41. new aDuty[MAX_PLAYERS];
  42.  
  43. stock Path(playerid)
  44. {
  45.     new str[128],name[MAX_PLAYER_NAME];
  46.     GetPlayerName(playerid,name,sizeof(name));
  47.     format(str,sizeof(str),UserPath,name);
  48.     return str;
  49. }
  50.  
  51. forward LoadAccount_User(playerid, name[], value[]);
  52. public LoadAccount_User(playerid, name[], value[])
  53. {
  54.     INI_String("Password", pInfo[playerid][Pass], 129);
  55.     INI_Int("AdminLevel", pInfo[playerid][AdminLevel]);
  56.     INI_Int("VIPLevel", pInfo[playerid][VIPLevel]);
  57.     INI_Int("Money", pInfo[playerid][Money]);
  58.     INI_Int("Skin", pInfo[playerid][Skin]);
  59.    
  60.     return 1;
  61. }
  62.  
  63. main()
  64. {
  65.     print("\n----------------------------------");
  66.     print(" Blank Gamemode by your name here");
  67.     print("----------------------------------\n");
  68. }
  69.  
  70. public OnGameModeInit()
  71. {
  72.     // A modifier pour retenir la dernière position au lieu de ramener au spawn général
  73.     SetGameModeText("Blank Script");
  74.     return 1;
  75. }
  76.  
  77. OnGameModeExit()
  78. {
  79.     return 1;
  80. }
  81.  
  82. public OnPlayerConnect(playerid)
  83. {
  84.     new name[MAX_PLAYER_NAME];
  85.     aDuty[playerid] = 0;
  86.    
  87.     GetPlayerName(playerid, name, sizeof(name));
  88.     if(fexist(Path(playerid))) // On est si l'utilisateur est déjà enregistré
  89.     {
  90.         INI_ParseFile(Path(playerid),"LoadAccount_%s", .bExtra = true, .extra = playerid); // Si oui on charge les infos et on demande le mdp
  91.         ShowPlayerDialog(playerid,dlogin,DIALOG_STYLE_INPUT,"Login","De retour ! Ce compte est enregistré, entrez votre mot de passe pour commencer.","Login","Quitter");
  92.     }
  93.     else
  94.     {
  95.         ShowPlayerDialog(playerid,dregister,DIALOG_STYLE_INPUT,"Register","Bienvenue, ce compte n'est pas enregistré. Entrez votre mot de passe.","Enregistrer","Quitter"); // Sinon on crée un new compte
  96.         return 1;
  97.     }
  98.     AddPlayerClass(pInfo[playerid][Skin], 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  99.     return 1;
  100. }
  101.  
  102. public OnPlayerRequestClass(playerid, classid)
  103. {
  104.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  105.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  106.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  107.     SetSpawnInfo(playerid, 0, pInfo[playerid][Skin], 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  108.     SpawnPlayer(playerid);
  109.     return 1;
  110. }
  111.  
  112.  
  113. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  114. {
  115.     if(dialogid == dregister)
  116.     {
  117.         if(!response) return Kick(playerid); // Si la personne clique sur "Quitter" => kick
  118.         if(response) // Sinon on l'enregistre
  119.         {
  120.             if(!strlen(inputtext))
  121.             {
  122.                 ShowPlayerDialog(playerid,dregister,DIALOG_STYLE_INPUT,"Register","Bienvenue! Votre compte n'existe pas encore.\nVotre mot de passe est strictement personnel.\nEntrez le mdp svp","Enregistrer","Quitter");
  123.                 return 1;
  124.             }
  125.             // Si le mot de passe est correct, on le chiffre et on lui crée son compte
  126.             new hashpass[129];
  127.             hashpass = udb_hash(inputtext);
  128.             new INI:file = INI_Open(Path(playerid));
  129.             INI_SetTag(file,"Infos joueur");
  130.             INI_WriteString(file,"Password",hashpass);
  131.             INI_WriteInt(file,"AdminLevel",0);
  132.             INI_WriteInt(file,"VIPLevel",0);
  133.             INI_WriteInt(file,"Money",500);
  134.             INI_WriteInt(file,"Skin",26);
  135.             INI_Close(file);
  136.             SendClientMessage(playerid,-1,"Enregistrement réussi !");
  137.             return 1;
  138.         }
  139.     }
  140.     if(dialogid == dlogin) // Si c'est une tentative de login
  141.     {
  142.         if(!response) return Kick(playerid);
  143.         if(response)
  144.         {
  145.             new hashpass[129];
  146.             WP_Hash(hashpass,sizeof(hashpass),inputtext);
  147.             if(!strcmp(hashpass, pInfo[playerid][Pass], false))
  148.             {
  149.                 INI_ParseFile(Path(playerid),"LoadAccount_%s",.bExtra = true, .extra = playerid);// Chargement de toutes les infos
  150.                 GivePlayerMoney(playerid,pInfo[playerid][Money]);
  151.                 SetPlayerSkin(playerid,pInfo[playerid][Skin]);
  152.                 SendClientMessage(playerid,-1,"Connexion réussie, bon jeu !");
  153.             }
  154.             else // si mdp incorrect
  155.             {
  156.                 ShowPlayerDialog(playerid,dlogin,DIALOG_STYLE_INPUT,"Login","Mot de passe incorrect pour ce compte !\nVeuillez réessayer.","Login","Quitter");//We will tell to them that they've entered an incorrect password
  157.                 return 1;
  158.             }
  159.         }
  160.     }
  161.     return 1;
  162. }
  163.  
  164. public OnPlayerDisconnect(playerid, reason)
  165. {
  166.     new INI:file = INI_Open(Path(playerid));
  167.    
  168.     aDuty[playerid] = 0;
  169.     SetPlayerSkin(playerid, pInfo[playerid][Skin]);
  170.    
  171.     INI_SetTag(file,"Infos joueur");
  172.     INI_WriteInt(file,"AdminLevel",pInfo[playerid][AdminLevel]);
  173.     INI_WriteInt(file,"VIPLevel",pInfo[playerid][VIPLevel]);
  174.     INI_WriteInt(file,"Money",GetPlayerMoney(playerid));
  175.     INI_WriteInt(file,"Skin",GetPlayerSkin(playerid));
  176.     INI_Close(file);
  177.     return 1;
  178. }
  179.  
  180. public OnRconLoginAttempt(ip[], password[], success)
  181. {
  182.     new pip[16];
  183.     for(new i = 0 ; i < MAX_PLAYERS ; i++)
  184.     {
  185.         GetPlayerIp(i, pip, sizeof(pip));
  186.         if(!strcmp(ip, pip, true))
  187.         {
  188.             SendClientMessageToAll(0xFFFFFFFF,"Un joueur a été kické pour avoir tenté de se connecté au Rcon");                            
  189.             PlayerPlaySound(i, 1141, 0.0, 0.0, 0.0);
  190.             Kick(i);
  191.         }
  192.     }
  193.     return 1;
  194. }
  195.  
  196. // ----------------------------------
  197. // |                                |
  198. // |           Commandes            |
  199. // |                                |
  200. // ----------------------------------
  201.  
  202. CMD:aduty(playerid)
  203. {
  204.     new name[MAX_PLAYER_NAME];
  205.     GetPlayerName(playerid, name,sizeof(name));
  206.    
  207.     if(pInfo[playerid][AdminLevel] >=1)
  208.     {
  209.         if (aDuty[playerid] == 0)
  210.         {
  211.             new string[128];
  212.             new Float:x,Float:y,Float:z;
  213.             new Text3D:label = Create3DTextLabel("Admin On Duty!", COLOR_ARED,x,y,z, 40.0, 0, 0);
  214.             GetPlayerPos(playerid,x,y,z);
  215.             SetPlayerHealth(playerid,999999);
  216.             SetPlayerColor(playerid,COLOR_ARED);
  217.             SetPlayerSkin(playerid,217);
  218.             format(string,sizeof(string), "%s est en mode admin!",name);
  219.             SendClientMessageToAll(COLOR_ARED,string);
  220.             SendClientMessage(playerid,COLOR_ARED,"Vous êtes en mode admin");
  221.             Attach3DTextLabelToPlayer(label,playerid,0.0, 0.0, 0.7);
  222.             aDuty[playerid] = 1;
  223.         }
  224.         else if (aDuty[playerid] == 1)
  225.         {
  226.             new Float:x,Float:y,Float:z;
  227.             new Text3D:label = Create3DTextLabel("Admin On Duty!", COLOR_ARED,x,y,z, 40.0, 0, 0);
  228.             Delete3DTextLabel(label);
  229.             SetPlayerHealth(playerid,100);
  230.             SetPlayerSkin(playerid, pInfo[playerid][Skin]);
  231.             SendClientMessage(playerid, COLOR_ARED,"Vous êtes en mode normal");
  232.             aDuty[playerid] = 0;
  233.         }
  234.     }
  235.     else
  236.         SendClientMessage(playerid,COLOR_ARED,"Vous n'avez pas le pouvoir de faire ça!");
  237.     return 1;
  238. }
Advertisement
Add Comment
Please, Sign In to add comment