как писать моды самп

Как писать моды самп

Кратко о том что мы будем делать.
Данные уроки будут посвящены написанию игрового мода sa-mp с new.pwn. Мод будет жанра РПГ, написан на файловой системе с использованием инклуда mxINI.

Краткий план разработки на ближайшее время:

Основа Мода.
— Система Регистрации
— Загрузка сохранения аккаунта.
— Система Домов
— Система Бизнесов
— Система Транспорта
— Система Банка.

Это план на написание основы. После этого мод начнет заполнятся фракциями, работами и т.п.

Данный урок, будет посвящен началу разработки, и написанию системы регистрации, и загрузки сохранения аккаунта.
Пожалуй начнём.

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

Действие второе. Удаление лишнего из мода:

Открываем наш мод. Первое что бросается нам в глаза, это
#if defined FILTERSCRIPT

public OnFilterScriptExit()
<
return 1;
>

Вот это нам не нужно. Удаляем.

Находим паблик
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;
>

И после него, вставляем

В самом начале мода, мы можем видеть такую строку.

Если подумать головой, то можно понять что это подгрузка инклудов в мод. После него добавим наш инклуд:

Нажимаем F5, и компилируем мод, если всё прошло без ошибок, значит вы всё сделали правильно.

Находим строку
SetGameModeText(«Blank Script»);

Эта строка, устанавливает название мода, которое будет видно в клиенте. Меняем его на своё.

Компилируем мод, и.. мы закончили с подготовкой мода. Теперь нас ждёт система регистрации.

Система Регистрации будем в следующем уроке до скорых встреч.

Источник

LaineBlog

[Samp gamemode creation] Обзор языка программирования PAWN (часть 1)

Запись опубликована · 13 марта, 2017

Плюсы:
+ Малый размер (768 кб)
+ Идёт сразу с Samp server
+ Встроенный список функций из всех инклудов
+ Сразу есть все паблики и функции samp
Минусы:
— Подсветка синтаксиса сделана чисто для галочки (всего два цвета подсветки синий и чёрный )
— На windows начиная с vista надо запускать от имени админа
— На больших скриптах может вылетать

Плюсы:
+ Расширяемость
+ Нормальная подсветка синтаксиса
+ Авто-табуляция кода
+ Удобная навигация по коду (можно сразу перейти к другой строке, и есть карта документа)
Минусы:
— Для поддержки pawn надо много чего настраивать.
— Нету Встроенного списока функций
Настройка плагина NppExec:
1. Выберите plugin manager

2. Откроется окно, ищём Nppexec, выбираем галочкой, жмём install, перезапускаем.

3. Должно появится в меню пункт, жмём

4. Откроется окно

вписываем туда код:

5. Нажимаем ok и компиляция начнётся

Но давайте перейдём к написанию программы «hello world!» Как я и сказал у меня samp вариант Pawn. Вот как выглядит hello world в pawn:

Компилируем:

Как видим, всё прошло успешно и компиляция завершена.

11 комментариев

Рекомендуемые комментарии

О нас

Проект ComputerCraft.ru основан в 2014 году. Особенностью наших игровых серверов является обязательное наличие компьютерных и технических модов и аддонов. Когда мод ComputerCraft устарел и больше не отвечал техническим требованиям, ему на замену пришел современный и высокотехнологичный мод OpenComputers. Черепашек заменили роботы из мода Opencomputers.

У нас играют и пишут программы как новички так и опытные программисты. А самые продвинутые участники нашего коллектива даже разрабатывают собственные авторские моды и аддоны, ресурспаки, репозитории, мощнейшие библиотеки и операционные системы.

Источник

Снова всех приветствую, сегодня продолжаем писать мод с нуля. Уже в этом уроке будет создаваться регистрация и авторизация и после нее конечно же отправление игрока на спавн. Не буду тянуть драгоценные секунды вашей жизни. Приступаем:

Качаем архив, который находится в конце урока и распаковываем его в папку с сервером. Открываем его конфиг и вставляем в самый низ строку подключения плагинов.

Закончили с подключением плагина, переходим в мод.

Открываем наш мод, который мы создавали в прошлом уроке и на первых строчках мы видим код:

Его нужно почистить от лишнего мусора, который нам не понадобится. Весь код можно удалить, кроме main() <. >и подключения инклуда SA-MP’a.

Теперь нам нужно подключить сам инклуд MySQL, взаимодействовать который будет напрямую с плагином для работы с БД. После строки с подключением последнего инклуда вставляем новую строку:
и получаем

Нам нужно создать переменную, которая будет являться подключением к БД. Кроме этого, я решил сделать еще и макросы для подключения и массив, который будем использовать для форматирования запросов на 256 ячеек. Думаю, на первое время хватит.

Подключаем БД: ищем коллбэк (public) OnGameModeInit и прописываем функции подключения

Для избежания предупреждений о дубликате подключения в логах MySQL нужно закрыть подключение после выключения мода:

Настроим немного мод и можно приступать к основному.

В начало мода прописываем перечисление (enum) с автоподсчетом ID диалогов и информации о игроке:

После них создаем переменные для использования последнего перечисления (ну и еще переменную с проверкой на авторизацию игрока).

Закончено. Можно двигаться дальше. Ищем коллбэк OnPlayerConnect и нам нужно записать имя игрока и запустить таймер для выполнения запроса:

Создаем так же коллбэк, в «теле» которого будет выполняться код:

Коллбэк таймера мы создали, но теперь нужно еще и запроса. Делаем:

Создаем реакцию диалогов на действия игрока. Ищем OnDialogResponse и начинаем писать (ну не Ctrl + C же):

При авторизации мы отправляли БД запрос на поиск совпадений с name и pName и password с inputtext (хешированным). Для него тоже нужно создать коллбэк, который мы указывали при выполнении (@__mysqlUploadPlayerAccount)

Все, мы закончили. Осталось написать спавн игрока и создать базу данных. В OnPlayerSpawn:

Я буду использовать phpMyAdmin (который будет создавать для меня Denwer).
Переходим по локальному адресу localhost/Tools/phpMyAdmin

При входе в БД у нас еще нет созданных таблиц, поэтому и отображается уведомление с этой «проблемой».
Ниже видно «Создать таблицу». В поле Имя вписываем accounts (или ваш вариант), Количество столбцов оставляем пустым.




Мы все сделали, закончили, теперь можно отдыхать. Ниже можете писать свои вопросы или замечания (мне), я все прочитаю и отвечу. Следующий урок будет завтра ну или через 2-3 дня. До встречи.

Источник

SamPawno

Пишем мод с нуля (MySQL R39-2 0.3z)

Описание: Уроки по скриптингу
Модератор: SJplayer

#1 Layk » 17 марта 2015, 20:38

Поменяли? Но это ещё не все, приписываем ко всему строку:

plugins streamer mysql

— Это плагины, объясню позже
У нас получиться что-то вроде этого:

И так, если вы хотите чтобы ваш мод работал правильно, то вам следующие плагины:

Для начала заходим в папку своего сервера, видим там другую папку » pawno «, заходим в неё. Далее заходим в саму программу pawno.exe Давайте начнем писать наш мод. Нажмем на самую первую иконку » New «. Мы создали новый мод, если мы сохраним его под названием » new » в папку » gamemodes » запустим сервер и зайдем на него ( для захода используйте IP: 127.0.0.1 ), то увидим всем знакомого негра CJ в районе Лас Вентураса, как мы видим это ещё не совсем Role Play мод, так давайте его уже наконец начнем делать! Идем в pawno и начинаем работу. Для начала давайте впишем наши инклуды таким образом:
После строки:

Для начала давайте удалим ненужные нам строки:

#if defined FILTERSCRIPT

public OnFilterScriptInit ()
<
print ( «\n—————————————» );
print ( » Blank Filterscript by your name here» );
print ( «—————————————\n» );
return 1 ;
>

public OnFilterScriptExit ()
<
return 1 ;
>

Кстати немного о main().
Как вы видите функция print при запуске мода покажет нам текст в консоле который мы с вами ввели. Вы можете добавить ещё полей и написать в них что угодно. Так-же функция print служит для поиска багов в моде. Например у вас не работает функция, постепенно вставляйте print в код
Пример: (при проверке рекомендую использовать print )

Немного истории.
При написании мода используются различные символы и переменные, разберем их.

Но вернемся к моду И так, удаляем строку:

Удалили? Отлично, перейдем к разборке самого мода.

#define mysql_host «localhost» // если запускаем сервер у себя на компьютере, то оставляем
#define mysql_db «samp» // имя базы данных mysql
#define mysql_user «root» // пользователь Mysql
#define mysql_pass «» // пароль от mysql

Далее давайте отступим ещё одну строчку и вставим следующую строку:

Также отступаем одну строку и вставляем:

enum pInfo
<
Key [ 128 ], //переменная пароля
Level //уровень игрока
>;
new PlayerInfo [ MAX_PLAYERS ][ pInfo ];

Далее идем чуть ниже,в public OnGameModeInit() и вставляем туда следующее:

В итоге у нас получится такой паблик (public) :

Далее таким же образом вставляем следующее в public OnGameModeExit():

В public OnPlayerConnect(playerid):

static const
str [] = «SELECT `Name` FROM `Accounts` WHERE `Name` = ‘%s'» ;

const
size = sizeof ( str )- 2 + MAX_PLAYER_NAME ;

В public OnPlayerText(playerid, text[]):

В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):

В самый конец кода:

Этим этапом мы с вами сделали регистрацию, и авторизацию на сервере. Спасибо Jeff_Hardy за данные коды по регистрации и авторизации.
Но это ещё не все, давайте запустим наш Denwer, далее в адресной строке наберем следующую ссылку: http://localhost/Tools/phpMyAdmin/
Создадим нашу Базу Данных samp и зайдем в неё, зайдя в неё мы с вами увидим сверху вкладочку «SQL» или «Структура», жмем на неё.
В появившемся поле мы вставим следующий код:

Все готово! Теперь мы можем скомпилировать мод (F5) и запустить его.
Автор: Pro-Pawn Team
Исходники: Мод

Источник

Как писать моды самп

Быстрый переход в группу «Пользователи», без надобности написания постов и ожидания.

Покупка дает возможность:

Маппинг для сервера

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Модификации SA

Хотите разнообразить свою игру в San Andreas? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием

potemckin

Изучающий

Пишем мод с 0 самостоятельно.(Урок 1)

//——————————————————————————————————————\\
Здравствуйте, дорогие поситители и обитатели pawno-info.ru!
Это мой первый и я надеюсь не последний урок по созданию мода для samp.
Ну и ближе к теме.
Наш мод будет в так полюбившемся многим жанре Role Play.
Основной функционал будет на mxINI, потому что я в mySQL мало жу-жу.
//——————————————————————————————————————\\

Для начала нам надо скачать инклуд mxINI и официальный сервер samp.

Открываем папку с нашим сервером, открываем с помощью блакнота фаил server.сfg и правим в нем всё по примеру ниже

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#if defined FILTERSCRIPT

public OnFilterScriptExit()
<
return 1;
>

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;
>

public OnGameModeExit()
<
return 1;
>

public OnPlayerRequestClass(playerid, classid)
<
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
>

public OnPlayerConnect(playerid)
<
return 1;
>

public OnPlayerDisconnect(playerid, reason)
<
return 1;
>

public OnPlayerSpawn(playerid)
<
return 1;
>

public OnPlayerDeath(playerid, killerid, reason)
<
return 1;
>

public OnVehicleSpawn(vehicleid)
<
return 1;
>

public OnVehicleDeath(vehicleid, killerid)
<
return 1;
>

public OnPlayerText(playerid, text[])
<
return 1;
>

public OnPlayerCommandText(playerid, cmdtext[])
<
if (strcmp(«/mycommand», cmdtext, true, 10) == 0)
<
// Do something here
return 1;
>
return 0;
>

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
<
return 1;
>

public OnPlayerExitVehicle(playerid, vehicleid)
<
return 1;
>

public OnPlayerStateChange(playerid, newstate, oldstate)
<
return 1;
>

public OnPlayerEnterCheckpoint(playerid)
<
return 1;
>

public OnPlayerLeaveCheckpoint(playerid)
<
return 1;
>

public OnPlayerEnterRaceCheckpoint(playerid)
<
return 1;
>

public OnPlayerLeaveRaceCheckpoint(playerid)
<
return 1;
>

public OnRconCommand(cmd[])
<
return 1;
>

public OnPlayerRequestSpawn(playerid)
<
return 1;
>

public OnObjectMoved(objectid)
<
return 1;
>

public OnPlayerObjectMoved(playerid, objectid)
<
return 1;
>

public OnPlayerPickUpPickup(playerid, pickupid)
<
return 1;
>

public OnVehicleMod(playerid, vehicleid, componentid)
<
return 1;
>

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
<
return 1;
>

public OnVehicleRespray(playerid, vehicleid, color1, color2)
<
return 1;
>

public OnPlayerSelectedMenuRow(playerid, row)
<
return 1;
>

public OnPlayerExitedMenu(playerid)
<
return 1;
>

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
<
return 1;
>

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
<
return 1;
>

public OnRconLoginAttempt(ip[], password[], success)
<
return 1;
>

public OnPlayerUpdate(playerid)
<
return 1;
>

public OnPlayerStreamIn(playerid, forplayerid)
<
return 1;
>

public OnPlayerStreamOut(playerid, forplayerid)
<
return 1;
>

public OnVehicleStreamIn(vehicleid, forplayerid)
<
return 1;
>

public OnVehicleStreamOut(vehicleid, forplayerid)
<
return 1;
>

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
<
return 1;
>

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
<
return 1;
>

Ладно, приступим, для начала удалим кое-что, потисачим из нашего мода что-нибудь!

НЕ партесь! Нам это ненужно, это для создания FS.

Теперь сделаем наш мод более «НАШИМ» тобишь вставим наши названия!

Источник