Jump to content

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


Recommended Posts

setWeaponProperty

عن طريق الوظيفة ذي تقدر

مثلاً تزيد الدمج للسلاح

أو تزيد المدى

أو حتى تزيد عدد الطلقات مثلاً المسدس 7 طلقات تقدر تسويها مثلاً 500

تقدر تسوي اللاعب يحمل سلاحين

uzi أو يطلق و هو يمشي مثلاً بأم4 زي السلاح

...وفي أشياء كثير أكتشفها بنفسك

https://wiki.multitheftauto.com/wiki/SetWeaponProperty

Ex :

setWeaponProperty("minigun", "pro", "maximum_clip_ammo", 1000) 
Link to comment
setWeaponProperty

عن طريق الوظيفة ذي تقدر

مثلاً تزيد الدمج للسلاح

أو تزيد المدى

أو حتى تزيد عدد الطلقات مثلاً المسدس 7 طلقات تقدر تسويها مثلاً 500

تقدر تسوي اللاعب يحمل سلاحين

uzi أو يطلق و هو يمشي مثلاً بأم4 زي السلاح

...وفي أشياء كثير أكتشفها بنفسك

https://wiki.multitheftauto.com/wiki/SetWeaponProperty

Ex :

setWeaponProperty("minigun", "pro", "maximum_clip_ammo", 1000) 

مشكور اخي ممكن شرح للأرقمنت الثاني ما فهمته

Link to comment

، عفواً

ايي ممكن

الارقمنت الثاني وهو سترنق لـ مهارة السلاح ولازم يكون لدى اللاعب هذه المهارة عشان يظهر التأثير .

: وهي بـ 3 لفلات

"pro", "std", "poor"

...

"poor" مثلا لو حطيت

بتكون مهارة الميزة المحددة للسلاح ضعيفة بعكس لو حطيت

"pro" او "std" .

Link to comment
  • 2 weeks later...
_G 
coroutine.create 
oroutine.resume 
remove  
close 

?

_G

يجيب لك جميع المتغيرات العامة

مثال

for k, v in pairs(_G) do 
    print(k, v) 
end 

coroutine.create

thread يقوم بصنع

فائدته انه مخصص للعمليات المتعددة في المعالج

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

لكن لو مع هذي تقدر تعمل العمليات في وقت واحد

وله شروحات كثيرة جدا

مثال

-- [url=https://www.lua.org/pil/9.1.html]https://www.lua.org/pil/9.1.html[/url] 
co = coroutine.create(function () 
    print("hi") 
end) 
     
print(co)   --> thread: 0x8071d98 

coroutine.resume

threadتقوم باستكمال عملية

مثال

coroutine.resume(co) 

اخر اثنين غير موجودة في لغة لوا

يمكن شفتها تسطع في النوتباد :mrgreen:

وانا اقلك فايدتها

هي ميثود يقوم باغلاق الملف

مثلا

local file = io.open("test.txt") 
file:close( ) 

طبعا هذي غير مدرجة في ام تي اي

و remove

ماهي موجودة :mrgreen:

Link to comment

^ اضيف على كلامك,

  • local variables موضوعة داخل جدول ماعدا المتغيرات المحليه LUA جميع المتغيرات في

: داخل سلسله نصيه, مثال لكلامي ( Global variables ) لاحظ مثال الأخ تنطيل الأول, ذا يجيب لك كل المتغيرات العامه

ft = { } -- ( Global variable ) متغير عام 
  
for n in pairs ( _G ) do -- لوب يجيب كل المتغيرات العامه 
    if n == 'ft' then -- اللي سويناه داخل الجدول ft نتحقق لو المتغير العام  
        outputChatBox ( n ) -- نطلع اسم المتغير العام بالشات 
        break -- نوقف اللوب 
    end -- نقفل الشرط 
end -- نقفل اللوب 

_G بمعنى أول ما سوينا المتغير العام على طول راح يكون داخل الجدول

Local variable قبل المتغير ماراح يظهر باللوب لأنه صار local لو تجرب تحط

مثال آخر :

ft = { health = 'getElementHealth' }  
  
  
outputChatBox ( _G[ft.health] ( localPlayer ) ) 
Link to comment
  • _G : ( Global variables )يجيب لك المتغيرات العامه

,local وش هي المتغيرات العامه؟ هي اي متغير مايجيك قبله

راح يكون جدول, وتكون داخله المتغيرات العامه _G طبعاً

: كـ مثال

var = 10; -- راح تحصل المتغير يطلع لك _G خلاص ذا صار متغير عام, واذا سويت لوب لـ 

: مثال آخر

local var = 10; -- ما راح يطلع لك المتغير _G ذا متغير محلي, ولو سويت لوب لـ 

,الأمثله فوق حطيناها انا وتنطيل اتوقع سهله وواضحه

  • ipairs : تجيب لك قيم الجدول, وتكون محدده بـ رقم الإندكس.
  • paris : تجيب لك اي قيمه داخل الجدول بغض النظر عن رقم الاندكس

: اشرحها لك ب مثال

local t = { -- متغير وقيمته جدول 
    [1] = 'One', -- القيمه رقم 1 موجوده 
    -- القيمه رقم 2 غير موجوده 
    [3] = 'Three', -- القيمه رقم 3 موجوده 
    [4] = 'Four', -- القيمه رقم 4 موجوده 
    myNumber = 10 -- متغير داخل الجدول 
} -- قوس الجدول 
  
for k,v in ipairs ( t ) do -- ipairs نسوي لوب من خلال 
    outputChatBox ( k .. ' : '.. v ) -- نطلع محتويات الجدول فـ الشات 
end -- نقفل اللوب 
  
-- 1 : One 

,pairs و ipairs طيب باقي القيم ليه ما طلعت؟ هنا يجيك الفرق بين

تجيب لك القيم من خلال رقم الاندكس, واحنا تركنا رقم 2 وبكذا اللوب ماراح يكمل ipairs كذا تعرف ان

,تلاحظ ان كل اللي بالجدول ظهر بالشات pairs جرب مع

: ماراح تظهر لك المتغيرات او اذا كان قيمة الاندكس سترنق كـ مثال ipairs وللمعلوميه

local t = { 
    ['numberIs'] = 0, 
    myNumber = 10 
} 
  
for k,v in ipairs ( t ) do 
    print ( k .. ' : '.. v ) 
end 

,راح تطلع كلها pairs راح تلاحظ انه ما ظهر اي شي, طيب جرب مع

.اتمنى وصلت الفكره وبالتوفيق

Link to comment

_G 

و الفرق بين


و


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

_G

شرحناها فوق

pairs

يجيب جميع مافي الجدول

طبعا ماراح تجيب بالترتيب الي تبغاه

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

ipairs

نفس pairs

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

مثال

t = { 
    ["aTn6el"] = true, 
    "H", 
    ["Hi3"] = "Hello world", 
    "HHH", 
[4] = "Hi Tn6eL" 
} 
  
print("pairs") 
for k, v in pairs(t) do 
    print("", k, v) 
end 
  
print("ipairs") 
for k, v in ipairs(t) do 
    print("", k, v) 
end 

النتيجة

pairs

1 H

2 HHH

4 Hi Tn6eL

aTn6el true

Hi3 Hello world

ipairs

1 H

2 HHH

Link to comment

ipairs

نفس pairs

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

. :) لا غلط, تجيب لك حتى لو لها مفتاح, ولكن يكون بالترتيب, شوف ردي فوق

لا انت الغلط

وانا اعرف انك راح تكثرها

lua.org/demo.html بس جرب مثال في

وراح تنصدم من مثالك :)

Link to comment
جربته واشتغل تمام, طيب جرب انت؟

local t = { 
    [1] = 'One' 
} 
  
for k,v in ipairs ( t ) do 
    print ( k .. ' : ' .. v ) 
end 

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

اقصد جرب مثالي

وانا اقصد

ipairs: تجيب القيم اللي مالها مفتاح يعني لازم يكون رقم مرتب

زي كذا

t = { 
    [1] = "Hi", 
    [2] = "Hi2", 
    [3] = "Hi3", 
    --... 
} 

او

t = { 
    "Hi", 
    "Hi2", 
    "Hi3", 
    --... 
} 

Link to comment

:lol: طيب ذا اللي اقصده انا, انت دايم تصحى الصبح مروق وتمسك الناس

انت قلت اللي مالها مفتاح ابداً, واساساً مافيه قيمه مالها مفتاح حتى لو ماحطيت لها مفتاح بيكون لها مفتاح تلقائي

. :lol: ع العموم حصل خير

Link to comment
3 minutes ago, back!_ said:

ممكن شرح كيف حفظ  

setElementData

OR

getElementData

 

في قاعدة بيانات^^

تجيب قيمتها وتخزنها عن  طريق  وظائف قواعد البيانات

https://wiki.multitheftauto.com/wiki/Server_Scripting_Functions#SQL_functions

او استخدم

On ٢١‏/١‏/٢٠١٦ at 3:48 AM, </Mr.Tn6eL> said:

 

set/get/removeSQLData

 

 

 

وظيفة مفيدة تسهل عملية استخدام قواعد البيانات

 

 


setSQLData(string data_name, string data_value) 
getSQLData(string data_name) 
removeSQLData(string data_name) 
 

 

( string ) قيمة الداتا تقبل السلسة النصية فقط

( tostring ) لتحويل الارقام قم باستخدام

( toJSON, fromJSON) JSON لتحويل الجداول استخدم دوال الـ

Code :


sql = executeSQLQuery 
sql "CREATE TABLE IF NOT EXISTS string_data(data_name TEXT, data_value TEXT)" 
function setSQLData(data, value) 
    assert(type(data) == "string", "Bad Argument @setStringData #1 [string expect, got "..type(data).."]") 
    assert(type(value) == "string", "Bad Argument @setStringData #2 [string expect, got "..type(value).."]") 
    local query = sql("SELECT * FROM string_data WHERE data_name=?", data) 
    if query and type(query) == "table" and #query == 1 then 
        sql("UPDATE string_data SET data_value=? WHERE data_name=?", value, data) 
    else 
        sql("INSERT INTO string_data(data_name, data_value) VALUES(?, ?)", data, value) 
    end 
    return true 
end 
  
function getSQLData(data) 
    assert(type(data) == "string", "Bad Argument @getStringData #1 [string expect, got "..type(data).."]") 
    local query = sql("SELECT data_value FROM string_data WHERE data_name=?", data) 
    return query and type(query) == "table" and #query == 1 and query[1]["data_value"] 
end 
  
function removeSQLData(data) 
    assert(type(data) == "string", "Bad Argument @removeSQLData #1 [string expect, got "..type(data).."]") 
    return sql("DELETE FROM string_data WHERE data_name=?", data) 
end 
 

 

Example :


setSQLData("money"..getPlayerSerial(player), tostring(getPlayerMoney(player))) -- نقوم بوضع داتا على سريال الاعب وقيمتها فلوس الاعب 
outputChatBox(getSQLData("money"..getPlayerSerial(player)) or "none") -- كتابة بالشات قيمة الداتا 
removeSQLData("money"..getPlayerSerial(player)) -- حذف الداتا 
 

 

Link to comment
Just now, said:

تجيب قيمتها وتخزنها عن  طريق  وظائف قواعد البيانات

https://wiki.multitheftauto.com/wiki/Server_Scripting_Functions#SQL_functions

او استخدم

 

 

الاول انا سويت كذا شوف

 

      local CreateTable = executeSQLQuery ('CREATE TABLE IF NOT EXISTS  `Save LeveL System` (Account'..setElementData(kill, "LeVeL")..''..setElementData(source, "LeVeL", 0)..') ') 


---  ثمن  لما الاعب يطلع ابيه يحفظ داتا الثنتين حقت الكلاس و لفل

------- الان لما الاعب يطلع


addEventHandler('onPlayerQuit',root, 
    function (  ) 
		local Killer = getPlayerAccount( source )
		if isGuestAccount ( Killer ) then --- اذا مو مسجل يخلي داتا الفل 0
		setElementData(source, "KillS", 0)
		setElementData(source, "LeVeL", 0)
		else		-- اذا مااحقق الشرط
      Data1 = setElementData(Kill, "KillS", (getElementData(Kill, "KillS") or 0) + 1) -- يجي عدد قتله اذا مافيه يحطه 0
	Data2 = setElementData(Kill, "LeVeL", (getElementData(Kill, "LeVeL") or 0) + 1)  -- نجيب لفله اواذا ما عه لفل نعطيه داتا 0
	
    local Results = executeSQLQuery("SELECT * FROM `Save LeveL System` WHERE Account=?",getPlayerAccount(source) )  
     if ( type ( Results ) == "table" and #Results == 0 or not Results ) then  --- يتحقق القيمه فاضيه  او لا
        executeSQLQuery ( "INSERT INTO `Save Position System` ( Account,Data1,Data2 ) VALUES(?,?,?)",getPlayerAccount(source),Data1,Data2 ) 
    else اذا ماتحقق الشرط
        executeSQLQuery('UPDATE `Save LeveL System` SET Data1 =?, Data2 =? WHERE Account =?',Data1,Data2,getPlayerAccount(source) ) 
    end 
end 
) 
  
  
  
  addEventHandler('onPlayerLogin',root,  -- لما الاعب يدخل
    function (  ) 
        local Results1 = executeSQLQuery("SELECT * FROM `Save LeveL System` WHERE Account=?",getPlayerAccount(source) )  -- يسترجع روم الحساب حق الاعب
        if ( type ( Results1 ) == "table" and #Results1 == 0 or not Results1 ) then return end  
      
      ---- يتحقق اذا فيه قيمه يكمل الشرط اذا مافيه يرجع الوظيفه
            
			setElementData(Kill, "KillS", (getElementData(Kill, "KillS") or 0) + 1)--يعطيه كم قتل
		    setElementData(Kill, "LeVeL", (getElementData(Kill, "LeVeL") or 0) + 1)-- يعطيه لفله ^^
    end 
) 

 

Edited by back!_
Link to comment
3 hours ago, back!_ said:

الاول انا سويت كذا شوف

 


      local CreateTable = executeSQLQuery ('CREATE TABLE IF NOT EXISTS  `Save LeveL System` (Account'..setElementData(kill, "LeVeL")..''..setElementData(source, "LeVeL", 0)..') ') 


---  ثمن  لما الاعب يطلع ابيه يحفظ داتا الثنتين حقت الكلاس و لفل

------- الان لما الاعب يطلع


addEventHandler('onPlayerQuit',root, 
    function (  ) 
		local Killer = getPlayerAccount( source )
		if isGuestAccount ( Killer ) then --- اذا مو مسجل يخلي داتا الفل 0
		setElementData(source, "KillS", 0)
		setElementData(source, "LeVeL", 0)
		else		-- اذا مااحقق الشرط
      Data1 = setElementData(Kill, "KillS", (getElementData(Kill, "KillS") or 0) + 1) -- يجي عدد قتله اذا مافيه يحطه 0
	Data2 = setElementData(Kill, "LeVeL", (getElementData(Kill, "LeVeL") or 0) + 1)  -- نجيب لفله اواذا ما عه لفل نعطيه داتا 0
	
    local Results = executeSQLQuery("SELECT * FROM `Save LeveL System` WHERE Account=?",getPlayerAccount(source) )  
     if ( type ( Results ) == "table" and #Results == 0 or not Results ) then  --- يتحقق القيمه فاضيه  او لا
        executeSQLQuery ( "INSERT INTO `Save Position System` ( Account,Data1,Data2 ) VALUES(?,?,?)",getPlayerAccount(source),Data1,Data2 ) 
    else اذا ماتحقق الشرط
        executeSQLQuery('UPDATE `Save LeveL System` SET Data1 =?, Data2 =? WHERE Account =?',Data1,Data2,getPlayerAccount(source) ) 
    end 
end 
) 
  
  
  
  addEventHandler('onPlayerLogin',root,  -- لما الاعب يدخل
    function (  ) 
        local Results1 = executeSQLQuery("SELECT * FROM `Save LeveL System` WHERE Account=?",getPlayerAccount(source) )  -- يسترجع روم الحساب حق الاعب
        if ( type ( Results1 ) == "table" and #Results1 == 0 or not Results1 ) then return end  
      
      ---- يتحقق اذا فيه قيمه يكمل الشرط اذا مافيه يرجع الوظيفه
            
			setElementData(Kill, "KillS", (getElementData(Kill, "KillS") or 0) + 1)--يعطيه كم قتل
		    setElementData(Kill, "LeVeL", (getElementData(Kill, "LeVeL") or 0) + 1)-- يعطيه لفله ^^
    end 
) 

 

اخي عندك خطأ بالكود الاول عندما الاعب يخرج

انت كاتب

local Killer =  getPlayerAccount( source ) 

لكن بأكواد اعطاء الداتا كتبت Kill

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

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