Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 13/02/19 in Posts

  1. Putz, dai tu complica né mano. Vc baixa o resource e n entende nem a lógica dele? E dai como vc espera que a gente te ajude se vc não sabe nem como ele funciona? Quer que a gente faça tudo pra vc? Aliás se vc soubesse lógica de programação, vc já poderia descobrir o que está errado ali.
    2 points
  2. بسم الله الرحمن الرحيم, السلام عليكم ورحمة الله وبركاته , بشرح اليوم كيف تسوي ExportFunction " استدعاء فنكشن " او زي مابسميه " بديل الداتا " , كيف نستخدمه ؟ كيف اسويه ؟ حاولت اسويه مانفع ؟ , كل هذا بشرحه إولآ : انا بقولك وش يعني اكسبورت Exports = استدعاء شيء ما من مود اخر عن طريق اسم الفنكشن في حالة عدم وجود داتا او في حالة وجودها ولاتصلح معك ! بفهمك بلغة البرمجه exports["resource_name"]:function_name() الحين بشرحلك ماعليك exports = استدعاء resource_name = اسم المود الي بيتم الاستدعاء له function_name = اسم الفنكشن الي انت تبي تسويله استدعاء الحين انا مسوي مود بس مافيه داتا ? انا غبي الحين بشيل كل المود , لا مالها داعي تشيل كل المود بعطيك مثال الحين طالما انت مسوي الفنكشن وكله صحيح كيف تسوي الاستدعاء الصحيح وعلي سبيل المثال انك مسوي في المود1 الوظيفة كذا عبارة عن انه يكتب ولكم function SayHello() outputChatBox("اهلآ وسهلآ بك في السيرفر .") end الحين انت عندك هذه الوظيفة وتبي تسويلها استدعاء من مود اخر ؟ وش بنسوي ؟ نروح للميتا حق المود1 ونحط كذا <export function="SayHello" type="server"/> بعد مانحط هذا بالميتا نروح للمود2 الي تبي تحط فيه الاستدعاء addEventHandler("onPlayerJoin",root function() exports["resource_name"]:SayHello() end ) هيك انت سويت استدعاء اول لما اللاعب يخش يستدعي الفنكشن بالاكواد الي فيه من المود1 الي المود2 عشان يسوي ترحيب بالشات اول لما يخش زائر إتمنى اذا كان في اخطاء بالشرح ان يتم التصحيح لي , لانه اول شرح لي في قسم شروحات البرمجه والسلام عليكم ورحمة الله وبركاته #
    1 point
  3. GetAccount não funciona a partir de um playerElement. Somente a partir de uma string de accountName. Substitua por getPlayerAccount.
    1 point
  4. Então vou explicar pra vc e dai vc arruma: function blockDead() if getElementHealth(localPlayer) <= 30 then -- Se o player estiver com 30 ou menos de vida, então: if not getElementData(localPlayer, "jobSAMU") then -- Se o player NÃO estiver com a data jobSAMU, então: if not getElementData(localPlayer, "playerFallen") then -- Se o player NÃO estiver com a data playerFallen, então: cancelEvent() -- Cancela o dano no player. end end end end addEventHandler("onClientPlayerDamage", localPlayer, blockDead)
    1 point
  5. I had already experience with elementData, on 40~ players, let's say was around 15 cars shooting to themselves, and the value of each car armor was done on elementData. There was also one elementData which was responsible for player blood. About my players. I have server in EU, a lot of EU players (they have very small ping 40-60 +/-), and some RU/UA/KZ players (they have ping around 100-120~). I am targeting in making optimisations in everything which changing very frequently (i think it's good to change it from elementData to table), this is one of 3 things, which also change frequently, i just want to see results, which tables can give me. And about this interface, i should send update of this table whenever vehicle got damage?
    1 point
  6. Change the x, y, z once again and check if it makes a difference.
    1 point
  7. Hello, @RandomRambo Server: marker1 = createMarker(1800.4868164063, -2141.1555175781, 14.146875, "arrow", 1.5, 0, 250, 0, 153) marker2 = createMarker(1801.6746826172, -2137.8212890625, 14.146875, "arrow", 1.5, 250, 0, 0, 153) function teleport(client) if (source == marker1 and getElementType(client) == "player") then setElementPosition(client, 1793.2797851563, -2151.337890625, 13.681822776794) setElementFrozen(client, false) setTimer(setElementFrozen, 1000, 1, client, false) triggerClientEvent(client, "onPlayerTP", client) elseif (source == marker2 and getElementType(client) == "player") then setElementPosition(client, 1793.4161376953, -2124.8742675781, 13.546875) setElementFrozen(client, false) setTimer(setElementFrozen, 1000, 1, client, false) triggerClientEvent(client, "onPlayerTP", client) end end addEventHandler("onMarkerHit", resourceRoot, teleport) Client: local screenW, screenH = guiGetScreenSize() mainWindow = guiCreateWindow((screenW - 1546) / 2, (screenH - 834) / 2, 1546, 834, "News", false) guiWindowSetSizable(mainWindow, false) --GUI Objects-- closeButton = guiCreateButton(9, 770, 1527, 54, "Close", false, mainWindow) newsLogo = guiCreateStaticImage(9, 32, 1527, 733, ":news/logotip.png", false, mainWindow) function resStarts() guiSetVisible(mainWindow, false) showCursor(false) end addEventHandler("onClientResourceStart", resourceRoot, resStarts) function openNewsPanel() guiSetVisible(mainWindow, true) showCursor(true) end addEvent("onPlayerTP", true) addEventHandler("onPlayerTP", localPlayer, openNewsPanel) function closeNewsPanel(button) if (button ~= "left") then return false end guiSetVisible(mainWindow, false) showCursor(false) end addEventHandler("onClientGUIClick", closeButton, closeNewsPanel, false) Meta: <meta> <script src="client.lua" type="client" /> <script src="server.lua" type="server" /> <file src="logotip.png" /> </meta> Remember, check the full code and see what I have changed and think why I did that. Also, change the image location at client.lua: line 6 {":news/logotip.png"} in this case, my script folder name was "news". I had to create a new client program as your one was pretty much buggy and unorganized. If you still find any problem, let us know.
    1 point
  8. Apareceu algum erro no debugscript 3? A sua imagem não está funcionando.
    1 point
  9. It will hurt the sender a bit. But only if he or she has terrible internet. And you can always increase the buffer/delay time. (Remember to test the latent version for your target group) When you are going to send information back it will also hurt the receiver without doubts. But you can use an even bigger delay for players that are far away. So only the players that are closeby should actually receive data immediately. On the other hand elementdata could save you some data for closeby players. The usage require less data, but the target players are not control able. So if there are 500 players in your server, then I do not recommended it. You should test both ways. It is a paradox I know... Why not set elementdata clientside? Because players will overwrite the data from each other. It is something the server should manage. Who is your target group by the way? @majqq
    1 point
  10. Ali na linha 21, me explique cada linha da função blockDead. function blockDead() if getElementHealth(localPlayer) <= 30 then -- COMENTÁRIO AQUI if not getElementData(localPlayer, "jobSAMU") then -- COMENTÁRIO AQUI if not getElementData(localPlayer, "playerFallen") then -- COMENTÁRIO AQUI cancelEvent() -- COMENTÁRIO AQUI end end end end addEventHandler("onClientPlayerDamage", localPlayer, blockDead)
    1 point
  11. 1 point
  12. function convertTime (ms) local min = math.floor (ms/60000) local sec = math.floor (ms/1000) return min, sec end
    1 point
  13. Sua função convertTime está errada.
    1 point
  14. Evite flood de tópicos. Aguarde seu outro tópico ser resolvido antes de criar outro.
    1 point
  15. امزح معك مود اكثر من رائع استمر ياوحش
    1 point
  16. Sempre que precisar de ajuda só aparecer que os "Los Simpsons" te ajuda, kk
    1 point
  17. Não precisa. Ela simplesmente será false na primeira execução e depois será true. (not false = true) Ela foi definida na linha 8 como sendo sempre o oposto de seu valor atual. Ou seja, a cada execução ela alterna entre false e true.
    1 point
  18. @MR.S3D ---> يقتل القتيل ويروح لجنازته ? @Master_MTA ---> قلوب طيبه ? @MrKAREEM ---> تربيه واخلاق ? @MR.Mosa ---> مجنون فالكلام ? @KillerX ---> طفل طيب ? @!#DesTroyeR_,) ---> اقتلوه قبل ان يتكاثر ?
    1 point
  19. كلنت function busGui () bsWindow1 = guiCreateWindow(0.25,0.35,0.4,0.4, "plan jop ", true) bsLabel1 = guiCreateLabel(0.09,0.09,0.8,0.5,[[Welcome to t plan jop]], true,bsWindow1) guiCreateStaticImage(0.4,0.4,0.1,0.1,"blip.PNG",true, bsWindow1) guiLabelSetHorizontalAlign(bsLabel1,"center",true) btnAccept1 = guiCreateButton(0.115,0.7,0.25,0.2, "Accept",true, bsWindow1) addEventHandler("onClientGUIClick",btnAccept1,bsAccept1) btnReject1 = guiCreateButton(0.615,0.7,0.25,0.2, "Reject", true, bsWindow1) addEventHandler("onClientGUIClick",btnReject1,bsReject1) guiSetVisible(bsWindow1, false) end addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), function () busGui () end ) function markerhit1(thePlayer, matchingDimension) if ( thePlayer == getLocalPlayer() ) then guiSetVisible(bsWindow1, true) showCursor(true) end end addEvent("showbsGui2",true) addEventHandler("showbsGui2", root, markerhit1) function bsReject1 () guiSetVisible(bsWindow1, false) showCursor(false) end function bsAccept1 (thePlayer) triggerServerEvent("givebsJob2", getLocalPlayer(), getLocalPlayer() ) bsReject1() end سيرفر local bsMarker = createMarker(1937.98682,-2301.14429,12.6000,"cylinder",2,252,0,255,50) createBlipAttachedTo(bsMarker,56) local bsLocations = { {1443.55371, -2493.37646, 12.99999}, {1477.70557, 1304.07092, 12.99999}, {-1634.96631, -145.10735, 12.99999}, {1443.55371, -2493.37646, 12.99999}, {1477.70557, 1304.07092, 12.99999}, {-1634.96631, -145.10735, 12.99999}, {1443.55371, -2493.37646, 12.99999}, {1477.70557, 1304.07092, 12.99999}, {-1634.96631, -145.10735, 12.99999}, {1439.33911, -2596.01294, 12.99999}} local bsNumber = {} addEventHandler("onMarkerHit",bsMarker, function(hitElement,_) if (hitElement and getElementType(hitElement) == "player" and not isPedInVehicle(hitElement)) then if not (getElementData(hitElement,"AGJob2") == "plan driver") then -- we use this to check if the player did not take the job before triggerClientEvent("showbsGui2", hitElement, hitElement) else outputChatBox("Your job already started. Get back to your plan and continue to work!", hitElement,229,250,2) end end end) local bsVehicle = {} local bsVehicleBlip = {} local bsJobMarker = {} local bsJobBlip = {} function startbsJob(thePlayer) setElementData(thePlayer,"AGJob2","plandriver") bsVehicle[thePlayer] = createVehicle(593,1938.10779, -2320.12524, 13.54688) bsVehicleBlip[thePlayer] = createBlipAttachedTo(bsVehicle[thePlayer],5) setElementVisibleTo(bsVehicleBlip[thePlayer],getRootElement(),false) setElementVisibleTo(bsVehicleBlip[thePlayer],thePlayer,true) setElementData(bsVehicle[thePlayer],"JobOwner", getPlayerName(thePlayer)) setElementData(bsVehicle[thePlayer],"AGJob2","taxi") warpPedIntoVehicle(thePlayer,bsVehicle[thePlayer]) showDaBusMarker(thePlayer) end addEvent("givebsJob2",true) addEventHandler("givebsJob2", root,startbsJob) function showDaBusMarker(thePlayer) if bsNumber[thePlayer] then --outputChatBox("bsnumber") if bsNumber[thePlayer] == 1 then bsNumber[thePlayer] = bsNumber[thePlayer] + 1 --outputChatBox("bsnumber == 1, so + 1") elseif bsNumber[thePlayer] == 10 then bsNumber[thePlayer] = bsNumber[thePlayer] - math.random(1,8) --outputChatBox("bsnumber - ") else bsNumber[thePlayer] = bsNumber[thePlayer] + 1 --outputChatBox("bsnumber + 1") end bsJobMarker[thePlayer] = createMarker(bsLocations[bsNumber[thePlayer]][1],bsLocations[bsNumber[thePlayer]][2],bsLocations[bsNumber[thePlayer]][3],"cylinder",2,100,100,0,200) bsJobBlip[thePlayer] = createBlipAttachedTo(bsJobMarker[thePlayer],19) setElementData(bsJobMarker[thePlayer],"JobOwner",getPlayerName(thePlayer)) setElementVisibleTo(bsJobMarker[thePlayer],getRootElement(),false) setElementVisibleTo(bsJobBlip[thePlayer],getRootElement(),false) setElementVisibleTo(bsJobMarker[thePlayer],thePlayer,true) setElementVisibleTo(bsJobBlip[thePlayer],thePlayer,true) addEventHandler("onMarkerHit", bsJobMarker[thePlayer], givebsPay) else bsNumber[thePlayer] = math.random(1,10) --outputChatBox("no bsnumber") --outputChatBox(bsNumber[thePlayer]) bsJobMarker[thePlayer] = createMarker(bsLocations[bsNumber[thePlayer]][1],bsLocations[bsNumber[thePlayer]][2],bsLocations[bsNumber[thePlayer]][3],"cylinder",2,100,100,0,200) setElementData(bsJobMarker[thePlayer],"JobOwner",getPlayerName(thePlayer)) bsJobBlip[thePlayer] = createBlipAttachedTo(bsJobMarker[thePlayer],19) setElementVisibleTo(bsJobMarker[thePlayer],getRootElement(),false) setElementVisibleTo(bsJobBlip[thePlayer],getRootElement(),false) setElementVisibleTo(bsJobMarker[thePlayer],thePlayer,true) setElementVisibleTo(bsJobBlip[thePlayer],thePlayer,true) addEventHandler("onMarkerHit", bsJobMarker[thePlayer], givebsPay) end end function givebsPay(hitElement,_) if (getElementType(hitElement) == "player" and getElementData(hitElement,"AGJob2")== "busdriver" and isPedInVehicle(hitElement)) then --outputChatBox("first step") if (getElementData(source,"JobOwner") == getPlayerName(hitElement)) then --outputChatBox("second step") local vehicle = getPedOccupiedVehicle(hitElement) if (getElementData(vehicle,"JobOwner") == getElementData(source,"JobOwner" )) then setElementFrozen(vehicle,true) setElementFrozen(hitElement,true) outputChatBox("The passengers are getting down",hitElement,999,0,255) destroyElement(bsJobMarker[hitElement]) destroyElement(bsJobBlip[hitElement]) setTimer(givebsPayNow,3000,1,hitElement) else outputChatBox("Get back to your job vehicle!!!!",hitElement,0,246,255) end end end end function givebsPayNow(thePlayer) setElementFrozen(thePlayer,false) setElementFrozen(bsVehicle[thePlayer],false) givePlayerMoney(thePlayer,1500) showDaBusMarker(thePlayer) end function destroybs() if getElementData(source,"AGJob2") == "busdriver" then if isElement(bsVehicle[source]) then destroyElement(bsVehicle[source]) end if isElement(bsVehicleBlip[source]) then destroyElement(bsVehicleBlip[source]) end if isElement(bsJobMarker[source]) then destroyElement(bsJobMarker[source]) end if isElement(bsJobBlip[source]) then destroyElement(bsJobBlip[source]) end bsNumber[source] = nil end end addEventHandler("onPlayerQuit",getRootElement(), destroybs) addEventHandler("onVehicleExplode", getRootElement(), function() if getElementData(source,"AGJob2") == "busdriver" then local player = getPlayerFromName(getElementData(source,"JobOwner")) if isElement(bsVehicle[player]) then destroyElement(bsVehicle[player]) end if isElement(bsVehicleBlip[player]) then destroyElement(bsVehicleBlip[player]) end if isElement(bsJobMarker[player]) then destroyElement(bsJobMarker[player]) end if isElement(bsJobBlip[player]) then destroyElement(bsJobBlip[player]) end bsNumber[player] = nil setElementData(player,"AGJob2",nil) end end) addEventHandler("onVehicleStartEnter",getRootElement(), function(player,seat,jacked,door) if (getElementData(source,"AGJob2") and getElementData(source,"AGJob2")=="busdriver") then if (getElementData(source,"JobOwner") ~= getPlayerName(player)) then cancelEvent(true) outputChatBox("This is not your vehicle!!",player,144,0,50) end end end) addEventHandler("onElementDataChange",getRootElement(), function(dataName,oldValue) if getElementType(source) == "player" then if dataName == "AGJob2" then if oldValue == "busdriver" then if isElement(bsVehicle[source]) then destroyElement(bsVehicle[source]) end if isElement(bsVehicleBlip[source]) then destroyElement(bsVehicleBlip[source]) end if isElement(bsJobMarker[source]) then destroyElement(bsJobMarker[source]) end if isElement(bsJobBlip[source]) then destroyElement(bsJobBlip[source]) end bsNumber[source] = nil end end end end) جربه
    1 point
  20. That's great! It would be nice if the design of the community was similar to the one forum. Ideia:
    1 point
  21. السلام عليكم ورحمة الله وبركاته بسم الله والصلاة والسلام على رسول الله ، سيدنا محمد وعلى آلهِ وصحبهِ ومن والآه نبدأ شرحنا بالصلاة على النبي العربي الأُمي ، ونهنئكم بمُناسبة قدوم شهر الخير ، شهر رمضان المبارك اليوم شرحنا عن الكولشن شيب : ء 1- ما هي الكولشن شيب ؟ - هي أداة تستخدم لصناعة حقول او دوائر ثلاثية الأبعاد ، أو ثنائية الأبعاد 2- كيف شكلها بيكون على أرض الواقع ؟ - طبعاً لابُد ان اغلبنا لعب مهمات في لعبه جي تي إيه ، ولابد انه بالمراحل المتقدمة بدأ يشوف حارة سي جي تتقسم لعدة مستطيلات وكل مستطيل له لون معين ( اخضر ، اصفر ، بنفسجي ) ،ء او حتى يمكن شفتوه بسيرفرات حرب العصابات يوم تشوف الاحتلال كيف يبين شكل المنطقه بالرادار 3- ايش الفايدة منه ؟ - له عدة فوائد ، ممكن تستخدمه لإنشاء مناطق محمية من السلاح او السيارات او تسوي مناطق للإحتلال فيه ، إلى آخره 4- كيف اسويه ؟ - ممكن تسويه عن طريق البرمجه ، يعني تجلس تعدل بأرقيومنت صنع الكول شيب او تقدر تستخدم ذا المود وهو مود مفيد جدا ويساعدك اقرا صندوق الوصف على شان تستخدمه ColEditor https://community.multitheftauto.com/ind ... ls&id=3804 اما الآن نشرح الفانكشنات الخاصة بالكول شيب اولاً : انواع الكول شيب هن ٦ انواع , لكن بختار ال ٣ الرئيسيات والي إستخدامهن شائع 1- createColCircle هذا يصنع لك كول شيب دائري الشكل createColCircle ( float fX, float fY, float radius ) Arguments | شرح الارقيومنت : float fx : x إحداثي float fy : y إحداثي float radius : هذا نصف قُطر الدائدة ملاحظة : بالنسبة للإرتفاع ، الإرتفاع هنا لانهائي -------------------------------- 2- createColCuboid هذا يصنع لك متوازي المستطيلات createColCuboid ( float fX, float fY, float fZ, float fWidth, float fDepth, float fHeight ) Arguments | شرح الأرقيومنت : float fx : x إحداثي float fy : y إحداثي float fz : z إحداثي float fWidth : العرض float fDepth : العمق float fHeight : الإرتفاع -------------------------------- 3-createColRectangle هذا يصنع لك مستطيل createColRectangle ( float fX, float fY, float fWidth, float fHeight) Arguments | شرح الارقيومنت : float fx : x إحداثي float fy : y إحداثي float fWidth : العرض float fHeight : الإرتفاع -------------------------------- وكذا انتهينا من فانكشنات صنع الكول شيب الحين نشوف باقي الفانكشنات 1-isElementWithinColShape هذا يستخدم للتحقق ، إذا كان العنصر داخل الكول شيب isElementWithinColShape ( element theElement, colshape theShape ) Arguments | شرح الأرقيومنت : 1- element : هذا العنصر ، ممكن يكون لاعب ، سيارة . اوبجكت 2-colshape : هذا الكول شيب الي انت صنعته --------------------------------- 2-getElementsWithinColShape هذا يجيب لك العناصر الي داخل الكول شيب getElementsWithinColShape ( colshape shape, [ string elemType = nil ] ) Arguments | شرح الأرقيومنت : 1-colshape : الكول شيب الي صنعته 2-"elementType" : نوع الالمنت ، لاعب ، سيارة ، اوبجكت ، إلخ -------------------------------- وبس ، الحين نسوي مثال بسيط عن الكول شيب هذا المثال فيه للحماية ، اذا كان داخل الكول شيب ما يتضرر local CoR = createColRectangle ( 1432.9383 , 2334.34 , 24 , 24 ) addEventHandler("onClientPlayerDamage",root, function () if ( isElementWithinColShape ( localPlayer , CoR ) ) then cancelEvent() end end ) وفي النهاية ، إذا اصبت ف هذا من الله ، وإذا اخطأت ف هذا من الشيطان وسامحونا على ضعف التنسيق لاني شغال من الجوال تحياتي لكم لاتنسون تقييم الموضوع + كلمة شكر لو إستفدت من الموضوع مع خالص تمنياتي لكم بالتوفيق والنجاح تحياتي ، كووووور
    1 point
  22. السلام عليكم ورحمة الله وبركاته , حبيت اسويلكم موضوع شرح لكلمة local أولاً لوكال يعني شي لوكال على الفنكشن او الشروط مثل if elseif function الوكال يعني شي محلي على الفنكشن , اقصد مثلاً اذا تبي تختصر getPlayerMoney -- العثور على فلوس اللاعب أكيد راح تسويلها اختصار مثلاً money = getPlayerMoney(player) لا تحسب ان البلاير هنا شي مفروض , هذا فقط كـ مثال , لان البلاير يعتمد على الحدث على أية حال .. المهم : مثلاً حنا نبي نسوي اذا مات يعطيك فلوس addEventHandler("onPlayerWasted",root, -- عندما يموت اللاعب function() --[[ ال source في هالحدث هو اللاعب الذي مات ]] local money = getPlayerMoney(source) -- الحين الوكال راح يكون محلي على هالكود فقط setPlayerMoney(source,money+5) -- يزود فلوس اللاعب اللي مات 5 دولار end ) الوكال هنا راح يكون لوكال على ال function الي فوق مثل ما نشوف ما فهمت ؟ , اعطيك مثال آخر addEventHandler("onPlayerLogin",root, function() --[[ ال source في هالحدث هو اللاعب الذي دخل حسابه ]] if( getPlayerMoney( source ) == 5)then -- اذا فلوس اللاعب 5 --[[ الحين هذا لوكال على ال if اللي فوق v ]] local nass = "فلوسك 5 دولار" outputChatBox(nass,source) -- هنا حطيت سورس عشان النص يشوفه اللاعب اللي دخل فقط هذا اذا كان عنده 5 دولار elseif( getPlayerMoney( source ) == 10 )then -- آخر اذا , فلوس اللاعب اللي دخل 10 --[[ الحين هذا لوكال على ال elseif اللي فوق v ]] local nass = "فلوسك 10 دولار" outputChatBox(nass,source) end end ) الحين هنا لا تخاف لان nass لوكال يعني ماراح يكون فيه تشابه اسماء عشان هي لوكال على ال if فقط أي سؤال أي استفسار , لا تتردد في الرد هنا !! واتمنى ان اكون افدتكم وياليت لكل اللي مهو فاهم يسوي يرد هنا ويقول وش اللي ما فهمه بالتحديد واللي يبي يضيف شي على الشرح , يا هلا وسهلا انتظروني في شرح آخر
    1 point
  23. # السسلام عليكم ورحمة الله وبركاته ~ فـ بهذي الداتا تقدر تسوي اي شي تبيه Element data set / get حبيت اشرح عن الـ * واشياء تتعلق بها نبدأ بـ الشرح .... : # اول شي نتعرف على السينتكس حق الداتا Syntax bool setElementData ( element theElement, string key, var value [, bool synchronize = true ] ) var getElementData ( element theElement, string key [, inherit = true] ) توضضيح بسيط للارقمنات ... : element theElement = الألمنت اللي تبي تحط عليه الداتا string key = اسم الداتا .. وبأمكانك وضع اي اسم var value = وهي قيمة الداتا نفسها .. وبامكانك تحط قيمة الداتا اي قيمة بـ راسك او قيمة فعلية كـ انك تحط قيمة الداتا اسم اللاعب ولا اللاعب نفسه وتجيب اللاعب عبر الداتا # طيب الحين نتعرف على الداتا وش فاديتها فـ وش تسخدم # الدأتا : هي وظيفة لمساعدتك للتحقق من شرط ما وتسوي كودك + الداتا هي وهمية يعني مجرد ما اللاعب بخرج او يدخل فـ الداتا بتروح والداتا مهمة تفديك فـ اي شي تبغاه local vehicle = createVehicle ( id, x, y, z ) ---# قمنا بـ صنع سيارة جديدة setElementData( vehicle, "Anything", true ) ---# وضعنا الداتا على السيارة وقيمة الداتا ترو addCommandHandler( "GetDataVeh", function ( ) ---# امر جديد بـ الكونسل if ( isElement( vehicle ) ) then ---# نتحقق من وجود السيارة if not ( getElementData ( vehicle, "Anything" ) == true ) then ---# وهذي تعني عكس الشرط اللي مسويه يعني هنا يقول الشرط لو ما كانت الداتا ترو not نلاحظ وجود اول الشرط outputChatBox( "** Data Not Found" ) ---# لو كانت مو ترو يجي لم يتم ايجاد الداتا else ---- لو كانت الداتا قيمتها ترو . outputChatBox( "** Data Found" ) ---# يجي بالشات الداتا موجودة . end end end ) marker = createMarker ( .... ) addEventHandler ( "onMarkerHit", marker, function ( element ) if getElementType ( element ) == 'player' then -- نتحقق إن الشي إللي دخل الماركر الي هو لاعب if getElementData ( element, "ZA7F" ) == "MTA" then --- MTA اذا كانت قيمتها ZA7F نتحقق هنا من الداتا الي هي outputChatBox ( "لقد قمت بالدخول مسبقاً", element ) return else --- # MTA هنا نسوي لو مو مسوين الداتا الي ما ماخذاة قمية setElementData ( element, "ZA7F", "MTA" ) --- # عشان ما يستخدم الماركر مرة ثانية MTA هنا نسوي الداتا قيمتها givePlayerMoney ( element, 100 ) -- نعطي اللاعب 100 end end end ) مثألين بسيطين للتوضيح اكثر مع الشرحح ... : addEventHandler ( "onClientMarkerHit", marker, function( element ) --- حدث دخول الالمنت للماركر if ( element == localPlayer ) then --- نتحقق من الشي اللي دخل هل هو لاعب setElementData ( element, "NamePlayer", getPlayerName( element ) ) --- نحط داتا للالمنت اللي دخلت قيمتها اسم اللاعب end end ) addEventHandler ( "onClientMarkerLeave", marker, function( element ) --- حدث الخروج من الماركر if ( element == localPlayer ) then --- نتحقق من الشي اللي خرج . if ( getElementData( element, "NamePlayer" ) == getPlayerName( element ) ) then --- نتحقق انه قيمة الداتا اللي على اللاعب اللي خرج انها ع اسمه setElementData ( element, "NamePlayer", nil ) --- لا شي , بدون قيمة ذذ nil نحط قيمة الداتا للاعب اللي خرج end end end ) .... true - false طبعأ ملأحظين انه بـ اخر مثالين قيمة الداتا هي اسم اللاعب .. يعني مو ضروري تكون قيمة الداتا . ممكن تكون قيمةة الداتا هي اللاعب نفسه .. فـ بامكانك انك تجيب اللاعب من الداتا _ يعني تقدر تحط قيمة الداتا اي شي تبيه وفي شي مهم حبيت اوضحه .. انه يمديكـ تحفظ اكثر من قيمة بالداتا كيف ؟ بالتيبل يكون قيمة الداتا تيبل مثال بسيط ... : addCommandHandler ( "getPosToData", function ( ) --- # اضافة امر جديد للكونسل if ( getElementData ( localPlayer, "TablePos" ) ) then --- # التحقق من وجود الداتا return outputChatBox ( "Your Position In Data"..unpack ( getElementData ( localPlayer, "TablePos" ) ) ) --- # لو موجودة نسوي مخرج شات ونجيب الاحداثيات --- # طبعا استخدام ان باكـ .. وظيفتها تجيب القيم كلها بالترتيب من الجدول وقيمة الداتا ذي جدول else --- # لو كانت الداتا موب موجودة local x, y, z = getElementPosition ( localPlayer ) --- # جلبنا احداثيات اللاعب setElementData ( localPlayer, "TablePos", { x, y, z } ) --- # سوينا المنت داتا للاعب قيمتها جدول والجدول به احداثيات اللاعب end --- # اغلأق if end ) --- # اغلا الفنكشن واغلاق قوس الحدث موب ضروري استخدم ان باكـ .. بامكانك تسوي لوب بس ملاحظة مهمة وهذا ايضضضا .. : CPU فـ استخدم الداتا ياخذ من الـ .. لا تستخدمها الا للضرورة . ووظيفته بسيطة جدا انه وقت الداتا تتغير onElementDataChange : طبعأ مع الداتا يوجود حدث خاص بها وهو Parameters string theName, var theOldValue نلاحظ انه في عندنا 2 بارتمنت .. الاول هو اسم الداتا اللي تغير _ والثاني قيمة الداتا القديمةة مع هذأ الحدث لجلب القيمة الجديدة للداتا getElementData البعض يسال انه طيب والقيمة الجديدة للداتا ؟ .. تقوم بأستخدام Global parameters source: The source of this event is the element whose element data changed client: The client global variable is set to the client that called setElementData, or nil if it was called on the server. sourceResource: The resource which changed the element data. (Only works in versions above 1.3.4-5937) .. هذي الكتأبات مهمة جدأ .. نشرحها سطر سطر > اول سطر يقول سورس هذا الافنت وش هو ؟ هو الالمنت اللي الداتا عليه وتغيرت _ ممكن يكون لاعب - سيارة الخ : وهذا ليس خاص بـ الحدث هو موجود بـ اي مكان بس له وظيفة بـ لو تستخدمه بـ هذا الحدث وظيفة مختلفة وهي client السطر الثاني وهو ما يسمى بـ لو تقوم بأستخدامه تجيب اللاعب اللي غير الداتا .. او الجهة اللي غيرت الداتا ذذ Only works in versions above 1.3.4-5937 السطر الثالث بسيط جدأ .. هو عبارة عن السكربت اللي فيه الداتا هذي اللي تغيرت > نلاحظ حاط بين قوسين يعني هذي الخاصية تعمل على اصدار 5937-1.3.4 وما فوق Cancelling This event cannot be cancelled using cancelEvent. To reverse the effect, use setElementData with the old value. setElementData بس تقدر تكنسله بـ طريقة مختلفة بـ استخدام cancelEvent وش يقول هنا ؟ .. هنا يقول ما تقدر تكنسل الحدث بـ استخدم مثال بسيط للفهم اكثر .. : addEventHandler( "onElementDataChange", root, function( dataName, OldValue ) ----# اضافة حدث تغير الداتا مع تعريف البارتمنت الاثنين if ( dataName == "Anything" ) then ----# Anything نتحقق من اسم الداتا اللي تغيرت هل هي if ( source and getElementType( source ) == "vehicle" ) then ----# نتحقق من السورس وانه نوع السورس سيارة setElementData( source, dataName, oldValue ) ----# قمنا بوضع قيمة الداتا اللي تغيرت بـ القيمة القديمة يعني ما تغيرت end end end ) متعلق بالمثال اللي بأول الشرح onElementDataChange طبعا نسوي مثال بسيط عن addEventHandler( "onElementDataChange", root, function( dataName, OldValue ) ----# اضافة حدث تغير الداتا مع تعريف البارتمنت الاثنين if ( dataName == "Anything" ) then ----# Anything نتحقق من اسم الداتا اللي تغيرت هل هي if ( source and getElementType( source ) == "vehicle" ) then ----# نتحقق من السورس وانه نوع السورس سيارة local Nv = getElementData( source, dataName ) ----# قمنا بجلب قيمة الداتا الجديدة outputChatBox( data.." ** Has Been Change From "..OldValue.." To "..Nv, root, 255, 0, 0, true ) ----# نقوم بـ اضهار رسالة للكل ب اسسم الداتا والقيمة القديمة والجديدة end end end ) وظيفته ازالة الداتا عن الالمنت : removeElementData طبعا بعد ما انتهينا من الحدث هذا .. في اخر شي فنكشن يتعلق بـ الداتا وهو bool removeElementData ( element theElement, string key ) element theElement, string key = الالمنت اللي بتشيل منه الداتا , اسم الداتا ممثال بسيط .. : addCommandHandler( "RemoveMyData", function( player,_,data ) ---- # اضافة امرة للكونسل وتعريف البلير ونسوي فراغ بين الامر والداتا اللي يكتب اسمها if ( data ) then ---- # نتحقق من كتابته لاسم الداتا if ( getElementData( player, tostring( data ) ) ) then ---- # نتحقق من وجود الداتا على اللاعب اللي كتب الامر if ( getElementData( player, tostring( data ) ) ~= nil ) then ---- # او ما لها وجود او تعني لأ شي nil نتحقق انه الداتا قيمتها مو removeElementData( player, tostring( data ) ) ---- # نسوي ازالة للداتا اللي كتبها end end end end ) معلومة مهمة : اخر حد للاحرف 31 حرف للمفتاح # # واخر شي اقول انه الداتا سهلة جدا .. ومفيدة بـ اشياء كثيرة واكيد بـ تحتاجها يومأ ما . والسسلأم
    1 point
  24. السلام عليكم ورحمة الله وبركاته بسم الله الرحمن الرحيم في هذا الدرس سنتعرف على اللغة وماذا نحتاج طبعا لن اضع دروس تخص ام تي اي بل باللغة http://www.lua.org/ : الموقع http://www.lua.org/demo.html : وتجربة الأمثلة س - ماهي لغة لوا وماهي فوائدها لُوا هي لغة برمجة متعددة النمط، صممت لتعمل كلغة برمجة نصية، مع كون الدلالية الممتدة هدفاً رئيسي. تعني لُوا القمر بالبرتغالية. تشتهر لوا بأن لها واجهة برمجة سي سهلة وقوية معا. أنشأ هذه اللغة فريق من المبرمجين البرازليين سنة 1993. wikipedia : المصدر ترقبونا بالدرس الثاني وراح يكون عن بعض الاساسيات
    1 point
  25. مشكور تيتي ع الشرح الرائع .. وهذا مثال آخر addEventHandler("onPlayerLogin", root, -- حدث تسجيل اللاعب function() -- الفنكشن local login = "Welcome Back Mr !" -- لوكال إظهار كلام بالشات عند الدخول local give = getPlayerMoney(source) -- لوكال إعطاء اللاعب فلوس عند الدخول outputChatBox(login,source) -- إظهار كلام بالشات setPlayerMoney(source,give+1000) -- يأخذ عدد فلوس اللاعب ويزيد عليها 1000 end -- نهاية الفنكشن ) -- نهاية قوس الحدث
    1 point
  26. شرح كااافي ووافي كفيت وفيت ي الغلا واصـل ابدااعك ي تيتي ودائما مبدع في شروحاتك
    1 point
×
×
  • Create New...