Guest User

Untitled

a guest
Dec 5th, 2015
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.96 KB | None | 0 0
  1. local sX,sY = guiGetScreenSize()
  2.  
  3.  
  4. local loginData = {
  5. loginEdit = false,
  6. passwordEdit = false,
  7. confirmEdit = false,
  8. loginButton = false,
  9. registerButton = false,
  10. guestButton = false,
  11. loginState = "login",
  12. loginTick = 0,
  13. animState = false,
  14. animTick = 0,
  15. backgroundAlpha = 255,
  16. backgroundAnim = false,
  17. font = "default-bold",
  18. fontScale = false,
  19. colorData = {0,176,255},
  20. rememberState = false,
  21. switchTick = 0,
  22. switchColor = {255,0,0},
  23. switchPosition = 0,
  24. switchHover = false,
  25. loginX = sX*0.6,
  26. registerX = sX,
  27. messagesData = {
  28.  
  29. },
  30. messageTick = 0,
  31. }
  32.  
  33.  
  34.  
  35. function onLoginResourceStart()
  36. loginData.loginEdit = createElement("dxEdit")
  37. loginData.passwordEdit = createElement("dxEdit")
  38. loginData.confirmEdit = createElement("dxEdit")
  39. loginData.loginButton = createElement("dxButton")
  40. loginData.registerButton = createElement("dxButton")
  41. loginData.guestButton = createElement("dxButton")
  42. setElementData(localPlayer,"loginState",false,false)
  43. triggerServerEvent("onClientWantCheckHisState",localPlayer)
  44. end
  45. addEventHandler("onClientResourceStart",resourceRoot,onLoginResourceStart)
  46.  
  47.  
  48. function renderLoginInterface()
  49. loginData.switchHover = false
  50. local tick = getTickCount() - loginData.animTick
  51. local progress = math.min(tick/1000,1)
  52. if loginData.animState then
  53. loginData.loginAlpha = interpolateBetween(loginData.loginAlpha,0,0,255,0,0,progress,"Linear")
  54. else
  55. loginData.loginAlpha = interpolateBetween(loginData.loginAlpha,0,0,0,0,0,progress,"Linear")
  56. loginData.backgroundAlpha = loginData.loginAlpha
  57. end
  58. dxDrawImage(0,0,sX,sY,"loginImage/background.jpg",0,0,0,tocolor(255,255,255,loginData.backgroundAlpha))
  59. dxDrawImage(0,sY*0.15,sX*0.3,sX*0.15,"loginImage/logo.png",0,0,0,tocolor(255,255,255,loginData.loginAlpha))
  60. local shadowScale = sX*0.002
  61. local tick = getTickCount() - loginData.loginTick
  62. local progress = math.min(tick/500,1)
  63. if loginData.loginState == "register" then
  64. loginData.loginX = interpolateBetween(loginData.loginX,0,0,sX,0,0,progress,"Linear")
  65. if progress >= 0.95 then
  66. local progress = math.min(math.abs(tick-450)/500,1)
  67. loginData.registerX = interpolateBetween(loginData.registerX,0,0,sX*0.6,0,0,progress,"Linear")
  68. end
  69. elseif loginData.loginState == "login" then
  70. loginData.registerX = interpolateBetween(loginData.registerX,0,0,sX,0,0,progress,"Linear")
  71. if progress >= 0.95 then
  72. local progress = math.min(math.abs(tick-450)/500,1)
  73. loginData.loginX = interpolateBetween(loginData.loginX,0,0,sX*0.6,0,0,progress,"Linear")
  74. end
  75. end
  76. local loginX = loginData.loginX
  77. local loginY = sY*0.25
  78. local registerX = loginData.registerX
  79. if loginData.loginX < sX*0.99 then
  80. dxDrawText("Login",loginX+shadowScale,loginY+shadowScale,loginX+sX*0.3,loginY+sY*0.15,tocolor(0,0,0,loginData.loginAlpha),loginData.fontScale*0.25,loginData.font,"right","center",true,false,false)
  81. dxDrawText("Login",loginX,loginY,loginX+sX*0.3,loginY+sY*0.15,tocolor(255,255,255,loginData.loginAlpha),loginData.fontScale*0.25,loginData.font,"right","center",true,false,false)
  82. dxLibCreateEdit(loginData.loginEdit,loginX,loginY+sY*0.15,sX*0.32,sY*0.04,"Nazwa użytkownika","person",20,20,20,loginData.loginAlpha,false,false)
  83. dxLibCreateEdit(loginData.passwordEdit,loginX,loginY+sY*0.2,sX*0.32,sY*0.04,"Twoje hasło","password",20,20,20,loginData.loginAlpha,false,true)
  84. dxLibCreateButton(loginData.loginButton,loginX+sX*0.2,loginY+sY*0.275,sX*0.1,sY*0.04,"Login now!",loginData.fontScale*0.08,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false)
  85. dxLibCreateButton(loginData.registerButton,loginX+sX*0.02,loginY+sY*0.32,sX*0.1,sY*0.035,"Rejestracja",loginData.fontScale*0.07,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false)
  86. local tick = getTickCount() - loginData.switchTick
  87. local progress = math.min(tick/500,1)
  88. if loginData.rememberState then
  89. loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3] = interpolateBetween(loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3],0,255,0,progress,"Linear")
  90. loginData.switchPosition = interpolateBetween(loginData.switchPosition,0,0,sX*0.041-sY*0.03,0,0,progress,"Linear")
  91. else
  92. loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3] = interpolateBetween(loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3],255,0,0,progress,"Linear")
  93. loginData.switchPosition = interpolateBetween(loginData.switchPosition,0,0,0,0,0,progress,"Linear")
  94. end
  95. local switchAlpha = loginData.loginAlpha
  96. if isCursorHover(loginX+sX*0.02,loginY+sY*0.275,sX*0.17,sY*0.04) then
  97. switchAlpha = switchAlpha * 0.75
  98. loginData.switchHover = true
  99. end
  100. dxDrawImage(loginX+sX*0.02,loginY+sY*0.275,sX*0.05,sY*0.04,"loginImage/switchBackground.png",0,0,0,tocolor(255,255,255,loginData.loginAlpha))
  101. dxDrawImage(loginX+sX*0.02,loginY+sY*0.275,sX*0.05,sY*0.04,"loginImage/switchCenter.png",0,0,0,tocolor(loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3],switchAlpha))
  102. dxDrawImage(loginX+sX*0.023+loginData.switchPosition,loginY+sY*0.28,sY*0.03,sY*0.03,"loginImage/switchSlide.png",0,0,0,tocolor(255,255,255,switchAlpha))
  103. dxDrawText("Zapamiętaj hasło?",loginX+sX*0.0706,loginY+sY*0.275+sX*0.0012,loginX+sX*0.19,loginY+sY*0.315,tocolor(0,0,0,switchAlpha),loginData.fontScale*0.05,loginData.font,"left","center",true,false,false)
  104. dxDrawText("Zapamiętaj hasło?",loginX+sX*0.07,loginY+sY*0.275,loginX+sX*0.19,loginY+sY*0.315,tocolor(255,255,255,switchAlpha),loginData.fontScale*0.05,loginData.font,"left","center",true,false,false)
  105. end
  106. if registerX < sX*0.99 then
  107. local loginX = registerX
  108. dxDrawText("Rejestracja",loginX+shadowScale,loginY+shadowScale,loginX+sX*0.3,loginY+sY*0.15,tocolor(0,0,0,loginData.loginAlpha),loginData.fontScale*0.25,loginData.font,"right","center",true,false,false)
  109. dxDrawText("Rejestracja",loginX,loginY,loginX+sX*0.3,loginY+sY*0.15,tocolor(255,255,255,loginData.loginAlpha),loginData.fontScale*0.25,loginData.font,"right","center",true,false,false)
  110. dxLibCreateEdit(loginData.loginEdit,loginX,loginY+sY*0.15,sX*0.32,sY*0.04,"Nazwa użytkownika","person",20,20,20,loginData.loginAlpha,false,false)
  111. dxLibCreateEdit(loginData.passwordEdit,loginX,loginY+sY*0.2,sX*0.32,sY*0.04,"Twoje hasło","password",20,20,20,loginData.loginAlpha,false,true)
  112. dxLibCreateEdit(loginData.confirmEdit,loginX,loginY+sY*0.25,sX*0.32,sY*0.04,"Powtórz hasło","password",20,20,20,loginData.loginAlpha,false,true)
  113. dxLibCreateButton(loginData.loginButton,loginX+sX*0.02,loginY+sY*0.31,sX*0.2,sY*0.035,"Stworzyłeś nowe konto!",loginData.fontScale*0.08,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false)
  114. dxLibCreateButton(loginData.registerButton,loginX+sX*0.23,loginY+sY*0.31,sX*0.07,sY*0.035,"Wróć",loginData.fontScale*0.07,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false)
  115. end
  116. end
  117.  
  118. function onClientRegister()
  119. loginData.loginState = "login"
  120. dxLibEditSetText(loginData.confirmEdit,"")
  121. dxLibEditSetText(loginData.passwordEdit,"")
  122. dxLibEditSetText(loginData.loginEdit,"")
  123. loginData.loginTick = getTickCount()
  124. end
  125. addEvent("onClientSuccessfullyRegisterNewAccount",true)
  126. addEventHandler("onClientSuccessfullyRegisterNewAccount",getRootElement(),onClientRegister)
  127.  
  128.  
  129. function openLogin(colorCode)
  130. loginData.loginState = "login"
  131. local resource = getResourceFromName("race")
  132. if resource then
  133. loginData.font,loginData.fontScale,loginData.colorData = call(resource,"getRaceSettings")
  134. loginData.font = dxCreateFont(":race/common/race_font.ttf",sY/20,true) or "default-bold"
  135. if not loginData.fontScale then loginData.fontScale = sY/100 end
  136. if not loginData.colorData then loginData.colorData = {0,176,255} end
  137. end
  138. if colorCode then
  139. local r,g,b = getColorFromString(colorCode)
  140. if r and g and b then
  141. loginData.colorData = {r,g,b}
  142. end
  143. end
  144. dxLib.font = loginData.font
  145. dxLibCreateEdit(loginData.loginEdit,0,0,sX*0.1,sY*0.04,"Nazwa użytkownika","person",20,20,20,loginData.loginAlpha,false,false)
  146. dxLibCreateEdit(loginData.passwordEdit,0,0,sX*0.1,sY*0.04,"Twoje hasło","password",20,20,20,loginData.loginAlpha,false,true)
  147. loginData.animState = true
  148. loginData.animTick = getTickCount()
  149. loginData.loginAlpha = 0
  150. loginData.backgroundAlpha = 255
  151. showChat(false)
  152. showCursor(true)
  153. addEventHandler("onClientRender",getRootElement(),renderLoginInterface)
  154. addEventHandler("onClientRender",getRootElement(),renderLoginMessages)
  155. loadXMLData()
  156. setElementData(localPlayer,"loginState",true,false)
  157. end
  158. addEvent("onServerWantIniteteLoginPanel",true)
  159. addEventHandler("onServerWantIniteteLoginPanel",getRootElement(),openLogin)
  160.  
  161.  
  162. function closeLogin()
  163. loginData.animState = false
  164. loginData.animTick = getTickCount()
  165. showChat(true)
  166. showCursor(false)
  167. triggerEvent("onLoginPanelStopRenderInterface",getRootElement())
  168. setElementData(localPlayer,"loginState",false,false)
  169. end
  170. addEvent("onClientSuccessfullyLogIn",true)
  171. addEventHandler("onClientSuccessfullyLogIn",getRootElement(),closeLogin)
  172.  
  173.  
  174. function addLoginMessage(message,type)
  175. table.insert(loginData.messagesData,{message,type or "confirm",getTickCount(),dxGetTextWidth(message,loginData.fontScale*0.08,loginData.font)+sX*0.01,0,0,0})
  176. loginData.messageTick = getTickCount()
  177. end
  178. addEvent("onServerWantToShowMessage",true)
  179. addEventHandler("onServerWantToShowMessage",getRootElement(),addLoginMessage)
  180.  
  181.  
  182. function renderLoginMessages()
  183. local messagesData = loginData.messagesData
  184. if #messagesData ~= 0 then
  185. local startY = sY*0.5
  186. local i = 1
  187. repeat
  188. mData = messagesData[i]
  189. local drawThis = true
  190. if i~= 1 then
  191. startY = startY + sY*0.0425
  192. end
  193. if mData[5] == 0 and mData[6] == 0 then
  194. mData[5] = -mData[4]-sX*0.015
  195. mData[6] = startY
  196. mData[7] = startY
  197. end
  198. local tick = getTickCount() - mData[3]
  199. local posX,posY,alpha
  200. if tick < 1000 then
  201. local progress = math.min(tick/1000,1)
  202. mData[5] = interpolateBetween(mData[5],0,0,0,0,0,progress,"Linear")
  203. elseif tick >= 1000 and tick <= 7000 then
  204. mData[5] = 0
  205. elseif tick > 7000 then
  206. local progress = math.min((tick-7000)/1000,1)
  207. mData[5] = interpolateBetween(mData[5],0,0,-mData[4]-mData[4]-sX*0.015,0,0,progress,"Linear")
  208. if progress >= 1 then
  209. table.remove(messagesData,i)
  210. drawThis = false
  211. loginData.messageTick = getTickCount()
  212. end
  213. end
  214. local globalTick = getTickCount() - loginData.messageTick
  215. if drawThis then
  216. mData[7] = startY
  217. mData[6] = interpolateBetween(mData[6],0,0,mData[7],0,0,math.min(globalTick/1000,1),"Linear")
  218. posX = mData[5]
  219. posY = mData[6]
  220. alpha = 255
  221. dxDrawRectangle(posX,posY,mData[4],sY*0.04,tocolor(0,0,0,alpha*0.75))
  222. local r,g,b = 0,255,0
  223. if mData[2] == "warning" then
  224. r,g,b = 255,0,0
  225. end
  226. dxDrawRectangle(posX+mData[4],posY,sX*0.015,sY*0.04,tocolor(r,g,b,alpha*0.85))
  227. dxDrawRectangle(posX+mData[4]+sX*0.005,posY,sX*0.01,sY*0.04,tocolor(0,0,0,alpha))
  228. dxDrawText(mData[1],posX,posY,posX+mData[4],posY+sY*0.04,tocolor(255,255,255,alpha),loginData.fontScale*0.07,loginData.font,"center","center")
  229. end
  230. i = i + 1
  231. until i>#messagesData
  232. loginData.messagesData = messagesData
  233. end
  234. end
  235.  
  236.  
  237.  
  238. function onClientMouseClick(button,state)
  239. if button == "left" and state == "down" then
  240. if loginData.switchHover then
  241. loginData.switchHover = false
  242. loginData.switchTick = getTickCount()
  243. loginData.rememberState = not loginData.rememberState
  244. end
  245. end
  246. end
  247. addEventHandler("onClientClick",getRootElement(),onClientMouseClick)
  248.  
  249.  
  250. function onClientClickDxLoginButton(theElement)
  251. if theElement == loginData.registerButton then
  252. if loginData.loginState == "login" then
  253. loginData.loginState = "register"
  254. dxLibEditSetText(loginData.confirmEdit,"")
  255. dxLibEditSetText(loginData.passwordEdit,"")
  256. dxLibEditSetText(loginData.loginEdit,"")
  257. else
  258. loginData.loginState = "login"
  259. dxLibEditSetText(loginData.confirmEdit,"")
  260. dxLibEditSetText(loginData.passwordEdit,"")
  261. dxLibEditSetText(loginData.loginEdit,"")
  262. end
  263. loginData.loginTick = getTickCount()
  264. elseif loginData.loginButton == theElement then
  265. if loginData.loginState == "login" then
  266. local loginText = dxLibEditGetText(loginData.loginEdit)
  267. local passwordText = dxLibEditGetText(loginData.passwordEdit)
  268. if not loginText and not passwordText then return end
  269. if loginText == "" or passwordText == "" then
  270. addLoginMessage("Wypełnij wszystkie pola.","warning")
  271. return
  272. end
  273. if string.len(loginText) < 4 then
  274. addLoginMessage("Nazwa użytkownika musi mieć conajmniej 4 znaki.","warning")
  275. return
  276. end
  277. if string.len(passwordText) < 4 then
  278. addLoginMessage("Hasło musi mieć co najmniej 4 znaki.","warning")
  279. return
  280. end
  281. triggerServerEvent("onClientWantToLogIn",localPlayer,loginText,passwordText)
  282. else
  283. local loginText = dxLibEditGetText(loginData.loginEdit)
  284. local passwordText = dxLibEditGetText(loginData.passwordEdit)
  285. local confirmText = dxLibEditGetText(loginData.confirmEdit)
  286. if not loginText or not passwordText or not confirmText then return end
  287. if loginText == "" or passwordText == "" or confirmText == "" then
  288. addLoginMessage("Wypełnij wszystkie pola.","warning")
  289. return
  290. end
  291. if string.len(loginText) < 4 then
  292. addLoginMessage("Nazwa użytkownika musi mieć conajmniej 4 znaki.","warning")
  293. return
  294. end
  295. if string.len(passwordText) < 4 then
  296. addLoginMessage("Hasło musi mieć conajmniej 4 znaki.","warning")
  297. return
  298. end
  299. if passwordText ~= confirmText then
  300. addLoginMessage("Wprowadzony login lub hasło jest niepoprawne.","warning")
  301. return
  302. end
  303. triggerServerEvent("onClientWantToRegister",localPlayer,loginText,passwordText)
  304. end
  305. elseif loginData.guestButton == theElement then
  306. addLoginMessage("","confirm")
  307. closeLogin()
  308. end
  309. end
  310. addEvent("onDxLibButtonClick",true)
  311. addEventHandler("onDxLibButtonClick",getRootElement(),onClientClickDxLoginButton)
  312.  
  313. function createXMLFile()
  314. local xml = xmlCreateFile("loginData.xml","data")
  315. xmlNodeSetAttribute(xml,"login","")
  316. xmlNodeSetAttribute(xml,"password","")
  317. xmlNodeSetAttribute(xml,"remember","false")
  318. xmlSaveFile(xml)
  319. xmlUnloadFile()
  320. end
  321.  
  322. function loadXMLData()
  323. local xmlFile = xmlLoadFile("loginData.xml","data")
  324. if not xmlFile then
  325. createXMLFile()
  326. xmlFile = xmlLoadFile("loginData.xml","data")
  327. end
  328. if xmlFile then
  329. if xmlNodeGetAttribute(xmlFile,"remember") == "true" then
  330. local login = xmlNodeGetAttribute(xmlFile,"login") or ""
  331. local password = xmlNodeGetAttribute(xmlFile,"password") or ""
  332. dxLibEditSetText(loginData.loginEdit,login)
  333. dxLibEditSetText(loginData.passwordEdit,password)
  334. loginData.rememberState = true
  335. end
  336. xmlUnloadFile(xmlFile)
  337. end
  338. end
  339.  
  340.  
  341. function saveXMlFile()
  342. local xmlFile = xmlLoadFile("loginData.xml","data")
  343. if not xmlFile then
  344. createXMLFile()
  345. xmlFile = xmlLoadFile("loginData.xml","data")
  346. end
  347. if xmlFile then
  348. if loginData.rememberState then
  349. local loginText = dxLibEditGetText(loginData.loginEdit) or ""
  350. local passwordText = dxLibEditGetText(loginData.passwordEdit) or ""
  351. xmlNodeSetAttribute(xmlFile,"login",loginText)
  352. xmlNodeSetAttribute(xmlFile,"password",passwordText)
  353. xmlNodeSetAttribute(xmlFile,"remember","true")
  354. else
  355. xmlNodeSetAttribute(xmlFile,"login","")
  356. xmlNodeSetAttribute(xmlFile,"password","")
  357. xmlNodeSetAttribute(xmlFile,"remember","false")
  358. end
  359. xmlSaveFile(xmlFile)
  360. xmlUnloadFile(xmlFile)
  361. end
  362. end
  363. addEventHandler("onClientSuccessfullyLogIn",getRootElement(),saveXMlFile)
  364.  
  365.  
  366. function onResourceStart()
  367. local sound = playSound("http://fastup.pl/data/Matevsz/Imany%20feat.%20Filatov%20%26%20Karas%20-%20Don%27t%20Be%20So%20Shy%20%28Radio%20Mix%29.mp3", true)
  368. end
  369. addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), onResourceStart)
Advertisement
Add Comment
Please, Sign In to add comment