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

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

نقشه سایت

خانه
خوراک

عنوان محصول

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

عنوان محصول

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

آمار

    آمار مطالب
    کل مطالب : 68 کل نظرات : 17 آمار کاربران
    افراد آنلاین : 4 تعداد اعضا : 105 آمار بازدید
    بازدید امروز : 38 بازدید دیروز : 82 ورودی امروز گوگل : 0 ورودی گوگل دیروز : 4 آي پي امروز : 18 آي پي ديروز : 48 بازدید هفته : 38 بازدید ماه : 4,865 بازدید سال : 27,440 بازدید کلی : 404,000 اطلاعات شما
    آی پی : 18.117.159.229 مرورگر : Safari 5.1 سیستم عامل : امروز : دوشنبه 31 اردیبهشت 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 143 abolfazl
    0 134 abolfazl
    0 168 abolfazl
    0 152 abolfazl
    0 883 abolfazl
    0 606 abolfazl
    0 568 abolfazl
    0 589 abolfazl
    0 846 abolfazl
    0 742 abolfazl
    0 588 abolfazl
    5 649 abolfazl
    0 487 abolfazl
    0 494 abolfazl
    0 574 abolfazl

    تبلیغات

    مقدمه اسکریپت نویسی لوا برای ام تی ای 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 آشنا شوید و کمی با مستندات نیز آشنا شوید. صفحه اصلی بهشما پیوندهایی را به اطلاعات بیشتر، آموزشها و مراجع می دهد که به بررسی دقیق تر موضوعات مورد علاقه شما می آموزند.

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

    کد امنیتی رفرش

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

    مطالب تصادفی

    ورود کاربران


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

    عضويت سريع

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