Advertisement
Xaviour212

Level and Exp System By Xav212

Jun 13th, 2011
5,939
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.60 KB | None | 0 0
  1. /*==============================================================================
  2.     Credits:
  3.         - Xaviour212, make this script
  4.         - Leingod, helping me
  5.         - Dracoblue, dini and dcmd
  6.         - Y_Less, for sscanf
  7. =====================************************===================================
  8.     Functions:
  9.         - SetPlayerExp(playerid, exp)
  10.         - GivePlayerExp(playerid, exp)
  11.         - GetPlayerExp(playerid)
  12.         - SetPlayerLevel(playerid, level)
  13.         - GivePlayerLevel(playerid, level)
  14.         - GetPlayerLevel(playerid)
  15.         - Payday(playerid)
  16. ==============================================================================*/
  17.  
  18. #include <a_samp>
  19. #include <dini>
  20. #include <sscanf2>
  21.  
  22. #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
  23.  
  24. #define Green 0x16EB43FF
  25.  
  26. enum PData
  27. {
  28.     EXP,
  29.     Level
  30. };
  31. new PlayerInfo[MAX_PLAYERS][PData];
  32. new file2[256];
  33.  
  34. forward Payday(playerid);
  35.  
  36. public OnFilterScriptInit()
  37. {
  38.     print("\n==========================================");
  39.     print(" Exp and Level System by Xaviour212 Loaded");
  40.     print("==========================================\n");
  41.     for(new j = 0; j < MAX_PLAYERS; j++)
  42.     {
  43.         SetTimerEx("Payday",1*60*60*1000,true,"i",j);
  44.     }
  45.     return 1;
  46. }
  47.  
  48. public OnFilterScriptExit()
  49. {
  50.     return 1;
  51. }
  52.  
  53. public OnPlayerConnect(playerid)
  54. {
  55.     if(!dini_Exists(PFile(playerid)))
  56.     {
  57.         dini_Create(PFile(playerid));
  58.         SetPlayerScore(playerid, GetPlayerLevel(playerid));
  59.         GivePlayerLevel(playerid, 1);
  60.     }
  61.     else
  62.     {
  63.         SetPlayerScore(playerid, GetPlayerLevel(playerid));
  64.         PlayerInfo[playerid][EXP] = GetPlayerExp(playerid);
  65.         PlayerInfo[playerid][Level] = GetPlayerLevel(playerid);
  66.     }
  67.     return 0;
  68. }
  69.  
  70. public OnPlayerDeath(playerid, killerid, reason)
  71. {
  72.     new string[256];
  73.     new Xp = 5*GetPlayerLevel(killerid);
  74.     GivePlayerExp(killerid, 200-Xp);
  75.     format(string, sizeof(string), "You has killed {FF0000}%s {16EB43}and get a {FFFFFF}%d {16EB43}exp", Gn(playerid), 200-Xp);
  76.     SendClientMessage(killerid, Green, string);
  77.     return 1;
  78. }
  79.  
  80. public Payday(playerid)
  81. {
  82.     new Bonus = 500*GetPlayerLevel(playerid);
  83.     new string[50];
  84.     GivePlayerMoney(playerid, 2500+Bonus);
  85.     format(string, sizeof(string), "~w~PayDay! ~n~~g~$%d", 2500+Bonus);
  86.     GameTextForPlayer(playerid, string, 3000, 1);
  87. }
  88.  
  89. public OnPlayerUpdate(playerid)
  90. {
  91.     new string[256];
  92.     SetPlayerScore(playerid, GetPlayerLevel(playerid));
  93.     if(GetPlayerExp(playerid) >= 1000)
  94.     {
  95.         if(GetPlayerLevel(playerid) <= 40)
  96.         {
  97.             GivePlayerLevel(playerid, 1);
  98.             format(string, sizeof(string), "Congratulations! Your level has been increased to {FFFFFF}%d", GetPlayerLevel(playerid));
  99.             SendClientMessage(playerid, Green, string);
  100.             GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~w~Updating Score List...",3000,3);
  101.             GivePlayerExp(playerid, - 1000);
  102.         }
  103.         else if(GetPlayerLevel(playerid) >= 40)
  104.         {
  105.             SetPlayerExp(playerid, 1000);
  106.             SetPlayerLevel(playerid, 40);
  107.         }
  108.     }
  109.     if(GetPlayerLevel(playerid) >= 40)
  110.     {
  111.         format(string, sizeof(string), "You have reached the maximum level", GetPlayerLevel(playerid));
  112.         SendClientMessage(playerid, Green, string);
  113.     }
  114.     return 1;
  115. }
  116.  
  117. SetPlayerExp(playerid, exp)
  118. {
  119.     dini_IntSet(PFile(playerid), "Exp", exp);
  120.     PlayerInfo[playerid][EXP] = exp;
  121. }
  122.  
  123. GivePlayerExp(playerid, exp)
  124. {
  125.     PlayerInfo[playerid][EXP] += exp;
  126.     dini_IntSet(PFile(playerid), "Exp", PlayerInfo[playerid][EXP]);
  127. }
  128.  
  129. SetPlayerLevel(playerid, level)
  130. {
  131.     PlayerInfo[playerid][Level] = level;
  132.     dini_IntSet(PFile(playerid), "Level", PlayerInfo[playerid][Level]);
  133. }
  134.  
  135. GivePlayerLevel(playerid, level)
  136. {
  137.     PlayerInfo[playerid][Level] += level;
  138.     dini_IntSet(PFile(playerid), "Level", PlayerInfo[playerid][Level]);
  139. }
  140.  
  141. stock GetPlayerExp(playerid) return dini_Int(PFile(playerid), "Exp");
  142.  
  143. stock GetPlayerLevel(playerid) return dini_Int(PFile(playerid), "Level");
  144.  
  145. stock Gn(playerid)
  146. {
  147.     new pname[24];
  148.     GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
  149.     return pname;
  150. }
  151.  
  152. stock PFile(playerid)
  153. {
  154.     format(file2,64,"Users/%s.ini",Gn(playerid));
  155.     return file2;
  156. }
  157.  
  158. /*================EXAMPLE COMMAND
  159. public OnPlayerCommandText(playerid, cmdtext[])
  160. {
  161.     dcmd(setlevel, 8, cmdtext);
  162.     dcmd(setexp, 6, cmdtext);
  163.     dcmd(giveexp, 7, cmdtext);
  164.     dcmd(getexp, 6, cmdtext);
  165.     dcmd(givelevel, 9, cmdtext);
  166.     dcmd(getlevel, 8, cmdtext);
  167.     dcmd(paydayplayer, 12, cmdtext);
  168.     dcmd(paydayall, 9, cmdtext);
  169.     dcmd(getstatus, 9, cmdtext);
  170.     return 0;
  171. }
  172.  
  173. dcmd_setlevel(playerid, params[])//Set a player level
  174. {
  175.     new giveplayerid, amount;
  176.     if(!sscanf(params, "dd", giveplayerid, amount)) return SendClientMessage(playerid, 0xFF0000AA, "{FF0000}[ERROR]{FFFFFF}Usage: /setlevel [PlayerID] [Level]");
  177.     SetPlayerLevel(giveplayerid, amount);
  178.     return 1;
  179. }
  180.  
  181. dcmd_setexp(playerid, params[])// Set player exp
  182. {
  183.     new giveplayerid, amount;
  184.     if(!sscanf(params, "dd", giveplayerid, amount)) return SendClientMessage(playerid, 0xFF0000AA, "{FF0000}[ERROR]{FFFFFF}Usage: /setexp [PlayerID] [Exp]");
  185.     SetPlayerExp(playerid, amount);
  186.     return 1;
  187. }
  188.  
  189. dcmd_giveexp(playerid, params[])// Give player level
  190. {
  191.     new giveplayerid, amount;
  192.     if(!sscanf(params, "dd", giveplayerid, amount)) return SendClientMessage(playerid, 0xFF0000AA, "{FF0000}[ERROR]{FFFFFF}Usage: /giveexp [PlayerID] [Exp]");
  193.     GivePlayerExp(giveplayerid, amount);
  194.     return 1;
  195. }
  196.  
  197. dcmd_getexp(playerid, params[])//Get a player exp
  198. {
  199.     new giveplayerid, string[256];
  200.     if(!sscanf(params, "d", giveplayerid)) return SendClientMessage(playerid, 0xFF0000AA, "{FF0000}[ERROR]{FFFFFF}Usage: /getexp [PlayerID]");
  201.     format(string, sizeof(string), "{FF0000}%s{FFFFFF} having {A1CAF1}%d{FFFFFF} exp", Gn(giveplayerid), GetPlayerExp(giveplayerid));
  202.     SendClientMessage(playerid, Green, string);
  203.     return 1;
  204. }
  205.  
  206. dcmd_givelevel(playerid, params[])//Give player level
  207. {
  208.     new giveplayerid, amount;
  209.     if(!sscanf(params, "dd", giveplayerid, amount)) return SendClientMessage(playerid, 0xFF0000AA, "{FF0000}[ERROR]{FFFFFF}Usage: /givelevel [PlayerID] [Level]");
  210.     GivePlayerLevel(giveplayerid, amount);
  211.     return 1;
  212. }
  213.  
  214. dcmd_getlevel(playerid, params[])//Get player level
  215. {
  216.     new giveplayerid, string[256];
  217.     if(!sscanf(params, "d", giveplayerid)) return SendClientMessage(playerid, 0xFF0000AA, "{FF0000}[ERROR]{FFFFFF}Usage: /getlevel [PlayerID]");
  218.     format(string, sizeof(string), "{FF0000}%s{FFFFFF} is a level{A1CAF1}%d{FFFFFF}.", Gn(giveplayerid), GetPlayerLevel(giveplayerid));
  219.     SendClientMessage(playerid, Green, string);
  220.     return 1;
  221. }
  222.  
  223. dcmd_paydayplayer(playerid, params[])//Payday only for a one player
  224. {
  225.     new giveplayerid;
  226.     if(!sscanf(params, "d", giveplayerid)) return SendClientMessage(playerid, 0xFF0000AA, "{FF0000}[ERROR]{FFFFFF}Usage: /payday [PlayerID]");
  227.     Payday(giveplayerid);
  228.     return 1;
  229. }
  230.  
  231. dcmd_paydayall(playerid, params[])//Payday for all player
  232. {
  233.     #pragma unused params
  234.     #pragma unused playerid
  235.     for(new j = 0; j < MAX_PLAYERS; j++)
  236.     {
  237.         Payday(j);
  238.     }
  239.     return 1;
  240. }
  241.  
  242. dcmd_getstatus(playerid, params[])//Get player status
  243. {
  244.     new giveplayerid, string[256];
  245.     new Bonus = 500*GetPlayerLevel(giveplayerid);
  246.     if(!sscanf(params, "d", giveplayerid)) return SendClientMessage(playerid, 0xFF0000AA, "{FF0000}[ERROR]{FFFFFF}Usage: /getstatus [PlayerID]");
  247.     format(string, sizeof(string), "{446CCF}Name{FFFFFF}: %s \n{FF0000}Exp{FFFFFF}: %d \n{A1CAF1}Level{FFFFFF}: %d \n{00FF00}Payday{FFFFFF}: %d", Gn(giveplayerid), GetPlayerExp(giveplayerid), GetPlayerLevel(playerid), 2500+Bonus);
  248.     SendClientMessage(playerid, Green, string);
  249.     return 1;
  250. }
  251. =================================*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement