Jump to content

سوال


Recommended Posts

 

Just now, HassoN said:

for i, v in ipairs(getElementsByType("player")) do
  if (getElementDimension(v) == 6969 and getElementData(v, "DATA") == "DATA") then
    -- your code
   end
  end

 

مب كدا تقريبا اذا شخص واحد بس بالعالم ومعه داتا بيرجع الكود الي يبيه

هو يبي لو كل الاعبين الي بالعالم معاهم نفس الداتا

Link to comment
2 minutes ago, Mr.Mostafa said:

 

مب كدا تقريبا اذا شخص واحد بس بالعالم ومعه داتا بيرجع الكود الي يبيه

هو يبي لو كل الاعبين الي بالعالم معاهم نفس الداتا

"لو سمحتم محتاج طريقة اني اتحقق ان كل اللاعبين في العالم الوهمي معاهم نفس الالمنت داتا"

 

^ ذي طريقة التحقق

 

ولو قصده شي ثاني خليه  يوضح عشان مافهمت 

Link to comment
1 hour ago, HassoN said:

for i, v in ipairs(getElementsByType("player")) do
  if (getElementDimension(v) == 6969 and getElementData(v, "DATA") == "DATA") then
    -- your code
   end
  end

 

حبيبي انا عارف الكود دا انا مبرمج برضو هههه

انا اقصد انه يتحقق ان كل اللاعبين معاهم نفس قيمة الداتا 

فهمتني ؟

لكن انا مش هكتب قيمة

Link to comment

انا عايز اعمل طريقة زي يوسفل فانكشن

for i, v in ipairs(getElementsByType("player")) do
	if isPlayersHaveSameElementData(v,"DataName") then
    
	end
end

اتمني تكون فهمتني

Link to comment
32 minutes ago, #STZ said:

انا عايز اعمل طريقة زي يوسفل فانكشن


for i, v in ipairs(getElementsByType("player")) do
	if isPlayersHaveSameElementData(v,"DataName") then
    
	end
end

اتمني تكون فهمتني

isPlayersHaveSameElementData (v,"DataName") 

مثالك غير منطقي ، تبي تتحقق ان اللاعب عنده نفس الالمنت داتا .. طيب مقارنتاً مع من؟ ناقصك ارقمنت اللاعب الثاني الي قاعد تقارن معاه .. ولا انا غلطان؟

المفروض شي زي

doPlayersHaveSameElementData(player1, player2, "dataName")

 

على كل حال لو تريد تجيب اللاعبين الي معهم نفس الالمنت داتا جرب تسوي لوب داخل لوب عشان تجيب كل اللاعبين وتقارنهم بكل اللاعبين واذا تطابق الداتا تسوي الي تريده

شي مثل

for i, player1 in ipairs(getElementsByType("player")) do
  for i, player2 in ipairs(getElementsByType("player")) do
    if (player1 ~= player2 and getElementData(player1, "data") == getElementData(player2, "data") and getElementDimension(player1) == getElementDimension(player2)) then
      -- your code
    end
   end
 end

بس الطريقة ابداً غير جيدة وما انصح فيها 

Edited by HassoN
  • Like 1
Link to comment

الكود ينقصه بعض التحققات والتعديلات, لكن عموماً فكرته كذا تقريباً

 

function doesPlayersHaveTheSameDataInDimension ( dataName, dataValue, dimension )
    for k, v in ipairs ( getElementsByType ( "player" ) ) do
        if ( getElementDimension ( v ) == dimension ) then
            if ( getElementData ( v, dataName ) ~= dataValue ) then
                return false
            end
        end
    end
    return true
end

-- doesPlayersHaveTheSameDataInDimension ( العالم الوهمي, القيمة اللي المفروض الجميع عنده هي, اسم الداتا )

 

Edited by N3xT
Link to comment

ارقمنتات اجباريه

dimension

data

ارقمنتات اختيارية

players

تقدر تحط جدول وتتحقق من اللاعبين المحددين اللي فيه

dimension وتقدر ماتحط جدول وتتحقق من كل اللاعبين في السيرفر طبعاً اللي في العالم المحدد اللي هو

 

 

function doPlayersHaveSameData(players,dimension,data)
	if dimension and type(dimension)=="number" and data and type(data) == "string" then
		if players and type(players) == "table" and #players > 0 then
			local playersHaveData = {};
			for key, player in ipairs (players) do
				if player and isElement(player) and getElementType(player) == "player" and getElementDimension(player) == dimension then
					local plrData = getElementData(player,data);
					if plrData then
						table.insert(playersHaveData,player);
					end
				end
			end
			
			if #playersHaveData == #players then
				return true
			else
				return false
			end
		else
			local players = getElementsByType("player");
			local playersHaveData = {};
			for key, player in ipairs (players) do
				if player and isElement(player) and getElementType(player) == "player" and getElementDimension(player) == dimension then
					local plrData = getElementData(player,data);
					if plrData then
						table.insert(playersHaveData,player);
					end
				end
			end
			
			if #playersHaveData == #players then
				return true
			else
				return false
			end
		end
	end
	return false
end


-- Example : مثال

players = {}
players[1] = localPlayer;
players[2] = localPlayer;
if doPlayersHaveSameData(players,5,"myData") then
  outputChatBox("TRUE");
end

-- مثال 2 :

if doPlayersHaveSameData(5,"myData") then
  outputChatBox("TRUE");
end

 

Edited by NX_CI
  • Like 1
Link to comment

أما إذا كنت تريد تجيب اللاعبين بدون ماتحدد الداتا

إستخدم هذا

ملف سيرفر فقط , لا يعمل في الكلينت *

 

function table.findKey(tbl,key)
	if tbl and type(tbl) == "table" then
		if key and type(key) == "string" then
			for tblKey, _ in pairs (tbl) do
				if tblKey == key then
					return true
				end
			end
			return false
		else
			return false
		end
	end
	return false
end


function getPlayersInDimensionHaveSameData(players,dimension)
	if players and type(players) =="table" then
		if dimension and type(dimension) == "number" then
			local __players =	{};
			for k, player in ipairs (players) do
				if getElementDimension(player) == dimension then
					for _, data in ipairs (getAllElementData(player)) do
						if not (table.findKey(players,data)) then
							__players[data] = {};
						end
						table.insert(__players[data],player);
					end
				end
			end
			
			for data, _ in pairs (__players) do
				if #__players[data] < 2 then
					__players[data] = nil;
				end
			end
			
			return __players
		end
		return false
	end
	return false
end


-- مثال

local players = getElementsByType("player");

local __players = getPlayersInDimensionHaveSameData(players,5);

for data, player in pairs (__players) do
	outputChatBox("Data name : "..data.." & Player name : "..getPlayerName(player):gsub("#%x%x%x%x%x%x",""),root);
end
Link to comment
On 21/07/2019 at 13:36, NX_CI said:

ارقمنتات اجباريه

dimension

data

ارقمنتات اختيارية

players

تقدر تحط جدول وتتحقق من اللاعبين المحددين اللي فيه

dimension وتقدر ماتحط جدول وتتحقق من كل اللاعبين في السيرفر طبعاً اللي في العالم المحدد اللي هو

 

 


function doPlayersHaveSameData(players,dimension,data)
	if dimension and type(dimension)=="number" and data and type(data) == "string" then
		if players and type(players) == "table" and #players > 0 then
			local playersHaveData = {};
			for key, player in ipairs (players) do
				if player and isElement(player) and getElementType(player) == "player" and getElementDimension(player) == dimension then
					local plrData = getElementData(player,data);
					if plrData then
						table.insert(playersHaveData,player);
					end
				end
			end
			
			if #playersHaveData == #players then
				return true
			else
				return false
			end
		else
			local players = getElementsByType("player");
			local playersHaveData = {};
			for key, player in ipairs (players) do
				if player and isElement(player) and getElementType(player) == "player" and getElementDimension(player) == dimension then
					local plrData = getElementData(player,data);
					if plrData then
						table.insert(playersHaveData,player);
					end
				end
			end
			
			if #playersHaveData == #players then
				return true
			else
				return false
			end
		end
	end
	return false
end


-- Example : مثال

players = {}
players[1] = localPlayer;
players[2] = localPlayer;
if doPlayersHaveSameData(players,5,"myData") then
  outputChatBox("TRUE");
end

-- مثال 2 :

if doPlayersHaveSameData(5,"myData") then
  outputChatBox("TRUE");
end

 

دا كان المطلوب لكن لم يعمل للاسف

Link to comment
12 minutes ago, #STZ said:

لا مفيش لكن كل اللاعبين بيكونو نفس الداتا و يدي قيمة فولس

 

شوف يا صاحبي , هو الكود المفروض يكون شغال 100% لكن

تأكد انت من اللاعبين هل جميعهم بنفس العالم اللي انت محدده أو لا

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...