Advertisement
lapius

Level

Aug 27th, 2013
1,293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.20 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #include <sscanf2>
  4. #include <dini>
  5.  
  6. #define MAX_LEVEL 99
  7.  
  8. #define COLOR_RED 0xFF0000AA
  9. #define COLOR_YELLOW 0xFFFF00AA
  10.  
  11. new XP[MAX_PLAYERS]; //player xp
  12. new lvl[MAX_PLAYERS]; //player lvl
  13.  
  14.  
  15. public OnFilterScriptInit()
  16. {
  17.    
  18.     return 1;
  19. }
  20.  
  21. public OnFilterScriptExit()
  22. {
  23.     return 1;
  24. }
  25.  
  26. public OnPlayerConnect(playerid)
  27. {
  28.     XP[playerid]=0;
  29.     lvl[playerid]=0;
  30.     new file[128], vardas[128];
  31.     GetPlayerName(playerid, vardas, 128);
  32.     format(file,128,"Users/%s.ini",vardas);
  33.    
  34.     XP[playerid] = dini_Int(file, "XP");
  35.     lvl[playerid] = dini_Int(file, "LVL");
  36.     return 1;
  37. }
  38.  
  39. public OnPlayerSpawn(playerid)
  40. {
  41.     return 1;
  42. }
  43.  
  44. public OnPlayerDisconnect(playerid, reason)
  45. {
  46.     new file[128], vardas[128];
  47.     GetPlayerName(playerid, vardas, 128);
  48.     format(file,128,"Users/%s.ini",vardas);
  49.     if(!dini_Exists(file))
  50.     {
  51.         dini_Create(file);
  52.     }
  53.     dini_IntSet(file,"XP",XP[playerid]);
  54.     dini_IntSet(file,"LVL",lvl[playerid]);
  55.     return 1;
  56. }
  57.  
  58. public OnPlayerUpdate(playerid)
  59. {
  60.     return 1;
  61. }
  62.  
  63. stock XpForLevel(level)
  64. {
  65.         new total = 0;
  66.         for (new i = 1; i < level; i++)
  67.         {
  68.                 total += floatround(i + 300 * floatpower(2, i / 7.0),floatround_floor);
  69.         }
  70.  
  71.         return floatround(total/4,floatround_floor);
  72. }
  73.  
  74. stock CheckLevel(playerid)
  75. {
  76.     if(XP[playerid] >= XpForLevel(lvl[playerid] + 1))
  77.     {
  78.         if(lvl[playerid] == MAX_LEVEL) return 1;
  79.         lvl[playerid] ++;
  80.        
  81.         if(GetPlayerScore(playerid) != lvl[playerid])
  82.         {
  83.             SetPlayerScore(playerid,lvl[playerid]);
  84.         }
  85.        
  86.         new levelstr[100];
  87.         format(levelstr,sizeof(levelstr),"I reached level: %d", lvl[playerid]);
  88.         SendClientMessage(playerid, COLOR_YELLOW, levelstr);
  89.     }
  90.     return 1;
  91. }
  92.  
  93. COMMAND:xp(playerid,params[])
  94. {
  95.     if(!IsPlayerAdmin(playerid)) { return SendClientMessage(playerid, 0xFF6347FF, "You dont have permision!"); }
  96.     new Target;
  97.     new xplevel;
  98.     if(!sscanf(params, "ui", Target, xplevel))
  99.     {
  100.         if(Target == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_RED,"ERROR: Bad player ID/name.");
  101.        
  102.         XP[Target] += xplevel;
  103.         CheckLevel(Target);
  104.        
  105.     }
  106.     else SendClientMessage(playerid,COLOR_YELLOW,"Use: /xp (player) (xp)");
  107.    
  108.     return 1;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement