Jump to content

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


Recommended Posts

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

AccountData ?

ElementData ?

آي داتا ؟

Link to comment

هذآ الموضوع يفيدك جداً

viewtopic.php?f=164&t=62247

وسويت لكك مثآل وشرحته

حفظ فلوس اللاعب

addEventHandler ("onPlayerQuit",root, -- نسوي حدث عند خروج اللاعب 
function (   ) -- فنكشن 
  local Account = getPlayerAccount(source) -- نجيب حساب اللاعب 
  if not Account or isGuestAccount(Account) then return end -- نسوي تحقق اذا اللاعب موب مسجل دخوله يقفل الوظيفة 
   setAccountData(Account,'Money',getPlayerMoney(source)) -- نسوي داتا للفلوس 
   end -- اند الفنكشن 
 ) -- قوس الآيفينت 
  
 addEventHandler ("onPlayerLogin",root, -- حدث عند دخول اللاعب حسابه 
 function (_,acc) -- فنكشن مع بارتمنز 
 local Data = getAccountData(acc,'Money') -- نجيب الداتا الي سويناها 
 if ( Data ) then  -- نتحقق ان الداتا موجودة 
 setPlayerMoney (source,Data) -- يحط فلوس اللاعب ع الداتا الي سويناها 
        end -- اند التحقق 
  end -- اند الفنكشن 
) -- قوس الايفينت 
Link to comment

وظيفة الـ ان باك تفريغ الجدول ..

فـ مثلا عندك الجدول هذا ..

local table =  
    { 
      [ 1 ] = { 255, 255, 255 }, 
    } 
     
addEventHandler ( "onClientResourceStart", resourceRoot, function (  ) 
     label_ = guiCreateLabel( 0, 0, 0, 0, "test", false ) 
     local r, g, b = unpack ( table [ 1 ] ) -- 255, 255, 255 
     guiLabelSetColor ( label_, r, g, b ) 
end ) 

اكيد واضحة .. الان باك تاخذ لك القيم بدون الجدول بسيطة يعني

يعني زي م شفت الجدول

[ 1 ] = { 255, 255, 255 }, 

سوينا ل قيمة 1 ان باك ف جلبنا ع الشكل ذا :

255, 255, 255 

الموضوع بسيط جدا ^

Link to comment

return :

https://forum.multitheftauto.com/viewtopic.php?f ... 9&p=801919

تستخدم بـ الكاستوم فنكشن return الـ

كيف يعني ؟ .. مثلأ تبي تسوي فنكشن يجيب لك قيمة متغير ما

local Number = 25 
  
function getValue (   ) 
  if ( Number ) then 
      return Number 
  end 
end 

تقولي وش فائدة الـ ريترن هنا ؟ لو ما حطيت ريترن م راح يرجع لك الرقم

او مثلأ

local Count = 0  
  
addEventHandler ( "onClientGUIClick", resourceRoot, function (  ) 
    if ( Count == 4 ) then 
        return 
    end 
    Count = Count + 1  
end ) 

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

تقولي هنا وش فائدة الريترن ؟ ولو شلتها وش راح يصير ؟

الريترن هنا راح توقف الكود وما راح يصير شي

تقولي لو شلتها

local Count = 0  
  
addEventHandler ( "onClientGUIClick", resourceRoot, function (  ) 
    if ( Count == 4 ) then 
        
    end 
    Count = Count + 1  
end ) 

راح يصير مجرد تحقق لا اكثر مثلأ لو كان 4 يسوي مخرج شات مثلأ

local Count = 0  
  
addEventHandler ( "onClientGUIClick", resourceRoot, function (  ) 
    if ( Count == 4 ) then 
       outputChatBox ( "Count is 4" ) 
    end  
    Count = Count + 1  
end ) 

يعني راح يصير تحقق لو المتغير صار 4 يسوي كودكـ ونقفل التحقق ويكمل باقي الاكواد .

فـ أرجع بالصفحات وراح تلقى شرح until بالنسبة لـ

and :

تستخدمها لو تبي تحقق من شيئين بنفس الوقت ..

يعني مثلا :

local value  = true 
local value_ = false 
  
  
if ( value == true and value_ == true ) then 
     outputChatBox ( "value and value_ is true" ) 
end 

فلس مو ترو value_ مخرج الشات ما راح يجي لان

يعني نفهم من ذا انه اللي قبل الاند لازم يتحقق واللي بعد الاند لازم يتحقق عشان يتنفذ الكود ..

عكس or

Link to comment
كفو زاحف فهمتها ماتقصر والله

حياك ي الغالي ^

شباب عندي سؤال, ايش ال OOP وال resourceRoot w root

OOP :

هي نفس البرمجة لكن بشكل وطريقة مختلفة .. عشان تفعلها لازم تضيف بالميتا

true

طبعا هذا مثال من الويكي :

addEventHandler( "onResourceStart", resourceRoot, 
    function() 
        infernus = Vehicle(411, Vector3(0, 0, 3)); -- Create an Infernus and spawn it at the middle of SA. 
        infernus:setColor(0, 0, 0); -- Set its color to black. 
        infernus.damageProof = true; -- Make it damage proof 
    end 
) 
  
addCommandHandler( "blowinfernus", 
    function(p) 
        if not infernus.blown then -- Check if the Infernus is blown up or not. 
            infernus:blow(); 
        else -- Ouch, it's blown up, let's output an error to the player. 
            outputChatBox( "The Infernus has already been blown up by you.", p, 255, 0, 0, false ); 
        end 
    end) 

resourceRoot / القصد منها الاشياء المتعلقة بالسكربت

مثلأ :

addEventHandler ( "onClientGUIClick", resourceRoot, function (   ) 
     outputChatBox ( "Hello !" ) 
end ) 

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

addEventHandler ( "onClientGUIClick", root, function (   ) 
     outputChatBox ( "Hello !" ) 
end ) 

لو جربت هذا راح يتنفذ لو ضغط ع اي شي ف السيرفر

لاحظ بالكودين ما حددنا السورس .. لو حددت السورس ف راح يتنفذ كودك يوم يضغط ع السورس اللي حددته

لو في شي ما فهمته تفضل اسال .

Link to comment

مثال على جدول للشخصيات

تحط فيه اسم كل شخصية والآي دي

local SkinsTable = { 
     {"Hussain25", 25}; 
     {"Skin2", 0}; 
} 

اذا تبي قيمة من الجدول تقدر بأكثر من طريقة

  
local skinName = SkinsTable[1][1] 
--[[ 
طبعاً الـرقم الاول هو رقم القيمة الي نبيها 
وتساوي {"Hussain25", 25} 
والقيمة جدول لان بين {} 
  
فـ لو حطينا فقط SkinsTable[1] 
بيعطينا جدول .. لكن احنا محتاجين قيمة من داخل هذا الجدول 
فنستخدم نفس الطريقة لهذا الجدول 
يصير بهالشكل 
SkinsTable[1][1] 
]] 
  
local skinID = SkinsTable[1][2] 
--[[ 
 لاحظ غيرنا الرقم الثاني 
حطيناه 2 يعني القيمة الثانية 
والقيمة الثانية في الجدول هي الآي دي 
 ]] 
  

  
local name, id = unpack(SkinsTable[1]) 
-- راجع شرح unpack في الصفحات السابقة 
print(name) 
print(tostring(id)) 
  
-- Hussain25 
-- 25 
  

  
for i,value in ipairs(SkinsTable) do 
     print(value[1]) 
     print(value[2]) 
end 
  

طبعاً اللوب تستخدمه اذا كنت تبي كل القيم او للاختصار

في الطريقتين الاولى والثانية كنا نكتب

SkinsTable[رقم القيمة]

بس في اللوب بيعطينا اياه جاهزة

لاحظ الـ value في اللوب

هي عبارة عن القيمة

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

فـ الـ value هني جدول بتكون

في الطريقة الاولى اذا نبي اسم الشخصية نستخدم SkinsTable[1][1]

والحين استبدل SkinsTable[1]

بـ value

فتصير value[1]

طبعاً الشرح سريع ان شاء الله تفهم :D

وحاول تشوف الشروحات الثانية

Link to comment

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

كذلك بالسكل في كولمن ورو ..

هو سطر row الـ ..

عامود column الـ ..

فـ كل عامود يحتوي الرو اللي هو السطر

local column = {  
    "row1", 
    "row2", 
    "row3", 
    "row4", 
} 

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

هذا مجرد مثال للتوضيح فقط لا يقدم ولا ياخر .

row1 = column

row2 = column

row3 = column

row4 = column

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

والرو نفس الامر .. ولد الكولمن

يعني ان كل كولمن له اولاد خاصة فيه ..

اتمنى وصلت المعلومة بطريقة الاولاد .. :lol:

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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