BDGAME

Level, Exp, Payday system

May 26th, 2014
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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. =================================*/
Add Comment
Please, Sign In to add comment