Jump to content

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


Recommended Posts

عايز شرح لـ

https://wiki.multitheftauto.com/wiki/GenerateString

لو سمحتم

generatestring

ذا فنكشن مفيد

string generateString ( int length ) 

الساينتكس

يرجع لك سترنق

يعني يجيب لك سترنق من العدم خرابيط سترنقية ض1

مثل كذا

"E4FES453D43AS4F"

وانت تختار من كام حرف تبيه من اول ارقمنت

مثلاً انا ابي سترنق من حروف

واطلعه بلشات

addCommandHandler("هات نص",  
function (Player) 
     local MyString = generateString(10) 
     outputChatBox(MyString, Player, 0, 255, 0) 
end 
) 

هذا بيسوي نص من 10 حروف و يطلعه

ان شاء الله فهمت

Link to comment

table.sort

باختصار هي تقوم بترتيب الجدول

مثال :

  
table = { } 
table.sort(table, function(v1,v2) return(tonumber(v1[2]) or 0) > (tonumber(v2[2]) or 0) end) 

هيك قام بترتيب الجدول من الاصغر للاكبر و تقدر تستخدمها في اشياء كثيره و تستخدم اكثر شي في التوبات

اتمني اكون افدك :fadein::roll:

Link to comment

طيب انا الشوف الكل يستعمل طريقة الترتيب بذي الطريقة

table.sort(table, function(v1,v2) return(tonumber(v1[2]) or 0) > (tonumber(v2[2]) or 0) 

ابي طريقة ثانية وحتى لو طويلة اهم شيء افهم منها .

Link to comment
طيب انا الشوف الكل يستعمل طريقة الترتيب بذي الطريقة

table.sort(table, function(v1,v2) return(tonumber(v1[2]) or 0) > (tonumber(v2[2]) or 0) 

ابي طريقة ثانية وحتى لو طويلة اهم شيء افهم منها .

ترتيب جداول ما عندك الا

table.sort 
  

Link to comment
assert 

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

math.max 

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

tostring 

؟؟؟

assert 

هذي تتحقق من شيء و لو ما تحقق تقطع الفنكشن وتطلع خطأ بلدي بق من كتابتك, مثال :

  
function DoThings(Tab) 
    assert(type(Tab) == "table", "the var isn't a table !") 
    for k, v in ipairs(Tab) do 
        print(k, v) 
    end 
end 

tostring 

تحول لك لسترنق

مثال

tostring(7) 

بيطلع لك

"7" 

math.max 

هذا يجيب لك العدد الاكبر من مجموعة اعدادا انت حاطتها

مثال :

print(math.max(40, 70, 90, 500, 44400, 9000000, 700)) 

بيرجع لك

9000000

لانه الاكبر فيهم

وفيه عكس ل

math.max 

اللي هو

math.min 

نفس كتابة math.max :)

ان شاء الله فهمت :D

Link to comment
assert 

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

math.max 

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

tostring 

؟؟؟

assert 

هذي تتحقق من شيء و لو ما تحقق تقطع الفنكشن وتطلع خطأ بلدي بق من كتابتك, مثال :

  
function DoThings(Tab) 
    assert(type(Tab) == "table", "the var isn't a table !") 
    for k, v in ipairs(Tab) do 
        print(k, v) 
    end 
end 

tostring 

تحول لك لسترنق

مثال

tostring(7) 

بيطلع لك

"7" 

math.max 

هذا يجيب لك العدد الاكبر من مجموعة اعدادا انت حاطتها

مثال :

print(math.max(40, 70, 90, 500, 44400, 9000000, 700)) 

بيرجع لك

9000000

لانه الاكبر فيهم

وفيه عكس ل

math.max 

اللي هو

math.min 

نفس كتابة math.max :)

ان شاء الله فهمت :D

شكرا لك :wink::wink:

Link to comment

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

set/getAccountData 

لحفظ داتا Money

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

وابي مثال باستخدام ال sql

طبعا اول شي لآزم تتصل بالداتا بيس او تسويها

dataBase = dbConnect( "sqlite", "money.db" ) -- الكود ذا بيتأكد اذا فيه داتا بيس اسمها موني ، اذا فيه بيتصل فيها واذا مافيه بيسويها ثم يتصل فيها 

جدول (table) انت كذا سويت داتا بيس فاضية ، الحين لازم تضيف لها

dbExec ( dataBase, "CREATE TABLE IF NOT EXISTS players_money (account TEXT, money INTEGER)" ) --الكود ذا بيسوي تايبل اسمها بلايرز موني ويحط فيها ثنين كولمن او عمود واحد اسمه اكاونت والثاني موني 

بالطريقة ذي انت حطيت التيبل بالداتا بيس ، وقاعدة البينات حقك الحين جاهزة للأستعمال

_____________________________________________________

الحين بكل سهولة ، يوم يجي الاعب يطلع من السيرفر تسوي حدث خروج الاعب وتجيب حساب الاعب + فلوسه الحالية ثم تتاكد اذا كانت موجودة المعلومات ذي من الاصل فـ اذا موجودة يسوي تحديث واذا مو موجودة يسوي اضافة جديدة للسطر

  
local money = getPlayerMoney(player) -- تجيب فلوس الاعب 
local account = getAccountName(getPlayerAccount(player)) -- تجيب حساب الاعب 
local qh = dbQuery( dataBase, "SELECT * FROM players_money WHERE account=?", account) -- تجيب القيم الي موجودة بسطر اكاونت 
local result = dbPoll( qh, -1 ) -- تحول القيم ذي الى معلومات او نتيجة 
if result and type(result) == "table" and #result >= 1 then return dbExec( dataBase, "UPDATE players_money SET money=? WHERE account=?", money, account)  end -- هنا تحققنا انه اذا كانت موجودة القيم ونوعها جدول والقيم ذي اكثر من 1 فـ يعني انه الحساب ذا موجود اصلا بالداتا بيس فـ بنسوي تحديث للقديم ونضيف الفلوس للحساب الموجود 
dbExec( dataBase, "INSERT INTO players_money (account,money) VALUES(?,?)", account,money) -- هنا اذا ماكان حساب الاعب موجود من الاصل بالداتا بيس فـ بيسوي سطر جديد له ويضيف فلوسه 

الحين صار معك بالداتا بيس حساب الاعب وجنبه فلوسه ، الحين يوم يدخل الاعب بتسوي حدث تسجيل دخول الاعب وتطلع المعلومات الي بالداتا بيس ثم تعطي للاعب فلوسه

local account = getAccountName( getPlayerAccount(player) ) -- اسم حساب الاعب 
local qh = dbQuery( dataBase, "SELECT * FROM players_money WHERE account=?", account) -- استخراج القيمة من الداتا بيس 
local result = dbPoll( qh, -1 ) -- نحول القيمة الي جاتنا لـ معلومات او نتيجة 
    if result then -- نتحقق ان النتيجة موجودة 
        for _, row in ipairs ( result ) do -- نسوي لوب لمحتويات المعلومات عشان نعطي الاعب فلوسه 
                    setPlayerMoney(player,row["money"]) -- نعطي الاعب فلوسه 
  

أتمنى افدتك ~ :mrgreen:

Link to comment

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

set/getAccountData 

لحفظ داتا Money

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

وابي مثال باستخدام ال sql

طبعا اول شي لآزم تتصل بالداتا بيس او تسويها

dataBase = dbConnect( "sqlite", "money.db" ) -- الكود ذا بيتأكد اذا فيه داتا بيس اسمها موني ، اذا فيه بيتصل فيها واذا مافيه بيسويها ثم يتصل فيها 

جدول (table) انت كذا سويت داتا بيس فاضية ، الحين لازم تضيف لها

dbExec ( dataBase, "CREATE TABLE IF NOT EXISTS players_money (account TEXT, money INTEGER)" ) --الكود ذا بيسوي تايبل اسمها بلايرز موني ويحط فيها ثنين كولمن او عمود واحد اسمه اكاونت والثاني موني 

بالطريقة ذي انت حطيت التيبل بالداتا بيس ، وقاعدة البينات حقك الحين جاهزة للأستعمال

_____________________________________________________

الحين بكل سهولة ، يوم يجي الاعب يطلع من السيرفر تسوي حدث خروج الاعب وتجيب حساب الاعب + فلوسه الحالية ثم تتاكد اذا كانت موجودة المعلومات ذي من الاصل فـ اذا موجودة يسوي تحديث واذا مو موجودة يسوي اضافة جديدة للسطر

  
local money = getPlayerMoney(player) -- تجيب فلوس الاعب 
local account = getAccountName(getPlayerAccount(player)) -- تجيب حساب الاعب 
local qh = dbQuery( dataBase, "SELECT * FROM players_money WHERE account=?", account) -- تجيب القيم الي موجودة بسطر اكاونت 
local result = dbPoll( qh, -1 ) -- تحول القيم ذي الى معلومات او نتيجة 
if result and type(result) == "table" and #result >= 1 then return dbExec( dataBase, "UPDATE players_money SET money=? WHERE account=?", money, account)  end -- هنا تحققنا انه اذا كانت موجودة القيم ونوعها جدول والقيم ذي اكثر من 1 فـ يعني انه الحساب ذا موجود اصلا بالداتا بيس فـ بنسوي تحديث للقديم ونضيف الفلوس للحساب الموجود 
dbExec( dataBase, "INSERT INTO players_money (account,money) VALUES(?,?)", account,money) -- هنا اذا ماكان حساب الاعب موجود من الاصل بالداتا بيس فـ بيسوي سطر جديد له ويضيف فلوسه 

الحين صار معك بالداتا بيس حساب الاعب وجنبه فلوسه ، الحين يوم يدخل الاعب بتسوي حدث تسجيل دخول الاعب وتطلع المعلومات الي بالداتا بيس ثم تعطي للاعب فلوسه

local account = getAccountName( getPlayerAccount(player) ) -- اسم حساب الاعب 
local qh = dbQuery( dataBase, "SELECT * FROM players_money WHERE account=?", account) -- استخراج القيمة من الداتا بيس 
local result = dbPoll( qh, -1 ) -- نحول القيمة الي جاتنا لـ معلومات او نتيجة 
    if result then -- نتحقق ان النتيجة موجودة 
        for _, row in ipairs ( result ) do -- نسوي لوب لمحتويات المعلومات عشان نعطي الاعب فلوسه 
                    setPlayerMoney(player,row["money"]) -- نعطي الاعب فلوسه 
  

أتمنى افدتك ~ :mrgreen:

تسلم على الشرح الرائع

والله افدتني

مشكوووووور

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

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