Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 06/04/21 in all areas

  1. Criar o ônibus Criar um blip preso no ônibus Criar os marker da rota do ônibus onClientMarkerHit para chamar a função quando colidir no marker
    1 point
  2. registry.db كلامك خطأ الاكونت داتا تنحفظ بقاعدة السيرفر الالتمت داتا هي يلي ماتنحفظ في حال الخروج @ايهاب لازم تستخدم حدث إذا المود إنغلق حسب ماتذكر إنه يشتغل في حال السيرفر صار له شت داون/ريستارت onResourceStop تسوي لوب لجميع الاعبين باستخدام getElementsByType وتسوي اكواد الحفظ نفسها فيه حل أخر بديهي انك تطرد الاعبين قبل ماترستت او تسوي شت داون مستقبلاً لو بتفتح موضوع يخص البرمجة افتحه بالقسم الخاص بالبرمجة
    1 point
  3. ماسوي طلبات بمقابل الفترة هذي أعتذر اتوقع هذا لو اخذ سيارة من ماركر ممكن؟ الكود يلي كتبته مفروض يمنع أي شخص يطرد شرطي من سيارته عدل الفريق ويمديك تضيف سيارات عادي
    1 point
  4. Is it works when the player leaving the server before restart / shutdown? Did you check the value in database when the player has leaved the server?
    1 point
  5. لانك حفظت الفلوس على حساب اللاعب لازم تحفظها على قاعدة البيانات اذا تبيها ما تنمسح
    1 point
  6. Tópico movido para Programação em Lua. Poste na seção correta na próxima vez que for criar um tópico.
    1 point
  7. Faça o script client-side.
    1 point
  8. I don't know why I even have to point this out since this is something I figured out automatically in my early days of MTA scripting. But it seems necessary because I see people using Lua tables but not taking advantage of their flexibility. Very brief overview of tables as arrays Anyway, Lua tables are often used as arrays - that is, data structures that store values under consecutive integer keys starting at 1 (0 in most other languages, but that's another story), making a sequence. Various functions that operate on tables, including those in table namespace, treat them as arrays. Take this example: local fruits = {} table.insert(fruits, "apple") table.insert(fruits, "banana") table.insert(fruits, "lemon") table.insert(fruits, "orange") It creates an empty table, then uses table.insert to insert values. Because table.insert treats the table as an array and because it inserts at the end of the sequence if position argument is omitted, we end up with values "apple", "banana", "lemon" and "orange" values under keys 1, 2, 3 and 4 respectively. Using index operator [], you can retrieve the associated value from the key: -- assuming standalone Lua, using print -- replace with outputChatBox or another output function if running in MTA print(fruits[1]) -- outputs: apple print(fruits[2]) -- outputs: banana print(fruits[3]) -- outputs: lemon print(fruits[4]) -- outputs: orange Tables as sets However, table keys don't have to be integers. You can use any value except nil and nan. Strings, other tables, MTA elements. Therefore, if the order of values is irrelevant and the values are unique, instead of inserting the value under some key, you can use that value itself as the key. And set the associated value to true: local fruits = {} fruits["apple"] = true fruits["banana"] = true fruits["lemon"] = true fruits["orange"] = true Now we have a table with keys "apple", "banana", "lemon" and "orange", while the associated value true is only used to indicate the presence of key and nothing else. That effectively makes the table a set, a collection of unique values with no particular order. Usage and comparison Insertion So we have two different ways to insert values: -- array table.insert(fruits, "apple") -- set fruits["apple"] = true This alone doesn't say much. Both operations are simple and take a roughly constant amount of time to execute. However, it makes other operations very different. Removal Because arrays require you to know the key to remove the value, you have to loop through the array to find it. In contrast, with sets you can just assign nil (because nil is the value for unassigned fields): -- array function removeFromArray(array, value) for i, v in ipairs(array) do if v == value then table.remove(array, i) end end end removeFromArray(fruits, "banana") -- set fruits["banana"] = nil Arrays are very inefficient for this if there is a large number of values, because the more values there are in total, the longer the removal of a single value will take - whereas removing from the set will take more or less the same. Checking if exists Checking for presence of a value is a lot like removal, you need to know where the value is, so arrays require looping. With sets, you just retrieve the associated value. If the checked value exists, the associated value will be true, otherwise it will be nil. -- array function existsInArray(array, value) for i, v in ipairs(array) do if v == value then return true end end return false end if existsInArray(fruits, "lemon") then print("found") else print("not found") end -- set if fruits["lemon"] then print("found") else print("not found") end Arrays are again inefficient in the same way. Looping Looping is roughly the same, but as far as I know, Lua tables are optimized to be used as arrays, so I guess looping may be a little faster for arrays than sets. I have never checked this myself. -- array for key, value in ipairs(fruits) do print("found value: "..value) end -- set for value in pairs(fruits) do print("found value: "..value) end Notice that ipairs is used for the array and pairs is used for the set. pairs will work for the array as well, but the order will be unspecified. ipairs is meant to be used on arrays, it starts at index 1 and increments until no value is found. Size retrieval Lua has length operator #, which returns the array length when used on tables. But there is no built-in operator or function to retrieve the total number of fields in a table, so it takes more to get the size of a set. -- array local count = #fruits print("fruit count: "..count) -- set function getSetSize(set) local count = 0 for value in pairs(set) do count = count+1 end return count end local count = getSetSize(fruits) print("fruit count: "..count) This makes size retrieval much more efficient for arrays than sets because the more values the set has, the longer it takes to loop through them. That's speaking of sets in their simplest form though. You can have a structure like this: local fruits = { count = 0, values = {} } And modify the count every time a value is inserted or removed. Then you can retrieve the size simply by reading fruits.count, which is efficient. But then other operations have to be altered too so we're not getting into this here. Checking if empty Checking if a collection is empty means checking if its size is 0. For arrays, nothing changes, but for sets it can be done efficiently. -- array if #fruits == 0 then print("array is empty") else print("array is not empty") end -- set if next(fruits) == nil then print("set is empty") else print("set is not empty") end next is a Lua function for traversing the table. It's used by pairs too, called once for each pair. But here we call next directly. Its first returned value is one of the keys in the table, or nil if no key is found. Conclusion For some of the most common operations, sets are both more efficient and simpler to operate on than arrays. In its simplest form, it loses against array in size retrieval, but you can keep track of size separately. When you want to store unique values and their order is unimportant, using tables as sets is probably the right choice. Syntax summary: tbl = {} -- insertion tbl[value] = true -- removal tbl[value] = nil -- checking if exists if tbl[value] then end -- looping for value in pairs(tbl) do end -- checking if empty if next(tbl) == nil then end
    1 point
  9. Multi Theft Auto قوانين منتدى .الرجاء إتباع هذه القوانين لضمان بقائك هنا .Multi Theft Auto اهلاً ومرحباً بكم في منتديات باختصار شديد .استخدم التفكير السليم ولا تفعل أي شيء يسبب لنا المتاعب لضمان عدم تسبيبنا لك المتاعب ايضاً حسابات المستخدم .لن يسأل طاقم مشرفين المنتدى او فريق المطورين عن كلمات المرور الخاصة بحساباتك في المنتدى أو اللعبة او الخدمات الأخرى .(في مثل هذه الحالة (أنظر أدناه لمعرفة معلومات الاتصال الخاصة بنا IRC إذا فقدت معلومات حسابك القديم يمكننا مساعدتك في استرجاعهم. تواصل معنا على .يمكننا دمج حسابين أو أكثر في حساب واحد عند الطلب هذا المنتدى قد يستخدم تفعيل يدوي للحسابات من قبل إدارة المنتدى كوسيلة لإيقاف الهاربين من الحظر وال سبام بوت بسبب هذا، حسابك قد لا يتم تفعيله .مباشرة الرجاء عدم إنشاء حساب إضافي لأنه لن يتم تفعيله بشكل أسرع، إلا إذا كنت تحتاج إلى حساب إضافي أو قد مرت 24 ساعة منذ تسجيلك للحساب الأصلي ولم تتلقى أي رسالة تفعيل على الإيميل. .يمكن للمستخدم امتلاك أكثر من حساب، طالما لن يتم استخدامهم لكسر قواعد المنتدى أو أي أفعال خبيثة مثال: الهروب من الحظر أو التلاعب بإحصائيات المنتدى .استخدام حسابات متعددة لوضع آراء مزيفة عن السيرفرات أو الإستضافات أو المودات إلخ.. ممنوع بتاتاً :وبالمثل، نحن نسمح بمشاركة الحسابات، باستثناء الحالات التالية .الحساب المشترك لديه حقوق المشرف - مشاركة مثل هذا الحساب غير مسموح به إطلاقاً .واحد من المستخدمين المشاركين للحساب محظور .(الحساب مشترك بنية المصلحة الشخصية بواسطة واحد من المستخدمين (مثال: التلاعب بإحصائيات المنتدى .الحساب مشترك بنية تخريب موضوع في المنتدى عن طريق وضع ردود خارج الموضوع نصائح عامة .الرجاء استخدام زر البحث لمعرفة ما إذا كان سؤالك قد سؤل من قبل .إذا لا تستطيع معرفة مكان مشاركتك، يمكنك البحث عنها. فيمكن ان يكون قد تم نقلها .الرجاء تصفح صفحة الويكي أولاً إذا لديك مشاكل .هذا المنتدى يتم إدارته من قبل أشخاص متطوعين. الرجاء احترام جهودهم، كما أنهم يفعلون هذا في وقت فراغهم .يمكنك التظلم من حظر او قرار اتخذ من قبل احد المشرفين - انظر للنصائح ادناه لمعرفة الطريقة الصحيحة للقيام بذلك .إهانة مشرف أو الدخول في مجادلة معه هو ليس الطريقة الصحيحة لفعل هذا. يمكنك توقع إجراءات إضافية منا إذا فعلت هذا نصائح عن وضع المشاركات .إذا تريد إنشاء موضوع، الرجاء استخدام القسم المناسب له. يمكنك إيجاد الأقسام في الصفحة الرئيسية الخاصة بالمنتدى .تأكد من إضافة عناوين واضحة لمواضيعك. بعض العناوين التي تتكون من كلمات مثل "ساعدوني" أو "ارجو القراءة" .ليست واضحة على الإطلاق .الرجاء تجنب المشاركات المزدوجة .لا تقم بإعادة وضع مشاركة أو موضوع أو محتوى أكثر من مرة في أقسام مختلفة .لا بأس أن تعيد مشاركة ترجمة محتوى قد تم كتابته بالإنجليزية في الأصل في قسم اللغات الأخرى (أو العكس) طالما أن هذا لا يكسر القوانين الأخرى .إذا يوجد موضوع مشابه لذلك الذي تريد أن تُنشئه، شارك في هذا الموضوع، بدلاً من إنشاء موضوع جديد يمكنك رفع موضوع قديم إذا قد تم إنشاؤه بواسطتك، أو إذا الموضوع يخص مشكلة أنت أيضاً تواجهها. يرجى القيام بهذا باعتدال، وفقط بعد مرور بعض الوقت منذ أن شاركت. .إذا كنت تنوي أن ترفع موضوع خاص بالدعم في شيء ما، يجب تزويد بعض التفاصيل عن المشكلة في المشاركة الجديدة، إذا كانت متوفرة .الرجاء استخدام الأقتباس باعتدال. عادة لا داعي لاقتباس محتوى الكاتب الأصلي كاملاً، أو المشاركة التي توجد مباشرة فوق مشاركتك، فيرجى عدم فعل هذا إذا كنت تحتاج إلى إضافة كود في مشاركتك، اضغط الزر '<>' وقم بأختيار نوع الكود الذي ترغب في وضعه في مشاركتك .هذا يجعل كودك سهل للقراءة ويزود الكود بألوان لتسهيل قراءته وتمييزه .عند مشاركة أكواد في هذا المنتدى، أنت توافق على أن تدع الكود يبقى ظاهر للكل حتى يتقرر خلاف ذلك من قبل إدارة المنتدى لا تقم بالرد على المشاركات المزعجة أو المشاركات التي تخالف قوانين المنتدى بشدة، يرجى الإبلاغ عنهم بدلاً من ذلك! السبب لهذا هو أنه إذا قمت بالرد على سبام بوت، ردك سوف يبقى حتى وإن قمنا بحذف جميع المشاركات التي تمت من قبل ال سبام بوت. هذا لا يترك لنا عمل أضافي فحسب، بل أنه من الممكن أيضا ان يؤدي إلى التعليم على حسابك بالخطأ لإزالته بسبب مشاركة محتوى غير مرغوب فيه. في نفس الوقت، يرجى الملاحظة أننا سوف نقوم بتجاهل البلاغات الصادرة بشأن خلاف ناشئ بين بعض المستخدمين التي يقوم فيها المبلغ بالطلب منا أن .(نقف في صف أحد منهم (المخالفين قوانين المنتدى العامة في الأقسام الرئيسية كل المشاركات يجب أن تكون باللغة الأنجليزية ويجب أن تكون في الأقسام المناسبة. للغات غير الأنجليزية، لدينا قسم خاص باللغات الأخرى: هنا. .قد يتم رفضها MTA طلبات معرفة تواريخ الصدور أو موقع الأختبار التجريبي أو معلومات بشأن المميزات المستقبلية لـ العنصرية و التعصب و النشاط الغير قانوني غير مقبول بأي شكل من الأشكال، سواء كان ذالك مشاركات أو صوراً أو تواقيع. ويشمل هذا الصور الإباحية و العنصرية، و اللغة العنيفة و الأهانات من أي نوع. كسر هذه القاعدة يمكنه أن يؤدي إلى فرض حظر فوري. .لا تقوم بإهانة أو انتحال شخصية أعضاء المنتدى .تجنب الوقوع في جدال ديني بقدر ما يمكن. هذا منتدى للعبة. وليس منتدى لمناقشة المعتقدات والجدال فيها. ليس لدينا أي مشاكل مع أي من معتقداتك، فقط لا تجرنا لهذا ."لن يتم التسامح مع إثارة المشاكل و"الحروب المشتغلة .التهرب من الحظر لن يتم التسامح معه و سيتم التعامل معه بصرامة .عدم وضع ردود تحتوي على الابلاغ عن هاكات او اشخاص او اياً كان خارج إطار المنتدى، وكذلك يمنع التحذير منهم .يمنع إتهام شخص بسرقة مودات .لا يسمح بالتصرف كأحد المشرفين. إذا كنت ترى أن شيئاً ما يجب القيام به حول موضوعاً أو مشاركة أو عضواً قم بالإبلاغ عنه و دع القرار للمراقبين .الخاص بنا EULA لا تشارك أي شيء ضد ال .MTA لا تضع أي برنامج يمكن أن يستخدم للغش في اللعبة بـ .MTA لا يحق لك الإعلان عن منتجات او خدمات او مواقع تحتوي على مضمون غير مرتبط بـ بموقعنا. .إذا كنت ترغب في الإعلان عن السيرفر الخاص بك أو خدمة استضافة سيرفرات - استخدام القسم المناسب لذالك هنا قونين الملف الشخصي (500x150 | 720x80 يجب أن يكون إجمالي حجم الصور في توقيعك في حدود (بيكسل .أي شئ اكبر من هذا الحجم قد يتم ازالته عندما تتم ملاحظته .يجب للتوقيعات أن تستخدم أحجام خطوط معقولة وفقط عدد محدود من الروابط التظلم من قرار مشرف ومعلومات الإتصال .(#mta قناة GTANET شبكة) IRC يمكنك التواصل مع مشرف عن طريق الرسائل االخاصة المدمج بمنتدانا، أو ابحث عنه في القناة الخاصة بنا على الرجاء عدم التواصل مع العديد من المشرفين أو المدراء عن نفس الموضوع. يمكنك التواصل مع مشرف آخر إذا لم يتم الرد علي مشكلتك بعد مرور 48 ساعة على الأقل. .مشرفينا يتم اختيارهم من قبل اعضاء موهوبين ونشطين من مجتمعنا. نحن نثق في القرارات التي يتخذونها .مع ذلك، إذا لست راضٍ عن قرار مشرف معين، يمكنك التواصل معه مباشرة عن قلقك. تأكد من أن تكون مؤدب واشرح وجهة نظرك جيداً .إذا ما زلت لست راضٍ عن القرار، يمكنك التواصل مع مشرف أعلى رتبة ليحل المسألة. كما أعلاه، كن مؤدباً واشرح وجهة نظرك أفضل من ذلك التظلم من الحظر .إذا تم حظرك، يرجى عدم المبادرة بإنشاء حساب جديد في المنتدى. إذا فعلت ذلك، سوف يتم حظرك مرة أخرى لهروبك من الحظر، ومدة حظرك الأصلية ستزيد #mta في irc.gtanet.com IRC بدلاً من ذالك يمكنك طلب أزالة الحظر في القناة الخاصة بنا أو عن طريق الاتصال بنا بوسائل أخرى (@ - operators and % - halfops أبحث عن الأسماء الي تحتوي على علامات مثل) .إذا كنت محظوراً في القناة أيضاً، لا تحاول التهرب من الحظر. أطلب من شخص آخر الأتصال بنا .على حسب مخالفاتك، سنصدر مدة لألغاء حظرك. عندما تنتهي المدة، أطلب منا مرة أخرى لإلغاء حظرك .يمكنك أيضاً التظلم من حظر دائم أو كلي. لكن تذكر، في مثل هذه الحالة، ينبغي لك أن ترينا بعض الندم أولاً .(يرجى الملاحظة أننا قد نرفض طلب إلغاء حظرك لأي سبب (مثال: بسبب السلوك المسيئ تجاه مدير إذا كنت تريد رفع الحظر عنك في أحد سيرفرات أم تي أي، يرجى الأتصال بمالك السيرفر فنحن لا يمكننا رفع الحظر فليس لدينا أي سلطة على ذلك السيرفر، أسهل طريقة للأتصال بصحاب السيرفر هي عن طريق الذهاب إلى موقع السيرفر أو البحث عن معلومات أتصال في القسم الرئيسي القوانين الخاصة بالأقسام الأقسام (غير الإنجليزية) العالمية .التوجيهات الأساسية. يمكن لقواعد إضافية أن تنطبق، على حسب القسم .يمكنك فقط المشاركة في هذه الأقسام إذا تتكلم اللغة الخاصة بهم. غير ذلك، لا تشارك هناك .بالإضافة إلى ذلك، المناقشات الإنجليزية غير مسموح بها في هذه الأقسام بشكل عام. المشاركة بالإنجليزية في هذه الأقسام يمكن أن يؤدي إلى صدور تحذير بعض الإستثناءات تنطبق - إذا أنشأ مشرف موضوع في مثل هذه الأقسام بالأنجليزية، حينذلك يمكن للمستخدمين الآخرين (فقط هؤلاء الذين يتكلمون اللغة الخاصة بالقسم) أن يشاركوا بالإنجليزية في هذا القسم أيضاً. General Multi Language discussion المشاركة بالإنجليزية مسموح بها (ويفضل ذلك) في قسم .قد يكون الإشراف في بعض الأقسام محدود إذا ليس لدينا مشرفون فصيحون في اللغات الخاصة بهذه الأقسام البرمجة ستتم إضافة قوانين لاحقاً المساهمات ستتم إضافة قوانين لاحقاً الخوادم ستتم إضافة قوانين لاحقاً القسم العام ستتم إضافة قوانين لاحقاً ملاحظة بسيطة بخصوص هذا القسم: لا مشكلة في المشاركة في المواضيع القديمة فيه Other او مدير منتدى إذا لم تتلقى رد في وقت مناسب Lead Global Moderator إذا لم تعد تنوي زيارة منتدياتنا، يمكننا أزالة حسابك الشخصي، يمكنك الطلب من اي .نحن نحتفظ بحق عدم إزالة مشاركاتك عند إزالة حسابك، لأنه يمكنهم أن يكونوا مفيدين لبعض المستخدمين الآخرين لكن تذكر، يجب أن تكون عضو نشيط في المنتدى Other Languages نحن نبحث عن مشرفين جدد بإستمرار، خصيصاً في الأقسام غير المراقبة في قسم .ويكون لديك عدد كبير من المساهمات للمنتدى حتى يتم أخذك بعين الإعتبار من قبلنا ما نعتبره مساهمات للمنتدى: مشاركة محتوى مفيد أو أصلي، مساعدة أعضاء المنتدى، الإبلاغ عن المشاركات والمواضيع المزعجة ومساعدتنا في تنظيم المنتدى. ما لا نعتبره مساعدة: وجود عدد هائل من المشاركات التي تحتوي على محتويات عادية (غير مفيدة) أو مناقشات منتظمة. ناهيك عن كسب هذا العدد بطرق تخريبية. .IRC للتقدم بطلب إشراف، الرجاء التواصل مع مشرف عن طريق رسالة خاصة أو عن طريق ال .تذكر أن طلبك سوف يتم مشاركته مع المشرفين الآخرين. هذا لضمان أن الطلب يتم مناقشته وتقييمه بصورة صحيحة .إذا فشلت في الإلتزام بهذه القواعد، قد يتم حذف مشاركتك او موضوعك فوراً بدون سابق إنذار و (أو) قد تواجه عقوبات إضافية بحسب شدة المخالفة -- فريق MTA ملحق أ - المصطلحات .رفع موضوع يحدث عندما يقوم مستخدم بالمشاركة في أحد المواضيع بنية وضعه في أعلى قائمة المواضيع الخاصة بالقسم لجذب الإنتباه ملحق ب - قائمة الإجراءات الإدارية الممكنة لانتهاء القواعد .(رسالة خاصة عن شكوى من المشرف (عادة هذا فقط الذي يحصل، على شرط أن يكون المستخدم متعاون معنا .(تحذير (ينتهي بمرور الوقت، يمكن أن يرُى في حساب المستخدم; الحصول على 3 تحذيرات أو أكثر في نفس الوقت يمنع المستخدم من المشاركة .(تقييد المشاركة (أي مشاركات أو مواضيع جديدة تمت بواسطة المستخدم قد تتطلب موافقة من مشرف .(حظر مؤقت (لا يمكن للمستخدم دخول المنتدى خلال وقت معين; اي حظر إضافي سيكون بمدة أطول .(حظر مؤبد (كما في الأعلى، باستثناء أن المدة لا تنتهي; يمكن إزالتها بواسطة رفع تظلم حظر كلي من كل الخدمات (نظراً إلى المخالفات المستمرة الحادة، أو استغلال الثغرات، أو استخدام برامج غش في اللعبة، أو مشاركة مود خطير; تمنع المستخدم .(ويتضمن ذلك اللعبة أيضاً MTA الوصول إلى أي شيء يخص ال .(رفع شكوى على المستخدم للمزود الخاص بالانترنت الذي يستخدمه (آخر وسيلة إذا المستخدم مازال يسبب لنا مشاكل
    1 point
  10. This is the script. function playerQuit() local playeracc = getPlayerAccount(source) if ( playeraccount == true ) then local playercash = getPlayerMoney(source) setAccountData(playeracc, "cash", playercash) end end function playerLogin() local playeracc = getPlayerAccount(source) if (playeracc == true) then local playerbank = getAccountData(playeracc, "cash") if (playerbank == true) then setPlayerMoney(source, playerbank) else outputChatBox("You are broke.", source, 255, 0, 0) end end end addEventHandler("onPlayerLogin", getRootElement(), playerLogin) addEventHandler("onPlayerQuit", getRootElement(), playerQuit) addEventHandler("onPlayerLogout",root ,playerQuit) I am logged in. I set my money to like $555 for example then I disconnect and connect and then re-login. My money is 0. Why isn't this working?
    1 point
  11. MOJRM-511, the problem is already solved. P.S: You took that example from the MTA wiki, at least if you want to help after being solved already, do it yourself.
    1 point
  12. function playerQuit() local playerAcc = getPlayerAccount(source) if ( playerAcc ) then -- You we're checking if (playeraccount == true) then, but your variable name is "playeracc". local playerCash = getPlayerMoney(source) setAccountData(playerAcc, "cash", playerCash) setPlayerMoney(source, 0) end end addEventHandler("onPlayerQuit", getRootElement(), playerQuit) addEventHandler("onPlayerLogout", getRootElement(), playerQuit) function playerLogin() local playerAcc = getPlayerAccount(source) if (playerAcc) then local playerBank = getAccountData(playerAcc, "cash") if (playerBank) then setPlayerMoney(source, tonumber(playerBank)) else outputChatBox("You are broke.", source, 255, 0, 0) end end end addEventHandler("onPlayerLogin", getRootElement(), playerLogin)
    1 point
×
×
  • Create New...