double xp for playing a particular time set by cvars

Unpaid Requests, Public Plugins
Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

double xp for playing a particular time set by cvars

#1

Post by Rain1153 » 5 years ago

So i want a plugin which automatically multiplies the xp by 2 which he/she get for damage/escape/infection when he/she plays X time ( set by cvar ).....The xp multiply time should be temporary set by cvar!

And pls add a chat msg like "since you have played 1 hour(X HOURS) in our server You will get double Xp bonus in every Xp you get for 2 hours( Y hours)
PS: Pls dont add the code in the level system becz i want a seperate plugin
LOL

User avatar
SexY DeviL CJ
Mod Tester
Mod Tester
Posts: 73
Joined: 6 years ago
Contact:

#2

Post by SexY DeviL CJ » 5 years ago

Matlab tujhe thode time ke liye players coins ki tarah xp gift denay ? Jaise coins milte ?

You got 50 coins for playing on our sv?
......Devil Was Here......

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#3

Post by Rain1153 » 5 years ago

No.....double xp dena hai
LOL

User avatar
SexY DeviL CJ
Mod Tester
Mod Tester
Posts: 73
Joined: 6 years ago
Contact:

#4

Post by SexY DeviL CJ » 5 years ago

Haa wai time present plugin jaisa na ?
......Devil Was Here......

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#5

Post by Rain1153 » 5 years ago

Waisa par with double xp
LOL

User avatar
SexY DeviL CJ
Mod Tester
Mod Tester
Posts: 73
Joined: 6 years ago
Contact:

#6

Post by SexY DeviL CJ » 5 years ago

Dekhta hu ghar jakr
......Devil Was Here......

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#7

Post by Rain1153 » 5 years ago

raheem ko karne de tu bas sma send kar banchee ka xD
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#8

Post by Raheem » 5 years ago

Any native that return played time?
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#9

Post by Rain1153 » 5 years ago

U can look from the time rewards...... And bro it would be easy if we do like if player disconnects his hour played eill be reset so that he will get the double xp when he plays another x hour after he connects
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#10

Post by Raheem » 5 years ago

Not get you, time played must be saved in nvault or mysql so i ask you if u have basic plugin that save timeplayed then we can see the idea.
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#11

Post by Rain1153 » 5 years ago

no raheem u dont need to store anything in nvault just do it like this code does
  1. #include <zombie_escape>
  2.  
  3.  
  4. #define SMALL               10
  5. #define AVERAGE         20
  6. #define LARGE               30
  7.  
  8.  
  9.  
  10. public plugin_init()
  11. {
  12.     register_plugin("ze_time_rewards", "0.1", "WPMG Team/RAIN~")
  13. }
  14.  
  15.  
  16.  
  17. public client_putinserver(id)
  18. {
  19.     set_task(180.0, "small_present", id)
  20.     set_task(300.0, "average_present", id)
  21.     set_task(600.0, "large_present", id)
  22. }
  23.  
  24.  
  25.  
  26. public client_disconnected(id)
  27. {
  28.     if(task_exists(id))
  29.         remove_task(id)
  30. }
  31.  
  32.  
  33. public small_present(id)
  34. {
  35.     ze_set_escape_coins(id,ze_get_escape_coins(id) + SMALL)
  36.     client_printcolor(id, "^4[SERVER] ^1I gave you ^4%d EC^1, for  playing on this server for^4 10 minutes.", SMALL)
  37. }
  38.  
  39. public average_present(id)
  40. {
  41.     ze_set_escape_coins(id, ze_get_escape_coins(id) + AVERAGE)
  42.     client_printcolor(id, "^4[SERVER] ^1I gave you ^4%d EC^1, for playing on this server for^4 20 minutes.", AVERAGE)
  43. }
  44.  
  45. public large_present(id)
  46. {
  47.     ze_set_escape_coins(id, ze_get_escape_coins(id) + LARGE)
  48.     client_printcolor(id, "^4[SERVER] ^1I gave you ^4%d EC^1, for playing on this server for^4 30 minutes.", LARGE)
  49. }
  50.  
  51.  
  52.  
  53. stock client_printcolor(const id, const input[], any:...)
  54. {
  55.     new iCount = 1, iPlayers[32]
  56.     static szMsg[191]
  57.  
  58.     vformat(szMsg, charsmax(szMsg), input, 3)
  59.     replace_all(szMsg, 190, "/g", "^4")
  60.     replace_all(szMsg, 190, "/y", "^1")
  61.     replace_all(szMsg, 190, "/ctr", "^1")
  62.     replace_all(szMsg, 190, "/w", "^0")
  63.  
  64.     if(id) iPlayers[0] = id
  65.     else get_players(iPlayers, iCount, "ch")
  66.     for (new i = 0; i < iCount; i++)
  67.     {
  68.         if(is_user_connected(iPlayers[i]))
  69.         {
  70.             message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers[i])
  71.             write_byte(iPlayers[i])
  72.             write_string(szMsg)
  73.             message_end()
  74.         }
  75.     }
  76. }
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#12

Post by Raheem » 5 years ago

So we can do this in level system, we will save player time played when he connect and after he played 5 minutes we will double his xp.
He who fails to plan is planning to fail


User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#14

Post by Raheem » 5 years ago

Post your levels system code.
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#15

Post by Rain1153 » 5 years ago

same as the default one
  1. #include <zombie_escape>
  2.  
  3. // Defines
  4. #define MAX_LEVEL 50
  5. #define MAX_XP 500000
  6. #define TASK_SHOWHUD 2020
  7. #define ID_SHOWHUD (taskid - TASK_SHOWHUD)
  8. #define LEVELUP "levelup_ZE/ze_levelup.wav"
  9.  
  10. // Constants
  11. new const g_szLevelsVault[] = "Levels"
  12. new const g_szRanksVault[] = "Ranks"
  13.  
  14. // Messages
  15. const Float:HUD_SPECT_X = 0.0
  16. const Float:HUD_SPECT_Y = 0.0
  17. const Float:HUD_STATS_X = 0.0
  18. const Float:HUD_STATS_Y = 0.0
  19.  
  20. const HUD_STATS_ZOMBIE_R = 200
  21. const HUD_STATS_ZOMBIE_G = 220
  22. const HUD_STATS_ZOMBIE_B = 0
  23.  
  24. const HUD_STATS_HUMAN_R = 0
  25. const HUD_STATS_HUMAN_G = 200
  26. const HUD_STATS_HUMAN_B = 210
  27.  
  28. const HUD_STATS_SPEC_R = 100
  29. const HUD_STATS_SPEC_G = 100
  30. const HUD_STATS_SPEC_B = 100
  31.  
  32. // Variables
  33. new g_iLevel[33],
  34.     g_iXP[33],
  35.     g_iMaxXP[33],
  36.     Float:g_fDamage[33],
  37.     g_MsgSync,
  38.     g_iLevelsVaultHandle,
  39.     g_iRanksVaultHandle
  40.  
  41. // Cvars
  42. new g_pCvarZombieInfect,
  43.     g_pCvarEscapeSuccess,
  44.     g_pCvarEnableDamage,
  45.     g_pCvarRequiredDamage,
  46.     g_pCvarDamageAward,
  47.     g_pCvarStartXP,
  48.     g_pCvarMaxLevelsIncrement,
  49.     g_pCvarMaxXPFirstLevel,
  50.     g_pCvarPercentageStyle,
  51.     g_pCvarStartFromZero,
  52.     g_pCvarAddCommas,
  53.     g_pCvarLevelEffects
  54.  
  55. public plugin_natives()
  56. {
  57.     register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
  58.     register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
  59.     register_native("ze_get_user_level", "native_ze_get_user_level", 1)
  60.     register_native("ze_set_user_level", "native_ze_set_user_level", 1)
  61.     register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
  62.     register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
  63. }
  64.  
  65. public plugin_precache()
  66. {
  67.     precache_sound(LEVELUP)
  68. }
  69.  
  70. public plugin_init()
  71. {
  72.     register_plugin("[ZE] Level-XP System", "1.8", "Raheem/JaCk")
  73.    
  74.     // Hook Chains
  75.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
  76.    
  77.     // Cvars
  78.     g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
  79.     g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
  80.     g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
  81.     g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
  82.     g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
  83.     g_pCvarStartXP = register_cvar("ze_start_xp", "50")
  84.     g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
  85.     g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
  86.     g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
  87.     g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
  88.     g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
  89.     g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
  90.    
  91.     // Messages
  92.     g_MsgSync = CreateHudSyncObj()
  93. }
  94.  
  95. public client_putinserver(id)
  96. {
  97.     if(is_user_hltv(id) || is_user_bot(id))
  98.         return
  99.    
  100.     // Just 1 second delay
  101.     set_task(1.0, "DelayLoad", id)
  102.  
  103.     // Other tasks
  104.     set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
  105.     set_task(0.1, "Check_MaxXP", id, _, _, "b")
  106. }
  107.  
  108. public DelayLoad(id)
  109. {
  110.     // Load his data
  111.     LoadData(id)
  112. }
  113.  
  114. public client_disconnected(id)
  115. {
  116.     if(is_user_hltv(id) || is_user_bot(id))
  117.         return
  118.        
  119.     remove_task(id+TASK_SHOWHUD)
  120.     remove_task(id)
  121. }
  122.  
  123. public Check_MaxXP(id)
  124. {
  125.     new iCurrentMaxXP = g_iMaxXP[id]
  126.    
  127.     new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  128.    
  129.     for (new i = 1; i <= g_iLevel[id]; i++)
  130.     {
  131.         iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  132.     }
  133.    
  134.     if (iCurrentMaxXP != iMaxXP)
  135.     {
  136.         g_iMaxXP[id] = iMaxXP
  137.     }
  138. }
  139.  
  140. public Show_Hud(taskid)
  141. {  
  142.     new iPlayer = ID_SHOWHUD
  143.    
  144.     if (!is_user_alive(iPlayer))
  145.     {
  146.         iPlayer = pev(iPlayer, pev_iuser2)
  147.        
  148.         if (!is_user_alive(iPlayer))
  149.             return
  150.     }
  151.    
  152.     if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
  153.     {
  154.         if(iPlayer != ID_SHOWHUD)
  155.         {
  156.             set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  157.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
  158.         }
  159.         else if (ze_is_user_zombie(iPlayer))
  160.         {
  161.             set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  162.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  163.         }
  164.         else
  165.         {
  166.             set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  167.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  168.         }
  169.     }
  170.     else
  171.     {
  172.         if(iPlayer != ID_SHOWHUD)
  173.         {
  174.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  175.             {
  176.                 new szSpecXP[15], szSpecMaxXP[15]
  177.                
  178.                 AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
  179.                 AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
  180.                
  181.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  182.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP)
  183.             }
  184.             else
  185.             {
  186.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  187.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer])
  188.             }  
  189.         }
  190.         else if (ze_is_user_zombie(iPlayer))
  191.         {
  192.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  193.             {
  194.                 new szZombieXP[15], szZombieMaxXP[15]
  195.                
  196.                 AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
  197.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
  198.                
  199.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  200.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP)
  201.             }
  202.             else
  203.             {
  204.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  205.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  206.             }
  207.         }
  208.         else
  209.         {
  210.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  211.             {
  212.                 new szHumanXP[15], szHumanMaxXP[15]
  213.                
  214.                 AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
  215.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))
  216.                
  217.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  218.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP)
  219.             }
  220.             else
  221.             {
  222.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  223.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  224.             }
  225.         }
  226.     }
  227. }
  228.  
  229. public ze_roundend(WinTeam)
  230. {
  231.     if (WinTeam == ZE_TEAM_HUMAN)
  232.     {
  233.         for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
  234.         {
  235.             if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
  236.                 continue
  237.            
  238.             g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
  239.             SaveData(id)
  240.             Check_User_Level(id)
  241.         }
  242.     }
  243.    
  244.     remove_task(TASK_SHOWHUD)
  245. }
  246.  
  247. public Check_User_Level(id)
  248. {
  249.     if(!is_user_connected(id))
  250.         return
  251.  
  252.     if(g_iXP[id] >= g_iMaxXP[id])
  253.     {
  254.         if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  255.         {
  256.             g_iXP[id] = 0
  257.         }
  258.        
  259.         new szName[32]
  260.         g_iLevel[id] ++
  261.         g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  262.         get_user_name(id, szName, charsmax(szName))
  263.         ze_colored_print(0, "!g%s !tNow in Level %i!y!", szName, g_iLevel[id])
  264.        
  265.         SaveData(id)
  266.        
  267.         PlaySound(id, LEVELUP)
  268.        
  269.         if (get_pcvar_num(g_pCvarLevelEffects) != 0)
  270.         {
  271.             // Screen Fade
  272.             message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  273.             write_short(4096*2)
  274.             write_short(4096*5)
  275.             write_short(0x0001)
  276.             write_byte(random(256))
  277.             write_byte(random(256))
  278.             write_byte(random(256))
  279.             write_byte(150)
  280.             message_end()
  281.            
  282.             // Screen Shake
  283.             message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
  284.             write_short(255<<14)
  285.             write_short(10<<14)
  286.             write_short(255<<14)
  287.             message_end()
  288.         }
  289.     }
  290. }
  291.  
  292. public ze_user_infected(iVictim, iInfector)
  293. {
  294.     if (iInfector == 0)
  295.         return
  296.    
  297.     g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
  298.     SaveData(iInfector)
  299.     Check_User_Level(iInfector)
  300. }
  301.  
  302. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
  303. {
  304.     // Player Damage Himself
  305.     if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
  306.         return HC_CONTINUE
  307.    
  308.     // Same Team?
  309.     if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
  310.         return HC_CONTINUE
  311.    
  312.     // Store Damage For every Player
  313.     g_fDamage[iAttacker] += fDamage
  314.    
  315.     // Damage Calculator Equal or Higher than needed damage
  316.     if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
  317.     {
  318.         // Give Player The Coins
  319.         g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
  320.         SaveData(iAttacker)
  321.         Check_User_Level(iAttacker)
  322.        
  323.         // Rest The Damage Calculator
  324.         g_fDamage[iAttacker] = 0.0
  325.     }
  326.     return HC_CONTINUE
  327. }
  328.  
  329. public SaveData(id)
  330. {
  331.     new szAuthID[35], szName[32]
  332.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  333.     get_user_name(id, szName, charsmax(szName))
  334.    
  335.     // Set Him to max if he Higher than Max Value
  336.     if(g_iLevel[id] > MAX_LEVEL)
  337.     {
  338.         g_iLevel[id] = MAX_LEVEL
  339.     }
  340.    
  341.     if(g_iXP[id] > MAX_XP)
  342.     {
  343.         g_iXP[id] = MAX_XP
  344.     }
  345.    
  346.     new szData[256]
  347.     formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
  348.    
  349.     // Open the Vaults
  350.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  351.     g_iRanksVaultHandle = nvault_open(g_szRanksVault)
  352.  
  353.     // Saves His Data
  354.     nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
  355.     nvault_set(g_iRanksVaultHandle, szAuthID, szName)
  356.    
  357.     // Close Vaults
  358.     nvault_close(g_iLevelsVaultHandle)
  359.     nvault_close(g_iRanksVaultHandle)
  360. }
  361.  
  362. public LoadData(id)
  363. {
  364.     new szData[256], szAuthID[35], szName[32]
  365.    
  366.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  367.     get_user_name(id, szName, charsmax(szName))
  368.    
  369.     // Useless Variable
  370.     new iTimestamp, iExists
  371.    
  372.     // Open the Vault
  373.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  374.    
  375.     iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
  376.    
  377.     // Close Vault
  378.     nvault_close(g_iLevelsVaultHandle)
  379.    
  380.     if (!iExists)
  381.     {
  382.         g_iLevel[id] = 0
  383.         g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
  384.         g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  385.         SaveData(id)
  386.     }
  387.     else
  388.     {
  389.         new iLevel[32], iXP[32], iMaxLevel[32]
  390.         parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
  391.        
  392.         g_iLevel[id] = str_to_num(iLevel)
  393.         g_iXP[id] = str_to_num(iXP)
  394.         g_iMaxXP[id] = str_to_num(iMaxLevel)
  395.     }
  396. }
  397.  
  398. public native_ze_get_user_xp(id)
  399. {
  400.     if(!is_user_connected(id))
  401.     {
  402.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  403.         return false;
  404.     }
  405.    
  406.     return g_iXP[id]
  407. }
  408.  
  409. public native_ze_set_user_xp(id, amount)
  410. {
  411.     if(!is_user_connected(id))
  412.     {
  413.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  414.         return false;
  415.     }
  416.    
  417.     g_iXP[id] = amount
  418.    
  419.     Check_User_Level(id)
  420.     return true;
  421. }
  422.  
  423. public native_ze_get_user_level(id)
  424. {
  425.     if(!is_user_connected(id))
  426.     {
  427.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  428.         return false;
  429.     }
  430.    
  431.     return g_iLevel[id]
  432. }
  433.  
  434. public native_ze_set_user_level(id, amount)
  435. {
  436.     if(!is_user_connected(id))
  437.     {
  438.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  439.         return false;
  440.     }
  441.    
  442.     g_iLevel[id] = amount
  443.    
  444.     if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  445.     {
  446.         g_iXP[id] = 0
  447.     }
  448.    
  449.     return true;
  450. }
  451.  
  452. public native_ze_get_user_max_xp(id)
  453. {
  454.     if(!is_user_connected(id))
  455.     {
  456.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  457.         return false;
  458.     }
  459.    
  460.     return g_iMaxXP[id]
  461. }
  462.  
  463. public native_ze_set_user_max_xp(id, amount)
  464. {
  465.     if(!is_user_connected(id))
  466.     {
  467.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  468.         return false;
  469.     }
  470.    
  471.     g_iMaxXP[id] = amount
  472.     return true;
  473. }

and you should make it like the hour played should be set with cvars
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#16

Post by Raheem » 5 years ago

OK try this:

  1. #include <zombie_escape>
  2.  
  3. // Defines
  4. #define MAX_LEVEL 50
  5. #define MAX_XP 500000
  6. #define TASK_SHOWHUD 2020
  7. #define PLAYED_TIME_TASK 9100
  8. #define ID_SHOWHUD (taskid - TASK_SHOWHUD)
  9. #define LEVELUP "levelup_ZE/ze_levelup.wav"
  10.  
  11. // Constants
  12. new const g_szLevelsVault[] = "Levels"
  13. new const g_szRanksVault[] = "Ranks"
  14.  
  15. // Messages
  16. const Float:HUD_SPECT_X = 0.0
  17. const Float:HUD_SPECT_Y = 0.0
  18. const Float:HUD_STATS_X = 0.0
  19. const Float:HUD_STATS_Y = 0.0
  20.  
  21. const HUD_STATS_ZOMBIE_R = 200
  22. const HUD_STATS_ZOMBIE_G = 220
  23. const HUD_STATS_ZOMBIE_B = 0
  24.  
  25. const HUD_STATS_HUMAN_R = 0
  26. const HUD_STATS_HUMAN_G = 200
  27. const HUD_STATS_HUMAN_B = 210
  28.  
  29. const HUD_STATS_SPEC_R = 100
  30. const HUD_STATS_SPEC_G = 100
  31. const HUD_STATS_SPEC_B = 100
  32.  
  33. // Variables
  34. new g_iLevel[33],
  35.     g_iXP[33],
  36.     g_iMaxXP[33],
  37.     Float:g_fDamage[33],
  38.     g_MsgSync,
  39.     g_iLevelsVaultHandle,
  40.     g_iRanksVaultHandle,
  41.     g_iPlayedTime[33]
  42.  
  43. // Cvars
  44. new g_pCvarZombieInfect,
  45.     g_pCvarEscapeSuccess,
  46.     g_pCvarEnableDamage,
  47.     g_pCvarRequiredDamage,
  48.     g_pCvarDamageAward,
  49.     g_pCvarStartXP,
  50.     g_pCvarMaxLevelsIncrement,
  51.     g_pCvarMaxXPFirstLevel,
  52.     g_pCvarPercentageStyle,
  53.     g_pCvarStartFromZero,
  54.     g_pCvarAddCommas,
  55.     g_pCvarLevelEffects,
  56.     g_pCvarMinPlayedTime
  57.  
  58. public plugin_natives()
  59. {
  60.     register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
  61.     register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
  62.     register_native("ze_get_user_level", "native_ze_get_user_level", 1)
  63.     register_native("ze_set_user_level", "native_ze_set_user_level", 1)
  64.     register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
  65.     register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
  66. }
  67.  
  68. public plugin_precache()
  69. {
  70.     precache_sound(LEVELUP)
  71. }
  72.  
  73. public plugin_init()
  74. {
  75.     register_plugin("[ZE] Level-XP System", "1.8", "Raheem/JaCk")
  76.    
  77.     // Hook Chains
  78.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
  79.    
  80.     // Cvars
  81.     g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
  82.     g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
  83.     g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
  84.     g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
  85.     g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
  86.     g_pCvarStartXP = register_cvar("ze_start_xp", "50")
  87.     g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
  88.     g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
  89.     g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
  90.     g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
  91.     g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
  92.     g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
  93.     g_pCvarMinPlayedTime = register_cvar("ze_played_time_double_xp", "6")
  94.    
  95.     // Messages
  96.     g_MsgSync = CreateHudSyncObj()
  97. }
  98.  
  99. public client_putinserver(id)
  100. {
  101.     if(is_user_hltv(id) || is_user_bot(id))
  102.         return
  103.    
  104.     // Just 1 second delay
  105.     set_task(1.0, "DelayLoad", id)
  106.  
  107.     // Other tasks
  108.     set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
  109.     set_task(0.1, "Check_MaxXP", id, _, _, "b")
  110.    
  111.     // Save played seconds
  112.     set_task(1.0, "IncreaseTimePlayed", id+PLAYED_TIME_TASK, _, _, "b")
  113. }
  114.  
  115. public IncreaseTimePlayed(taskid)
  116. {
  117.     new id = taskid - PLAYED_TIME_TASK
  118.    
  119.     g_iPlayedTime[id]++
  120. }
  121.  
  122. public DelayLoad(id)
  123. {
  124.     // Load his data
  125.     LoadData(id)
  126. }
  127.  
  128. public client_disconnected(id)
  129. {
  130.     if(is_user_hltv(id) || is_user_bot(id))
  131.         return
  132.        
  133.     remove_task(id+TASK_SHOWHUD)
  134.     remove_task(id)
  135.     remove_task(id+PLAYED_TIME_TASK)
  136.    
  137.     g_iPlayedTime[id] = 0
  138. }
  139.  
  140. public Check_MaxXP(id)
  141. {
  142.     new iCurrentMaxXP = g_iMaxXP[id]
  143.    
  144.     new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  145.    
  146.     for (new i = 1; i <= g_iLevel[id]; i++)
  147.     {
  148.         iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  149.     }
  150.    
  151.     if (iCurrentMaxXP != iMaxXP)
  152.     {
  153.         g_iMaxXP[id] = iMaxXP
  154.     }
  155. }
  156.  
  157. public Show_Hud(taskid)
  158. {  
  159.     new iPlayer = ID_SHOWHUD
  160.    
  161.     if (!is_user_alive(iPlayer))
  162.     {
  163.         iPlayer = pev(iPlayer, pev_iuser2)
  164.        
  165.         if (!is_user_alive(iPlayer))
  166.             return
  167.     }
  168.    
  169.     if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
  170.     {
  171.         if(iPlayer != ID_SHOWHUD)
  172.         {
  173.             set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  174.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
  175.         }
  176.         else if (ze_is_user_zombie(iPlayer))
  177.         {
  178.             set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  179.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  180.         }
  181.         else
  182.         {
  183.             set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  184.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  185.         }
  186.     }
  187.     else
  188.     {
  189.         if(iPlayer != ID_SHOWHUD)
  190.         {
  191.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  192.             {
  193.                 new szSpecXP[15], szSpecMaxXP[15]
  194.                
  195.                 AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
  196.                 AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
  197.                
  198.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  199.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP)
  200.             }
  201.             else
  202.             {
  203.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  204.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer])
  205.             }  
  206.         }
  207.         else if (ze_is_user_zombie(iPlayer))
  208.         {
  209.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  210.             {
  211.                 new szZombieXP[15], szZombieMaxXP[15]
  212.                
  213.                 AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
  214.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
  215.                
  216.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  217.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP)
  218.             }
  219.             else
  220.             {
  221.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  222.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  223.             }
  224.         }
  225.         else
  226.         {
  227.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  228.             {
  229.                 new szHumanXP[15], szHumanMaxXP[15]
  230.                
  231.                 AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
  232.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))
  233.                
  234.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  235.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP)
  236.             }
  237.             else
  238.             {
  239.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  240.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  241.             }
  242.         }
  243.     }
  244. }
  245.  
  246. public ze_roundend(WinTeam)
  247. {
  248.     if (WinTeam == ZE_TEAM_HUMAN)
  249.     {
  250.         for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
  251.         {
  252.             if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
  253.                 continue
  254.            
  255.             if (g_iPlayedTime[id]/60 >= get_pcvar_num(g_pCvarMinPlayedTime))
  256.             {
  257.                 g_iXP[id] = g_iXP[id] + (get_pcvar_num(g_pCvarEscapeSuccess) * 2)
  258.             }
  259.             else
  260.             {
  261.                 g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
  262.             }
  263.            
  264.             SaveData(id)
  265.             Check_User_Level(id)
  266.         }
  267.     }
  268.    
  269.     remove_task(TASK_SHOWHUD)
  270. }
  271.  
  272. public Check_User_Level(id)
  273. {
  274.     if(!is_user_connected(id))
  275.         return
  276.  
  277.     if(g_iXP[id] >= g_iMaxXP[id])
  278.     {
  279.         if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  280.         {
  281.             g_iXP[id] = 0
  282.         }
  283.        
  284.         new szName[32]
  285.         g_iLevel[id] ++
  286.         g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  287.         get_user_name(id, szName, charsmax(szName))
  288.         ze_colored_print(0, "!g%s !tNow in Level %i!y!", szName, g_iLevel[id])
  289.        
  290.         SaveData(id)
  291.        
  292.         PlaySound(id, LEVELUP)
  293.        
  294.         if (get_pcvar_num(g_pCvarLevelEffects) != 0)
  295.         {
  296.             // Screen Fade
  297.             message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  298.             write_short(4096*2)
  299.             write_short(4096*5)
  300.             write_short(0x0001)
  301.             write_byte(random(256))
  302.             write_byte(random(256))
  303.             write_byte(random(256))
  304.             write_byte(150)
  305.             message_end()
  306.            
  307.             // Screen Shake
  308.             message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
  309.             write_short(255<<14)
  310.             write_short(10<<14)
  311.             write_short(255<<14)
  312.             message_end()
  313.         }
  314.     }
  315. }
  316.  
  317. public ze_user_infected(iVictim, iInfector)
  318. {
  319.     if (iInfector == 0)
  320.         return
  321.    
  322.     if (g_iPlayedTime[iInfector]/60 >= get_pcvar_num(g_pCvarMinPlayedTime))
  323.     {
  324.         g_iXP[iInfector] = g_iXP[iInfector] + (get_pcvar_num(g_pCvarZombieInfect) * 2)
  325.     }
  326.     else
  327.     {
  328.         g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
  329.     }
  330.    
  331.     SaveData(iInfector)
  332.     Check_User_Level(iInfector)
  333. }
  334.  
  335. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
  336. {
  337.     // Player Damage Himself
  338.     if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
  339.         return HC_CONTINUE
  340.    
  341.     // Same Team?
  342.     if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
  343.         return HC_CONTINUE
  344.    
  345.     // Store Damage For every Player
  346.     g_fDamage[iAttacker] += fDamage
  347.    
  348.     // Damage Calculator Equal or Higher than needed damage
  349.     if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
  350.     {
  351.         // Give Player The Coins
  352.         if (g_iPlayedTime[iAttacker]/60 >= get_pcvar_num(g_pCvarMinPlayedTime))
  353.         {
  354.             g_iXP[iAttacker] = g_iXP[iAttacker] + (get_pcvar_num(g_pCvarDamageAward) * 2)
  355.         }
  356.         else
  357.         {
  358.             g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
  359.         }
  360.  
  361.         SaveData(iAttacker)
  362.         Check_User_Level(iAttacker)
  363.        
  364.         // Rest The Damage Calculator
  365.         g_fDamage[iAttacker] = 0.0
  366.     }
  367.     return HC_CONTINUE
  368. }
  369.  
  370. public SaveData(id)
  371. {
  372.     new szAuthID[35], szName[32]
  373.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  374.     get_user_name(id, szName, charsmax(szName))
  375.    
  376.     // Set Him to max if he Higher than Max Value
  377.     if(g_iLevel[id] > MAX_LEVEL)
  378.     {
  379.         g_iLevel[id] = MAX_LEVEL
  380.     }
  381.    
  382.     if(g_iXP[id] > MAX_XP)
  383.     {
  384.         g_iXP[id] = MAX_XP
  385.     }
  386.    
  387.     new szData[256]
  388.     formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
  389.    
  390.     // Open the Vaults
  391.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  392.     g_iRanksVaultHandle = nvault_open(g_szRanksVault)
  393.  
  394.     // Saves His Data
  395.     nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
  396.     nvault_set(g_iRanksVaultHandle, szAuthID, szName)
  397.    
  398.     // Close Vaults
  399.     nvault_close(g_iLevelsVaultHandle)
  400.     nvault_close(g_iRanksVaultHandle)
  401. }
  402.  
  403. public LoadData(id)
  404. {
  405.     new szData[256], szAuthID[35], szName[32]
  406.    
  407.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  408.     get_user_name(id, szName, charsmax(szName))
  409.    
  410.     // Useless Variable
  411.     new iTimestamp, iExists
  412.    
  413.     // Open the Vault
  414.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  415.    
  416.     iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
  417.    
  418.     // Close Vault
  419.     nvault_close(g_iLevelsVaultHandle)
  420.    
  421.     if (!iExists)
  422.     {
  423.         g_iLevel[id] = 0
  424.         g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
  425.         g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  426.         SaveData(id)
  427.     }
  428.     else
  429.     {
  430.         new iLevel[32], iXP[32], iMaxLevel[32]
  431.         parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
  432.        
  433.         g_iLevel[id] = str_to_num(iLevel)
  434.         g_iXP[id] = str_to_num(iXP)
  435.         g_iMaxXP[id] = str_to_num(iMaxLevel)
  436.     }
  437. }
  438.  
  439. public native_ze_get_user_xp(id)
  440. {
  441.     if(!is_user_connected(id))
  442.     {
  443.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  444.         return false;
  445.     }
  446.    
  447.     return g_iXP[id]
  448. }
  449.  
  450. public native_ze_set_user_xp(id, amount)
  451. {
  452.     if(!is_user_connected(id))
  453.     {
  454.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  455.         return false;
  456.     }
  457.    
  458.     g_iXP[id] = amount
  459.    
  460.     Check_User_Level(id)
  461.     return true;
  462. }
  463.  
  464. public native_ze_get_user_level(id)
  465. {
  466.     if(!is_user_connected(id))
  467.     {
  468.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  469.         return false;
  470.     }
  471.    
  472.     return g_iLevel[id]
  473. }
  474.  
  475. public native_ze_set_user_level(id, amount)
  476. {
  477.     if(!is_user_connected(id))
  478.     {
  479.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  480.         return false;
  481.     }
  482.    
  483.     g_iLevel[id] = amount
  484.    
  485.     if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  486.     {
  487.         g_iXP[id] = 0
  488.     }
  489.    
  490.     return true;
  491. }
  492.  
  493. public native_ze_get_user_max_xp(id)
  494. {
  495.     if(!is_user_connected(id))
  496.     {
  497.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  498.         return false;
  499.     }
  500.    
  501.     return g_iMaxXP[id]
  502. }
  503.  
  504. public native_ze_set_user_max_xp(id, amount)
  505. {
  506.     if(!is_user_connected(id))
  507.     {
  508.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  509.         return false;
  510.     }
  511.    
  512.     g_iMaxXP[id] = amount
  513.     return true;
  514. }

Define time from this cvar: ze_played_time_double_xp 6 (In minutes)
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#17

Post by Rain1153 » 5 years ago

so if a user disconnects his played time will be reseted right? and he has to play another X mins to get double xp right?
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#18

Post by Raheem » 5 years ago

Yes right.
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#19

Post by Rain1153 » 5 years ago

so what happens on map change?
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#20

Post by Raheem » 5 years ago

All reset, i just used a variable and all variables are cleared on map change.
He who fails to plan is planning to fail

Post Reply

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Register

Sign in

Who is online

Users browsing this forum: No registered users and 2 guests