Advertisement
Guest User

Untitled

a guest
May 25th, 2015
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.12 KB | None | 0 0
  1. if SERVER then
  2. util.AddNetworkString( "Achievement" )
  3. util.AddNetworkString( "OwnAchievement" )
  4.  
  5. hook.Add( "PlayerInitialSpawn", " Crating Achievement fep", function( ply )
  6. if file.Exists( "achievementspe/"..ply:SteamID64()..".txt", "DATA" ) == true then
  7. ply.achievements = util.JSONToTable( file.Read( "achievementspe/"..ply:SteamID64()..".txt" ) )
  8. else
  9. ply.achievements = ply.achievements or {}
  10. ply.achievements.hello = 0
  11. ply.achievements.prop = 0
  12. ply.achievements.death = 0
  13. ply.achievements.deathcount = 0
  14. file.Write( "achievementspe/"..ply:SteamID64()..".txt", util.TableToJSON(ply.achievements))
  15. end
  16. if file.Exists( "achievementspe", "DATA" ) == false and file.IsDir("achievementspe", "DATA") == false then
  17. file.CreateDir( "achievementspe", "DATA" )
  18. end
  19. end )
  20.  
  21. hook.Add( "PlayerSay", "Player Hello", function( ply, text, IsTeam )
  22. local text = string.lower( text )
  23. if ply.achievements.hello == 0 and string.sub( text, 1, 5 ) == "hello" then
  24. net.Start( "Achievement" )
  25. net.WriteUInt( 1, 2 )
  26. net.WriteString( "Say Hello!" )
  27. net.WriteEntity( ply )
  28. net.Broadcast()
  29. ply.achievements.hello = 1
  30. file.Write( "achievementspe/"..ply:SteamID64()..".txt", util.TableToJSON(ply.achievements))
  31. end
  32. if string.match( text, "!resetmyachievements", 0) == "!resetmyachievements" then
  33. ply.achievements = {}
  34. file.Write( "achievementspe/"..ply:SteamID64()..".txt", util.TableToJSON(ply.achievements))
  35. ply.achievements = {}
  36. ply.achievements.hello = 0
  37. ply.achievements.prop = 0
  38. ply.achievements.death = 0
  39. ply.achievements.deathcount = 0
  40. file.Write( "achievementspe/"..ply:SteamID64()..".txt", util.TableToJSON(ply.achievements))
  41. return ""
  42. end
  43. if string.match( text, "!myach", 0 ) == "!myach" then
  44. net.Start( "OwnAchievement" )
  45. net.WriteTable(ply.achievements)
  46. net.Send( ply )
  47. return ""
  48. end
  49. end )
  50.  
  51. hook.Add( "PlayerDeath", "Player Death Propkill", function( ply, ent, att )
  52. if ply.achievements.prop == 0 and att:GetClass() == "prop_physics" and ply ~= att then
  53. net.Start( "Achievement" )
  54. net.WriteUInt( 1, 2 )
  55. net.WriteString( "Welcome to Garrys Mod!" )
  56. net.WriteEntity( ply )
  57. net.Broadcast()
  58. ply.achievements.prop = 1
  59. file.Write( "achievementspe/"..ply:SteamID64()..".txt", util.TableToJSON(ply.achievements))
  60. end
  61.  
  62. if ply.achievements.death == 0 and att:GetClass() == "worldspawn" then
  63. net.Start( "Achievement" )
  64. net.WriteUInt( 1, 2 )
  65. net.WriteString( "Falldamage!" )
  66. net.WriteEntity( ply )
  67. net.Broadcast()
  68. ply.achievements.death = 1
  69. file.Write( "achievementspe/"..ply:SteamID64()..".txt", util.TableToJSON(ply.achievements))
  70. end
  71. ply.deathcounter = ply.deathcounter or 0
  72. if ply.achievements.deathcount == 0 then
  73. ply.deathcounter = ply.deathcounter + 1
  74. if ply.deathcounter == 10 then
  75. net.Start( "Achievement" )
  76. net.WriteUInt( 1, 2 )
  77. net.WriteString( "Die 10 times in a row!" )
  78. net.WriteEntity( ply )
  79. net.Broadcast()
  80. ply.achievements.deathcount = 1
  81. file.Write( "achievementspe/"..ply:SteamID64()..".txt", util.TableToJSON(ply.achievements))
  82. end
  83. end
  84. end )
  85.  
  86. hook.Add( "PlayerDisconnected", "Player Disconnect Save", function( ply )
  87. if file.Exists( "achievementspe", "DATA") == false and file.IsDir("achievementspe", "DATA") == false then
  88. file.CreateDir( "achievementspe", "DATA" )
  89. end
  90. file.Write( "achievementspe/"..ply:SteamID64()..".txt", util.TableToJSON(ply.achievements))
  91. end )
  92. end
  93.  
  94. if CLIENT then
  95. net.Receive( "Achievement", function()
  96. --[[
  97. Type
  98. 0 = no tag
  99. 1 = SERVER
  100. 2 = INFO
  101. --]]
  102. local t = net.ReadUInt( 2 )
  103. local ach = net.ReadString()
  104. local ply = net.ReadEntity()
  105. local nick = ply:GetName()
  106.  
  107. if t == 0 then
  108. chat.AddText( Color( 255, 255, 255 ), Color( 255, 255, 255 ), nick.." just received the achievement: ", Color( 20,200,100 ),'"'..ach..'"' )
  109. elseif t == 1 then
  110. chat.AddText( Color( 0, 120, 150 ), "[SERVER] ", Color( 255, 255, 255 ), nick.." just received the achievement: ", Color( 20,200,100 ),'"'..ach..'"' )
  111. elseif t == 2 then
  112. chat.AddText( Color( 255, 255, 255 ),"[INFO] ", Color( 255, 255, 255 ), nick.." just received the achievement: ", Color( 20,200,100 ),'"'..ach..'"' )
  113. end
  114. end )
  115.  
  116. net.Receive( "OwnAchievement", function()
  117. local yourachievements = net.ReadTable()
  118. local achievementnames = {}
  119. achievementnames.hello = "Say Hello"
  120. achievementnames.prop = "Welcome to Garry's Mod"
  121. achievementnames.death = "Falldamage"
  122. achievementnames.deathcount = "Die 10 times in a row"
  123.  
  124. local Frame = vgui.Create( "DFrame" )
  125. Frame:SetPos( center )
  126. Frame:SetSize( ScrW() * 0.208, ScrH() * 0.277 )
  127. Frame:SetTitle( "Your Achievement Status" )
  128. Frame:SetVisible( true )
  129. Frame:ShowCloseButton( true )
  130. Frame:MakePopup( true )
  131.  
  132. local DList = vgui.Create( "DListView", Frame )
  133. DList:SetPos( 20, 30 )
  134. DList:SetSize( ScrW() * 0.188, ScrH() * 0.237 )
  135. DList:AddColumn( "Achievements" )
  136. DList:AddColumn( "Scored" )
  137. for k, v in pairs( yourachievements ) do
  138. for n, rn in pairs( achievementnames ) do
  139. if k == n then
  140. k = rn
  141. end
  142. end
  143. if v == 1 then
  144. v = "achieved"
  145. else
  146. v = "not achieved"
  147. end
  148. DList:AddLine( k, v )
  149. end
  150. end )
  151. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement