Jump to content

x[تصحيح]x كود


#STZ

Recommended Posts

السلام عليكم و رحمة الله و بركاته

عندي مشكلة بكود

كلنت

addEventHandler("onClientGUIClick",root,function ( ) 
if source == GUIEditor.button[1] then 
triggerServerEvent("Acc:My:Car",localPlayer,522) 
Cars [ source ] = nil; 
end 
end 
) 

سيرفر

Cars = {} 
  
addEvent("Acc:My:Car",true) 
addEventHandler("Acc:My:Car",root, 
function ( ID ) 
local x,y,z = getElementPosition(source) 
Cars[source] = createVehicle(ID,x,y,z) 
end 
) 

ابي لما يضغط الزر و ياخذ السيارة يروح احداثيات

(-1254.31653 -185.36768 14.14844) 

و الكود مب شغال الدي بق يقول ملف الكلنت

cars is (nill value )

زي كدا

اتمني الحل

Link to comment

#Client.

addEventHandler("onClientGUIClick",resourceRoot,function ( ) 
    if source == GUIEditor.button[1] then 
        triggerServerEvent("Acc:My:Car",localPlayer,522) 
    end 
end 
) 
  

#Server.

Cars = {} 
  
addEvent("Acc:My:Car",true) 
addEventHandler("Acc:My:Car",root, 
function ( ID ) 
    if ( Cars[client] ) then 
        destroyElement(Cars[client]) 
    end 
    if ( getPedOccupiedVehicle(client) ) then 
        removePedFromVehicle ( client ) 
    end 
    Cars[client] = createVehicle(ID,-1254.31653, -185.36768, 15.14844) 
    warpPedIntoVehicle ( client, Cars[client] )   
end 
) 
  
Link to comment
  
addEventHandler("onClientGUIClick",resourceRoot,function ( ) 
    if source == GUIEditor.button[1] then 
        triggerServerEvent("bikes",localPlayer,522) 
    end 
end 
) 
   

Cars = {} 
  
addEvent("bikes",true) 
addEventHandler("bikes",root, 
function ( ID ) 
    if ( Cars[client] ) then 
        destroyElement(Cars[client]) 
    end 
    if ( getPedOccupiedVehicle(client) ) then 
        removePedFromVehicle ( client ) 
    end 
    Cars[client] = createVehicle(ID,-1254.31653, -185.36768, 15.14844) 
    warpPedIntoVehicle ( client, Cars[client] )   
end 
) 
  

Link to comment

addEventHandler("onClientGUIClick", resourceRoot, 
function() 
if source == GUIEditor.button[1] then 
triggerServerEvent("bikes", getLocalPlayer(), 522) 
end 
end) 

Vehicles = {} 
addEvent("bikes", true) 
function CreateVehicle(ID) 
if isElement(Vehicles[source]) then destroyElement(Vehicles[source]) end 
if getPedOccupiedVehicle(source) then destroyElement(getPedOccupiedVehicle(source)) end 
Vehicles[source] = createVehicle(ID, YourX, YourY, YourZ, YourRx, YourRy, YourRz) 
warpPedIntoVehicle(source, Vehicles[source]) 
end 
addEventHandler("bikes", root, CreateVehicle) 
Link to comment
^ اشرح لي كيف :D .
table1 = {} 
  
addCommandHandler('s', 
function ( player ) 
    if ( table1[player] ) then 
        outputChatBox('you have a Value',player) 
        return 
    end 
    table1[player] = createPed(0,25,25,25) 
    if ( isElement(table1[player]) ) then 
        outputChatBox('The ped was Created.',player) 
    end 
end) 
  
addCommandHandler('g', 
function ( player ) 
    if ( table1[player] ) then 
        if ( getElementType(table1[player]) == 'ped' ) then 
            outputChatBox('you have a ped',player) 
            table1[player] = createVehicle(411,25,25,25) 
        elseif ( getElementType(table1[player]) == 'vehicle' ) then 
            outputChatBox('the Ped Was Changed to Veh.',player) 
        end 
    end 
end) 
  
addCommandHandler('w', 
function ( player ) 
    if ( table1[player] ) then 
        local x,y,z = getElementPosition(player) 
        setElementPosition(table1[player],x,y,z+2) 
    end 
end) 

راح يضيف للتيبل بيد s جرب هالمثال وبتفهم في حال كتبت الامر

بيغير البيد الي سياره g وفي حال كتبت الامر

بيسحبلك الي بالجدول لو تلاحظ لما تسوي البيد بيسحب البيد ولكن لما تغيره الي سياره بيسحب السياره وماراح يسحب البيد w و الامر

طبعا بتقولي انت كذا ماحذفت البيد وو , بقولك هذا مجرد مثال وابي اوصلك فكرة تغيير القيمة في التيبل مايحتاج انك تحذفها وترجع تضيف جديده

هذا والله اعلم

Link to comment
table1 = {} 
  
addCommandHandler('s', 
function ( player ) 
    if ( table1[player] ) then 
        outputChatBox('you have a Value',player) 
        return 
    end 
    table1[player] = createPed(0,25,25,25) 
    if ( isElement(table1[player]) ) then 
        outputChatBox('The ped was Created.',player) 
    end 
end) 
  
addCommandHandler('g', 
function ( player ) 
    if ( table1[player] ) then 
        if ( getElementType(table1[player]) == 'ped' ) then 
            outputChatBox('you have a ped',player) 
            table1[player] = createVehicle(411,25,25,25) 
        elseif ( getElementType(table1[player]) == 'vehicle' ) then 
            outputChatBox('the Ped Was Changed to Veh.',player) 
        end 
    end 
end) 
  
addCommandHandler('w', 
function ( player ) 
    if ( table1[player] ) then 
        local x,y,z = getElementPosition(player) 
        setElementPosition(table1[player],x,y,z+2) 
    end 
end) 

راح يضيف للتيبل بيد s جرب هالمثال وبتفهم في حال كتبت الامر

بيغير البيد الي سياره g وفي حال كتبت الامر

بيسحبلك الي بالجدول لو تلاحظ لما تسوي البيد بيسحب البيد ولكن لما تغيره الي سياره بيسحب السياره وماراح يسحب البيد w و الامر

طبعا بتقولي انت كذا ماحذفت البيد وو , بقولك هذا مجرد مثال وابي اوصلك فكرة تغيير القيمة في التيبل مايحتاج انك تحذفها وترجع تضيف جديده

هذا والله اعلم

كلامك صحيح, لكن :

table1[player] = ... -- هنا راح يعتبر كأنه متغير والمتغير تقدر تغير قيمته, ما نختلف 

بمعنى الوظيفه ما راح تكمل وراح توقف تمام؟ return ولكن لاحظ انت مستخدم

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

؟ هذي اللي ما فكرت فيها return طيب كودك اللي صلحته له انت مستخدم

طيب سويت لك مثال بسيط , وبمشي على نفس كلامك, وشوف وش يصير ؟

car = {}; -- جدول فاضي 
local var; -- nil متغير قيمته 
  
  
addCommandHandler ( 'cve', function ( plr ) 
    local x,y,z = getElementPosition ( plr ) 
    if isElement ( car [ plr ] ) then -- نتحقق ان العنصر وهو متغير للسياره موجود او لا      
        destroyElement ( car [ plr ] )  -- نحذفه 
        -- السطرين اللي تحت تحذف قيمة اللاعب وتحذف السياره, خلها كـ كلام توضيحي واستخدمها عشان تجرب 
        --  car [ plr ] = nil; -- نحذف القيمه من الجدول 
        --  var = 0; -- نرجع قيمة المتغير صفر بما اننا حذفنا القيمه اكيد لازم يكون صفر 
    end 
        car [ plr ] --[[ الجدول والقيمه هي اللاعب راح يكون متغير للسياره ]] = createVehicle ( 422, x, y, z ) 
            for k,v in pairs ( car ) do  -- نسوي لوب عشان نجيب محتويات الجدول 
                var = ( var or 0 ) + 1 -- نخلي قيمته صفر مره واحده فقط وبعدها نزود قيمته nil نحط للمتغير قيمه لأنه 
                    -- طبعا اللوب راح يكرر على حسب قيم الجدول 
                    outputChatBox ( var ) -- هنا راح تظهر كم قيمه داخل الجدول ! 
                    -- بما ان اللعبه مب عندي وما اقدر اجرب, على حسب معرفتي راح تزيد القيمه وما راح تتبدل على كلامك 
                    -- بمعنى راح تضيف اللاعب للجدول اكثر من مره, بما انك حذفت المتغير (المتغير) بس يعني قيمة الجدول ما حذفتها 
    end 
end) 

هذا اللي عندي و الله اعلم انا اكلمك من واقع معرفتي مب من واقع تجربه, لأني ما اجرب, يمكن يكون كلامي خطأ واستفيد منك هات ردك :D .

Link to comment

شوف انا جربت هالمثال

car = {}; -- جدول فاضي 
local var; -- nil متغير قيمته 
  
addCommandHandler ( 's', function ( plr ) 
    local x,y,z = getElementPosition ( plr ) 
    if isElement ( car [ plr ] ) then  
        destroyElement ( car [ plr ] )   
        var = 0 -- نرجع قيمة المتغير صفر بما اننا حذفنا القيمه اكيد لازم يكون صفر 
    end 
    car [ plr ] = createVehicle ( 422, x, y, z )  
    for k,v in pairs ( car ) do   
        var = ( var or 0 ) + 1  
        outputChatBox ( var ,root)  
    end 
end) 

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

Link to comment

لأن انا ابيه يجيبلي عدد القيم الي بالجدول ولو ماصفرته ماراح يجيب العدد بيقعد يزيد المتغير

علي كل مره بيزيد رقم واحد لأن عدد القيم الي بالجدول قيمه وحده فقط وبكذا كل مره بيزيد قيمه وحده

Link to comment

المفروض ماتخلي قيمته صفر الا اذا حذفت القيمه من الجدول ,

يعني لو خليت قيمته صفر بمعنى انك سويت كذا :

addCommandHandler ( 'cve', function ( plr ) 
    car = {}; -- خلينا الجدول داخل الكوماند 
    local var; -- خلينا المتغير داخل الكوماند 
    --[[ 
    بمعنى انه اذا كان المتغير داخل الكوماند, كل مره تكتب الكوماند راح يسوي المتغير من جديد 
    وبمعنى آخر كل مره تكتب  الكوماند راح يسوي الجدول من جديد 
    وبمعنى آخر ايضاً التحقق من ان السياره موجوده ماراح يشتغل لأن توك مسوي الجدول ]] 
    local x,y,z = getElementPosition ( plr ) 
    if isElement ( car [ plr ] ) then 
        destroyElement ( car [ plr ] ) 
    end 
        car [ plr ] = createVehicle ( 422, x, y, z ) 
            for k,v in pairs ( car ) do 
                var = ( var or 0 ) + 1 
                    outputChatBox ( var ) 
    end 
end) 

يعني لو خليت قيمته صفر كأنك حاط المتغير داخل الكوماند وبكذا ماراح تزيد قيمته عن 1 نهائياً, كلامي صحيح او؟

Link to comment

شئ اكيد اذا حطيت الجدول داخل الكومند كل شوي بيسوي جدول جديد وهذا خطأ

مادري وش الي تقصده بالضبط ولكن شوف هالمثال

car = {};  
  
addCommandHandler ( 's', function ( plr ) 
    local x,y,z = getElementPosition ( plr ) 
    if isElement ( car [ plr ] ) then 
        destroyElement ( car [ plr ] )   
    end 
    car [ plr ] = createVehicle ( 422, x, y, z ) 
    for k,v in pairs ( car ) do   
        outputChatBox ( 'test',root) 
    end 
end) 

مره وحده فقط test لو طلعت 10 سيارات مثلا , مع كل سياره تطلعها بيقولك بالشات

واذا كان قصدك تقول ليش ماتسوي كذا

car [ plr ] = nil

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

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