Jump to content

استفسارات عن البرمجة


Recommended Posts

اضافة على شرح الاخ زاحف ,

انه ممكن تستخدمها لجلب القيم من رقم معين يعني

هذي فايده من فوائدها بعد مممكن تستخدمها بهذا الشكل:

local table = {"Test1", "Test2", "Test3", "Test4"} 
  
for _,v in next, table do 
    print (v) 
end 
  
-- Test1 
-- Test2 
-- Test3 
-- Test4 

لاكن لو مثلا تبي تطلع القيم من بعد رقم معين مثلا من رقم 1

الى اخر رقم او من رقم 2 الى اخر رقم بيكون بهذا الشكل:

local table = {"Test1", "Test2", "Test3", "Test4"} 
  
for _,v in next, table, 1 do 
    print (v) 
end 
  
-- Test2 
-- Test3 
-- Test4 

هنا طلع لي القيم من بعد الرقم 1 الى اخر رقم عندك في الجدول

وكل مره تزود رقم على حسب استخدامك للجدول .. #

Link to comment
outputChatBox 

أمَزحح ,

getAllAccountData 

أبي ششرح بسسيط ,

انا الان عآرف الارقمنات وتسسذآ

بسس هل آقدر أطلع الي هو حافظها ع الحسآب واحطها بـ قريد ليست

انا عأرف ان ترآيقر وتسسذآ بسس آقدر ..

Link to comment
outputChatBox 

أمَزحح ,

getAllAccountData 

أبي ششرح بسسيط ,

انا الان عآرف الارقمنات وتسسذآ

بسس هل آقدر أطلع الي هو حافظها ع الحسآب واحطها بـ قريد ليست

انا عأرف ان ترآيقر وتسسذآ بسس آقدر ..

وش هي اللي هو حافظها

اتمنى تشرح طلبك بالتفصيل

Link to comment

أبي شرح عن source و local و localPlayer

ولا هان تعبكك يعني مثلا كيف اجعل الكتابة الي تطلع بشات للاعب الي صار عليه الحدث

وكيف اخليها تصير لجميع السيرفر فهمني من ذي الامور مخبصص فيها زوددء

Link to comment
أبي شرح عن source و local و localPlayer

ولا هان تعبكك يعني مثلا كيف اجعل الكتابة الي تطلع بشات للاعب الي صار عليه الحدث

وكيف اخليها تصير لجميع السيرفر فهمني من ذي الامور مخبصص فيها زوددء

هذي من ابسط الاشياء وبنفس الوقت مهمة جدا ..

localPlayer :

طبعا اللوكال بلير تستخدم فقط بـ جانب كلاينت .. وهي اللاعب نفسه لان الكلنت للاعب نفسه فقط فـ بالكلنت تستخدم اللوكال بلير

setElementPosition مثلأ فنكشن

شف السنتكس حق الفنكشن

Syntax

bool setElementPosition ( element theElement, float x, float y, float z [, bool warp = true ] ) 

اول ارقمنت هو العنصر اللي بتنقله او اللاعب فالنفترض .

لو نبي انه يوم يضغط الزر ينقله

addEventHandler ( "onClientGUIClick", resourceRoot, function (   ) 
   if ( source == button ) then 
     
   end 
end ) 

بتقولي هنا ليه جبت السورس .

لكل حدث سورس .. يعني مصدر

https://wiki.multitheftauto.com/wiki/OnClientGUIClick

ادخل هذي الصفحة راح تلقى

Source

The source of this event is the GUI element that was clicked.

بكل بساطة يقولك السورس حق الافنت هو العنصر اللي انضغط ..

فـ حنا سوينا تحقق انه اللي انضغط السورس يساوي البوتون حقنا ..

addEventHandler ( "onClientGUIClick", resourceRoot, function (   ) 
   if ( source == button ) then 
       setElementPosition ( ..., x, y, z ) 
   end 
end ) 

طبعا بتقولي هنا طيب الارقمنت الاول بفنكشن النقل هو العنصر وانت تقول سورس الحدث هو الزر كيف اجيب اللاعب اللي ضغط الزر ؟

ببساطة اللوكال بلير هذي وظيفتها انها ثابتة بالكلنت للاشياء كلها لان الكلنت للاعب نفسه بس عكس سيرفر .. لجميع اللاعبين

طبعا لو لاحظ بنفس الصفحة يقول هذا الكلام :

Note: The player who clicked the gui-element is always the localPlayer.

يقولك دائما اللي ضغط الزر هو اللوكال بلير .

addEventHandler ( "onClientGUIClick", resourceRoot, function (   ) 
   if ( source == button ) then 
       setElementPosition ( localPlayer, x, y, z ) 
   end 
end ) 

طبعا في نقطة ثانية اللي هي سورس التريقر

addEventHandler ( "onClientGUIClick", resourceRoot, function (   ) 
   if ( source == button ) then 
       triggerServerEvent ( "test_", localPlayer ) 
   end 
end ) 

فالنفترض سوينا كذا انه يوم يضغط الزر يرسل تريقر لسيرفر نجي نستقبل التريقر بسيرفر :

addEvent ( "test_", true ) 
addEventHandler ( "test_", root, function (  ) 
end ) 

طيب هنا تقولي لو مثلا انا بعطيه سلاح .. نجي لفنشكن السلاح والسنتكس حقه

Syntax

bool giveWeapon ( ped thePlayer, int weapon [, int ammo=30, bool setAsCurrent=false ] ) 

اول ارقمنت وش تشوف ؟ اللاعب .

طيب تقولي لوكال بلير كلنت بس .. هنا كيف اجيب اللاعب

نرجع للتريقر

Syntax

bool triggerServerEvent ( string event, element theElement, [arguments...] ) 

اول ارقمنت انساهـ .. خلنا بالثاني

theElement: The element that is the source of the event.

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

حنا حاطين لوكال بلير .. يعني اللاعب نفسه

فـ رسلنا التريقر ع اللاعب نفسه يعني السورس هو اللوكال بلير نفسه ..

addEvent ( "test_", true ) 
addEventHandler ( "test_", root, function (  ) 
           giveWeapon ( source, .... ) 
end ) 

local :

اللوكال يكون لوكال ع الملف نفسه او ع الفنكشن نفسه بعني مثلأ

function var_ (   ) 
    local funcVar = 'Hello' 
end 

لو حاولت تجيبه خارج الفنكشن ما راح ينفع لو شلت اللوكال راح يضبط يعني اللوكال ع الشي نفسه بس مثلا

حطيت كذا باول الملف

local funcVar = 'Hello' 

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

لوكال يعني ع الملف نفسه

ونفس الكلام ع التحقق

function Check_ (  ) 
    if ( ... ) then 
       local _var = "Nothing" 
    elseif ( ... ) then 
       local __var = "Nothing2" 
    elseif ( ... ) then 
       local ___var = "Nothing3" 
  end 
end 

https://forum.multitheftauto.com/viewtopic.php?f=164&t=51228 عموما في شرح كامل هنا

لو في شي ما فهمته او حاب تستفسر عنه تفضل .

طبعا اسف لو طولت بس صح انها اشياء بسيطة بس مهمة ولازم تفهمها .. اي شي ما فهمته تفضل اسال .

Link to comment

الي فهمته من الدرس هوو

إن اللوكال بلاير نفس السورس لاكن اللوكال يستخدم بالكلينت وماتقدر تستخدمه بسيرفر

وتستخدم سورس

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

إن اللوكال اذا كان بداخل الفنكشن وحاولت تسويه بفنكشن ثاني ماتقدر لازم تحطه بأول الملف

عشان يكون لكل الفنكشنات

Link to comment
الي فهمته من الدرس هوو

إن اللوكال بلاير نفس السورس لاكن اللوكال يستخدم بالكلينت وماتقدر تستخدمه بسيرفر

وتستخدم سورس

صحيح ولاكن السورس بالسيرفر يعتمد على الحدث

"onPlayerJoin" كـ مثآل حدث

عند دخول اللاعب = | ..

The source of this event is the player who joined.

السورس في هذا الحدث هو اللاعب الي دخل ذذ

كـ مثآل

addEventHandler ("onPlayerJoin", root, 
 function (  ) 
outputChatBox ("Hello .",source,188,0,0 ,true) 
  end 
) 

هنا سوينا مخرج شات للسورس الي هو اللاعب الي دخل

الزبدة من كلامي أنه السورس ماهي مثل اللوكال بلاير بس بالسيرفر السورس هذا يعتمد على الحدث ذذ

إن اللوكال اذا كان بداخل الفنكشن وحاولت تسويه بفنكشن ثاني ماتقدر لازم تحطه بأول الملف

عشان يكون لكل الفنكشنات

موب لازم مداك تحذف اللوكال من المتغير وتقدر تستخدمه في أي وظيفة ثانية ذذ

Link to comment
الي فهمته من الدرس هوو

إن اللوكال بلاير نفس السورس لاكن اللوكال يستخدم بالكلينت وماتقدر تستخدمه بسيرفر

وتستخدم سورس

صحيح ولاكن السورس بالسيرفر يعتمد على الحدث

"onPlayerJoin" كـ مثآل حدث

عند دخول اللاعب = | ..

The source of this event is the player who joined.

السورس في هذا الحدث هو اللاعب الي دخل ذذ

كـ مثآل

addEventHandler ("onPlayerJoin", root, 
 function (  ) 
outputChatBox ("Hello .",source,188,0,0 ,true) 
  end 
) 

هنا سوينا مخرج شات للسورس الي هو اللاعب الي دخل

الزبدة من كلامي أنه السورس ماهي مثل اللوكال بلاير بس بالسيرفر السورس هذا يعتمد على الحدث ذذ

إن اللوكال اذا كان بداخل الفنكشن وحاولت تسويه بفنكشن ثاني ماتقدر لازم تحطه بأول الملف

عشان يكون لكل الفنكشنات

موب لازم مداك تحذف اللوكال من المتغير وتقدر تستخدمه في أي وظيفة ثانية ذذ

طيب يعني السورس بالسيرفر يعتمد ع الي سوى الحدث

طيب بالكلينت كيف اخلي يعتمد ع الحدث بالوكال بلاير ولا عايدي سورس ؟

Link to comment

طيب يعني السورس بالسيرفر يعتمد ع الي سوى الحدث

طيب بالكلينت كيف اخلي يعتمد ع الحدث بالوكال بلاير ولا عايدي سورس ؟

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

"onClientGUIClick" كـ مثال

لو تقرأ الويكي

Note: The player who clicked the gui-element is always the localPlayer.

اللاعب الي ضغط الزر دائماً هو اللوكال بلاير !

كـ مثآل أبي أنقل اللاعب يوم يضغط الزر بنقل اللوكال بلاير !

addEventHandler ("onClientGUIClick", resourceRoot, 
 function (  ) 
if ( source == buttton ) then 
setElementPosition (localPlayer,x,y,z ) 
          end 
     end 
 ) 
Link to comment
ططيب شف ذا المثال كلينت

لتجربه بس

addEventHandler ("onClientPlayerJoin, root,  
function () 
    outputChatBox ("Welcome", localplayer) 
end 
) 
  
 

كذا تجي الرسالة للي خش السيرفر فقط صح؟

لا

خلنا ندخل الويكي ونراجع أرقمنتات مخرج الشات بالكلنت أول شيء نشوف في أرقمنت للاعب؟

bool outputChatBox ( string text [, int r=231, int g=217, int b=176, bool colorCoded=false ] ) 

لا بالكلنت مافي أرقمنت للاعب !

addEventHandler ("onClientPlayerJoin", root, 
function (  ) 
    outputChatBox ("Welcome") 
   end 
) 

خلنا نخليه كذا

كذا بتصير وظيفة الكود أذا أي لاعب دخل السيرفر الكلام يجي لـ جميع اللاعبين

root ليه لجميع اللاعبين؟ لأنك حاط بالحدث

طيب اذا تبيه للاعب الي دخل؟ بدل الروت باللوكال بلاير

addEventHandler ("onClientPlayerJoin", localPlayer, 
function (  ) 
    outputChatBox ("Welcome") 
   end 
) 
Link to comment
  • Other Languages Moderators

onClientPlayerJoin افنت ما يشتغل للاعب نفسه الي دخل

إذا ربطت الحدث باللوكل بلاير ما رح يشتغل الأفنت

لان اصلا اول ما تدخل السيرفر الكلينت حقك ما بعد يشتغل

This event is triggered when a player joins a server. It is triggered for all players except the local player, as the local player joins the server before their client-side resources are started. It would also be possible for two players to join within a few seconds of each other and for the two players' scripts may not receive onClientPlayerJoin events as their scripts wouldn't have started yet.

Link to comment

طيب شوفـو ذا المثـال

كليـنت #

addEventHandler ("onClientResourceStart", localPlayer, 
function () 
outputChatBox ( "* Welcome !!"  ) 
end 
) 
  

طيب الحين كلمة * ولكم * تظهر ل الي خش السيرفر وتحمل المود عنده

وتظهر له لحاله ماتظهر لناس الباقين صح؟

ولو ابيها كل ماخش واحد

ابدل بدل localPlayer الى root

يظل كل ماحد تحمل المود يجي لجميع الناس الي بسيرفر ولكم لو كانت root

Link to comment

ششسمه انت حددت ان الي يششتغل اللاعب ,

الكلنت رأح يظهر لـ الاعب فقط ,

يعني تسسذآ كودك

  
addEventHandler('onClientResourceStart',resourceRoot, -- لو حطيت root بيشتغل الحدث على كل مود يشتغل  
outputChatBox('* Welcome !!' ) 
end) 

,,,,,,,,,,,,,

Link to comment
  • 3 weeks later...

لو ركزت على المثال ممكن كان راح تفهم في وش تستخدم الوظيفة

Syntax:

bool setRuleValue ( string key, string value ) 

Example:

setRuleValue ( "myScriptRunning", "yes" ) 

لو تلاحظ الـ

key = "myScriptRunning"

و

value = "yes"

عشان نعرف في وش تستخدم الوظيفة "myScriptRunning" طيب الحين لازم نعرف وش يقصدون بـ

سكربتي شغال "myScriptRunning" وتقريبا يقصدون بـ

تعني القيمة value و

والقيمة عندنا "yes"

طيب وش الفائده من الوظيفة

الوظيفة راح تكون لها فوائد كثير ولاكن ماراح تكتشف فوائدها إلا عند استخدامها

وهذي فائدة بسيطه للوظيفه

addCommandHandler ( "state", 
    function ( player ) 
        if getRuleValue ( "myScriptRunning" ) and getRuleValue ( "myScriptRunning" ) == "yes" then 
            outputChatBox ( "state: yes", player, 0, 255, 0 ) 
        else 
            outputChatBox ( "state: no", player, 255, 0, 0 ) 
        end 
    end 
) 

إن شاء الله تكون فهمت واستفدت

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