Jump to content

سؤال


3ssol

Recommended Posts

يعني

source= الي لمس الماركر ؟

________________________________

  
local theMarker = false -- مافهمتها ؟ 
  
addEventHandler( "onClientGUIClick", GUIEditor.button[1],  
function( ) 
    triggerServerEvent( "Trigger", localPlayer, theMarker ) -- ليه حطيتها هنا في اهر شي  
end, false ) 
  
  
  
  
addEvent( "open_window",true ) 
addEventHandler( "open_window", root,  
function( marker ) 
    guiSetVisible( GUIEditor.window[1], true ) 
    showCursor( true ) 
    theMarker = marker -- مافهمتها ؟ 
end ) 

شوف الي حاطلك عليهم كلمات مافهمتهم ممكن توضحهم لي

Link to comment
local theMarker = false -- عرفت متغير 
  
addEventHandler( "onClientGUIClick", GUIEditor.button[1], 
function( ) 
    triggerServerEvent( "Trigger", localPlayer, theMarker ) -- أرسل الماركر للسيرفر عشان أقدر أعرف مين سواه 
end, false ) 
  
  
  
  
addEvent( "open_window",true ) 
addEventHandler( "open_window", root, 
function( marker ) 
    guiSetVisible( GUIEditor.window[1], true ) 
    showCursor( true ) 
    theMarker = marker -- كل ما النافذة تنفتح يغير الماركر القديم اللي كان موجود بالجديد 
end ) 

Link to comment

للحين مافهمت

شوف هنا

addEventHandler( "onMarkerHit", resourceRoot, function( hitElement ) 
    if getElementType( hitElement ) == "player" then 
        triggerClientEvent( hitElement, "open_window", hitElement, source ) -- من وين جت سورس ؟ 
    end 
end ) 

addEvent( "open_window",true ) 
addEventHandler( "open_window", root,  
function( marker ) -- ماركر من وين جت ؟؟ 
    guiSetVisible( GUIEditor.window[1], true ) 
    showCursor( true ) 
    theMarker = marker -- ليه سويت كذا ؟ ووش الفايده ؟ 
end ) 

local theMarker = false -- يصير تحطها ترو ؟ 
  
addEventHandler( "onClientGUIClick", GUIEditor.button[1],  
function( ) 
    triggerServerEvent( "Trigger", localPlayer, theMarker ) -- ليه ارسلت " ذاماركر" واذا رحت للترايقر ماراح تحصل الـ ذا ماركر 
end, false ) 

addEvent( "Trigger", true ) 
addEventHandler( "Trigger", root, function( marker ) -- ؟؟ 
    local player = getElementData( marker, "Creater" )-- ؟؟ 
    if getPlayerMoney( source ) >= 100 and isElement( player ) then -- ؟؟ 
        takePlayerMoney( source, 100 ) --؟؟ 
        givePlayerMoney( player, 50 ) 
    end 
end ) 

Link to comment
للحين مافهمت

شوف هنا

addEventHandler( "onMarkerHit", resourceRoot, function( hitElement ) 
    if getElementType( hitElement ) == "player" then 
        triggerClientEvent( hitElement, "open_window", hitElement, source ) -- من وين جت سورس ؟ 
    end 
end ) 

addEvent( "open_window",true ) 
addEventHandler( "open_window", root,  
function( marker ) -- ماركر من وين جت ؟؟ 
    guiSetVisible( GUIEditor.window[1], true ) 
    showCursor( true ) 
    theMarker = marker -- ليه سويت كذا ؟ ووش الفايده ؟ 
end ) 

local theMarker = false -- يصير تحطها ترو ؟ 
  
addEventHandler( "onClientGUIClick", GUIEditor.button[1],  
function( ) 
    triggerServerEvent( "Trigger", localPlayer, theMarker ) -- ليه ارسلت " ذاماركر" واذا رحت للترايقر ماراح تحصل الـ ذا ماركر 
end, false ) 

addEvent( "Trigger", true ) 
addEventHandler( "Trigger", root, function( marker ) -- ؟؟ 
    local player = getElementData( marker, "Creater" )-- ؟؟ 
    if getPlayerMoney( source ) >= 100 and isElement( player ) then -- ؟؟ 
        takePlayerMoney( source, 100 ) --؟؟ 
        givePlayerMoney( player, 50 ) 
    end 
end ) 

# شكلك نعسان خخ

اول شي السورس جا من الحدث نفسه , لأنه الحدث السورس حقه هو الماركر اللي دخله الالمنت فـ هو سوأ تريقر وعرفت الـ سورس بـ اسم ماركر

من وين جت ؟ , من السماء خخ

زي ما قلت لك عرف السورس ماركر اي اسم عأدي , عشان يرجعه من الكلنت للسيرفر وعشان يجيب اللاعب اللي سوا الماركر ويعطيه فلوس

Link to comment

انا مافهمت هنا

addEvent( "open_window",true ) 
addEventHandler( "open_window", root, function( marker ) 
    guiSetVisible( GUIEditor.window[1], true ) 
    showCursor( true ) 
    theMarker = marker -- انت عرفت الماركر بـ ذا ماركر 
end ) 

ولو تشوف فوق

local theMarker = false

؟؟ وش يعني يعني الغيت الماركر بـ كذا ولا كيف؟ ابي توضيح بس لهاذا لأني مافهمتها

Link to comment

* Server side :

local markers = { } -- عرفنا جدول 
  
addCommandHandler( "markerC", function( player ) -- أضفنا الأمر 
    if isElement( markers[player] ) then destroyElement( markers[player] ) end -- إذا اللاعب هذا سوا ماركر من قبل, نشيل الماركر القديم 
    local x,y,z = getElementPosition( player ) -- نجيب احداثيات اللاعب 
    markers[player] = createMarker( x, y, z, "cylinder", 3, 255, 0, 2 ) -- نسوي ماركر جديد, ونربطه باللاعب عن طريق الجدول 
    setElementData( markers[player], "Creater", player ) -- حطيت اللاعب كقيمة للداتا Creater الخاصة بالماركر 
end ) -- إغلاق 
  
addEventHandler( "onMarkerHit", resourceRoot, function( hitElement ) -- حدث لو اتلمس ماركر 
    -- لاحظ ان في الحدث resourceRoot عشان الوظيفة اللي موجودة في الحدث ماتصير الا للماركرات اللي صارت من المود نفسه 
    if getElementType( hitElement ) == "player" then -- نتحقق من ان العنصر اللي دخل الماركر لاعب 
        triggerClientEvent( hitElement, "open_window", hitElement, source ) -- نسوي تريقر للكلنت, نرسله للاعب اللي دخل الماركر فقط 
        -- source = الماركر 
        -- طبعا أنا أرسلت الماركر مع التريقر عشان أقدر أجيب اللاعب اللي سواه 
        -- لأني عرفت اللاعب اللي سوا الماركر كداتا في سطر 7 
    end -- إغلاق 
end ) -- إغلاق 
  
addEvent( "Trigger", true ) -- إضافة حدث 
addEventHandler( "Trigger", root, function( marker ) -- إضافة الوظائف عند الحدث 
    -- طبعا هنا marker = theMarker اللي رسلتها من الكلنت 
    local player = getElementData( marker, "Creater" ) -- أجيب اللاعب اللي مسوي الماركر من الداتا حقت الماركر 
    if getPlayerMoney( source ) >= 100 and isElement( player ) then -- أتحقق ان في لاعب سوا الماركر و ان الفلوس اللي مع اللي ضغط الزر أكثر من مية 
        takePlayerMoney( source, 100 ) -- أخذ مية من اللي ضغط الزر 
        givePlayerMoney( player, 50 ) -- أعطي مية للي سوا الماركر 
    end -- إغلاق 
end ) -- إغلاق 

* Client side :

local theMarker = false -- أعرف متغير 
-- طبعا ما تفرق لو حطيت true, nil, "sdl" حط أي شي, أنا بس أعرف متغير لا أكثر 
addEventHandler( "onClientGUIClick", button, function( ) -- حدث عند ضغط الزر 
    triggerServerEvent( "Trigger", localPlayer, theMarker ) -- يرسل تريقر للسيرفر مع متغير قيمته تساوي الماركر اللي دخله اللاعب 
end, false ) -- إغلاق 
  
addEvent( "open_window",true ) -- إضافة حدث 
addEventHandler( "open_window", root, function( marker ) -- إضافة الوظائف عند الحدث 
    -- طبعا هنا الماركر اللي في function تم ارساله من السيرفر 
    guiSetVisible( window, true ) -- افتح النافذة 
    showCursor( true ) -- اطلع المؤشر حق الفأرة 
    theMarker = marker -- هنا اللعبة :] اقرأ بتمعن : 
    -- هنا أعرف المتغير theMarker بالماركر اللي اترسل من السيرفر عشان لمن الزر ينضغط راح يترسل هذا المتغير اللي قيمته هي الماركر الى السيرفر 
    -- و بالتالي في السيرفر أقدر اجيب اللاعب اللي سواه عن طريق الداتا Creater 
end ) -- إغلاق 

Link to comment

اها شكككرا ويعطيك العافيه

\وتعبتك معاي ><

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

وتجيني انا كيف ؟ اعتقد ليها طريقه ثانيه ممكن توريني مثال

:roll:

Link to comment

والله اذا تبي بدون لوحة يعني, يصير كذا :

local markers = { } 
  
addCommandHandler( "cmd", function( player ) 
    if isElement( markers[player] ) then 
        destroyElement( markers[player] ) 
    end 
    local x, y, z = getElementPosition( player ) 
    markers[player] = createMarker( x, y, z, "cylinder", 3, 255, 0, 0, 255 ) 
end ) 
  
addEventHandler( "onMarkerHit", resourceRoot, function( hitElement ) 
    if getElementType( hitElement ) == "player" then 
        for player, marker in pairs( markers ) do 
            if marker == source then 
                givePlayerMoney( player, 100 ) 
                takePlayerMoney( hitElement, 100 ) 
            end 
        end 
    end 
end ) 

Link to comment
local markers = { } -- عرف جدول 
  
addCommandHandler( "cmd", function( player ) -- ضيف أمر 
    if isElement( markers[player] ) then -- تحقق هل اللاعب يوا ماركر قبل 
        destroyElement( markers[player] ) -- إذا سوا, شيل الماركر 
    end -- إغلاق 
    local x, y, z = getElementPosition( player ) -- جيب إحداثيات اللاعب 
    markers[player] = createMarker( x, y, z, "cylinder", 3, 255, 0, 0, 255 ) -- سوي ماركر مبروط مع اللاعب بالجدول 
end ) -- إغلاق 
  
addEventHandler( "onMarkerHit", resourceRoot, function( hitElement ) -- ضيف حدث عند دخول ماركر 
    -- لاحظ استخدمنا resourceRoot عشان الحدث يشتغل مع الماركرات اللي سواها هذا المود فقط 
    if getElementType( hitElement ) == "player" then -- اذا نوع العنصر اللي دخل الماركر لاعب 
        for player, marker in pairs( markers ) do -- لف على جميع عناصر الجدول اللي فوق, اللي فيه مربوط كل لاعب مع ماركره 
            -- لاحظ استخدمنا pairs مو ipairs لأن الجدول فيه قيم k,v مو _,v 
            if marker == source then -- إذا العنصر المخزن في الجدول == الماركر حق الحدث 
                givePlayerMoney( player, 100 ) -- أعطي صاحب الماركر 100 
                takePlayerMoney( hitElement, 100 ) -- خذ من اللي دخل الماركر 100 
                -- و الباقي إغلاقات 
            end 
        end 
    end 
end ) 

Link to comment

شرحك عسسل

انت مستخدم

for player, marker in pairs( markers ) do

pairs لانك كاتب كلمات الي هم

player + marker

لو كنت مسوي كذا

for _, v in ipairs( markers ) do

ipairs تستخدم

صح ؟؟

+

if marker == source then -- مافهمته ممكن توضحلي اكثر

Link to comment

شوف

في الجداول في أكثر من طريقة للحفظ

تقدر تحفظ قيم بس زي كذا مثلا

local aTable = { "value" } 

أو تحفظ قيم بمافتيح, زي كذا

local aTable = { ["key"] = "value" } 

لازم تعرف طريقة التخزين فيه for لمن تغبى تلف على عناصر جدول معين باستخدام

ipairs - pairs لو كانت الطريقة الأولى, ما راح تفرق سواء استخدمت

ما تتعرف الا على الجداول اللي مفاتيحها أرقام ipairs ما راح يشتغل, لأن ipairs أما لو كانت الطريقة الثانية, لو استخدمت

pairs و بما إننا استخدمنا التخزين بالطريقة الثانية انا استخدمت

----------------------

marker == source بالنسبة لـ

لمن الجهاز يقعد يلف عناصر الجدول عنصر عنصر, راح يسوي ذا الشرط

source طبعا كل ما واحد يسوي ماركر راح يتخزن ماركره في الجدول, فلمن يلف اللجهاز على عناصر الجدول راح يدور على الماركر الل هو يساوي

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

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...