Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Пишем мод с Мр. Изей

Продолжать писать?


  • Всего проголосовало
    48
Статус
В этой теме нельзя размещать новые ответы.

Мр.Изя*

Умник
Здравствуйте уважаемые пользователи Pawno-Info.ru
[HR][/HR]
Я запускаю серию уроков... Пока что планирую: 5. В них мы будем учиться создавать мод для "SA-MP", режим будет DM.​
[HR][/HR]
План работы:
- Обзор PAWNO. (1 урок)
- Добавление классов. (1 урок)
- Научимся использовать функции. (1 урок)
- Полезные ссылки. (1 урок)

[HR][/HR]
Действие Первое. Нужные файлы, и настройка сервера:​

И так, для начала нам нужно:
- Скачать сервер "SA-MP" | (*** ***)
- Распаковать в любую папку
- Открываем server.cfg
- Меняем слово changeme, на свой пароль
- Стираем все filterscripts'ы.
- Меняем gamemode, на DM.


Теперь запускаем "pawno.exe", оно находиться в папке "pawno". После запуска мы увидим интерфейс PAWNO, рассмотрим его подробно...
Как вы могли заметить, я вывел такое понятие: Компиляция.
Ещё раз: Компиляция - процесс конвертирования с .amx на .pwn(*)

Но об этом позже сейчас нам нужно:
- Нажать на белый листочек
- Скомпилировать мод
- Название мода такое: DM

И собственно запускаем сервер, если всё хорошо... То читаем урок дальше...
[HR][/HR]
"Обзор рабочего места"​
Когда мы нажали на "белый листочек", у нас создался наш первый... Начальный мод, вот с ним мы и будем разбираться!Для начала просто взглянем на него со стороны...Что же в нём есть?
1.Панель инструментов(**)
2.Наше "Рабочее поле"(***)
3.Список функций(****)
И так... Всё по порядку:

**(Панель инструментов) - Я уже объяснял и показывал...
***("Рабочее поле") - Это участок программы в котором мы будем писать наш код
****(Список функций) - Это по сути столбик, в котором перечислены все функции которые мы можем использовать.
Функция - "строка"(Пока что будем называть её так) которая будет выполнять то или иное действие(Пример: SendClientMessage(...); отправит сообщение игроку)

[HR][/HR]
"Начало начал"​
Ну что же, давайте обозревать наш "МОД", давайте поглядим в самый верх рабочего поля, что мы там увидим?Вот что:
PHP:
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
То что я выделил это комментарий.
Комментарий служит для пометки/заметки.
Дальше:
PHP:
#include <a_samp>
Это - инклуд.
Инклуд это файл, в котором содержаться все базовые функции "PAWNO"

Далее идёт:
PHP:
#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else
Это всё вырезаем, так же ещё ниже есть:
PHP:
#endif
Тоже удаляем... ПРИМЕЧАНИЕ: MAIN НЕ УДАЛЯЕМ! Так всё отлично всё почистели...И так... Продолжаем

[HR][/HR]
"Начало начал 2"​
Теперь разбираем public'i
Паблик выполняется при каком-либо игровом событии
Давайте рассмотрим что за что отвечает:
PHP:
public OnGameModeInit() //Отвечает за то что произойдет во время запуска мода!
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}
PHP:
public OnGameModeExit() //Что произойдёт во время выключения...
{
	return 1;
}
PHP:
public OnPlayerConnect(playerid) //Когда игрок подключится к серверу
{
	return 1;
}
PHP:
public OnPlayerDisconnect(playerid, reason) //Отключится
{
	return 1;
}
PHP:
public OnPlayerSpawn(playerid) //Появиться игрок на спавне
{
	return 1;
}
PHP:
public OnPlayerDeath(playerid, killerid, reason) //Умрёт
{
	return 1;
}
И одно из главных:
PHP:
public OnPlayerCommandText(playerid, cmdtext[]) //Когда игрок наберёт команду
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}
Ну что-же, теперь переходим к главному...

[HR][/HR]
Надо?Не надо?​
Так, ну давайте "поиграемся" с пабликами... Ну что-же, возьмём public OnGameModeInit()
Перво наперво я объясню что за что в нём отвечает...
PHP:
public OnGameModeInit() //Сам паблик
{//Скобочка открытия
	SetGameModeText("Blank Script"); //Установка названия мода, можно изменить на своё, ""   не убирать!
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);//Добавляет класс для мода
	return 1;//Возврат
}//Скобка закрытия
Класс игрока, это так называемый "комплект" персонажа. В нём устанавливается скин персонажа, оружие, патроны, и так далее...Подробно:
PHP:
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
 ДобавитьИгрокКлас(Ид скина, x, y, z(места персонажа при выборе скина, позже об этом), оружие 1, патроны 1, оружие 2, патроны 2, оружие 3, патроны 3);
Давайте добавим несколько классов, изменяя скин, и т.д. Добавили?Отлично тогда давайте сделаем такое, что бы при включения мода в консоль писалось: "Привет братэлла", для этого, добавляем в наш паблик OnGameModeInit() такое:
PHP:
print("Привет братэлла");
"Print это стандартная функция отправляющая в консоль сервера сообщение!"
Скомпилируем, запустим, всё работает?И так, если вам это было ну очень трудно... Дочитайте урок до конца... Если совсем всё будет не понятно, PAWNO не для вас... Простите...

[HR][/HR]
Предпоследняя часть​
И так, хочу безумно спать... :be: Кароче, смотрим следующий паблик: public OnPlayerConnect(playerid)
Для чего он служит?Ответ под катом
За действие которое произойдёт когда игрок подключиться к серверу
Давайте сделаем приветствие!Аля: "Добро пожаловать на сервер!". Для этого воспользуемся стандартной функцией, если вы внимательно читали урок, вы знаете что вы её уже видели!Подумайте, если нет, ответ под катом...
PHP:
		SendClientMessage(playerid, 0xFFFFFFAA, "ТЕКСТ"); //Отправит сообщение в чат
ОтправитьКлиентуСообщение(ИД, цвет, "текст");
Вставляем, получиться так:
PHP:
public OnPlayerConnect(playerid)
{
	SendClientMessage(playerid, 0xFFFFFFAA, "Добро пожаловать на сервер!");
	return 1;
}
[HR][/HR]
Концовка​
Глаза слипаются...:bn: Последний, но не по значимости паблик:
PHP:
public OnPlayerCommandText(playerid, cmdtext[])//Паблик
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)//Конструкция
	{
		// Do something here
		return 1;
	}
	return 0;
}
И так... Объясню, для создании ЛЮБОЙ команды нам придётся действовать по конструкции...
Сначало пишется if, if - если | Потом скобка, после в " " пишется команда, обязательно с "/", потом идёт текст с которым сравниваем, но об этом уже позже(Пока что это не надо) , true значит что команду можно написать любыми буквами(Большими маленькими), дальше вам пока что не надо.
ДАЛЬШЕ!Ставим скобочку открытия, после уже на следующей строчке пишем что будет делать команда!Давайте опять же отправим по команде сообщение в чат!Для этого вставляем после комментария(Можно убрать) уже известную нам функцию...Какую?Знаете сами какую...Получиться так:Но сначала попробуйте сами.Ответ под катом:
PHP:
public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/Ky", cmdtext, true, 10) == 0)//Я поменял название команды
	{
		SendClientMessage(playerid, 0xFFFFFFAA, "Добро пожаловать на сервер!");//Сама функция
		return 1;//Ретурн, должен всегда стоять!
	}//скобка закрытия
	return 0;//Тоже должен всегда стоять!
}
И так... Вот мы разобрали основы...Почитайте дальше...

[HR][/HR]
Вот урок подошёл к концу!Что понравилось что не понравилось пишите в комментариях, об ошибках туда-же... ПАВНО изучаю 8 дней... Хотел донести до вас что умею... Для новичков... От "+" не откажусь, но за ним не гонюсь... Удачи вам в изучении PAWNO скоро будет след. урок!
P.S писал сам!Ни капли не копировал!Прошу комментируйте...
Автор: Я!
И за все старании я получил уже 2 минуса!?Обидно господа
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу