اسکریپت نویسی ام تی ای

اسکریپت نویسی ام تی ای

اسکریپت نویسی ام تی ای

نقشه سایت

خانه
خوراک

عنوان محصول

توضیحات محصول
قیمت : ---- تومان

عنوان محصول

توضیحات محصول
قیمت : ---- تومان

آمار

    آمار مطالب
    کل مطالب : 68 کل نظرات : 17 آمار کاربران
    افراد آنلاین : 1 تعداد اعضا : 105 آمار بازدید
    بازدید امروز : 95 بازدید دیروز : 223 ورودی امروز گوگل : 4 ورودی گوگل دیروز : 14 آي پي امروز : 59 آي پي ديروز : 60 بازدید هفته : 1,404 بازدید ماه : 1,260 بازدید سال : 23,835 بازدید کلی : 400,395 اطلاعات شما
    آی پی : 3.129.13.201 مرورگر : Safari 5.1 سیستم عامل : امروز : شنبه 15 اردیبهشت 1403

    نویسندگان

    امکانات جانبی

    جدید ترین مطالب

    تاریخ : چهارشنبه 07 اردیبهشت 1401Open.mp BETA دانلود کلاینت سن اندریاس مولتی پلیر جدید
    تاریخ : پنجشنبه 10 تیر 1400پروژه open.mp
    تاریخ : پنجشنبه 10 تیر 1400وویس چت در سمپ
    تاریخ : سه شنبه 08 تیر 1400یکی از منبع های اصلی چیت سمپ
    تاریخ : جمعه 03 اردیبهشت 1400AbolfazlsDozdVaPoliceV2.1.5[Just-SaMp.RozBlog.COM]
    تاریخ : چهارشنبه 14 خرداد 1399Multi Theft Auto: San Andreas 1.5.7 منتشر شد
    تاریخ : جمعه 15 آذر 1398انتی چیت banticheat یکی دیگر از بهترین انتی چیت های سمپ
    تاریخ : چهارشنبه 29 خرداد 1398Pawn editor
    تاریخ : سه شنبه 28 خرداد 1398Vc:mp
    تاریخ : یکشنبه 19 خرداد 1398چند کد مهم برای آنتی چیت
    تاریخ : شنبه 18 خرداد 1398آموزش گیم مود ام تی ای mta
    تاریخ : شنبه 18 خرداد 1398مقدمه اسکریپت نویسی لوا برای ام تی ای mta (lua)
    تاریخ : جمعه 17 خرداد 1398سرور ویندوز سمپ اموزش
    تاریخ : جمعه 17 خرداد 1398اموزش پورت فورواردینگ سمپ
    تاریخ : جمعه 17 خرداد 1398ساختن متغییر برای بازیکنان
    تاریخ : جمعه 17 خرداد 1398زبان برنامه نویسی سمپ
    تاریخ : جمعه 17 خرداد 1398ماکزیمم بازیکنان سرور سمپ در اسکریپت نویسی
    تاریخ : جمعه 17 خرداد 1398اموزش نصب سرور لینوکس سمپ
    تاریخ : جمعه 17 خرداد 1398جبران لگ در سرور سمپ
    تاریخ : جمعه 17 خرداد 1398اجرای سرور سمپ به صورت شبکه
    تاریخ : جمعه 17 خرداد 1398اموزش کنترل سرور سمپ
    تاریخ : جمعه 17 خرداد 1398ایدی ماشین های سرور سمپ را با ایدی مدل ماشین های بازی اشتباه نگیرید
    تاریخ : جمعه 17 خرداد 1398مشکلات کد های(تابع ها(فانکشن ها)) سرور سمپ
    تاریخ : جمعه 17 خرداد 1398درباره فایل های ضبط حرکان ان پی سی npc در سرور سمپ
    تاریخ : جمعه 17 خرداد 1398مشکلات و سوالات متداول سمپ
    تاریخ : جمعه 17 خرداد 1398شروع کار با سمپ
    تاریخ : جمعه 17 خرداد 1398معرفی سمپ
    تاریخ : جمعه 10 خرداد 1398لیست ایدی صداهای سمپ
    تاریخ : جمعه 10 خرداد 1398محدودیت های عمومی سمپ
    تاریخ : جمعه 10 خرداد 1398CallBack های سمپ
    تاریخ : جمعه 10 خرداد 1398اموزآراه اندازی gdk برای نوشتن گیم مود سمپ در c/c++
    تاریخ : پنجشنبه 09 خرداد 1398گیم مود سرور دزد و پلیس سن فییرو
    تاریخ : دوشنبه 06 خرداد 1398ادیتور های سمپ
    تاریخ : پنجشنبه 02 خرداد 1398کلاینت سمپ پلاس
    تاریخ : سه شنبه 31 اردیبهشت 1398SAMP_AC_v2: پیشرفته ترین ضد-تقلب برای مشتری-طرفدار SA-MP. (2014-2017)
    تاریخ : یکشنبه 29 اردیبهشت 1398SA-MP 0.3.DL
    تاریخ : یکشنبه 29 اردیبهشت 1398m0d_sa SAMP 0.3.DL Johny-Project MultiHack v2.9.3 release !!!!!!! مود سوبیت سمپ
    تاریخ : یکشنبه 29 اردیبهشت 1398پکیج هک و چیت مخصوص سرورهای رول پلی زندگی مجازی سمپ جی تی ای سن اندریاس انلاین
    تاریخ : شنبه 28 اردیبهشت 1398SAMPFUNCS - 5.3.3 (0.3.7)
    تاریخ : شنبه 28 اردیبهشت 1398Cleo اجرا کننده مودهای سمپ
    تاریخ : شنبه 28 اردیبهشت 1398SA-MP Clientside AntiCheat
    تاریخ : شنبه 28 اردیبهشت 1398SA: MP Client Side Anti-Cheat
    تاریخ : شنبه 28 اردیبهشت 1398سن آندریاس مولتی پلیر
    تاریخ : جمعه 11 خرداد 1397San Fierro Cops and Robbers
    تاریخ : جمعه 11 خرداد 1397Cops And Robbers
    تاریخ : جمعه 11 خرداد 1397San Fierro Cops-Robbers-RPG v1.1
    تاریخ : پنجشنبه 24 اسفند 1396SAMPLauncherNET لانچر مدرن سمپ
    تاریخ : شنبه 19 اسفند 1396آهنگ بیس ویبره خفن بدون کلام GTA
    تاریخ : جمعه 18 اسفند 1396مپ ادیتور
    تاریخ : جمعه 18 اسفند 1396Mta SA

    درباره ما

    مرجع سمپ جی تی آی سن اندریاس آنلاین
    مرجع سمپ جی تی آی سن اندریاس آنلاین مرجع آموزش ساخت سرور و اسکریپت نویسی مرجع مود ها و ابزار سمپ ،اسکین ها،ابجکت ها و مپ ها و مود های گرافیکی مرجع سرور های سمپ مرجع اسکریپت ها و گیم مود ها و فیلتر اسکریپت ها و .... Just-samp.rozblog.com Just-samp.rzb.ir Just-samp.r98.ir

    صفحات جانبی

    آخرين ارسال هاي تالار گفتمان

    کمی طاقت داشته باشید...
    عنوان پاسخ بازدید توسط
    0 135 abolfazl
    0 124 abolfazl
    0 162 abolfazl
    0 144 abolfazl
    0 875 abolfazl
    0 598 abolfazl
    0 561 abolfazl
    0 583 abolfazl
    0 838 abolfazl
    0 735 abolfazl
    0 581 abolfazl
    5 639 abolfazl
    0 479 abolfazl
    0 484 abolfazl
    0 567 abolfazl

    تبلیغات

    آموزش گیم مود ام تی ای mta

    نوشتن Gamemodes

     
     

    این راهنما تلاش می کند تا فرایند نحوه نوشتن یک Gamemode مناسب را توصیف کند. اگر شما فقط با استفاده از اسکریپت برای MTA شروع کردید، ممکن است بخواهید دیگر آموزشهای اسکریپت را در صفحه اصلی اول بررسی کنید.

    معرفی

    Gamemode یک منبع است که هر بار شروع می شود، تمام گیم پلی را کنترل می کند. این ممکن است شامل گفتن بازیکنان در مورد آنچه که انجام می دهند، ایجاد بازیکنان، ایجاد تیم ها، تعریف آنچه که بازیکنان باید انجام دهند برای برنده شدن یا گرفتن امتیاز و خیلی بیشتر. مثالها عبارتند از نژاد و مرگ و میر.

    معنی "gamemode مناسب" چیست؟

    برای قرار دادن آن به سادگی، یک Gamemode مناسب است که استفاده کامل از فایل سیستم فایل نقشه MTA است.این بدان معنی است که کد gamemode هیچ اطلاعات خاص نقشه ای را که در آن سخت است، مانند موقعیت بازیکنان یا اتومبیل ها ندارد. در عوض Gamemode باید بتواند فایلهای Map را بارگذاری کند که این اطلاعات را تعریف می کنند. به این ترتیب gamemode می تواند چندین نقشه داشته باشد؛ همچنین، افراد می توانند فایل های Map را برای gamemode با ویرایشگر نقشه MTA ایجاد کنند که بسیار راحت تر از نوشتن کد است.

    یک نمونه واضح از "gamemode مناسب" MTA: Race است. این اجازه می دهد تا نقشه های usermade با بسیاری از امکانات در فایل .map. برای تغییر نقطه اکتشاف، اشیاء و غیره، کاربر نیازی به ویرایش خود gamemode ندارد.

    فایل های نقشه

    فایل های نقشه اساسا اسناد XML با یک فرمت .map است.آنها یک محیط را برای بازی یک یا چند gamemodes خاص درون تعریف می کنند. با این وجود نباید قواعد بازی را تغییر داد - آنها توسط gamemode تعریف می شوند.

    هر عنصر در یک نقشه مربوط به یک گره در فایل .map است. نحوی استاندارد برای موارد رایج مانند نقطه اکتشاف، وسایل و وسایل نقلیه وجود دارد. با این حال، برای "خاص"، اطلاعات خاص gamemode، شما باید سنتکس خود را اختراع کنید.

    مثال

    بگذارید یک نمونه Capture را برای gamemode پرچم بگیریم. نقشه ای برای این gamemode نیاز به طور عمده برای تعریف مکان های spellpoint و پرچم، و در نهایت اشیا و وسایل نقلیه. یک فایل نقشه ساده می تواند به صورت زیر باشد:

     <نقشه><spawnpointid="spawnpoint1"posX="1959.5487060547"posY="- 1714.4613037109"posZ="877.25219726563"rot="63.350006103516"model="0"/><pickupid="زره 1"posX="1911.083984375"posY="- 1658.8798828125"posZ="885.40216064453" نوع ="زره"health="50"respawn="60000"/><flagposX="1959.5487060547"posY="- 1714.4613037109"posZ="877.25219726563"team="blue"/> ... </ map>
    

    در اینجا شما می توانید دو عنصر MTA را مشاهده کنید - یک spellpoint و یک وانت. مهمتر از همه، این .map دارای گره سفارشی "پرچم" است که موقعیت و رنگ پرچم را تعریف می کند. با استفاده از منابع خارجی موجود، می توان از اکتشاف و جمع آوری داده ها استفاده کرد. عناصر سفارشی باید توسط gamemode پردازش شوند.

    برای خلاصه کردن - ما می خواهیم ورودی نقشه گیر جرمی که ما در MTA دیدیم: نژاد. کاربران نبايد مجبور باشند که تمامي اسکريپت gamemode خود را لمس کنند.

    مثال گرفتن اطلاعات نقشه

    همانطور که در بالا ذکر شد gamemode شما نیاز به بازیابی عناصر سفارشی دارد که در یک فایل نقشه تعریف شده است و آنها را پردازش می کند. این کاملا آسان است که در زیر نشان داده شده است.

     - یک جدول را با تمام عناصر پرچم بازیابی کنید flagElements محلیمحلی= getElementsByType ("پرچم") - حلقه از طریق آنهابرایکلید،ارزشدرجفت(flagElements)انجامدهید - اطلاعات خود را دریافت کنیدlocal posX = getElementData (value، posX)محلی posY = getElementData (مقدار،"posY")محلی posZ = getElementData (مقدار،"posZ")تیممحلی= getElementData (ارزش،"تیم") - ایجاد یک شی با توجه به موقعیت پرچم createObject (1337، posX، posY، posZ) - خروجی تیمی که پایه ای برای آن ایجاد کردیم outputChatBox ("پایه برای تیم"..تیم.."ایجاد")پایان
    

    تابع getElementsByType یک جدول از تمام عناصر نوع خاصی را بازیابی می کند (نوع مربوط به نام گره در فایل .map است). این کار برای هر دو نوع سفارشی و ساخته شده است در انواع MTA (مانند "وسیله نقلیه" و یا "پخش").getElementData می تواند برای بازیابی ویژگی های xml تنظیم شده در فایل .map استفاده شود. در این مثال ساده، یک شی در مکان پرچم ایجاد می شود و یک پیام در جعبه چت نمایش داده می شود. در حقیقت، در حین بارگذاری نقشه، قطعا نیاز به انجام بیشتر دارید، مانند در این مورد ایجاد اشکال برخورد برای شناسایی بازیکنان پرچم.

     

    مدیر نقشه

    پس از خواندن بخش فوق، باید مشخص شود که gamemode همیشه باید شامل دو بخش باشد:

    • منبع gamemode همیشه همیشگی است
    • بسیاری از منابع نقشه های مختلف که به اطلاعات خاص نقشه gamemode داده می شود

    در حال حاضر به جای نوشتن نقشه باربر برای هر gamemode تک، مدیر نقشه عمل می کند برای بارگذاری gamemodes و نقشه ها. به سادگی می توان گفت هنگام وارد کردن فرمان صحیح (به عنوان مثال gamemode ctf ctf-italy) هر زمان که "ctf" و "ctf-italy" را با استفاده از یک رویداد ( onGamemodeMapStart ) شروع کنید، به منبع ctf بگویید که یک نقشه بارگذاری شد منابع "ctf" پس از آن می توانند به اطلاعات "ctf-italy" دسترسی پیدا کنند و شروع به تولید بازیگران و غیره کنند.

    نحوه استفاده از مدیر نقشه

    برای استفاده از سرویس mapmanager، منبع gamemode شما باید به عنوان اولین بار برچسب گذاری شود. به طور خاص، ویژگی "type" تگ <info> خود را به "gamemode" در meta.xml تنظیم کنید. همچنین شما می توانید ویژگی "نام" را به یک نام دوستانه (مانند "ضبط پرچم") تنظیم کنید که به جای نام منابع به عنوان ASE نمایش داده خواهد شد.

     <! - meta.xml در "cowcatapult" gamemode -><meta><info نوع ="gamemode"name="گاو catapulting 2.0"/> </ meta>
    

    اگر gamemode شما بارگذاری نقشه های سفارشی است، شما باید برای دسته بندی ها اضافه کنید

    • onGamemodeMapStart
    • onGamemodeMapStop (در صورت تخلیه لازم است)

    هنگامی که یک نقشه برای gamemode شما شروع یا متوقف می شود، آنها را اخراج می کنند و منابع نقشه را به عنوان یک پارامتر انتقال می دهند. در داخل تابع handler برای این رویدادها می توانید تمام اطلاعاتی را که از فایل های نقشه منابع و فایل های پیکربندی نیاز دارید را استخراج کنید.

    مثال

     function startCtfMap (startedMap) - startMap حاوی مرجع به منبع نقشه است mapRoot = getResourceRootElement (startedMap) - گره root از نقشه آغاز شده را دریافت کنید flagElements محلی = getElementsByType ("پرچم"، mapRoot) - همه پرچم ها را در نقشه دریافت کنید و آنها را در یک جدول ذخیره کنید - اطلاعات مربوط به بارگذاری مانند مثال بالا را وارد کنید - بازیکنان اکتشاف و غیرهپایان addEventHandler ("onGamemodeMapStart"، getRootElement ()، startCtfMap)
    

    سازگاری نقشه ها

    نقشه ها منابع جداگانه ای هستند. این کار انجام شده است، بنابراین هیچ ویرایش از منبع gamemode برای ساخت یک نقشه سفارشی ضروری نیست، و همچنین به شما اجازه می دهد تا بسته های اسکریپت / پیکربندی خاص نقشه را با آنها بسته کنید.

    برای ایجاد نقشه سازگار با gamemode خود، meta.xml منبع خود را باز کنید و آن را نیز برچسب گذاری کنید: ویژگی "type" باید بر روی "map" تنظیم شود و ویژگی gamemodes باید یک لیست جدا شده با کاما باشد (بدون فضای ) از نام منابع gamemode که نقشه با آن کار می کند.

     <! - meta.xml نقشه -><meta><infotype="map"gamemodes="cowcatapult، attack، tdm"/> </ meta>
    

    هنگامی که همه چیز را تنظیم می کنید، مدیران از این دستورات برای شروع / توقف gamemodes استفاده می کنند: / gamemode gamemodeName [mapName] (پارامتر اختیاری اجازه می دهد تا یک نقشه اولیه، پیش فرض به هیچ کدام) / changemap mapName [gamemodeName] (پارامتر اختیاری gamemode را مشخص می کند برای شروع نقشه با پیش فرض به یک فعلی)

    مدیر نقشه چند توابع دسترسی بیشتری را صادر می کند که شما مجبور نیستید استفاده کنید، اما ممکن است مفید باشد.

    چه چیز دیگری باید انجام دهید

    چندین منبع دیگر وجود دارد که gamemodes باید با آن سازگار باشد.

    Helpmanager

    راهنمای کمک باید رابط استاندارد برای بازیکنان زمانی که آنها به کمک نیاز دارند. اگر از helpmenager برای کمک به gamemode خود استفاده کنید، هر بازیکنانی که قبل از استفاده از admin manager (به عنوان مثال در gamemodes دیگر)، بلافاصله می دانند که چگونه به آنجا بروند. همچنین، در صورت لزوم، برای منابع مختلف در یک پنجره، کمک می کند.

    دو راه اصلی برای استفاده از help manager وجود دارد:

    • یک متن ساده ارائه دهید که نحوه استفاده از gamemode خود را توضیح دهد
    • درخواست یک عنصر GUI از helpmanager که در زبانه خود در پنجره مدیریت کمک نمایش داده می شود و به شما اجازه می دهد تا عناصر GUI را به آن اضافه کنید. این روش توصیه شده برای gamemodes است که نیاز به نمایش اطلاعات پیچیده ای دارد که نیاز به GUI خاصی دارد.

    برای اطلاعات بیشتر در مورد چگونگی انجام این کار، به صفحه راهنمای مدیریت کمک مراجعه کنید.

    رتبه بندی

    نمره نمایش بازیکنان و تیم های حاضر در حال بازی را نمایش می دهد. ستون های سفارشی را به آن اضافه کنید تا اطلاعات خاص نقشه را فراهم کنید. به عنوان مثال ستون 'points' در gamemode 'ctf' می تواند امتیاز های بازیکن را از طریق کشتن یا تسخیر به دست آورد. به طور معمول، برای اطلاعات بیشتر صفحه کمک صفحه رتبه بندی را مشاهده کنید.

    نقشه سیکلر

    نقشه سیکلر کنترل آنچه gamemodes و نقشه ها بر روی یک سرور انجام می شود. شما می توانید برای مثال چند بار در یک ردیف یک نقشه تا زمانی که آن را به یک بعدی تغییر کند. برای رسیدن به این هدف، هنگامی که gamemode خود را به پایان رساند (به عنوان مثال هنگامی که یک دور پایان می یابد)، باید نقشه cycler را به آن بگویید.

    مقدمه اسکریپت نویسی لوا برای ام تی ای mta (lua)

    مقدمه اسکریپت

     
     

    منابع بخش مهمی از MTA هستند. یک منبع اساسا یک پوشه یا فایل زیپ است که حاوی مجموعه ای از فایل ها، و همچنین یک فرایند متا است که به سرور توضیح می دهد که چگونه منابع باید بارگذاری شوند و چه فایل هایی حاوی آنها باشد. یک منبع می تواند به عنوان بخشی از معادل یک برنامه در حال اجرا در یک سیستم عامل دیده می شود - می توان آن را آغاز و متوقف کرد، و چندین منبع را می توان در یک بار اجرا کرد.

    همه چیزهایی که با اسکریپت کردن در منابع اتفاق می افتد، چه منابع تعیین می کند، اگر یک gamemode، یک نقشه یا هر چیز دیگری باشد. MTA دارای منابعی است که می توانید به طور دلخواه در gamemodes خود استفاده کنید، مانند نقشه هایی که می توانید در یک منطقه بازی یا playpicks برای ایجاد یخچال های سلاح نگه دارید.

    نکته: اولین قدم برای شروع اسکریپت Lua باید از یک ویرایشگر Lua استفاده شود. این باعث می شود اسکریپت بسیار ساده تر باشد. ما Visual Studio Code ،Sublime Text ، Notepad ++ یا LuaEdit را توصیه می کنیم . همچنین یک ویرایشگر اسکریپت MTA غیر رسمی (در حالت کار در حال پیشرفت) وجود دارد که میتوانید آن را تست کنید.
     

    ایجاد یک اسکریپت کار

    ما برای اولین بار یاد بگیریم که چگونه یک اسکریپت اساسی ایجاد کنیم که به بازیکن امکان می دهد که قدم به قدم در شهر حرکت کند.

    همه اسکریپت ها کجا هستند؟

    بیایید نگاهی به ساختار فایل اسکریپت بیاندازیم. به پوشه MTA Server بروید و مسیر زیر را دنبال کنید:

    server / mods / deathmatch / منابع /

    شما تعداد زیادی از فایل های زیپ را مشاهده خواهید کرد که اسکریپت نمونه بسته شده با MTA است. هر پرونده یک "منبع" است و زمانی که شروع می شود، همه آنها توسط سرور جدا شده و بارگذاری می شوند. برای ایجاد منابع خود، به سادگی یک پوشه با نام مورد نظر خود را ایجاد کنید. ما از این "آموزش" استفاده خواهیم کرد.

    حالا شما باید زیر این پوشه باشید:

    server / mods / deathmatch / resources / myserver /

    شناسایی منبع شما

    به منظور اجازه دادن به سرور می دانم که چه در منبع است، یک فایل متا. xml باید برای فهرست محتوای منبع ایجاد شود. این باید در دایرکتوری ریشه منابع قرار بگیرد، که پوشه "myserver" در مورد ماست. بنابراین یک فایل متنی ایجاد کنید و آن را meta.xml نامید و آن را با notepad باز کنید.

    کدهای زیر را در فایل meta.xml وارد کنید:

    <meta><infoauthor="YourName"type="gamemode"name="My Server"description="اولین سرور MTA من"/><scriptsrc="script.lua"/> </ meta>
    

    در برچسب <info /> یک فیلد "type" وجود دارد که نشان می دهد که منبع یک gamemode است به جای یک عدد منظم یا یک نقشه که بعدا توضیح داده خواهد شد.Gamemode چیزی است که شما نیاز دارید که یک سرور مستقل داشته باشید.

    تگ <script /> نشان می دهد که فایل های اسکریپت موجود در منابع، که بعدا ایجاد می کنیم.

    ایجاد یک اسکریپت ساده

    توجه داشته باشید که در تگ <script /> در بالا، فایل .lua زیر پوشه دیگری نیست. بنابراین ما این فایل را در همان پوشه به عنوان meta.xml ایجاد می کنیم. حالا شما می توانید کد زیر را در script.lua کپی کنید و وارد کنید:

     spawnx محلی،کرهای Y، spawnZ =1959.55،-1714.46،10تابع joinHandler () spawnPlayer (منبع، spawnX، spawnY، spawnZ) fadeCamera (منبع،درست) setCameraTarget (منبع،منبع) outputChatBox ("به سرور من خوش آمدید"،منبع)پایان addEventHandler ("onPlayerJoin"، getRootElement ()، joinHandler)
    

    این اسکریپت در هنگام هماهنگی (x، y، z) که در بالا مشخص شده است، شما را در هنگام پیوستن به بازی ایجاد می کند. توجه داشته باشید که باید از تابع fadeCameraاستفاده شود یا صفحه نمایش سیاه و سفید باشد. همچنین، در نسخه های بعد از DP2، شما باید هدف دوربین را تنظیم کنید (در غیر اینصورت تمام بازیکن به نظر می رسد آسمان آبی است).

    متغیر منبع نشان می دهد که کدام رویداد را فعال کرده است. از آنجا که یک بازیکن هنگام پیاده سازی کد پیوست، شما از این متغیر برای نگاه کردن به آن استفاده می کنید.بنابراین آن بازیکن را به جای همه یا یک فرد تصادفی بکشید.

    اگر نگاه دقیقتری به addEventHandler داشته باشیم ، می توانید 3 چیز را مشاهده کنید: 'onPlayerJoin'، که نشان می دهد هنگامی که آن را فعال می کند. getRootElement () که توسط چه / چه کسی می تواند باعث شود.(getRootElement () همه چیز / همه است) و joinHandler، که نشان دهنده تابع است که باید پس از رویداد triggered شود. جزئیات دیگر بعدا در مثال دیگری توضیح داده می شود، حالا اجازه دهید فقط سرور را اجرا کنیم و آن را امتحان کنید!

    اجرای اسکریپت

    برای دریافت سرور، به سادگی اجرای اجرایی زیر سرور / دایرکتوری را اجرا کنید. یک لیست از آمار سرور برای اولین بار نشان داده می شود؛ توجه داشته باشید که شماره پورت، که شما هنگام پیوستن به بازی نیاز دارید. سپس سرور تمام منابع را تحت دایرکتوری mods / deathmatch / resources / بارگذاری می کند، و سپس "آماده پذیرش اتصالات!"

    قبل از اتصال به سرور، باید Gamemode را اجرا کنید. تایپ "start myserver" را فشار دهید و Enter را فشار دهید.سرور Gamemode را که تازه ایجاد کرده اید شروع خواهد کرد و هر خطایی و هشدار را از این نقطه نشان خواهد داد.اکنون می توانید مشتری MTA و «Quick Connect» را با استفاده از آدرس IP سرور خود و شماره پورت که قبلا دیده اید شروع کنید. اگر همه چیز خوب پیش رود، پس از چند ثانیه شخصیت شما در خیابان های لوس سانتوس راه می رود.

    بعد ما یک فرمان به اسکریپت خود اضافه می کنیم که بازیکنان می توانند برای ایجاد یک وسیله نقلیه در کنار موقعیت خود استفاده کنند. شما می توانید آن را امتحان کنید و اسکریپت های پیشرفته تر را با مدیر نقشه ، که این آموزش را ادامه می دهد، بررسی کنید. شاخه دیگری از این آموزش Introduction to GUI اسکریپت است ، شما می توانید آن را دنبال کنید تا ببینید که چگونه رابط کاربری گرافیکی در MTA کشیده شده و اسکریپت شده است.

    ایجاد یک دستور ساده

    بیایید به محتوای فایل script.lua بازگردیم . همانطور که در بالا ذکر شد، ما می خواهیم دستور ایجاد یک وسیله نقلیه را در کنار موقعیت فعلی شما در بازی فراهم کنیم. اولا ما باید یک تابع که میخواهیم تماس بگیریم را ایجاد کنیم و یک handler command که فرمان را ایجاد میکند که بازیکن میتواند وارد کنسول شود.

     - ایجاد تابع call call handler، با استدلال: theplayer، command، vehicleModelfunction createVehicleForPlayer (theplayer، command، vehicleModel) - یک وسیله نقلیه و موارد دیگر را ایجاد کنیدپایان - یک دستیار فرمان ایجاد کنید addCommandHandler ("createvehicle"، createVehicleForPlayer)
    

    نکته: نام های تابع در مثال های کد در wiki قابل کلیک هستند و به اسناد توابع مرتبط هستند.

    درباره فرماندهان فرمان

    اولین argument of addCommandHandler نام فرمان است که بازیکن قادر به وارد شدن است، دومین آرگومان عملکردی است که این فراخوانی می شود، در این صورتcreateVehicleForPlayer .

    اگر قبلا در اسکریپت تجربه کرده باشید، متوجه خواهید شد که شما یک تابع مثل این را می نامید:

     functionName (argument1، argument2، argument3،..)
    
     functionName (theplayer، commandName، argument3،..)
    

    اگر نگاهی دقیق تر به مثال پایین تر از بالا داشته باشیم، می توانیم argument1 را ببینیم theplayer و argument2 commandName است. thePlayer به سادگی کسی است که این دستور را تایپ کرده است، بنابراین هرچیزی که شما آن را می نامید، متغیر شامل بازیکنانی است که دستور را فعال کرده اند. commandName به سادگی دستوراتی است که تایپ کرده اند. بنابراین اگر آنها "/ greet" را تایپ کرده باشند، این استدلال حاوی "سلام" است. Argument 3 چیز دیگری است که بازیکن تایپ کرده است، شما آن را کمی در آموزش یاد خواهید گرفت. هرگز فراموش نکنید که 2 استدلال اول استدلال استاندارد هستند، اما شما می توانید آنها را به هر چیزی که می خواهید نامید.

    ما این تابع addCommandHandler را قبلا نامگذاری کردیمو از آنجا که createVehicleForPlayer یک تابع نیز است، می توان آن را نیز به همین نام نام برد. اما ما برای استفاده از یک دستگیره فرمان استفاده می کنیم که آن را به صورت مشابه به صورت داخلی می نامند.

    به عنوان مثال: کسی یک بازی "ساخت بازی 468" را در کنسول برای ایجاد سانچز ایجاد می کند، فرمانده فرمان، تابع createVehicleForPlayer را فراخوانی می کند، بهشرط اینکه ما این خط کد را در اسکریپت داریم:

     createVehicleForPlayer (thePlayer، "createvehicle"، "468") - theplayer عنصری از بازیکن است که وارد فرمان شد
    

    همانطور که می بینیم، چندین پارامتر را فراهم می کند: بازیکن که دستور را فراخوانی کرد، فرماندهی کرد و هر متن دیگری که بعد از آن بود، در این مورد "468" به عنوان شناسه خودرو برای سانچز. دو پارامتر اول با تمام دست اندرکاران دستورات مشابه هستند، که شما می توانید در صفحهaddEventHandler بخوانید. برای این واقعیت، شما همیشه باید حداقل دو پارامتر را برای استفاده از هر بعد از آن (به عنوان مثال برای پردازش متن که پس از فرمان وارد شده است، مانند مثال ما ID مدل خودرو) تعریف کنید.

    نکته: شما باید بعد از اینکه عملکرد تابع handler را تعریف کردید، دستور handler را اضافه کنید، دیگری نمیتواند آن را پیدا کند. منظور از اعدام مهم است.

    نوشتن عملکرد

    برای تکمیل عملکردی که ما ایجاد کردیم، باید به آنچه که باید انجام دهیم فکر می کنیم:

    • موقعیت بازیکنان را بدست آورید، بنابراین ما می دانیم کجا خودرو را بسازیم (ما می خواهیم آن را درست در کنار بازیکن ببینیم)
    • محاسبه موقعیتی که می خواهیم وسیله نقلیه را بسازیم (ما نمی خواهیم آن را در بازیکن نمایش دهیم)
    • وسیله نقلیه را بکشید
    • بررسی کنید که آیا با موفقیت ایجاد شده یا پیامی صادر شده است

    برای رسیدن به اهداف ما باید از چندین توابع استفاده کنیم.برای پیدا کردن تابع مورد نیاز برای استفاده، باید از فهرست توابع سرور بازدید کنیم. ابتدا ما نیاز به یک تابع برای به دست آوردن موقعیت بازیکنان. از آنجا که بازیکنان عناصر هستند، ابتدا به توابع Element که در آن تابعgetElementPosition را می بینیم، پرش می کنیم. با کلیک کردن بر روی نام تابع در لیست، به توضیحات تابع می روید.در اینجا ما می توانیم نحو را ببینیم، چه چیزی باز می گردد و معمولا یک نمونه است. نحو نشان می دهد که چه استدلال هایی می توانیم یا باید ارائه کنیم.

    برای getElementPosition ، نحو است:

    شناور،شناور،شناور getElementPosition (element theElement)
    

    سه شناور در مقابل نام تابع نوع بازگشت است. در این حالت به این معنی است که تابع مقدار سه عدد شناور را باز می گرداند. (x، y و z) در داخل پرانتزها، می توانید ببینید که چه استدلال هایی باید ارسال کنید. در این مورد فقط عنصری است که موقعیتی را که میخواهید بدست آورید، یعنی بازیکن در مثال ما است.

    function createVehicleForPlayer (theplayer، command، vehicleModel) - موقعیت را بدست آورید و آن را در متغیرهای x، y، z قرار دهید - (به معنای محلی، متغیرها فقط در دامنه فعلی، در این مورد، تابع وجود دارد)محلی x، y، z = getElementPosition (thePlayer)پایان
    

    بعد ما می خواهیم اطمینان حاصل کنیم که وسیله نقلیه مستقیما در بازیکن پخش نخواهد شد، بنابراین ما چند واحد را به متغیر x اضافه می کنیم که باعث می شود از بازیکن پخش شود.

    function createVehicleForPlayer (theplayer، command، vehicleModel) محلی x، y، z = getElementPosition (thePlayer) - موقعیت بازیکن را بدست آورید x = x + 5 - 5 واحد را به موقعیت x اضافه کنیدپایان
    

    در حال حاضر ما نیاز به یک تابع دیگر، یکی برای ایجاد یک وسیله نقلیه. ما یکبار دیگر در لیست سرورهای سرور ، این بار - از زمانی که ما در مورد وسایل نقلیه صحبت می کنیم - در بخش توابع وسایل نقلیه ، که در آن ما createVehicle را انتخاب می کنیم، جستجو می کنیم. در نحو این تابع، ما فقط یک نوع بازگشت (که رایج تر است) است، یک عنصر خودرو که به وسیله نقلیه ای که ما آن را ایجاد کرده است اشاره می کند. همچنین می بینیم که برخی از استدلال ها درون [] تعبیه شده اند که به این معنی است که آنها اختیاری هستند.

    ما در حال حاضر تمام استدلال هایی را که برای عملکرد createVehicle نیاز داریم را داریم: موقعیتی که ما فقط در متغیرهای x، y، z و شناسه ی مدل که از طریق فرمان ارائه می دهیم ("createvehicle 468") محاسبه می کنیم و می توانیم در عملکرد به عنوان vehicleModel دسترسی داشتهباشیم متغیر.

    function createVehicleForPlayer (theplayer، command، vehicleModel) محلی x، y، z = getElementPosition (thePlayer) - موقعیت بازیکن را بدست آورید x = x + 5 - 5 واحد را به موقعیت x اضافه کنید - ایجاد وسیله نقلیه و ذخیره عنصر خودرو بازگشتی در متغیر '' createdVehicle ''local createdVehicle = createVehicle (tonumber (vehicleModel x، y، z)پایان
    

    البته این کد را می توان با روش های مختلف بهبود داد، اما حداقل ما می خواهیم یک چک کنید که آیا وسیله نقلیه با موفقیت ایجاد شده یا نه. همانطور که می توانیم در صفحهCreateVehicle در زیر Returns بخوانیم ، تابع هنگامی که قادر به ایجاد وسیله نقلیه نبود، فاکتور را باز می گرداند.بنابراین، ما مقدار متغیر createVehicle را بررسی می کنیم.

    حالا ما اسکریپت کامل داریم:

    function createVehicleForPlayer (theplayer، command، vehicleModel) محلی x، y، z = getElementPosition (thePlayer) - موقعیت بازیکن را بدست آورید x = x + 5 - 5 واحد را به موقعیت x اضافه کنیدlocal createdVehicle = createVehicle (tonumber (vehicleModel x، y، z) - بررسی کنید که مقدار برگشتی '' false '' باشداگر(createdVehicle ==اشتباه)سپس - اگر چنین است، پیامی را به صندوق چت ارسال می کند، اما فقط به این بازیکن. outputChatBox ("ایجاد نشدن وسیله نقلیه"، thePlayer)پایانپایان addCommandHandler ("createvehicle"، createVehicleForPlayer)
    

    همانطور که می بینید، ما یک تابع دیگر را باoutputChatBox معرفی کردیم. در حال حاضر، شما باید قادر به کشف صفحه مستندات تابع خود باشید. برای اسکریپت های پیشرفته تر، لطفا مدیر نقشه را بررسی کنید.

    چه چیزی میخواهید بدانید

    شما قبلا بعضی چیزها در مورد منابع، دستیارهای فرمان و خواسته های توابع در اسناد را در پاراگراف اول خواندید، اما یادگیری بسیار بیشتر است. این بخش به شما یک بررسی کلی نسبت به برخی از این موارد را می دهد، در صورت امکان به صفحات مربوطه پیوند دهید.

    اسکریپت Clientside و Serverside

    شما ممکن است قبلا این و یا شرایط مشابه (سرور / مشتری) جایی در این ویکی، اغلب در رابطه با توابع، متوجه شده اید. MTA نه تنها از اسکریپت هایی که بر روی سرور اجرا می شوند پشتیبانی می کند و دستورات (مانند مواردی که در بالا نوشتیم) و یا سایر ویژگی ها را پشتیبانی می کند، بلکه اسکریپتهایی که در Client MTA استفاده می شود که بازیکنان برای اتصال به سرور استفاده می کنند. دلیل این امر این است که برخی از ویژگی های MTA نیاز به clientide دارند (مانند GUI - رابط کاربری گرافیکی)، بعضی دیگر باید به این دلیل باشد که آنها بهتر کار می کنند و دیگران بهتر هستند که سرور باشند یا فقط clientide کار نمی کنند.

    اکثر اسکریپت هایی که ایجاد می کنید (gamemodes، maps) احتمالا serveride هستند، مانند آنچه ما در بخش اول نوشتیم. اگر شما به چیزی که نمی تواند سرورهای سرور را حل کند، شما احتمالا باید آن را clientide کنید.برای مثال برای مثال script clientide شما یک فایل اسکریپت معمولی (به عنوان مثال client.lua نامیده اید ) ایجاد کنید و آن را در meta.xml مشخص کنید مانند این:

    <scriptsrc="client.lua"type="client"/>
    

    ویژگی نوع به طور پیش فرض به سرور است، بنابراین شما فقط باید آن را برای scripted clientside مشخص کنید.وقتی این کار را انجام می دهید، اسکریپت clientide بعد از اتصال به سرور به کامپیوتر پخش می شود. دربارهاسکریپتهای جانبی مشتری بیشتر بخوانید.

    منابع پیچیده تر

    بخش قبلی به طور خلاصه نحوه اضافه کردن اسکریپت های clientide به منبع را نشان داد، اما همچنین امکان پذیر است. همانطور که در بالا از این صفحه ذکر شده است، منابع می تواند تقریبا همه چیز باشد. هدف آنها با آنچه انجام می دهند تعریف می شود. اجازه دهید برخی از منابع نظری، با نگاه کردن به فایل های موجود، meta.xml و آنچه که آنها ممکن است انجام دهد:

    مثال اول - یک اسکریپت ابزار

     / admin_commands /meta.xml /commands.lua /client.lua
    
    <meta><infoauthor="Someguy"description="دستورات مدیریت"/><scriptsrc="commands.lua"/><scriptsrc="client.lua"type="client"/> </ meta>
    
    • دستورات .lua برخی از دستورات مدیریتی را فراهم می کند، مانند ممنوعیت پخش، خاموش کردن یا چیز دیگری که می تواند برای مدیریت سرور استفاده شود
    • client.lua یک GUI را فراهم می کند تا بتواند به راحتی اقدامات ذکر شده را انجام دهد

    این مثال ممکن است در همه زمان ها اجرا شود (شاید حتی زمانی که سرور شروع می شود خودکار شروع شود)، همانطور که در طول بازی کل تجربه مفید است و همچنین در بازی گیم پلی دخالت نمی کند، مگر اینکه یک مدیر تصمیم بگیرد که برخی از اقدامات را انجام دهد.

    مثال دوم - gamemode

     /ضد حمله /meta.xml /counterstrike.lua /buymenu.lua
    
    <meta><infoautor="Someguy"description="بازسازی Counterstrike"type="gamemode"/><scriptsrc="counterstrike.lua"/><scriptsrc="buymenu.lua"type="client"/> </ meta>
    
    • counterstrike.lua شامل موارد زیر است:
      • اجازه دهید بازیکنان تیم خود را انتخاب کنند و آنها را بسازند
      • آنها را با اسلحه، اهداف و دستورالعمل ها (از یک نقشه بخوانید، زیر را ببینید)
      • تعریف قوانین بازی، مثلا زمانی که پایان دور، چه اتفاقی می افتد وقتی یک بازیکن می میرد
      • .. و شاید بیشتر
    • buymenu.lua یک scripted clientide است و یک منو برای خرید سلاح ایجاد می کند

    این مثال می تواند یک gamemode نامیده شود، زیرا نه تنها با گیم پلی تعامل دارد، بلکه قواعد آن را تعریف می کند. خصیصه نوع نشان می دهد که این مثال با مدیر نقشهکار می کند، اما یک منبع دیگر که توسط تیم QA برای مدیریت gamemodes و بارگذاری نقشه نوشته شده است.به شدت توصیه می شود که gamemodes خود را بر اساس تکنیک های ارائه شده بنا کنید.

    این بدان معنی است که gamemode احتمالا بدون یک نقشه اجرا خواهد شد. Gamemodes همیشه باید به عنوان عمومی به عنوان امکان پذیر است. یک مثال برای یک نقشه در مثال بعدی ذکر شده است.

    مثال سوم - یک نقشه

     / cs-airport /meta.xml /airport.map /airport.lua
    
    <meta><infoautor="Someguy"description="نقشه فرودگاه Counterstrike"type="map"gamemodes="counterstrike"/> <نقشه src = "airport.map" /><scriptsrc="airport.lua"/> </ meta>
    
    • airport.map در یک فایل XML که اطلاعاتی در مورد نقشه به gamemode ارائه می دهد، ممکن است شامل موارد زیر باشد:
      • کجا باید بازیکنان تخم ریزی کنند، با کدام سلاح، کدام تیم ها وجود دارد
      • اهداف چیست؟
      • آب و هوا، زمان جهانی، Timelimit
      • ارائه وسایل نقلیه
    • airport.lua ممکن است شامل ویژگی های خاص نقشه باشد، که ممکن است شامل موارد زیر باشد:
      • هنگامی که خاصی اتفاق می افتد، برخی از درب ها را باز می کند / چیزی را منفجر کنید
      • ایجاد یا انتقال برخی از اشیاء سفارشی یا دستکاری اشیاء که از طریق فایل .map ایجاد می شوند
      • .. هر چیز دیگری نقشه خاص شما می توانید از آن فکر می کنید

    همانطور که می بینید، ویژگی نوع به «نقشه» تغییر می کند، به مدیر نقشه می گوید که این منبع یک نقشه است، در حالی که ویژگی gamemodes به آن می گوید که کدام gamemodes این نقشه معتبر است، در این مورد gamemode از مثال بالا. چه چیزی ممکن است به عنوان یک شگفتی این باشد که یک اسکریپت در منبع نقشه وجود دارد. البته این لزوما در یک نقشه ضروری نیست، اما طیف وسیعی از امکانات را برای سازندگان نقشه برای ایجاد دنیای خود در قوانین gamemode که برای آنها ایجاد می کند، باز می کند.

    فایل map.map ممکن است مشابه این باشد:

    <mapmode="deathmatch"version="1.0"> <تروریست ها><spawnpointposX="2332.23"posY="- 12232.33"posZ="4.42223"skins="23-40"/> </ terrorists> <ضدتروریست ها><spawnpointposX="2334.23443"posY="- 12300.233"posZ="10.2344"skins="40-50"/> </ counterterrorists><bombposX="23342.23"posY=""posZ=""/><vehicleposX=""posY=""posZ=""model="602"/><vehicleposX=""posY=""posZ=""model="603"/> </ map>
    

    هنگامی که یک gamemode با یک نقشه آغاز می شود، منابع نقشه به طور خودکار توسط مدیر نقشه برداری آغاز می شود و اطلاعات موجود در آن می تواند توسط منبع gamemode خوانده شود. هنگامی که نقشه تغییر می کند، منابع نقشه فعلی متوقف می شود و منبع نقشه بعدی شروع می شود. برای توضیحات بیشتر و نمونه هایی از نحوه استفاده از منابع نقشه در اسکریپت اصلی، لطفا از صفحهWriting Gamemodes دیدن کنید.

    مناسبت ها

    رویدادها همانطور که MTA اسکریپتها را درباره چیزهایی که اتفاق می افتد، می گوید. به عنوان مثال وقتی یک بازیکن میمیرد، رویداد onPlayerWasted باعث میشود.برای انجام هر گونه اقدام هنگامی که یک بازیکن می میرد، شما باید خودتان را برای اضافه کردن یک فرمانده فرمان آماده کنید، همانطور که در فصل اول نشان داده شده است.

    این مثال یک پیام را با نام بازیکن که درگذشته است، ارسال می کند:

    تابع playerDied (totalAmmo، killer، killerWeapon، bodypart) outputChatBox (getPlayerName (منبع).."مرد!")پایان addEventHandler ("onPlayerWasted"، getRootElement ()، playerDied)
    

    به جای اینکه نشان دهد چه استدلال لازم است، صفحه اسناد مربوط به رویدادها نشان می دهد چه پارامترهایی به تابع handler منتقل می شوند، مشابه نحوه انجام یککاراکتر دستور ، فقط آن است که از رویداد به رویداد متفاوت است. نکته مهم دیگر متغیر منبع است که در توابع دستکاری وجود دارد. لازم نیست که به لیست پارامتر تابع افزوده شود، اما هنوز هم وجود دارد. این مقدار متفاوت از رویداد به رویداد است، برای رویدادهای پخش (همانطور که در مثال بالا) آن عنصر پخش است. به عنوان مثال دیگر، شما می توانید یک اسکریپت پخش کننده اساسی اولیه را در قسمت اول به دنبال یک ایده از نحوه استفاده از منبع نگاه کنید .

    کجا از اینجا برو

    اکنون باید با اساسی ترین جنبه های اسکریپت MTA آشنا شوید و کمی با مستندات نیز آشنا شوید. صفحه اصلی بهشما پیوندهایی را به اطلاعات بیشتر، آموزشها و مراجع می دهد که به بررسی دقیق تر موضوعات مورد علاقه شما می آموزند.

    توجه: از این جا توصیه میکنیم آموزش اشکال زدایی را بخوانید. مهارت های اشکال زدایی هنگامی که شما اسکریپت ها را انجام می دهید، نیازمندی مطلق هستند.ما همچنین توصیه می کنیم از فهرست متغیرهای از پیش تعیین شده برای کمک به شما در انجام وظایف خاص استفاده کنید و اسکریپت را آسان تر و سریعتر انجام دهید.

    مطالب پربازدید

    مطالب تصادفی

    ورود کاربران


    » رمز عبور را فراموش کردم ؟

    عضويت سريع

    نام کاربری :
    رمز عبور :
    تکرار رمز :
    موبایل :
    ایمیل :
    نام اصلی :
    کد امنیتی :
     
    کد امنیتی
     
    بارگزاری مجدد