guiSetInputMode("no_binds_when_editing")
local screenW, screenH = guiGetScreenSize()
local x, y = (screenW/1366), (screenH/768)
checkBox1 = guiCreateCheckBox(x*600, y*437, x*15, y*15, "", false, false)
checkBox2 = guiCreateCheckBox(x*600, y*469, x*15, y*15, "", false, false)
guiSetVisible(checkBox1, false)
guiSetVisible(checkBox2, false)
guiSetAlpha(checkBox1, 0)
guiSetAlpha(checkBox2, 0)
userAlpha = 150
passAlpha = 150
cor = {}
local font_Text = dxCreateFont("files/font/font_Text.ttf", 20)
local font_Text2 = dxCreateFont("files/font/font_Text.ttf", 15)
local fontScale = false
editBox = {}
editBox.__index = editBox
editBox.instances = {}
function onClientResourceStart()
	local font_EditBox = dxCreateFont("files/font/font_EditBox.ttf", 20)
	user = editBox.new()
	user:setPosition(x*457, y*200, x*450, y*50)
	user.color = {0, 0, 0, 0}
	user.font = font_EditBox
	user.text = ""
	user.visible = true
	user.onInput = function()
		userAlpha = 255
	end
	user.onOutput = function()
		userAlpha = 150
	end
	pass = editBox.new()
	pass:setPosition(x*457, y*260, x*450, y*50)
	pass.color = {0, 0, 0, 0}
	pass.font = font_EditBox
	pass.masked = true
	pass.visible = true
	pass.onInput = function()
		passAlpha = 255
	end
	pass.onOutput = function()
		passAlpha = 150
	end
	setTimer(function()
		showChat(false)
	end, 2500, 1)
	showCursor(true)
	guiSetVisible(checkBox1, true)
	guiSetVisible(checkBox2, true)
        guiSetInputEnabled(guiGetVisible(checkBox1))
        guiSetInputEnabled(guiGetVisible(checkBox2))
	addEventHandler("onClientRender", getRootElement(), dxLogin)
	addEventHandler("onClientRender", getRootElement(), renderMensagesLogin)
	if not fontScale then fontScale = screenH/100 end
	local username, password = loadLoginFromXML()
	if not(username == "" or password == "") then
		guiCheckBoxSetSelected(checkBox1, true)
		user.text = tostring(username)
		pass.text = tostring(password)
	else
		guiCheckBoxSetSelected(checkBox1, false)
		user.text = tostring(username)
		pass.text = tostring(password)
	end
end
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), onClientResourceStart)
function dxLogin()
	cor[1] = tocolor(238, 0, 0, 0)
	cor[2] = tocolor(238, 0, 0, 0)
	if cursorPosition(x*455, y*359, x*217, y*50) then cor[1] = tocolor(238, 0, 0) end
	if cursorPosition(x*693, y*359, x*217, y*50) then cor[2] = tocolor(238, 0, 0) end
		dxDrawImage(x*0, y*0, x*1366, y*768, "files/img/arkaplan.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
		dxDrawImage(x*0, y*0, x*1366, y*768, "files/img/editUser.png", 0, 0, 0, tocolor(0, 0, 0, userAlpha), false)
		dxDrawImage(x*0, y*0, x*1366, y*768, "files/img/editPass.png", 0, 0, 0, tocolor(0, 0, 0, passAlpha), false)
		dxDrawImage(x*0, y*0, x*1366, y*768, "files/img/girisbutton.png", 0, 0, 0, cor[1], false)
		dxDrawImage(x*0, y*0, x*1366, y*768, "files/img/kayitbutton.png", 0, 0, 0, cor[2], false)
		dxDrawText("Giris", x*457, y*359, x*670, y*407, tocolor(255, 255, 255, 255), x*1.00, font_Text, "center", "center", false, false, false, false, false)
		dxDrawText("Kayit Ol", x*695, y*359, x*908, y*407, tocolor(255, 255, 255, 255), x*1.00, font_Text, "center", "center", false, false, false, false, false)
		dxDrawText("Beni Hatırla", x*620, y*432, x*765, y*457, tocolor(255, 255, 255, 255), x*1.00, font_Text2, "left", "center", false, false, false, false, false)
		dxDrawText("Sifreyi göster", x*620, y*464, x*765, y*489, tocolor(255, 255, 255, 255), x*1.00, font_Text2, "left", "center", false, false, false, false, false)
		dxDrawText("#Unknown - #Ramazan ^ © 2009 - 2018 © ROYAL FREEROAM", x*520, y*632, x*855, y*662, tocolor(255, 255, 255, 255), x*1.00, font_Text2, "center", "center", false, false, false, false, false)
		dxDrawEmptyRec(x*600, y*437, x*15, y*15, tocolor(255, 255, 255, 255), 1)
		dxDrawEmptyRec(x*600, y*469, x*15, y*15, tocolor(255, 255, 255, 255), 1)
	if guiCheckBoxGetSelected(checkBox1) == true then
		dxDrawText("X", x*597, y*435, x*620, y*454, tocolor(255, 255, 255, 255), x*1.00, font_Text2, "center", "center", false, false, false, false, false)
	else
	end
	if guiCheckBoxGetSelected(checkBox2) == true then
		pass.masked = false
		dxDrawText("X", x*597, y*467, x*620, y*486, tocolor(255, 255, 255, 255), x*1.00, font_Text2, "center", "center", false, false, false, false, false)
	else
		pass.masked = true
	end
	for k, self in pairs(editBox.instances) do
		if self.visible then
			local px, py, pw, ph = self:getPosition()
			local text = self.masked and string.gsub(self.text, ".", "•") or self.text
			local alignX = dxGetTextWidth(text, self.scale, self.font) <= pw and "left" or "right"
			dxDrawRectangle(px, py, pw, ph, tocolor(unpack(self.color)))
			dxDrawText(text, px + x*5, py, px - x*5 + pw, py + ph, tocolor(unpack(self.textColor)), self.scale, self.font, alignX, "center", true)
			if self.input and dxGetTextWidth(text, self.scale, self.font) <= pw then
				local lx = dxGetTextWidth(text, self.scale, self.font) + px + x*8
				local lx = dxGetTextWidth(text, self.scale, self.font) + px + x*8
				dxDrawLine(lx, py + y*10, lx, py + ph - y*10, tocolor(255, 255, 255, math.abs(math.sin(getTickCount() / 300))*200), 1)
			end
		end
	end
	if getKeyState("backspace") then
		for k, self in pairs(editBox.instances) do
			if self.visible and self.input then
				if not keyState then
					keyState = getTickCount() + 400
					self.text = string.sub(self.text, 1, string.len(self.text) - 1)
				elseif keyState and keyState < getTickCount() then
					keyState = getTickCount() + 100
					self.text = string.sub(self.text, 1, string.len(self.text) - 1)
				end
				return
			end
		end
		keyState = nil
	end
end
function loginClick(botao, state)
	if botao == "left" and state == "down" then
		for k, self in pairs(editBox.instances) do
			if self.visible then
				if self.input then
					self.input = nil
					self.onOutput()
				end
				local x, y, w, h = self:getPosition()
				if cursorPosition(x, y, w, h) then
					self.input = true
					self.onInput()
				end
			end
		end
	elseif cursorPosition(x*455, y*359, x*217, y*50) then
		if guiCheckBoxGetSelected(checkBox1) == true then
			checksave = true
		else
			checksave = false
		end
		triggerServerEvent("login", getLocalPlayer(), user.text, pass.text, checksave)
	elseif cursorPosition(x*693, y*359, x*217, y*50) then
		triggerServerEvent("registrar", getLocalPlayer(), user.text, pass.text)
	end
end
addEventHandler("onClientClick", getRootElement(), loginClick)
function cursorPosition(x, y, width, height)
	if (not isCursorShowing()) then
		return false
	end
	local sx, sy = guiGetScreenSize()
	local cx, cy = getCursorPosition()
	local cx, cy = (cx*sx), (cy*sy)
	if (cx >= x and cx <= x + width) and (cy >= y and cy <= y + height) then
		return true
	else
		return false
	end
end
function onClientCharacter(character)
	if not isCursorShowing() then
		return
	end
	for k, self in pairs(editBox.instances) do
		if self.visible and self.input then
			if (string.len(self.text)) < self.maxLength then
				self.text = self.text..character
			end
		end
	end
end
addEventHandler("onClientCharacter", getRootElement(), onClientCharacter)
function editBox.new()
	local self = setmetatable({}, editBox)
	self.text = ""
	self.maxLength = 30
	self.scale = y*0.8
	self.state = "normal"
	self.font = "sans"
	self.color = {255, 255, 255, 255}
	self.textColor = {255, 255, 255, 255}
	table.insert(editBox.instances, self)
	return self
end
function editBox:getPosition()
	return self.x, self.y, self.w, self.h
end
function editBox:setPosition(x, y, w,h)
	self.x, self.y, self.w, self.h = x, y, w, h
	return true
end
function dxDrawEmptyRec(absX, absY, sizeX, sizeY, color, ancho)
	dxDrawRectangle(absX, absY, sizeX, ancho, color)
	dxDrawRectangle(absX, absY + ancho, ancho, sizeY - ancho, color)
	dxDrawRectangle(absX + ancho, absY + sizeY - ancho, sizeX - ancho, ancho, color)
	dxDrawRectangle(absX + sizeX-ancho, absY + ancho, ancho, sizeY - ancho*2, color)
end
function loadLoginFromXML()
	local xml_save_log_File = xmlLoadFile("files/xml/userdata.xml")
	if not xml_save_log_File then
		xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login")
	end
	local usernameNode = xmlFindChild(xml_save_log_File, "username", 0)
	local passwordNode = xmlFindChild(xml_save_log_File, "password", 0)
	if usernameNode and passwordNode then
		return xmlNodeGetValue(usernameNode), xmlNodeGetValue(passwordNode)
	else
		return "", ""
	end
	xmlUnloadFile(xml_save_log_File)
end
function saveLoginToXML(username, password)
	local xml_save_log_File = xmlLoadFile("files/xml/userdata.xml")
	if not xml_save_log_File then
		xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login")
	end
	if (username ~= "") then
		local usernameNode = xmlFindChild(xml_save_log_File, "username", 0)
		if not usernameNode then
			usernameNode = xmlCreateChild(xml_save_log_File, "username")
		end
		xmlNodeSetValue(usernameNode, tostring(username))
	end
	if (password ~= "") then
		local passwordNode = xmlFindChild(xml_save_log_File, "password", 0)
		if not passwordNode then
			passwordNode = xmlCreateChild(xml_save_log_File, "password")
		end
		xmlNodeSetValue(passwordNode, tostring(password))
	end
	xmlSaveFile(xml_save_log_File)
	xmlUnloadFile(xml_save_log_File)
end
addEvent("saveLoginToXML", true)
addEventHandler("saveLoginToXML", getRootElement(), saveLoginToXML)
function resetSaveXML()
	local xml_save_log_File = xmlLoadFile("files/xml/userdata.xml")
	if not xml_save_log_File then
		xml_save_log_File = xmlCreateFile("files/xml/userdata.xml", "login")
	end
	if (username ~= "") then
		local usernameNode = xmlFindChild(xml_save_log_File, "username", 0)
		if not usernameNode then
			usernameNode = xmlCreateChild(xml_save_log_File, "username")
		end
		xmlNodeSetValue(usernameNode, "")
	end
	if (password ~= "") then
		local passwordNode = xmlFindChild(xml_save_log_File, "password", 0)
		if not passwordNode then
			passwordNode = xmlCreateChild(xml_save_log_File, "password")
		end
		xmlNodeSetValue(passwordNode, "")
	end
	xmlSaveFile(xml_save_log_File)
	xmlUnloadFile(xml_save_log_File)
end
addEvent("resetSaveXML", true)
addEventHandler("resetSaveXML", getRootElement(), resetSaveXML)
function removeLogin()
	user.visible = false
	pass.visible = false
	guiSetVisible(checkBox1, false)
	guiSetVisible(checkBox2, false)
	removeEventHandler("onClientRender", getRootElement(), dxLogin)
	removeEventHandler("onClientRender", getRootElement(), renderMensagesLogin)
	removeEventHandler("onClientClick", getRootElement(), loginClick)
	removeEventHandler("onClientCharacter", getRootElement(), onClientCharacter)
	showCursor(false)
	showChat(true)
end
addEvent("removeLogin", true)
addEventHandler("removeLogin", getRootElement(), removeLogin)
local fontMsg = dxCreateFont("files/font/font_Text.ttf", 20, true) or "default-bold"
mensages = {}
messagetick = 0
function servermessagesLogin(message, type)
	table.insert(mensages, {message, type or "confirm", getTickCount(), dxGetTextWidth(message, fontScale*0.08, fontMsg) + screenW*0.01, 0, 0, 0})
	messagetick = getTickCount()
end
addEvent("servermessagesLogin", true)
addEventHandler("servermessagesLogin", getRootElement(), servermessagesLogin)
function renderMensagesLogin()
	local msgd = mensages
	if #msgd ~= 0 then
		local startY = screenH*0.5
		local i = 1
		repeat
			mData = msgd[i]
			local drawThis = true
			if i~= 1 then
				startY = startY + screenH*0.0425
			end
			if mData[5] == 0 and mData[6] == 0 then
				mData[5] = - mData[4] - screenW*0.015
				mData[6] = startY
				mData[7] = startY
			end
			local tick = getTickCount() - mData[3]
			local posX, posY, alpha
			if tick < 1000 then
				local progress = math.min(tick/1000,1)
				mData[5] = interpolateBetween(mData[5], 0, 0, 0, 0, 0, progress, "Linear")
			elseif tick >= 1000 and tick <= 7000 then
				mData[5] = 0
			elseif tick > 7000 then
				local progress = math.min((tick - 7000)/1000,1)
				mData[5] = interpolateBetween(mData[5], 0, 0, - mData[4] - mData[4] - screenW*0.015, 0, 0, progress, "Linear")
				if progress >= 1 then
					table.remove(msgd, i)
					drawThis = false
					messagetick = getTickCount()
				end
			end
			local globalTick = getTickCount() - messagetick
			if drawThis then
				mData[7] = startY
				mData[6] = interpolateBetween(mData[6], 0, 0, mData[7], 0, 0, math.min(globalTick/1000,1), "Linear")
				posX = mData[5]
				posY = mData[6]
				alpha = 255
				dxDrawRectangle(posX, posY, mData[4], screenH*0.04, tocolor(0, 0, 0, 100), true)
				local r, g, b = 0, 255, 0
				if mData[2] == "warning" then
					r, g, b = 255, 0, 0
				end
				dxDrawRectangle(posX + mData[4], posY, screenW*0.006, screenH*0.04, tocolor(r, g, b, alpha), true)
				dxDrawText(mData[1], posX, posY, posX + mData[4], posY + screenH*0.04, tocolor(255, 255, 255, alpha), fontScale*0.07, fontMsg, "center", "center", false, false, true, false, false)
			end
			i = i + 1
		until i > #msgd
		mensages = msgd
	end
end
function apagarScript()
	if fileExists("client.lua") then
		fileDelete("client.lua")
	end
end
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), apagarScript)
addEventHandler("onClientPlayerQuit", getRootElement(), apagarScript)
addEventHandler("onClientPlayerJoin", getRootElement(), apagarScript)