Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 19/02/17 in all areas

  1. I just made a character customization system in MTA with 3D GUI.
    5 points
  2. السلام عليكم ورحمة الله وبركاته نبدأ بالشرح triggerServerEvent هذه الوظيفة لا تستخدم إلا في ملف كلآينت ، Client Side تستخدم هذه الوظيفة في الفنكشنات " الوظآئف " التي لا تستعمل في ملف كلآينت ونستقبل الترايقر في ملف سيرفر عن طريق الوظيفتين addEvent addEventHandler بناء الوظيفة أو الجملة التركيبية للوظيفة bool triggerServerEvent ( string event, element theElement, [arguments...] ) string event :- اسم الحدث / اسم الترايقير وعآدي تسمي آي اسم اهم شي يكون بين علآمتين العلامتين للي ما يعرف :- " " أو ' ' element theElement :- localPlayer الآعب واحيانا او دائما نحط [arguments...] :- ارقيومنتات اخرى ، مثلا نبي نجيب كلام الليبل أمثلة :- نبدأ بامثلة بسيطة وبعدين نبدا بالامثلة الصعبة نسبيا في هذا المثال عند ضغط زر يعطي الاعب كيك ، او بمعنى اخر يطرده -- Client Side addEventHandler("onClientGUIClick",root, function () if source == button then triggerServerEvent("kickMe",localPlayer) end end ) -- Server Side addEvent("kickMe",true) addEventHandler("kickMe",root, function () kickPlayer(source,"تم طردك كما أردت") end ) المثآل 2 :- نجلب المكتوب بالاديت ونرسل ترايقر به ، ولازم نستقبل الترايقربملف سيرفر ونطلع نص بالشات باللي كتبناه -- Cl-- Client Side addEventHandler("onClientGUIClick",root, function () if source == button then local text = guiGetText(edit) triggerServerEvent ("outPut",localPlayer,text) -- ارسلنا تريقر بالمكتوب بالاديت end end ) -- Server Side addEvent("outPut",true) addEventHandler("outPut",root, function (text) --الي بعثناه بالتريقر text عرفنا ال outputChatBox(" رسالة الادمن : "..text.." : رسالة الادمن " , root ) end ) المثآل 3 :- نضغط ع زر ونجيب القيمة الثالثة للترايقر ونستقبلها ب اي اسم تريده ، ونعطي اللي ضغط الزر فلوس حسب القيمة الثالثة -- Client Side addEventHandler("onClientGUIClick",root, function () if source == button then triggerServerEvent ("giveMoney",localPlayer,1000) elseif source == button2 then triggerServerEvent ("giveMoney",localPlayer,2000) end end ) -- Server Side addEvent("giveMoney",true) addEventHandler("giveMoney",root, function (money) givePlayerMoney (source,tonumber(money)) end ) وكذا اعطيناكم شوي من بعض اشكال الترايقر والله ولي التوفيق
    3 points
  3. بسم الله رحمن الرحيم سلام عليكم ورحمة الله وبركاتة كيفكم شباب ؟ ان شاء الله تكونو بأتم الصحة والعافية =================================================== Call جبت لكم شرح ال exports الوظيفة نفس لكن بطريقتها : ) ========================================================== نشوف التركيب حق الوظيفة : ؟ call ( resource theResource, string theFunction, [ arguments... ] ) theResource نشوف اول واحدة يطلب ال هذا هو المود الي بناخذ وظيفة منه : ) theFunction نشوف ثاني يطلب ال والي هو الوظيفة الي داخل المود ! [ arguments...] هذا الارقمنتات حق الوظيفة ================================================================ مثال :؟ المثال راح يكون كتالي راح نجيب مود فيه زر وفيه ايديت نسجل فيه كلام وهذا الزر راح يفتحلنا مود ثاني local x,y = guiGetScreenSize() wnd = guiCreateWindow(200/x,50/y,100/x,100/y,"My Window !",true) btn = guiCreateButton(0.02,0.04,0.94,0.92,"Warp Me",true,wnd) edit = guiCreateEdit(0.01,0.02,0.94,0.92,"",true,wnd) addEventHandler("onClientGUIClick",root, -- حدث اذا ضغط الزر function ( ) -- وظيفة if source == btn then -- اذا ضغط الزر btn local text = guiGetText(edit) -- نجلب التكست call(getResourceFromName("Mod"),"openwnd",text) -- نتصل ب المود ونفتح فنكشن -- openwnd -- ونحط التكست end -- نهاية التحقق end ) -- نهاية الوظيفة و نقفل الحدث ونروح للمود الي راح يظهر النافذة local x,y = guiGetScreenSize() wnd = guiCreateWindow(200/x,50/y,100/x,100/y,"My Window !",true) txt = guiCreateLabel(0.02, 0.04, 0.94, 0.92, "Hello World",true,wnd) guiSetVisible(wnd,false) function openwnd(text) -- نسوي وظيفة ونجلب البارتمر guiSetVisible(wnd,true) -- نظهر النافذة showCursor(true) -- نظهر الماوس guiSetText(txt,toString(text)) -- نجيب التكست ونحوله لسترينق ونحطه في الليبل end -- نهاية الوظيفة ونحط في الميتا <export function="openwnd" type="client"/> ========================================================== الحين وش بيصير ؟ اللاعب راح يسجل كلام في الايديت ثم راح يضغط عالزر بعدين راح يشتغل فنكشن call وبيشتغل المود وبينحط الكلام الي قاله : ) ========================================================== وبس كان كذا نهاية الشرح وسلام خير الختام : )
    2 points
  4. GUIEditor = { combobox = {}, edit = {}, button = {}, window = {}, gridlist = {}, memo = {} } addEventHandler("onClientResourceStart", resourceRoot, function() triggerServerEvent ( "onScirpt", source ) GUIEditor.window[1] = guiCreateWindow(215, 138, 464, 275, "", false) guiWindowSetSizable(GUIEditor.window[1], false) GUIEditor.gridlist[1] = guiCreateGridList(10, 30, 348, 117, false, GUIEditor.window[1]) guiGridListAddColumn(GUIEditor.gridlist[1], "Text", 0.3) guiGridListAddColumn(GUIEditor.gridlist[1], "ad", 0.2) guiGridListAddColumn(GUIEditor.gridlist[1], "card", 0.2) GUIEditor.edit[1] = guiCreateEdit(9, 206, 207, 27, "", false, GUIEditor.window[1]) GUIEditor.memo[1] = guiCreateMemo(256, 225, 198, 40, "", false, GUIEditor.window[1]) GUIEditor.button[1] = guiCreateButton(145, 152, 92, 28, "", false, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FFAAAAAA") GUIEditor.combobox[1] = guiCreateComboBox(268, 167, 186, 100, "", false, GUIEditor.window[1]) guiComboBoxAddItem(GUIEditor.combobox[1], "stc") end ) addEventHandler ( "onClientGUIClick", root, function ( ) if source == GUIEditor.button[1] then local Text = guiGetText ( GUIEditor.edit[1] ) local CardType = guiComboBoxGetItemText(GUIEditor.combobox[1], guiComboBoxGetSelected(GUIEditor.combobox[1])) local Adham = guiGetText ( GUIEditor.memo[1] ) local aRow = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText(GUIEditor.gridlist[1],aRow, 1, Text,false,false) guiGridListSetItemText(GUIEditor.gridlist[1],aRow, 3, CardType,false,false) guiGridListSetItemText(GUIEditor.gridlist[1],aRow, 2, Adham,false,false) triggerServerEvent ( "Handler", localPlayer, Text, Adham, CardType ) end end ) addEvent ( "lol", true ) addEventHandler ( "lol", root, function ( table ) guiGridListClear(GUIEditor.gridlist[1]) for i, Vaule in ipairs (table) do local aRow = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText(GUIEditor.gridlist[1],aRow, 1, Vaule.text,false,false) guiGridListSetItemText(GUIEditor.gridlist[1],aRow, 2, Vaule.CardType,false,false) guiGridListSetItemText(GUIEditor.gridlist[1],aRow, 3, Vaule.Adham,false,false) end end ) -- Server executeSQLQuery( "CREATE TABLE IF NOT EXISTS Systems (text,CardType,Adham)" ) addEvent ( "onScirpt", true ) addEventHandler ( "onScirpt", root, function ( ) local SQLListe = executeSQLQuery ( "SELECT * FROM Systems " ) if #SQLListe ~= 0 then triggerClientEvent ( client, "lol", client, SQLListe ) end end ) addEvent ( "Handler", true ) addEventHandler ( "Handler", root, function ( text, CardType, Adham ) executeSQLQuery("INSERT INTO Systems ( text, CardType, Adham ) VALUES ( ?, ?, ? )", tostring ( text ), tostring ( CardType ), tostring ( Adham ) ) end ) سويت لك مثال كامل لاني والله ما فهمت عليك
    2 points
  5. Would be nice though if MTA Team could ban serials of DDoS attackers if it's proven that they've done it. Con of that however is that then the banned person could DDoS MTA website/servers
    2 points
  6. السلام عليكم ورحمة الله وبركاته شرحنآ اليوم عن وظيفة هذه الوظيفة سيرفر فقط ! giveWeapon فآئدة الوظيفة :- تقوم بإعطاء البيد / الآعب سلاح ___________________________________________________________ الجملة التركيبية للوظيفة :- bool giveWeapon ( ped thePlayer, int weapon [, int ammo=30, bool setAsCurrent=false ] ) شرح الارقيومنتات ، ped thePlayer :- الآعب أو البيد int weapon :- آي دي السلآح لمعرفة آي دي الأسلحة من هنآ int ammo= 30 :- عدد الرصاص علما بأن هذا الأرقيومنت اختياري ، اذا ما حطيته رح يحط عدد الرصاص 30 bool setAsCurrent=false : رح يطلع بإيده السلاح true هذا الأرقيومنت اختيآري فآئدته اذا تبي اول م ياخذ السلاح يحطه بايده يعني اذا حطيت القيمة السلآح ما يطلع بإيده false إذا حطيت القيمة ___________________________________________________________ امثله :- عند كتابة كلمة في إف 8 يعطيه سلاح addCommandHandler("weapon", function (player) giveWeapon (player,31,200,true) end ) والسلام خير الختآم ،
    1 point
  7. Ok and I saw that you were using playSound which plays at the same volume no matter the distance I didn't really think of it that way thx for tip lol
    1 point
  8. I'm not sure about that, but I imagine they are the same, yea. I think that's just waste of bandwidth, why would you trigger to 50 other players even though you know they will be outside the "if statement" anyway, but that's just my opinion.
    1 point
  9. مالو شغل لا بالبي اتش بي ولا الاتش ام ال الوظيفة هي انه يتصل باي بي وتقدر تستخدمه بلغات عديدة عن طريق لوا، جافا سكربت الخ... فكرت ان يتصل باي بي مع البورت ويوضع معاه معاملات وانت فبرنامج تعرف المعاملات هذي
    1 point
  10. ما ينفع كذا لازم تسوي جدول table = { } وتضيف المعلومات داخل الجدول table.insert ( table , { playerName , Ping , Money } ) وترسل ترايقر بالجدول triggerClientEvent ( root,"GetInfo",root,table) وتسوي كذا بكلاينت function add(table) guiGridListClear( grid ) for k,v in ipairs( table ) do guiGridListSetItemText ( grid guiGridListAddRow( grid ), c.n, v[1], false, false ) guiGridListSetItemText ( grid, guiGridListAddRow( grid ), c.o, v[2], false, false ) guiGridListSetItemText ( grid, guiGridListAddRow( grid ), c.s, v[3], false, false ) end end addEvent("GetInfo",true) addEventHandler("GetInfo",root,add) بس ! ولا تنسى اللوب بسيرفر for k, v in ipairs .... do -- لوب للاعبين local ping = getPlayerPing(v) local money = getPlayerMoney ( v ) الخخ
    1 point
  11. @iMr.WiFi..! عندك اخطاء و كمان ماراح يظهر للكل المهم انا سويته كلينت : aGridList_ , g = GUIEditor.gridlist[2] , guiGetText guiSetFont( aGridList_ , 'default-bold-small' ) if ( Send ) then addEventHandler ( 'onClientGUIClick' , Send , function ( ) local aText1 , aText2 , aCardType = g ( Edit1 ) , g ( memo ) , ( guiComboBoxGetItemText ( com , guiComboBoxGetSelected( com ) ) ) if ( aText1 and aText2 and aCardType ) then triggerServerEvent ( 'aTrigger' , localPlayer , aText1 , aText2 , aCardType ) end end , false ) end addEventHandler ( 'onClientResourceStart' , resourceRoot , function ( ) setTimer ( triggerServerEvent , 50 , 1 , 'aHandler' , localPlayer ) end ) addEvent ( 'AddRows', true ) addEventHandler ( 'AddRows', root , function ( aValue ) for _ , v in ipairs ( aValue ) do local aRow = guiGridListAddRow( aGridList_ ) guiGridListSetItemText( aGridList_ , aRow , 1, v['aText1'] , false , false ) guiGridListSetItemText( aGridList_ , aRow , 2, v['aCardType'] , false , false ) guiGridListSetItemText( aGridList_ , aRow , 3, v['aText2'] , false, false ) end end ) addEvent ( 'AddRow' , true ) addEventHandler ( 'AddRow' , root , function ( _1 , _2 , _3 ) local aRow , aTable = guiGridListAddRow( aGridList_ ) , { _1 , _2 , _3 } for Index = 1 , 3 do guiGridListSetItemText( aGridList_ , aRow , Index , aTable[Index] , false , false ) end end ) سيرفر executeSQLQuery( 'CREATE TABLE IF NOT EXISTS aRentSystem_ ( aText1 , aCardType , aText2 )' ) addEvent('aHandler', true ) addEventHandler('aHandler' , getRootElement ( ) , function ( ) local aValue = executeSQLQuery( 'SELECT * FROM aRentSystem_' ) if ( aValue and #aValue > 0 ) then triggerClientEvent ( source , 'AddRows' , source , aValue ) end end ) addEvent( 'aTrigger' , true ) addEventHandler ( 'aTrigger' , root , function ( aText1_ , aCardType_ , aText2_ ) local _1 , _2 , _3 = aText1_ , aCardType_ , aText2_ executeSQLQuery('INSERT INTO aRentSystem_ ( aText1 , aCardType , aText2 ) VALUES( ? , ? , ? ) ' , aText1_ , aCardType_ , aText2_ ) triggerClientEvent ( root , 'AddRow' , root , _1 , _2 , _3 ) end )
    1 point
  12. 1 point
  13. executeSQLQuery("CREATE TABLE IF NOT EXISTS RentSystem (text TEXT,CardType TEXT,Adham TEXT)") addEvent('Handler', true ) addEventHandler('Handler' , getRootElement ( ) , function ( ) Value = executeSQLQuery( 'SELECT * FROM RentSystem' ) if ( #Value ~= 0 ) then triggerClientEvent ( source , 'lol' , source ,Value ) end end ) addEvent('inserttotable',true) addEvent('inserttotable',root,function(Text, Adham, CardType) executeSQLQuery("INSERT INTO RentSystem(text,CardType,Adham) VALUES(?,?,?)", Text, CardType, Adham ) triggerEvent('Handler',root) end) -- كلنت addEventHandler ( "onClientGUIClick", root, function ( ) if ( source == Send ) then local Text = guiGetText ( Edit1 ) local CardType = guiComboBoxGetItemText(com, guiComboBoxGetSelected(com)) local Adham = guiGetText ( memo ) if Text == "" or CardType == "" or Adham == "" then return end triggerServerEvent ( "inserttotable", localPlayer, Text, Adham, CardType ) end end ) addEvent ( "lol", true ) addEventHandler ( "lol", root, function ( sql ) guiGridListClear(GUIEditor.gridlist[2]) for i, v in ipairs (sql) do local aRow = guiGridListAddRow( GUIEditor.gridlist[2] ) guiGridListSetItemText(GUIEditor.gridlist[2],aRow, 1, sql[i].text,false,false) guiGridListSetItemText(GUIEditor.gridlist[2],aRow, 2, sql[i].CardType,false,false) guiGridListSetItemText(GUIEditor.gridlist[2],aRow, 3, sql[i].Adham,false,false) end end ) غير مجرب اولا ثانيا تاكد من اسم الجريد لست 3 تاكد ان الجريد لست فيها 3 كولمن لان لو ما فيها اكيد ما بيجي بالتوفيق بمجرد عمل طلب بيجي طبعا لو تبي تسوي من الكلنت تراقر بيكون كذا triggerServerEvent(' Handler ',localPlayer) + طريقة انشاءك للتيبل غلط بالكليه executeSQLQuery( ' CREATE TABLE IF NOT EXISTS `RentSystem` (text,CardType,Adham) ' )
    1 point
  14. طيب هذا الي عدلته انا : (
    1 point
  15. انتو وباء حتي اسم الموضوع مخربط
    1 point
  16. 1) MTA still works on Windows XP, we just don't give support for major issues certain people have (which are most likely related to malware activity). 2) "Tons of players" is an alternative fact. In reality, we're talking about 2.2% of our players (as of yesterday). 3) Microsoft stopped supporting Windows XP several years ago. Therefore, it's just a matter of time until people will get massive problems with malware. Well, they can actually use the browser. The XP variant just uses an old, unsupported version of the browser. So apart from XP users being vulnerable to malware, the MTA variant runs fine with the exact same features. Feel free to do it
    1 point
  17. أبشر المره الجاية شرح callRemote : ) الفنكشن جداً بسيط بس لازم خلفية على الاقل في HTML و PHP
    1 point
  18. سوبهان الله تلقاه عندكم فـ الجزائر مشهور, بس عندنا فيه غيره واحد مدري وش جنسيته
    1 point
  19. createColSphere -> getElementsWithinColShape -> triggerClientEvent (with the table returned from getElementsWithinColShape)
    1 point
  20. واصل ي الذيب : ) الاخيرة توني ادري عنها ! انك تقدر ترسل ترايقرين ب ايفينت واحد بتوفيق اخوي ~,~
    1 point
  21. حرام عليكم الرجال يبي طلبه مو تطقطقون عليه ؟ بنسبة لمودك يمكن تلقاه مجاني بعد الكفاح والمحاولة او تشتريه من مبرمج : )
    1 point
  22. ERROR: Client triggered serverside event lv1, but event is not added server side
    1 point
  23. 1 point
  24. Use moveObject to move stuff even smoother than render also that's a bad idea you will timeout your server because of the high bandwidth usage.
    1 point
  25. السلام عليكم ورحمة الله وبركاته اليوم حبيت أعرض لكم أخر مشاريعي بديتها قبل كم يوم والحمدلله اليوم شبه خلصت ، باقي كم شيء بسيط عالعموم نشوف مقطع فيديو إلى الآن مادري إذا أبيعها ولا أنشرها لكم ، عالعموم عطوني أرائكم وإقتراحاتكم عليها
    1 point
  26. طيب سوي انه م يمديه يستعمل الاغراض الا بالنترور عشان البيوت وكذا يعني
    1 point
  27. He acts like a really tough guy. Probably is a mad 13y/o kid who spent their mom's cc money on an online booter.
    1 point
  28. Приветствую всех! Давно меня не было на форуме (немного пропал интерес к gtasa), и решил заглянуть да посмотреть ситуацию. Не буду ходить вокруг да около, сразу перейду к сути. Обратил внимание на некоторые сомнительные темы с вакансиями, содержание которых было ещё сомнительней. Да я и до этого их видел и равнодушно проходил мимо, но что изменилось сейчас? - Да собственно наверное и ничего, или наверное, надежда помочь людям составлять вакансии более грамотно. Я понимаю, что это форум и всё такое, тут нет чёткого шаблона или требований о составлении вакансии, но тем не менее если вы не школьник (хотя бы в душе) и хотите показаться грамотным человеком с серьёзными намерениями (а не тем за кого обычно всех принимают), то как минимум подумайте о грамотном оформлении и требований вашей вакансии. К примеру вот эта тема: https://forum.multitheftauto.com/topic/91891-вакансия-в-мта-проект/ или эта https://forum.multitheftauto.com/topic/92218-ищу-скриптеров/ или эта https://forum.multitheftauto.com/topic/91284-вакансия-lua-кодер/ или эта https://forum.multitheftauto.com/topic/91205-вакансии-нпо-проект-greis/ Называйте тему сразу нужной вакансией. Например: Программист Lua или Дизайнер UI. Не надо добавлять префикс [Вакансия], вставьте его в теги (Tags). Не пишите несколько вакансий в одну тему. Разделяйте в разные темы и расписывайте подробно требования, знания, чем нужно будет заниматься, что будет плюсом в знаниях, з/п (либо укажите, что по собеседованию) ну и конечно же контактные данные (скайп, почта, вк и т.д.). Если вы сами не знаете кто вам требуется и какими навыками он должен обладать, то поверьте, лучше вообще бросьте это дело. Мало быть хорошим руководителем, нужно быть осведомлённым во всех вопросах которые будут вас касаться в MTA, нужно быть продвинутым в области в которой вы работаете. Если у вас всего этого нет - у вас ничего не выйдет. Прежде чем писать кучу требований (языки, технологии и т.д.) подумайте как вы будете проводить собеседование и проверять эти навыки у кандидата. Не прокатит какое-то тестовое задание - потому что скорее всего вы его найдёте в интернете и когда кандидат его решит вы ничего не поймёте из этого. Другое дело если вы более менее разбираетесь в этих навыках (которые требуете) то должны из общения понять, стоит ли с человеком иметь дело. Так же забудьте про "скриптеров" и "кодеров" (разве что вам реально нужен говнокодер) - нет такой должности/работы. Скрипты пишут сис.админы на bash`е (или другой ваш любимый язык) для автоматизации на сервере (это пример). ПО состоит из программного когда и его пишет разработчик (программист). Не ищите уникального специалиста который будет сразу делать всё и сразу (писать гейммод и админить ваш сервер - это две разные должности, и платить нужно соответственно). Возможно вы подумаете, что я перегибаю палку, ведь мы не на рынке труда и никого по ТК РФ даже не устраиваем, к чему все эти заморочки? - Да, на трудоустройство мы не берем, да и у реального работодателя всё куда серьёзнее: есть HR, есть руководители с которыми проводятся собеседования, которые проверяют знания кандидатов и тому подобное. В МТА конечно же всё по другому, этот рынок на много ниже уровнем, но это не мешает вам поднимать свой личный, да и вовсе не значит, что нужно казаться необразованным держателем сервера коих полно в этом мире. Посмотрите примеры вакансий на hh.ru и вы (надеюсь) поймёте о чём я говорю. Ещё один момент - это награда (з/п) которую вы обещаете. За 10к в месяц ни один уважающий себя специалист не будет работать по 8 часов 7 дней в неделю. Логично, что такой человек (реально хороший специалист) будет работать на обычной работе получая обычную зарплату. Я понимаю, что рынок здесь не развит, но я хочу чтобы вы понимали чего должны и не должны требовать от работника. Это больше подходит на подработку в свободное время. Ну и так же понимайте, что хороший специалист никогда не будет искать тут работу и тем более не откликнется на такие сомнительные предложения о которых я писал выше. Конечно вы можете поискать старожилов на форуме, в ВК и т.д., но зачастую такие люди кинут вас в ЧС (как правило попадают те люди которые не умеют правильно и грамотно подать своё предложение, пишут что-то вроде "привет го рп делать в мта я буду платить!!!!" - конечно ЧС). Если же вы грамотного составите своё предложение, то человек хотя бы им заинтересуется. Но на самом деле, большего успеха вы добьётесь найдя человека на сайтах с фрилансом ну или быть может на HH, но если вы хотите человека к себе на постоянной основе, за высокую плату, то подумайте о договоре который так же можно составить виртуально (главное уметь правильно это делать - гугл в помощь). На этом пожалуй всё. Надеюсь мои замечания и рекомендации как-то вам помогут.
    1 point
×
×
  • Create New...