محل تبلیغات شما

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

 
 

منابع بخش مهمی از 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") محاسبه می کنیم و می توانیم در عملکرد به عنوان vehicl

مشخصات

تبلیغات

محل تبلیغات شما

آخرین مطالب این وبلاگ

آخرین ارسال ها

محل تبلیغات شما محل تبلیغات شما

برترین جستجو ها

آخرین جستجو ها