-
Posts
621 -
Joined
-
Last visited
-
Days Won
8
Everything posted by MrKAREEM
-
local screenW, screenH = DGS:dgsGetScreenSize() Wnd = DGS:dgsCreateWindow((screenW - 622) / 2, (screenH - 497) / 2, 622, 497, "Silah Panel", false) DGS:dgsWindowSetSizable(Wnd, false) DGS:dgsSetProperty(Wnd,"textColor",tocolor(255, 0, 0, 255))
-
طيب المفروض اني لا اعطي اكواد جاهزة لكن انت قلت عاوز اكواد مع شرح في الحالة دي حبيت اعملهولك كامل ممكن يفيدك ويفيد غيرك اذا شاف الموضوع الكلينت وفيه شرح --[[ [MrKAREEM] [client] بسم الله الرحمن الرحيم --]] local screenW, screenH = guiGetScreenSize() -- احضار احداثيات شاشة اللاعب -- بالنسبة التصميم اللي تحت لو مش عارف ازاي تصمم لوحة الخ لازم مود اسمه جوي ايديتور -- addEventHandler("onClientRender", root, function() if getElementData(localPlayer,'FinishedPoints') then return end -- لو كان معه داتا انه خلص المهمة لن يظهر الشريط اللي فوق حق الكيلات الخ -- local data = getElementData(localPlayer,'MyPoints') or 0 -- هنا يجيب نقاط اللاعبين من الداتا حقت النقاط واذا اللاعب ليس عنده داتا يكتب صفر مكان النقاط -- dxDrawLine((screenW * 0.3997) - 1, (screenH * 0.0143) - 1, (screenW * 0.3997) - 1, screenH * 0.0638, tocolor(0, 0, 0, 255), 1, false) dxDrawLine(screenW * 0.6010, (screenH * 0.0143) - 1, (screenW * 0.3997) - 1, (screenH * 0.0143) - 1, tocolor(0, 0, 0, 255), 1, false) dxDrawLine((screenW * 0.3997) - 1, screenH * 0.0638, screenW * 0.6010, screenH * 0.0638, tocolor(0, 0, 0, 255), 1, false) dxDrawLine(screenW * 0.6010, screenH * 0.0638, screenW * 0.6010, (screenH * 0.0143) - 1, tocolor(0, 0, 0, 255), 1, false) dxDrawRectangle(screenW * 0.3997, screenH * 0.0143, screenW * 0.2013, screenH * 0.0495, tocolor(20, 42, 104, 150), false) dxDrawText("Kills : ("..data.." / 100)", (screenW * 0.4078) - 1, (screenH * 0.0195) - 1, (screenW * 0.5930) - 1, (screenH * 0.0534) - 1, tocolor(0, 0, 0, 255), 1.70, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("Kills : ("..data.." / 100)", (screenW * 0.4078) + 1, (screenH * 0.0195) - 1, (screenW * 0.5930) + 1, (screenH * 0.0534) - 1, tocolor(0, 0, 0, 255), 1.70, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("Kills : ("..data.." / 100)", (screenW * 0.4078) - 1, (screenH * 0.0195) + 1, (screenW * 0.5930) - 1, (screenH * 0.0534) + 1, tocolor(0, 0, 0, 255), 1.70, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("Kills : ("..data.." / 100)", (screenW * 0.4078) + 1, (screenH * 0.0195) + 1, (screenW * 0.5930) + 1, (screenH * 0.0534) + 1, tocolor(0, 0, 0, 255), 1.70, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("Kills : ("..data.." / 100)", screenW * 0.4078, screenH * 0.0195, screenW * 0.5930, screenH * 0.0534, tocolor(255, 255, 255, 255), 1.70, "default-bold", "center", "center", false, false, false, false, false) -- فوق قمنا باضافة المعرف داتا لكي يضع النقاط الخاصة باللاعب -- end ) والسيرفر ويوجد به شرح ايضا --[[ [MrKAREEM] [server] بسم الله الرحمن الرحيم --]] function isFinishedPoints(player) -- عملت وظيفة خفيفة يشوف لو اللاعب مخلص المهمة ام لا باستخدام داتا -- if not getElementData(player,'FinishedPoints') then -- لو اللاعب ليس معه داتا انه مفنش المهمة -- return false -- يعطي نتيجة خطأ -- end -- انهاء التحقق اللي فوق -- return getElementData(player,'FinishedPoints') -- وهنا يعطي نتيجة الداتا أي بالأصح انه مفنش المهمة اذا كان معه الداتا -- end -- انهاء الفنكشن -- addEventHandler ( 'onPlayerQuit', root, -- حدث عند خروج اللاعب نحتاجه لحفظ نقاط اللاعب -- function ( ) if isFinishedPoints(source) then return end -- لو اللاعب مفنش المهمة لا يحتاج الحدث نهائيا فيلغي له الحدث -- local data = getElementData(source,'MyPoints') -- احضار نقاط اللاعب -- local accountP = getPlayerAccount(source) -- احضار حساب اللاعب -- if (accountP) and not isGuestAccount (accountP) then -- تحقق اذا يوجد حساب او اذا ما كان زائر حتي لا يحدث اخطاء عند وضع الاكونت داتا -- if not data then setElementData(source,'MyPoints',0) end -- اذا لا يوجد داتا للاعب فنضع له داتا بنقاط صفر -- setAccountData (accountP, 'savePoints', getElementData(source,'MyPoints')) -- نضع نقاط اللاعب في الاكونت داتا حتي نقدر نسترد النقاط عند تسجيل دخوله -- end -- انهاء تحقق الأكونت -- end) -- انهاء فنكشن واغلاق قوس الحدث -- addEventHandler ( 'onPlayerLogin', getRootElement(), -- حدث عند تسجيل دخول اللاعب -- function(_, account) -- طبعا في هذا الحدث يعطيك الحساب السابق والحساب الحالي واحنا هنحتاج الحساب الحالي في الحدث -- if (account) then -- نتحقق من المعرف أكونت لعدم حدوث مشاكل في الديبق -- local points = getAccountData(account, 'savePoints') -- يحضر النقاط المحفوظة في الاكونت داتا الخاصة باللاعب اللي سجل -- setElementData(source,'MyPoints',points) -- وهنا نعطي الداتا للاعب بالنقاط اللي اخذناها من شوية -- end -- اغلاق تحقق الاكونت -- end) -- اغلاق الفنكشن وقوس الحدث -- addEventHandler('onPlayerWasted',getRootElement(), -- عند مقتل شخص سيعمل هذا الحدث -- function ( _, killer ) -- طبعا يحتوي الحدث علي 4 اشياء انا مش محتاج غير ثاني شئ وهو اللي قتل اللاعب -- if not ( killer ) then return end -- اذا لا يوجد أحد قام بقتل اللاعب فهيلغي الحدث -- if isFinishedPoints(killer) then return end -- اذا كان اللاعب قد انهي المهمة فيلغي الحدث -- if not getElementData(killer,'MyPoints') then setElementData(killer,'MyPoints',0) end -- لو اللاعب ليس معه داتا يعطيه داتا بصفر نقاط ما علينا سيزداد في الأسفل -- setElementData(killer,'MyPoints',getElementData(killer,'MyPoints') + 1) -- هنا طبعا اذا اللاعب مكملش 100 نقطة يعطي اللاعب نقطة زيادة علي نقاطه -- if getElementData(killer,'MyPoints') == 100 then -- اذا كانت نقاط اللاعب تساوي 100 -- setElementData(killer,'MyPoints',false) setElementData(killer,'FinishedPoints',true) -- يحذف نقاط الداتا الخاصة به ويضيفله داتا انه مفنش -- outputChatBox('$ مبروك قمت بانهاء الانجاز بنجاح وحصلت علي 100 ألف',killer,0,255,0) -- رسالة -- givePlayerMoney(killer,100000) -- اعطاء اللاعب 100 الف -- return end -- يلغي اللي بعده لان خلاص مش هيحتاجه -- outputChatBox('!('..getElementData(killer,'MyPoints')..'/100) : قمت بقتل شخص وارتفعت نقطة واصبحت نقاطك',killer,255,255,0) -- رسالة تظهر لك نقاطك بعدما قتلت الشخص -- end) -- قفل الفنكشن مع قوس الحدث -- addCommandHandler('mypoints', -- هنا شئ بسيط كنت احتاجه في اكمال السكربت لكن اعتقد ممكن تحتاجه عند كتابة الكلمة اللي بين علامة التنصيص -- function ( playerSource, commandName ) -- الاوامر في السيرفر يجب كتابة 2 ارجمنت وهو اللاعب والكلمة او الأمر واضافة اشياء اخري اذا أردت -- if not playerSource then return end -- اذا لا يوجد لاعب الغي الحدث هذه عشان الديبق فقط لا يجيك اخطاء -- if getElementData(playerSource,'FinishedPoints') then return outputChatBox('لايوجد نقاط قمت بانهاء المسابقة',playerSource,255,255,0) end -- اذا كان اللاعب مفنش المهمة يجيه الرسالة اللي امامك ويلغي الحدث -- if not getElementData(playerSource,'MyPoints') then return outputChatBox('لا تملك نقاط لعرضها',playerSource,255,0,0) end -- اذا لا يوجد داتا الخاصة بالنقاط للاعب فيلغي ويعطيه رسالة -- outputChatBox('!لديك : ('..getElementData(playerSource,'MyPoints')..'/100) نقطة',playerSource,255,255,0) -- وهنا رسالة تعطيه كم نقطة لديه من مئة باستخدام الداتا -- end) -- انهاء الفنكشن اضافة القوس لاغلاق الحدث -- الأكواد المستخدمة GetElementData SetElementData setAccountData getAccountData GivePlayerMoney onPlayerWasted onPlayerLogin يمكنك معرفة عدد نقاطك ايضا باستخدام امر باف 8 mypoints
-
انت هتجيب مقاسات شاشتك زي مشرحت فوق يعني لو شاشتك مثلا 1024x768 فهبدا عالآلة الحاسبة احسب على اساس دا وفي أي زر او تكست او شئ مثل دا يكون موجود ٤ احداثيات المفروض يمين شمال فوق تحت بس خلينا نبسطها الأربعة هناخد اول اتنين منهم اول واحدة هنقسمها على أول واحدة من مقاس الشاشة يعني اول رقم / 1024 والتانية مع التانية وكدة نكون خلصنا اول اتنين من الاربعة وفاضل اتنين خد الاتنين اللي فاضلين واحسبه بنفس الطريقة الاولي الأول مع الأول والثاني مع الثاني بعد متطلع كل ناتج من القسمة حطه مكان الرقم القديم هيطلعلك مثلا زي الكلام دا كمثال 0.75 بعد مبتحط الأرقام الجديدة لازم تعمل ضرب لاحداثيات الشاشة الخاصة باللاعب ودي بتبقى بالنظام دا x, y = guiGetScreenSize كمثال يعني هتقوم جايب الاربع أرقام الجديدة اول رقم لو كان مثلا 0.75 فهتعمله ضرب مع x هيكون كدة x*0.75 وتخليها زي ما هي في الكود مينفعش آلة لان دي اللي هتظبط الاحداثيات لكل شاشات هتيجي على تاني رقم الثاني مع الثاني يعني لو كان مثلا 0.45 هيبقي كدة y*0.45 ومتبقي رقمين من ال ٤ احداثيات هتعمل بنفس الطريقة اللي فاتت الأول مع الاول الثاني مع الثاني احفظ السكربت وجربه على كل الشاشات وخلاص ظبطت
-
ممكن كان قصده منظور بس غلط ?
-
نظام تصميم الفري روم غير التصميم العادي بالنسبة لاحداثيات الشاشة والخ عملت شرح عنها في الموضوع دا
-
i think u mean that ? EngineSetModelLODDistance
-
صراحة اهنيك سكربت منظم واحترافي بالتوفيق لك وانشاء الله في ازدياد دائما أخي لو شفت العاب باتل رويال هتلاقي ان دا اسمه firstperson أو منظور الشخص الأول ?
-
استعمل الامثلة اللي طرحها الأخ اوسكار وزود عليهم اللآتي ظهور / اخفاء اللوحة GuiSetVisible بالنسبة لقفل النافذة لو هتبقي بزر تحتاج دا OnClientGUIClick من أجل البوزيشن المختلف يوجد بها أمثلة لماث راندوم Table.random بالنسبة للاطفاء اعتقد طفاية الحريق تطفي GiveWeapon (server فقط تحتاج تريقر) بالنسبة للفلوس GivePlayerMoney حدث ركوب السيارة OnClientVehicleEnter (client) OnPlayerVehicleEnter (server) التايمر SetTimer اذا حبيت تنهي التايمر KillTimer بالنسبة اذا انتهي الوقت او ما انتهي واللاعب طفي الحريق اعتقد مفيش طريقة تعرف لو لاعب طفي بيها الحريق او لا بس تقدر تشوف لو كانت النار موجودة لسة ام لا باستخدام IsElement بالتوفيق
-
OnDgsMouseDown OnDgsMouseClickUp DgsSetVisible KillPed
-
بعد ال 100 ؟ يعد من الصفر ثاني ولا يكمل كل ما يوصل 100 ؟
-
ملهاش لازمة الحسابات أفضل من رأي هو هيتعب في الحساب في الأول بس مع الوقت الموضوع هيبقي سهل ولو عالنص بالنص جوي ايديتور يعملها بس هو عاوزها فوق الخطريطة فهيحتاج حسابات ولو لاحظت في الكود اللي هو منزله اصلا مستخدم طريقة الحساب dxDrawText("Points Kills : "..( getElementData(localPlayer,"PointsKill") or 0 ), screenW * 0.0675, screenH * 0.7067, screenW * 0.2087, screenH * 0.7400, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "top", false, false, false, true, false) معظم الناس تستخدم طريقة الحساب أسهل + تعطيك مقاسات دقيقة وتظبط لكل الشاشات وهي مهمة أكثر في اللوحات الدي اكس الجوي ايديتور بيعملها بس العيب ان مفيش غير يمين وشمال وبالنص
-
EngineLoadCOL EngineReplaceCOL
-
انا عن نفسي استخدم الحسابات اليدوية يوجد لها شرح هنا GuiGetScreenSize كمثال هتفتح جوي ايديتور صمم اي شئ تجريبي سواء دي اكس أو جوي تظبط الاثنين المهم في الويكي مصممين تكست dxDrawText(tostring "Hello World!",684.0,731.0,732.0,766.0,tocolor(0,255,255,175),1.0,"bankgothic","left","top",false,false,false) اهو عملت تكست او زر او اي شئ باحداثيات عادية حاليا لو حفظت وشغلت هتظبط علي شاشتك أنت فقط فعشان تظبط عند الكل هتعمل ايه ؟ هتبدا تحسب بالطريقة دي اول شئ هتكتب مثلا احداثيات شاشتك في ورقة او اي حاجة عشان تحسب علي اساس دا كمثال الاحداثيات : (1024x768) بعد كدة نروح لاحداثيات التيكست فيه 4 خانات الأول بيتقسم مع الأول وبعدين الثاني مع الثاني وبعدين الأول مع الأول والثاني مع الثاني بسهلها عليكـ كمثال الأول في التيكست هو 684.0 فهتبقي الحساب بالشكل دا (684/1024 = 0.668) الناتج اللي يطلعلك تحطه مكان السابق يعني كان 684 هتخليه الناتج الجديد وهو 0.668 نيجي علي تاني قسم رقم 731.0 هنقسم مع التاني في احداثيات شاشتك فهتكون كدة (731/768 = 0.952) وطبعا هتحط 0.952 مكان 731.0 كدة خلصنا اول جزئين من احداثيات التكست وباقي كمان جزئين بنفس الطريقة اللي عملتها مع اول جزئين هتعملها مع تاني جزئين الاول مع الاول والثاني مع الثاني بحيث؟ (732/1024 = 0.715) وهتغير القديم بالجديد والاخيرة نفس الشئ هتاخدها مع القسم الثاني وهتكون كدة (766/768 = 0.997) بعد ما حطينا الأرقام هنعمل ايه ؟ هنحط كود احداثيات الشاشة local sWidth,sHeight = guiGetScreenSize() dxDrawText("Hello World!",sWidth*0.668, sHeight*0.952, sWidth*0.715, sHeight*0.997,tocolor(0,255,255,175),1.0,"bankgothic","left","top",false,false,false) وهتيجي قبل كل رقم في ال 4 اقسام مرة sWidth* ومرة sHeight* زي ما في الكود فوق بعد كدة تحفظ وتشغل المود تاني وجرب تدخل باي احداثيات شاشة اخري هتلاقي انها ظبطت واشتغلت مع كله الفكرة مش صعبة اوي الشرح الكتير عشان احاول علي قد ما اقدر اوصلك المعلومة حاول انك تحسب ورا الشرح وتطلع الناتج عشان تتاكد وتحطه مكان الارقام القديمة وتضع الاحداثيات وهتظبط معك عن نفسي احب الطريقة اللي تعطيني الحل من اول مرة مش بحب اجرب في أرقام وفي الاخر مش بتظبط مع كله فالطريقة دي احسن طريقة بالنسبة لي بالتوفيق
-
ابحث عن ملف بالاسم دا واستخرجه vgncarshade1.col المهم الموقع اللي بجيب منه اسم الملفات بالايد https://dev.prineside.com/en/gtasa_samp_model_id/
-
لو قصدك على كوليشن اللعبة نفسها فتحتاج برنامج crazy img editor بالنسبة للتعديل برنامج collision file editor او عدل عليه من داخل ثري دي ماكس باستخدام أداة kams editor
-
after saving a map from map editor the map convert into a resource so, start mta server then connect to your local server and login then start the resource.. if you can't find the map resource so open admin panel and go to resource tap then press on include map and search for your map from the search box and start it.
-
في الحالة دي مقدرش اشرح لان شرحها كتير تقدر بكل سهولة تبدأ تتعلم التعديل على السيارات باستخدام برنامج zmodeler2 هو برنامج يتميز بخفته عن ثري دي ماكس كنت استخدمه في البداية في التعديلات البسيطة بعد تعلم الأساسيات للبرنامج تقدر تدور على موتر فيه الماتيريال الخاص بالتظليل او اسأل مصممين سيارات لو يعطوك حتى موتر بسيط فيه ماتيريال تغير تظليل وبالنسبة للنسخ شئ بسيط تروح على الماتيريال حقت السيارة وتشوف انهي ماتيريال خاص بالزجاج وتحذف الباقي ولا تسيب غيره وفي الاخر احذف الموتر وافتح موترك اللي تبي تضيفله الماتريايل وبمجرد فتحك الموتر الماتيريال حق التظليلة هيتضاف مع ماتيريالز حقت الموتر الاخر وهتقوم بتحديد زجاج السيارة الخاص بك وتضيف له الماتيريال وتحفظ الموتر اهم شئ شوف شروحات التعديل ب zmodeler 2 حجمه خفيف وبسيط
-
تمام فكل الاحوال هتحتاج تعدل على موتر خاص بك سواء ب zmodeler2 بأنك تنسخ ماتيريال سيارة فيها ماتيريال التظليلة وتضيفها لموترك ودا شئ معقد شوية واما انك تستخدم ثري دي ماكس وهو يدعم الماتيريال الخاصة بسيارات اللعبة بالنسبة الازرار او الألوان مش فارقة كتير كدة كدة ممكن تخليها بالألوان وتلغي الشيك بوكس رقم ٣ من قائمة الألوان ويوم تضغط على زر ينادي امر تغير لون في لوحة الألوان مع اللون تقدر تسويها بالطريقة اللي بالاسفل Call في الأول والاخر لازم يكون لك خبرة متوسطة عالاقل في التعديل على السيارات ?
-
فيديو تجريبي عملته في ٢٠١٩ شوف الفيديو اللي فوق لو قصدك على الطريقة دي فهي صعبة شوية هتحتاج تستخدم ماتيريال ثري دي هو موجودة في لوحة الألوان اسمه color 3 انا كنت بعمل الماتيريال دا لزجاج السيارات اللي في سيرفري بحيث ان يوم اغير لون السيارة رقم ٣ يتغير الزجاج ومع الوقت عدلت على فري روم وعملت زر يفصل بين التظليل ولون السيارة العادي وحذفت الشيكبوكس حق لون رقم ٣ من لوحة الألوان السيارة الطريقة شوية معقدة بس دي كانت أسهل طريقة بالنسبة لي لان خبرتي في الشادر مش قوية ومعظم سيرفرات الهجولة تستغل ٣ الوان للسيارات الأول لتغير مجسم السيارة الثاني لتغير التجليد والثالث لتغير التظليلة ودا بعيدا عن انوار الانارة لان دا قسم لوحده