نحوه درست کردن سرور برای پلی دادن بدون استیم

با سلام

میخوام توی این پست چگونگی تغییر کد ها توی سرور رو بگم که پلیر ها بتونن توی سرور لاگین کنن

بنده توی سرور فورچن از ایدنتیفایر هگز سیستمش یا (توکنش) استفاده میکنم ولی این روش یک نقض داره که فعلا بهترین راه میتونه باشه

نقضش اینه که هر پلیر فقط میتونه یک اکانت توی سرور داشته باشه و همه چیش بر پایه هگز سیستمش یا (توکنش) ثبت میشه

حتما حتما حتما از فایل هایی که توش دست کاری میکنید یک بکاپ بگیرید و اگر چیزی از برنامه نویسی لواا سر در میارید این کار رو انجام بدید

:قدم اول

essentialmode\server\classes\player.lua

داخل این مسیر میرید و هر چیزی که مربوط به لایسنس میشه رو ور میدارید

: قدم دوم

داخل این مسیر میرید و این بخش رو با بخش پایینی عوض میکنید

essentialmode\server\main.lua
RegisterServerEvent('fristJoinCheck')
AddEventHandler('fristJoinCheck', function()
	local Source = source
	Citizen.CreateThread(function()
		local id
		for k,v in ipairs(GetPlayerIdentifiers(Source))do
			if string.sub(v, 1, string.len("steam:")) == "steam:" then
				id = v
				break
			end
		end
		
		if not id then
			DropPlayer(Source, "Steam ID Peyda Nashod Dobare Emtehan Kon")
		else
			LoadUser(id, Source)
			justJoined[Source] = true

			TriggerClientEvent("enablePvp", Source)
		end

		return
	end)
end)

کد جدید :

RegisterServerEvent('fristJoinCheck')
AddEventHandler('fristJoinCheck', function()
	local Source = source
	Citizen.CreateThread(function()
		local id
		for k,v in ipairs(GetPlayerIdentifiers(Source))do
			if string.sub(v, 1, string.len("steam:")) == "steam:" then
				id = v
				break
			end
		end
		
		if not id then
			id = GetPlayerToken(Source, 0)
			LoadUser(id, Source)
			justJoined[Source] = true

			TriggerClientEvent("enablePvp", Source)
		else
			LoadUser(id, Source)
			justJoined[Source] = true

			TriggerClientEvent("enablePvp", Source)
		end

		return
	end)
end)

در حالت عادی باید این مشکل برطرف بشه ولی اگر نشد شما باید هر چیزی که نیاز به GetPlayerIdentifiers رو به این صورت عوض کنید

local identifier 
	for k,v in ipairs(GetPlayerIdentifiers(target))do
			if string.sub(v, 1, string.len("steam:")) == "steam:" then
				identifier = v
				break
			end
		end
	if not identifier then 
		identifier = GetPlayerToken(target, 0)
	end

نکته مهم : حتما داخل دیتابیس max legth در تیبل users رو از هر عددی که هست به 70 تغییر دهید و حتما در تیبل های دیگری که نیاز به استیم هگز دارند این کار رو انجام دهید
اگر مشکل یا سوالی بود در خدمتم
با تشکر
MetaServers

برای connectqueue

قدم اول:

connectqueue\server\sv_queue_config.lua

قدم دوم:

Config.RequireSteam = true

را به شکل زیر تغییر دهید

Config.RequireSteam = false

درود ایده جالبی برای راه حل این مشکل هست اما مشکلی که وجود داره اینه که این سیستم به تمامی سورس ها و اسکریپت های سرور وصله و باید هر اسکریپت و ریسورس به طور جداگانه درست بشه

بنظر من بهترین روش برای حل این مشکل ساختن یک سیستم
authentication
جدا و تغییر توابع بیس سرور مانند تابع گرفتن
identifier
و توابع مرتبط با اون هستش که قاعدتا برای بیس هر سروری متفاوت هستش
به هر روی من هم راه حلی رو در این رابطه اراعه داده ام اگر دوست داتشید میتونید یه نگاه بندازید

خب خیر توی ESX Legacy ممکنه ایتجوری باشه ولی توی essentialmode وقتی که اینکارو بکنید تمامی سورس ها اگر از xPlayer.identifier استفاده بکنن اگر پلیر استیم داشته باشه بهش استیم میده اگر نداشته باشه توکن رو میده و تنها تغییر برای سورس ها فقط برای GetPlayerIdentifiers میباشد

برای اون هایی که از ESX Legacy
استفاده میکنن باید چیکار کنن تا بتونن این رو بردارن تا پلیرا بدون استیم بیان

ببین من ESX Essentialmode هستم برای اونایی که استیم ندارن پنل کاراکتر سازی رو هربار میان سرور بالا میاره

درود خسته نباشید

اگر امکان داره فایل های مربوط رو قرار بدید که مستقیم ریپلیس کنیم به این دلیل که چندین بار تغییرات مربوط رو ایجاد کردیم اما همچنان پلیر بدون استیم امکان وارد شدن نداره

تشکر از شما

با سلام برای حل این مشکل هم بنده یادم رفت که این تغییر رو باید در بخش

essentialmode\server\player.lua

انجام بدید

این بخش رو از این شکل

function LoadUser(identifier, source, licenseNotRequired)
	local Source = source
	db.retrieveUser(identifier, function(user, isJson)
		if user then
			if isJson then
				user = json.decode(user)
			end
			user.protectedInventory = {}
			if user.inventory then 
				user.inventory = json.decode(user.inventory)
			else
				user.inventory = {} 
			end
			for i=1, #user.inventory do
				local item = ESX.Items[user.inventory[i].item]
				if item then
					table.insert(user.protectedInventory, {
						name = user.inventory[i].item,
						count = user.inventory[i].count,
						label = item.label,
						limit = item.limit,
						usable = ESX.UsableItemsCallbacks[user.inventory[i].item] ~= nil,
						rare = item.rare,
						canRemove = item.canRemove
					})
				else
					print(('MetaServer (CORE) : In Item Dar Data Base Vojod Nadarad "%s" !'):format(user.inventory[i].item))
				end
			end

			if user.license or licenseNotRequired then
				Users[source] = CreatePlayer(Source, user.permission_level, user.money, user.bank, user.identifier, user.license, user.group, user.roles or "", user.protectedInventory, user.job, user.job_grade, user.gang, user.gang_grade, user.loadout, user.playerName, user.position, user.status)				

				TriggerClientEvent('esx:playerLoaded', Source, {
					identifier   = Users[Source].identifier,
					inventory    = Users[Source].inventory,
					job          = Users[Source].job,
					gang		 = Users[Source].gang,
					loadout      = Users[Source].loadout,
					lastPosition = Users[Source].coords,
					money        = Users[Source].money,
					bank		 = Users[Source].bank,
					status		 = Users[Source].status,
					name		 = Users[Source].name,
					dead		 = user.is_dead,
					group		 = Users[Source].group,
					ncz			 = ncz
				})
				TriggerEvent('esx:playerLoaded', Source, Users[Source])

				local new = '.'
                if not user.playerName or not tostring(user.playerName) or string.len(user.playerName) < 2 or user.playerName == "" then
                    TriggerClientEvent('registerForm', Source, true)
                    new = ', And He/She Is New Player!' 
                else
                    TriggerClientEvent('registerForm', Source, false)                    
                end
				TriggerEvent('DiscordBot:ToDiscord', 'co', '[LogSystem]', "```css\n User: (".. source .. '), Identifier: (' .. Users[source].identifier .. '), Name: (' .. Users[source].name .. '), SteamName: (' .. GetPlayerName(source) .. '), money: ('.. Users[source].money .. '), Bank: (' .. Users[source].bank .. '), Permission: ('.. Users[source].permission_level .. ')'.. new .. "```",'user', Source, true, false)

				for k,v in pairs(commandSuggestions) do
					TriggerClientEvent('chat:addSuggestion', Source, settings.defaultSettings.commandDelimeter .. k, v.help, v.params)
				end

				TriggerClientEvent('ManageAdmins', source, 1, Admins)

				if Users[source].permission_level > 0 then
					for k,v in pairs(AdminCommands) do
						TriggerClientEvent('chat:addSuggestion', Source, settings.defaultSettings.commandDelimeter .. k, v.help, v.params)
					end
				end
				
			else
				local license

				for k,v in ipairs(GetPlayerIdentifiers(Source))do
					if string.sub(v, 1, string.len("license:")) == "license:" then
						license = v
						break
					end
				end

				if license then
					db.updateUser(user.identifier, {license = license}, function()
						LoadUser(user.identifier, Source, false)
					end)
				else
					LoadUser(user.identifier, Source, false, true)
				end
			end
		else
			local license
			for k,v in ipairs(GetPlayerIdentifiers(Source))do
				if string.sub(v, 1, string.len("license:")) == "license:" then
					license = v
					break
				end
			end
			db.createUser(identifier, license, function()
				LoadUser(identifier, Source, true)
			end)
		end
	end)
end

به این شکل عوض کنید

function LoadUser(identifier, source, licenseNotRequired)
	local Source = source
	db.retrieveUser(identifier, function(user, isJson)
		if user then
			if isJson then
				user = json.decode(user)
			end
			user.protectedInventory = {}
			if user.inventory then 
				user.inventory = json.decode(user.inventory)
			else
				user.inventory = {} 
			end
			for i=1, #user.inventory do
				local item = ESX.Items[user.inventory[i].item]
				if item then
					table.insert(user.protectedInventory, {
						name = user.inventory[i].item,
						count = user.inventory[i].count,
						label = item.label,
						limit = item.limit,
						usable = ESX.UsableItemsCallbacks[user.inventory[i].item] ~= nil,
						rare = item.rare,
						canRemove = item.canRemove
					})
				else
					print(('MetaServer (CORE) : In Item Dar Data Base Vojod Nadarad "%s" !'):format(user.inventory[i].item))
				end
			end

			--if user.license or licenseNotRequired then
				Users[source] = CreatePlayer(Source, user.permission_level, user.money, user.bank, user.identifier, user.license, user.group, user.roles or "", user.protectedInventory, user.job, user.job_grade, user.gang, user.gang_grade, user.loadout, user.playerName, user.position, user.status)				

				TriggerClientEvent('esx:playerLoaded', Source, {
					identifier   = Users[Source].identifier,
					inventory    = Users[Source].inventory,
					job          = Users[Source].job,
					gang		 = Users[Source].gang,
					loadout      = Users[Source].loadout,
					lastPosition = Users[Source].coords,
					money        = Users[Source].money,
					bank		 = Users[Source].bank,
					status		 = Users[Source].status,
					name		 = Users[Source].name,
					dead		 = user.is_dead,
					group		 = Users[Source].group,
					ncz			 = ncz
				})
				TriggerEvent('esx:playerLoaded', Source, Users[Source])

				local new = '.'
                if not user.playerName or not tostring(user.playerName) or string.len(user.playerName) < 2 or user.playerName == "" then
                    TriggerClientEvent('registerForm', Source, true)
                    new = ', And He/She Is New Player!' 
                else
                    TriggerClientEvent('registerForm', Source, false)                    
                end
				TriggerEvent('DiscordBot:ToDiscord', 'co', '[LogSystem]', "```css\n User: (".. source .. '), Identifier: (' .. Users[source].identifier .. '), Name: (' .. Users[source].name .. '), SteamName: (' .. GetPlayerName(source) .. '), money: ('.. Users[source].money .. '), Bank: (' .. Users[source].bank .. '), Permission: ('.. Users[source].permission_level .. ')'.. new .. "```",'user', Source, true, false)

				for k,v in pairs(commandSuggestions) do
					TriggerClientEvent('chat:addSuggestion', Source, settings.defaultSettings.commandDelimeter .. k, v.help, v.params)
				end

				TriggerClientEvent('ManageAdmins', source, 1, Admins)

				if Users[source].permission_level > 0 then
					for k,v in pairs(AdminCommands) do
						TriggerClientEvent('chat:addSuggestion', Source, settings.defaultSettings.commandDelimeter .. k, v.help, v.params)
					end
				end
				
			--[[else
				local license

				for k,v in ipairs(GetPlayerIdentifiers(Source))do
					if string.sub(v, 1, string.len("license:")) == "license:" then
						license = v
						break
					end
				end

				if license then
					db.updateUser(user.identifier, {license = license}, function()
						LoadUser(user.identifier, Source, false)
					end)
				else
					LoadUser(user.identifier, Source, false, true)
				end
			end--]]
		else
			local license
			for k,v in ipairs(GetPlayerIdentifiers(Source))do
				if string.sub(v, 1, string.len("license:")) == "license:" then
					license = v
					break
				end
			end
			db.createUser(identifier, license, function()
				LoadUser(identifier, Source, true)
			end)
		end
	end)
end

این مشکل به دلیل نداشتن لایسنس ایجاد میشه با انی تغییر کوچیک همه چی باید فیکس شده باشه

با سلام
با توجه به توضیحات بنده شما میتونید این مشکل رو حل کنید ولی اگر بنده فایل های بیس سرور فورچن رو بدم
برای شما کار نمیکنه چون بیس کاملا توسط بنده شخصی سازی شده و امکان اینکه برای سرور شما کار بکنه خیلی کمه اگر مشکلی در هنگام کانکت شدن به سرور وجود داره احتمال زیاد برای بخش

connectqueue

هست و شما باید برید تو این مسیر

connectqueue\server\sv_queue_config.lua

و اپشن نیاز به استیم رو ور دارید مثل کد پایین

-- قبل
Config.RequireSteam = true
-- بعد
Config.RequireSteam = false

و باید مشکل رو حل کنه ولی اگر ارور دیگه ای به شما داد اینجا به اشتراک بذارید یا در سورس سرور خود دنبال ارور مورد نظر خودتون بگردید

من سورس esx legecy رو ندارم ولی فکر کنم توی این پست دوستمون کامل گفته

درسته تمامی تغییراتی که فرمودید انجام شده اما همچنان هنگام ورود به سرور ارور دریافت میکنم که استیم را مجدد باز کنید

ببین داخل main.lua توی پوشه server 2 تا جا داره که استیم برسی میکنه یه سرچ بزنی steam: میاره برات

ببینید الان این فایل های منه ببینید درست زدم همرو

https://uploadkon.ir/uploads/003a30_26Desktop.rar

چه تغییری باید اونجا انجام بشه ؟