Jump to content

Tete omar

Members
  • Posts

    3,267
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by Tete omar

  1. الموضوع سهل جداً, ما عليك بس غير انك تحسب وتسوي تايمر الحين الثانية ب 1000 في التايمر يعني 60000 = دقيقة والساعة فيها 60 دقيقة يعني احسب كذا 22 x 60 x 60000 = 79200000 يعني 22 ساعة ... مع وظيفة setTimer وما ابخل عليك بمثال .. تفضل : setTimer( function() outputChatBox("لقد مرت 22 ساعة من الآن", root, 255, 255, 0) end, 79200000, 0 ) server side هالكود رح يطلع رسالة بالشات كل 22 ساعة كذا : لقد مرت 22 ساعة من الآن
  2. getPlayersByData هذه الوظيفة تجيب اللاعبين الذين عندهم الداتا المحددة في الفنكشن Syntax: table getPlayersByData ( data name ) Required arguments: data name: اسم الداتا الذي تريد ان تجيب اللاعبين منها Returns: اذا اسم الداتا غير صالح او لا يوجد لاعبين بالجدول false ترجع جدول يحمل اللاعبين الذين عندهم هذه الداتا Code : function getPlayersByData(dataName) if dataName and type(dataName) == "string" then local players = getElementsByType("player") local playersTable = {} for i,v in ipairs(players) do if getElementData(v, dataName) then table.insert(playersTable, v) end end if #playersTable == 0 then return false end return playersTable else return false end end :مثال للكلنت هذا المثال يخرج في الشات كل اللاعب عنده الداتا المعينة function gettingData(cmd, dataName) if not dataName then return outputChatBox("[syntax] /getData [data name]", 255) end local players = getPlayersByData(dataName) if players then for i,v in ipairs(players) do outputChatBox(getPlayerName(v) .. " has '" .. dataName .. "' data.") end else outputChatBox("Invalid data name or no player has this data name!", 255, 0, 0) end end addCommandHandler("getData", gettingData) :الاستخدام /getData [اسم الداتا] :مثال /getData money
  3. سلام عليكم, عندي اضافة بسيطة, وهي ايفنت لمن يخلص وقت الكاونت داون addEvent("onCountDownEnd") function GuiSetTextCountDown ( guiElement , Text, count ) if not guiElement or not Text or not tonumber(count) then outputDebugString("Bad arugment @ GuiSetTextCountDown ",0,255,0,0) return end guiSetText ( guiElement ,Text..' '..tonumber( count ) ) setTimer( function ( ) -- if not tonumber ( count ) then return false end if count <= 0 then triggerEvent("onCountDownEnd", localPlayer) return end count = count -1 guiSetText ( guiElement ,Text..' '..tonumber( count ) ) end , 1000 ) end والتحقق الي في اول التايمر ماله فايدة ليش؟, لاني تحققت منها فوق اوول شي + اضافة حدث عند انتهاء الكاونت داون مثال addEventHandler("onCountDownEnd", root, function() outputChatBox("انتهى وقت العد التنازلي") end )
  4. مشكور, بس كنت افضل انك تسويها عن طريق ال model لان الاسم بعض الاوقات طويل
  5. الخطأ اسميه خطأ اذا كان يآثر على توقعاتك بالسكربت, لاكن اذا كان خطاء طبيعي ما يسوي اي شي, ما اسميه خطأ
  6. صحيح كلامك لاكن مو معنى كذى اني ادقق في الاشياء الي اتحقق منها مرة, يعني مثلاً عندك الكود ذا function onHit(hitElem) if getElementType(hitElem) == "player" then if hitElem then if getElementType(hitElem) ~= "vehicle" then -- code end end end end addEventHandler("onMarkerHit", marker, onHit) الحين كل هالتحققات مالها اي فايدة, فالافضل تختصرها على تحقق واحد يسوي كل شي .. تخيل اللاعب لمس الماركر وفصل النت عنده او خرج من السيرفر رآح يقلكـ Bad Argument @ getElementPosition هذا احتسبه خطاء طبيعي وما يسوي شي يعني ما يآثر على السيرفر .. مو لازم يعني تخلي الدي بق حقك نظيف 100% ثانياً اذا حطيت مليون توقع في راسك ما رح تسوي اي شي .. ورح تمل بسرعة ثالثاً الي تتكلم عنه ذا شي نادر جداً لحدوثه
  7. نسيت addEventHandler('onMarkerHit',marker, function ( player ) if ( getElementType ( player ) == ( 'player' ) ) then setTimer( function ( player ) if ( ( player ) and ( isElement ( player ) ) ) then local x,y,z = getElementPosition ( player ) createExplosion ( x,y,z,6 ) end end,3500,1,player) end end ) امم اعتقد مو لازم تسوي مليون تحقق, لان اكتشاف الداخل رح يكون سريع جداً ثانياً كثرة التحققات رح تسبب لاق في السيرفر خصوصاً اذا كانت في جانب السيرفر addEventHandler('onMarkerHit', marker, function ( player ) if ( getElementType ( player ) == ( 'player' ) ) then setTimer( function ( player ) local x, y, z = getElementPosition ( player ) createExplosion ( x,y,z,6 ) end, 3500, 1, player ) end end ) اعتقد كذا يكون افضل
  8. لا انا ما اتكلم عن bind انا اتكلم عن كلمة تكتبها بعد المفتاح بعد bind في اف 8 وهي chatbox مثل كذا : bind i chatbox theBest i اضغط وتشوف النتيجة
  9. كل واحد وعنده معلوماته, يعني انا مثلاً اذا سآلتك سؤال بالبرمجة اخليك تفكر فيه الين الصباح وحتى ما تجيب نتيجة, وانت نفس الشي بالاضافة الى ان فيه ناس كثيرة ما يعرفون هالطريقة .. جات علي انا؟ ياليت تفكر في الي تقوله بعد كذا ..
  10. بعد Say اكتشفت انك يمديك تسوي اي كلمة بدل مثل كذا bind i chatbox ولكم
  11. السلام عليكم ورحمة الله وبركاته ما اطول عليكم, اكتب باف 8 bind اي زر تبيه chatbox vip مثلاً bind i chatbox vip رح تلاحظ شي عجيب عندما تضغط على هذا الزر, جربها وشوف النتايج بنفسك
  12. I guess you have to modify the TXD file of the custom car or use shader.
  13. I think you need to recheck your image formation, because sometimes i get this problem.
  14. عندك الويكي العربي او الانجليزي وعندك قسم دروس في البرمجة اي سؤال تبي تسآله اسأله في قسم البرمجة وان شاء الله يردوا عليك
  15. أي شي تبي تعرفه كلم اي مشرف او اي عضو له فترة بالمنتدى PM رسالة خاصة
  16. pairs او ipairs هي وظايف تستخدم لاخراج او لاعادة الكود لكل مرة حسب الاشياء الي بالجدول مثلاً عندك ipairs هذي تخرج كل شيء واحد بالجدول يعني مو معرف بشيء داخل الجدول مثل ["test"] = "ok" مثال local rybak = {"ok", "hi", "hello"} for i,v in ipairs(rybak) do outputChatBox("number of the item: " .. i .. ", item name: " .. v) end هذا رح يطلع بالشات 3 نصوص مثل كذا number of the item: 1, item name: ok number of the item: 2, item name: hi number of the item: 2, item name: hello اما pairs فهذي تستخدم اذا كان في شيء معرف بشيء مثل local rybak = {["Hi"] = "Hello", ["Bye"] = "Bye"} الحين كل فردين معرف على انه شي واحد اساساً كلمة pairs تعني ازواج, لا تحسب ازواج متزوجين ذذ, لا ازواج يعني شيئين, شيئين مثال : local rybak = {["Hi"] = "Hello", ["Bye"] = "Byee", ["ok"] = "Alright"} for i,v in pairs(rybak) do outputChatBox("key: " .. i .. ", value: " .. v) end هذا رح يطلع بالشات 3 مرات في 3 نصوص كذا : key: Hi, value: Hello key: Bye, value: Byee key: ok, value: Alright ان شاء الله فهمت
  17. OH, lol sorry, i forgot to remove it, try this: local x, y = guiGetScreenSize() dxDrawRectangle(x*(94.0/1360), y*(677.0/768), x*(135.0/1360), y*(28.0/768), tocolor(3, 20, 112, 255), true) dxDrawRectangle(x*(0.0/1360), y*(612.0/768),x*(94.0/1360), y*(129.0/768), tocolor(3, 20, 112, 255), true) dxDrawRectangle(x*(94.0/1360), y*(612.0/768), x*(136.0/1360),y*(29.0/768), tocolor(3, 20, 112, 255), true)
  18. مو لازم نفس نفس الخصائص, سويها على قد ما تقدر بس المهم تفهم لها
  19. Try this: local x, y = guiGetScreenSize() dxDrawRectangle(fixSimsDXRes(x*(94.0/1360), y*(677.0/768), x*(135.0/1360), y*(28.0/768), tocolor(3, 20, 112, 255), true) dxDrawRectangle(fixSimsDXRes(x*(0.0/1360), y*(612.0/768),x*(94.0/1360), y*(129.0/768), tocolor(3, 20, 112, 255), true) dxDrawRectangle(fixSimsDXRes(x*(94.0/1360), y*(612.0, x*(136.0/1360),y*(29.0/768), tocolor(3, 20, 112, 255), true)
  20. لوحة lil_Toady هو لي مسويها ويعرفلها انا افضل انك تسوي لوحة ادمنية جديدة تفهملها ونظام ادمن جديد على اساس انك تحمي سيرفرك بالاضافة انك رح تفهملها اكثر من فهمك للوحة توادي لوحة توادي الكل يعرفلها والكل يفهم لها وعارفين كل شي عنها مثل كيف تخرب السيرفر عن طريقها او كيف تحذف سكربت الخ ..
  21. Ok, why don't you define variables instead of a fixing function?, like this: local sW, sH = guiGetScreenSize() local posX, posY, hX, wY = sW*(r1/1360), sH*(r2/768), sW*(r3/1360), sH*(r4/768)
  22. Sorry, the pc im currently using can't run gtasa properly, so im telling you that if you want it to be fit ONLY for your resolution, then it won't be fit for other resolutions ... you should calculate it so it fits all resolutions.
×
×
  • Create New...