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:

#21

Post by Rain1153 » 5 years ago

Oh thats bad can we use nvault now? 😂
LOL

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

#22

Post by Raheem » 5 years ago

That what i was speaking about from beginning :lol:

OK anyway i created a basic plugin and native to return the played time here: viewtopic.php?f=15&t=3462 You will use it and i'll use the native in the levels plugin.

EDIT:

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

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

#23

Post by Rain1153 » 5 years ago

so when will a person reset his played time?
LOL

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

#24

Post by Raheem » 5 years ago

Never with same steamid, he should change his steamid so he will start from 0.
He who fails to plan is planning to fail

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

#25

Post by Rain1153 » 5 years ago

can u put a cvar on the played time like played time should be saved only for 30 mins like that? otherwise all will get double xp throughout thier lives xD
LOL

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

#26

Post by Raheem » 5 years ago

Using timestamp we can do it, when player reach the min required hours i update the timestamp with current-time and i won't increase the counter anymore. I remove all entires that is old than ze_double_last 30 minutes.

Don't use this as plugin to display the timeplayed, as when player reach the min required hours then his time played will not increasing anymore.

Not tested:

  1. #include <zombie_escape>
  2. #include <nvault>
  3.  
  4. #define PLAYED_TIME_TASK 9100
  5.  
  6. new const g_szVault_Name[] = "Played_Time"
  7.  
  8. new g_iPlayedTime[33], g_iVaultHandler
  9.  
  10. new g_pCvarMinPlayedTime, g_pCvarDoubleTime
  11.  
  12. public plugin_natives()
  13. {
  14.     // Native to return played time in seconds, plugin will save using nVault
  15.     register_native("ze_get_played_time", "native_ze_get_played_time", 1)
  16. }
  17.  
  18. public plugin_init()
  19. {
  20.     register_plugin("Played Time", "1.0", "Raheem")
  21.    
  22.     // Commands
  23.     //register_clcmd("say /played", "ShowPlayedTime")
  24.     //register_clcmd("say_team /played", "ShowPlayedTime")
  25.    
  26.     // Cvars
  27.     g_pCvarMinPlayedTime = get_cvar_pointer("ze_played_time_double_xp")
  28.     g_pCvarDoubleTime = register_cvar("ze_double_last", "30") // In minutes
  29. }
  30.  
  31. public ShowPlayedTime(id)
  32. {
  33.     ze_colored_print(id, "!tYour played time!y: !g%i !tMinutes!y!", g_iPlayedTime[id]/60)
  34. }
  35.  
  36. public client_putinserver(id)
  37. {
  38.     if(is_user_hltv(id) || is_user_bot(id))
  39.         return
  40.    
  41.     // Just 1 second delay
  42.     set_task(0.5, "DelayLoad", id)
  43.    
  44.     // Save played seconds
  45.     set_task(1.0, "IncreaseTimePlayed", id+PLAYED_TIME_TASK, _, _, "b")
  46. }
  47.  
  48. public DelayLoad(id)
  49. {
  50.     // Load his time played
  51.     LoadPlayedTime(id)
  52. }
  53.  
  54. public IncreaseTimePlayed(taskid)
  55. {
  56.     new id = taskid - PLAYED_TIME_TASK
  57.    
  58.     if (g_iPlayedTime[id] == (get_pcvar_num(g_pCvarMinPlayedTime) * 60 * 60))
  59.     {
  60.         new szAuthID[35]
  61.         get_user_authid(id, szAuthID, charsmax(szAuthID))
  62.        
  63.         // Open the Vault
  64.         g_iVaultHandler = nvault_open(g_szVault_Name)
  65.        
  66.         // He played the required time? Save now time so we remove after 30 minute
  67.         nvault_touch(g_iVaultHandler, szAuthID, get_systime())
  68.        
  69.         // Close Vault
  70.         nvault_close(g_iVaultHandler)
  71.    
  72.         remove_task(taskid)
  73.         return
  74.     }
  75.    
  76.     if (g_iPlayedTime[id] >= (get_pcvar_num(g_pCvarMinPlayedTime) * 60 * 60))
  77.     {
  78.         remove_task(taskid)
  79.         return
  80.     }
  81.    
  82.     g_iPlayedTime[id]++
  83. }
  84.  
  85. public client_disconnected(id)
  86. {
  87.     if(is_user_hltv(id) || is_user_bot(id))
  88.         return
  89.    
  90.     // Save played time
  91.     SavePlayedTime(id)
  92.    
  93.     remove_task(id+PLAYED_TIME_TASK)
  94.     remove_task(id)
  95.     g_iPlayedTime[id] = 0
  96. }
  97.  
  98. public SavePlayedTime(id)
  99. {
  100.     new szAuthID[35]
  101.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  102.    
  103.     new szData[128]
  104.     num_to_str(g_iPlayedTime[id], szData, charsmax(szData))
  105.    
  106.     // Open the Vaults
  107.     g_iVaultHandler = nvault_open(g_szVault_Name)
  108.    
  109.     // Saves His Data
  110.     nvault_set(g_iVaultHandler, szAuthID, szData)
  111.    
  112.     // Close Vaults
  113.     nvault_close(g_iVaultHandler)
  114. }
  115.  
  116. public LoadPlayedTime(id)
  117. {
  118.     new szData[128], szAuthID[35]
  119.    
  120.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  121.    
  122.     // Useless Variable
  123.     new iTimestamp, iExists
  124.    
  125.     // Open the Vault
  126.     g_iVaultHandler = nvault_open(g_szVault_Name)
  127.    
  128.     iExists = nvault_lookup(g_iVaultHandler, szAuthID, szData, charsmax(szData), iTimestamp)
  129.    
  130.     // Close Vault
  131.     nvault_close(g_iVaultHandler)
  132.    
  133.     if (!iExists)
  134.     {
  135.         g_iPlayedTime[id] = 0
  136.         SavePlayedTime(id)
  137.     }
  138.     else
  139.     {
  140.         g_iPlayedTime[id] = str_to_num(szData)
  141.     }
  142. }
  143.  
  144. public native_ze_get_played_time(id)
  145. {
  146.     if(!is_user_connected(id))
  147.     {
  148.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  149.         return -1;
  150.     }
  151.    
  152.     g_iVaultHandler = nvault_open(g_szVault_Name)
  153.    
  154.     nvault_prune(g_iVaultHandler, 0 , get_systime() - (get_pcvar_num(g_pCvarDoubleTime) * 60))
  155.    
  156.     nvault_close(g_iVaultHandler)
  157.    
  158.     return g_iPlayedTime[id]
  159. }
He who fails to plan is planning to fail

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

#27

Post by Rain1153 » 5 years ago

ayt thanks
LOL

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

#28

Post by Rain1153 » 5 years ago

Raheem wrote: 5 years ago That what i was speaking about from beginning :lol:

OK anyway i created a basic plugin and native to return the played time here: viewtopic.php?f=15&t=3462 You will use it and i'll use the native in the levels plugin.

EDIT:

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

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

#29

Post by Raheem » 5 years ago

Yes.
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 0 guests