Advertisement
Rochet2

Player played time recording

Mar 21st, 2012
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.77 KB | None | 0 0
  1. local RequiredGameTime = 300 -- in seconds
  2.  
  3. local T = {}
  4.  
  5. do
  6.     for _, pPlayer in pairs(GetPlayersInWorld()) do
  7.         T[tostring(pPlayer)] = GetGameTime()
  8.     end
  9. end
  10.  
  11. local function LogIn(event, pPlayer)
  12.     local str = tostring(pPlayer)
  13.     if(not T[str]) then
  14.         T[str] = GetGameTime()
  15.     end
  16. end
  17. local function LogOut(event, pPlayer)
  18.     T[tostring(pPlayer)] = nil
  19. end
  20.  
  21. function EnoughPlayed(pPlayer)
  22.     local str = tostring(pPlayer)
  23.     if(not T[str]) then
  24.         T[str] = GetGameTime(); return 0
  25.     end
  26.     local Time = GetGameTime()-T[str]
  27.     if(Time < RequiredGameTime) then
  28.         return RequiredGameTime-Time
  29.     end
  30.     return false
  31. end
  32.  
  33. function ResetPlayedTime(pPlayer)
  34.     T[tostring(pPlayer)] = GetGameTime()
  35. end
  36.  
  37. RegisterServerHook(4, LogIn) -- SERVER_HOOK_ENTER_WORLD
  38. RegisterServerHook(13, LogOut) -- SERVER_HOOK_LOGOUT
  39.  
  40.  
  41. --[[
  42. Example of use:
  43.  
  44. function Hello(pUnit, event, pPlayer)
  45.     pUnit:GossipCreateMenu(1, pPlayer, 0)
  46.     pUnit:GossipMenuAddItem(0, "Test1", 1, 0)
  47.     local ReqTime = EnoughPlayed(pPlayer) -- Get needed time in seconds or false if ok to show
  48.     if(not ReqTime) then -- This checks if the player has played 5 min for example
  49.         pUnit:GossipMenuAddItem(0, "HAS PLAYED 5 MIN OR MORE", 2, 0)
  50.     else
  51.         pUnit:GossipMenuAddItem(0, "You still need to play "..(math.ceil(ReqTime/60)).." more minutes", 3, 0)
  52.     end
  53.     pUnit:GossipMenuAddItem(0, "Test2", 4, 0)
  54.     pUnit:GossipSendMenu(pPlayer)
  55. end
  56.  
  57. function Select(pUnit, event, pPlayer, id, intid, code)
  58.     if(intid == 2) then
  59.         -- do stuff
  60.         pPlayer:SendBroadcastMessage("You have played 5 minutes and recieved a reward")
  61.         ResetPlayedTime(pPlayer)
  62.     elseif(intid == 3) then
  63.         Hello(pUnit, event, pPlayer)
  64.         return
  65.     end
  66.     pPlayer:GossipComplete()
  67. end
  68.  
  69. RegisterUnitGossipEvent(190000, 1, Hello)
  70. RegisterUnitGossipEvent(190000, 2, Select)
  71. ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement