Jump to content

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


Recommended Posts

اذا هي حق الدواره دي

ليه

الطرح المثال دا بالويكي ليه حطها ؟

function equalTwoRandomPlayersVelocity() 
    if getPlayerCount() < 2 then -- If there's only one player (or no players) this doesn't make sense 
        return false 
    end 
    local randomPlayer1, randomPlayer2 = getRandomPlayer(), getRandomPlayer() -- Get two random players 
    while randomPlayer1 == randomPlayer2 do -- Make sure the two players are different 
        randomPlayer2 = getRandomPlayer() 
    end 
    local speedx, speedy, speedz = getElementVelocity (randomPlayer1) -- Get the velocity of the first random player 
    setElementVelocity(randomPlayer2, speedx, speedy, speedz) -- Copy that velocity to the second random player 
    outputChatBox("Now " .. getPlayerName(randomPlayer2) .. " runs as fast as " .. getPlayerName(randomPlayer1) .. "!", root, 255, 128, 0) 
    return true 
end 

اشرحلي اكثر عنها لو سمحت ض

Link to comment

هنا مستخدمها عشان مايكون اللاعب العشوائي الاول يساوي اللاعب العشوائي الثاني,

بمعنى : بينما المتغير الاول يساوي المتغير الثاني تنفيذ -> المتغير الثاني يساوي قيمه اخرى

يعني ب اختصار وكمثال:

تنقيص الرقم من واحد <- بينما الرقم اكبر من واحد تنفيذ

بمعنى لو صار الرقم واحد راح يوقف اللوب لأن اللوب بينما اكبر من واحد

n = 10 -- متغير بقيمة 10 
  
while n > 1 do -- (do) بينما المتغير اكبر من واحد تنفيذ 
    n = n - 1 -- ننقص الرقم من واحد 
        outputChatBox ( n ) -- نطلع الرقم بالشات 
end -- نهايه 
  
-- بيبدأ العد التنازلي من 9 لين 1 ويوقف 
  
Link to comment
اذا هي حق الدواره دي

ليه

الطرح المثال دا بالويكي ليه حطها ؟

function equalTwoRandomPlayersVelocity() 
    if getPlayerCount() < 2 then -- If there's only one player (or no players) this doesn't make sense 
        return false 
    end 
    local randomPlayer1, randomPlayer2 = getRandomPlayer(), getRandomPlayer() -- Get two random players 
    while randomPlayer1 == randomPlayer2 do -- Make sure the two players are different 
        randomPlayer2 = getRandomPlayer() 
    end 
    local speedx, speedy, speedz = getElementVelocity (randomPlayer1) -- Get the velocity of the first random player 
    setElementVelocity(randomPlayer2, speedx, speedy, speedz) -- Copy that velocity to the second random player 
    outputChatBox("Now " .. getPlayerName(randomPlayer2) .. " runs as fast as " .. getPlayerName(randomPlayer1) .. "!", root, 255, 128, 0) 
    return true 
end 

اشرحلي اكثر عنها لو سمحت ض

ليه بالكود

while randomPlayer1 == randomPlayer2 do

المفروض ّّّ~=

؟؟

Link to comment
repeat until

مافهمته مره من الصفحه 8 حقتك

معناها تكرار حتى , يعني تكرار تنقيص او تزويد المتغير حتى يوصل قيمه معينه ويوقف

مثال :

local n = 5 -- متغير 
  
repeat -- تكرار 
    n = n - 1 -- تنقيص واحد من المتغير 
        outputChatBox ( n ) -- نطلعه بالشات 
until n == 1 -- حتى اذا كان المتغير يساوي واحد يوقف  

ليه بالكود

while randomPlayer1 == randomPlayer2 do

المفروض ّّّ~=

؟؟

? ~= ليه المفروض

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

Link to comment
while 

نوع من انواع اللوبات الاربعة

وهذا يجلس يكرر الاوامر طول ما الكلمة اللي بعده قيمتها true

كمثال

while true do 
outputChatBox("Laggy  : 3") 
end 

Note : اللغة بتوقفه نظراً لانه ما ينتهي

طيب مثال

while 5 == 1 do 
outputChatBox("Laggy : 3") 
end 

ما بيسوي شيء نظراً ل 5 ما تساوي 1

طيب هذا كيف طلع false?

شوف ذا :" https://forum.multitheftauto.com/viewtopic.php?f=164&t=100437

تقدر تستعمل الامر

break 

داخل حدود لوب مشان توقفه

مثال :

 var = 5 
while true do 
    var = var + 1 
    outputChatBox(var) 
    if var == 10 then 
        break 
    end 
end 

بيجلس يطلع بلشات الارقام لين يوصل 10 ويوقف اللوب

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

Link to comment

@♚Mr,[C]oR♚

@

@Sha67

@Ma[Z]en

@#CroSs

تكملةة للي بديناه في صفحة 34

بما اني ما اعرف للسكل واحتاج اني احفظ اشياء كثيره على السريال مثلا

سويت هالطريقة

function Save(plr) 
local accS = getAccount ( "save" ) 
saveMoney = setAccountData(accS,getPlayerName(plr),getPlayerMoney(plr)) 
if saveMoney then 
outputChatBox("saveDone!",plr) 
else 
outputChatBox("Error!",plr) 
  
end 
end 
addCommandHandler("save",Save) 
  
function Get(plr) 
local accS = getAccount ( "save" ) 
local Data = getAccountData(accS,getPlayerName(plr)) 
if Data then 
setPlayerMoney(plr,Data) 
outputChatBox("Done!") 
else 
outputChatBox("Error!") 
end 
end 
addCommandHandler("get",Get) 

...وبكذا اقدر احفظ على السريال او الاسم او

بدون ما يكون الحساب مسجل دخوله

الحين السؤال هل الطريقة صحيحة او تسبب مشاكل وتستخدم موارد كبيره من السيرفر ؟

ملاحظة : الي طرحته مجرد مثال فقط يعني يمكن يكون الايفنت عند خروج اللاعب

Link to comment

addCommandHandler("Save", function ( Player ) -- إضافة أمر .  
local pAccount = getPlayerAccount ( Player ) -- نجيب حساب الاعب 
if ( not isGuestAccount ( pAccount ) ) then -- نسوي تحقق اذا الاعب مسجل دخول 
setAccountData ( pAccount , "Money" , getPlayerMoney ( Player ) ) -- نقوم بحفظ فلوس الاعب على حساب 
end  
end) 
  
addCommandHandler("Get", function ( Player )  
local pAccount = getPlayerAccount ( Player ) -- نجيب حساب الاعب 
if ( not isGuestAccount ( pAccount ) ) then -- نسوي تحقق اذا الاعب مسجل دخول 
if ( getAccountData ( pAccount , "Money" ) ) then -- نسوي تحقق لو كان حساب الاعب معاه الداتا من قبل 
setPlayerMoney ( Player , tonumber ( getAccountData ( pAccount , "Money" ) ) ) -- نعطي الاعب فلوس الي سوينا لها حفظ 
end 
end 
end) 
  
Edited by Guest
Link to comment

انا خابر اني اقدر اسوي ذي الطريقة

بس الفلوس كانت مجرد مثال على الطريقة

باختصار هذا الي سويته

function Save(plr) 
local accS = getAccount ( "save" ) ----- هذا الحساب مسويه مسبقاً وراح يكون قاعدة البيانات 
saveMoney = setAccountData(accS,getPlayerName(plr),getPlayerMoney(plr)) ----- حطينا الداتا على قاعدة البيانات المزيفه ضض ذذ 
if saveMoney then 
outputChatBox("saveDone!",plr) 
else 
outputChatBox("Error!",plr) 
  
end 
end 
addCommandHandler("save",Save) 
  
function Get(plr) 
local accS = getAccount ( "save" ) --------- جبنا اسم الحساب الي سويته سابقاً 
local Data = getAccountData(accS,getPlayerName(plr)) ------ جبنا الداتا 
if Data then 
setPlayerMoney(plr,Data) ----- حطينا فلوس اللاعب من قاعدة البيانات المزيفة ذذ 
outputChatBox("Done!") 
else 
outputChatBox("Error!") 
end 
end 
addCommandHandler("get",Get) 

Link to comment

في فرق لما تكون حاط المفتاح اسم لاعب

ولما تحون حافظه ع السيريال

على حد علمي طريقتك غلط

والي ينحفظ عليه هو الحساب فقط لاغير

This function sets a string to be stored in an account.

Link to comment
  • 3 weeks later...

This function is the same as triggerClientEvent except the transmission rate of the data contained in the arguments can be limited and other network traffic is not blocked while the data is being transferred.

المقصود من هالكلام انه نفس التريقر العادي .. اللهم انه هذا التريقر ما راح يتاثر بمشاكل الاتصال بشكل عام وراح وزي ما قال فوق انه ممكن تكون الاشياء اللي ترسلها مع التريقر

محدودة يعني مو زي التريقر العادي يرسل المعلومات كاملة لا هذا ممكن يجزئها ويرسلها !

طبعا تحتاجه مثلأ انكـ تحمل ملف معين للاعب او غير ذلك .

Link to comment
  • Moderators
طيب شتسوي بالاكواد بالويكي ؟

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

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

وشوف وش يصير، السيرفر بيمنعك من الدخول

Link to comment
onPlayerConnect 

يتنفذ يوم يحاول الاعب دخول السيرفر

لكن الفرق بينها وبين

onPlayerJoin 

ان onPlayerJoin

يشتغل يوم يكون الاعب اتصل بنجاح

onPlayerConnect

تقدر تقول انه يشتغل

يوم يكون الاعب عنده

اللوحة اللي مكتوب فيها

Entering The Game

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

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