Samp, gta san andreas

Як створити дефматч

Немає нічого простішого. Відкриваємо Pawno і натискаємо New. Ось він, Ваш перший скрипт. Щоб запустити його, треба спочатку його зберегти (більшість людей зберігають в директорію "/ samp / gamemodes / src /", але буде простіше (для локального тестування) зберегти його в "/ samp / gamemodes /"). Потім клацніть на кнопці із зображенням синьої стрілочки. Ця дія компілює Ваш файл .pwn в файл .amx, який з'явиться в тому ж каталозі, однак щоб запустити його в грі, цей файл повинен лежати в "/ samp / gamemodes /" (тепер зрозуміло, навіщо було зберігати Ваш скрипт в цьому каталозі - тепер не доведеться нічого нікуди переносити в ручну, все вже на своїх місцях після компіляції). Тепер, щоб випробувати свій новий мод, Ви повинні налаштувати локальний сервер і змінити ігровий режим (наберіть "changemode" у вікні сервера).


Якщо все пройшло вдало, коли підключіться до свого облікового запису через клієнт sa-mp, в грі Ви опинитеся зовні казино в Las Venturas. На жаль Ви не зможете вибрати собі персонажа, так як на даний момент доступний тільки один, але це можна буде легко виправити в майбутньому. Крім того це не дуже вже й цікавий ДМ - зі зброї у Вас тільки кулаки а навколо ні душі. Але це локальний сервер і з приводу другої проблеми на даний момент нічого не можна вдіяти.

AddPlayerClass (0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

Це опис класу, параметри в тому ж порядку:
AddPlayerClass (Player model, X, Y, Z, A, Weapon 0, Ammo 0, Weapon 1, Ammo 1, Weapon 2, Ammo 2);

Модель персонажа можна взяти з файлу "peds.ide". "X", "Y" і "Z" - це координати місця появи гравця в грі, після вибору персонажа. "A" - це кут, під яким гравець буде розгорнуто (напрямок камери). Є тільки одна точка появи для кожного класу, однак це можна обійти за допомогою інших засобів, які будуть розглянуті пізніше. Номери зброї можна дізнатися тут. А цифри поруч з ammo - це точна кількість патронів до кожного зброї, яким буде розташовувати гравець (у зброї ближнього бою кількість патронів завжди 0).

Тепер скопіюйте цей рядок:
AddPlayerClass (102, 1958.3783, 1343.1572, 15.3746, 269.1425, 5, 0, 22, 100, 32, 50);

І помістіть її під тією, що Ви знайшли у Вашому скрипті. Тепер в грі у Вас буде вибір між CJ (без зброї) і Balla (з бейсбольною битою, пістолетом і Tec9). Якщо хочете, можете самі дати зброю для CJ або додати більше інших класів з іншою зброєю.

Примітка: деякий зброю, яке перераховано на сторінці за посиланням вище, поруч з яким є позначка "(crashes if you try to fire)" або "(Unusable)" не працює в даній версії SA-MP. У список зброї, яке можна використовувати, входять і гранати, однак ця прикра буде виправлена ​​в майбутньому.

Дізнаємося координати, кути і ID моделей

Знайомство з функціями і callbacks

Перш, ніж ми продовжимо, Ви повинні дізнатися, що таке callbacks, або callback`і. Це - масиви коду, всередині Вашого ігрового режиму, які являють собою щось схоже на наступне:

public OnPlayerDisconnect (playerid)
printf ( "OnPlayerDisconnect (.)", playerid);
return 1;
>
Це - OnPlayerDisconnect callback, який означає, що ця секція коду буде запускатися при відключенні гравця від сервера. Якщо Ви захочете, щоб з'являлася велика повідомлення про те, що той чи інший гравець покидає сервер, то Ви додаєте для цього код саме в цей масив. Все callback`і, які використовує гра (крім 2, вони використовуються в filterscripts, а не в gamemodes. Про них ми розповідати не будемо), знаходяться в Вашому файлі. Ви не зможете зробити інші. Більшість з них з'являється так само, як і та, що вище. Але деякі з них ( "OnPlayerCommandText", "OnPlayerRequestClass", "OnGameModeInit" і "main" (який є не зовсім callback`ом і ніде більше не фігурує, крім як на титульному екрані вашого ігрового режиму)) покликані змушувати ігровий режим працювати або показати гравцям, що потрібно робити. Ви так само можете використовувати і інші, схожі блоки (на ті, про які нижче), які виглядають так само, але є що викликаються функціями. Вони повинні бути викликані Вами самим. Ось функція "IMadeThis" (зверніть увагу на повну відсутність пробілів).

IMadeThis ();
У Ваш OnPlayerDisconnect callback (вона має перебувати між "", а так само перед "return 1;")

вона повинна запускатися як функція і друкувати повідомлення в вікні сервера, коли Ви залишаєте сервер під час гри (пам'ятаєте, що інші речі, описані там, будуть ігноруватися). Ми не хотіли, щоб що-небудь друкувалося в вікні сервера і все "print" і "printf" функції, що були в файлі, видалені скриптер. Тільки рядки, укладені між фігурними дужками знаходяться в функції / callback`е (функція відноситься до callback`ам так само, як ніби вони - спеціальний випадок функції), рядок вище - ім'я функції. "Public" має на увазі, що функція може бути виконана будь-яким іншим шматочком коду, це в основному означає, що ваш код може бути виконаний, коли Ви викликаєте функцію по імені. Ми не хвилюємося про приватних функціях, оскільки вони взагалі не використовуються в SA-MP. Дужки після імені функції включають список параметрів, ми не охопили їх все, але Ви можете побачити приклад їх використання в деяких з callback`ов в вашому чистому скрипті. Відзначимо, що ці параметри автоматично передаються, коли гра викликає функцію. Якщо ми використовуємо сторонні функції (тобто не callback`і), і ми хочемо використати деякі параметри, ми повинні будемо передати їх безпосередньо. Одна крихітна річ, яка повинна бути згадана, - то, що всі рядки, крім рядків з фігурними дужками (і навіть вони за певних обставин, але вони будуть охоплені пізніше), і рядки безпосередньо перед відкритою дужкою (фігурні дужки можуть бути в кінці тієї рядки або, як показано тут, на новому рядку), вимагають постановки в своєму кінці крапки з комою, щоб позначити кінець процесу.
__________________

Схожі статті