Интерьеры для домов pawno

Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Пишем систему домов с 0 [Часть 1] — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!

  • Pawn скриптинг
  • Школа скриптинга
  • Уроки
  • Правила форума
  • Просмотр новых публикаций

  • (6 Страниц)
  • 1
  • 2
  • 3
  • >
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

  • Группа: Администраторы
  • Сообщений: 2 621
  • Регистрация: 13 октября 11

Начало
Приветствую уважаемые пользователи pawn-wiki.ru! Пока у меня есть свободное время, я решил написать урок который будет состоять из нескольких частей. В данном уроке я постараюсь как можно «раскрыто» показать вам как можно написать систему домов для игрового режима с 0 (или для » new.pwn «). Хочу отметить, что для корректной работы системы нам понадобятся 2 библиотеки:
— mxINI: Скачать
— sscanf: sscanf.rar [37,51К]

• Поясняю для чего мы будем использовать это:

— mxINI: для работы с файлами (чтение / запись в файл);
— sscanf: позволит нам скажем «разделить» и расставить по местам нужную информацию;

• Небольшое описание системы:

— Динамическая и простая система домов которая отлично подойдет для игровых режимов с 0 (и не только). Очень удобное добавление новых интерьеров в систему. На данный момент в системе будет: создание дома администратором из игры, естественно команды «войти» и «выйти» из дому, «закрыть», «открыть» дом; Для администрации — создание домов, управление замком (открыть / закрыть). Так же, 1 игрок может владеть неограниченным количеством домов! Хотелось бы отметить, если замок дома закрыт, то зайти в дом сможет только его владелец, для остальных будет высвечиваться сообщение.

Читайте также:  Панели под бревно для наружной отделки дома фасадные

• Начнем с установки библиотек и плагина:

— mxINI: после того как вы его скачали, поместите файл mxINI.inc в » pawno>include»
— sscanf: откройте архив, в нем вы увидите 2 папки » pawno» и » plugins«. Папку plugins поместите в директорию с вашим сервером, из папки » pawno>include» возьмите файл sscanf2.inc и поместите туда же куда поместили ранее mxINI (» pawno>include«).
Теперь вам осталось прописать в файле server.cfg напротив строки plugins > sscanf , получится вот так (если у вас нет строки plugins то просто скопируйте то, что ниже):

Остается последнее : открываем наш мод путем pawno>pawno.exe и вверху (можно после #include ) подключаем библиотеки:

Вот и все, переходим к следующему шагу.

• Ко всем вашим макросам (define’s) добавим еще парочку:

Макросы используются для удобства, мы можем обойтись и без них, но я привык писать названия нежели чем запоминать id (в нашем случаи диалогов).

• Теперь перейдем к создаю массивов и массивов переменных для хранения наших данных. Итак, создадим массив переменных для хранения данных наших домов:

• Создадим 1 переменную и 1 массив:

• Теперь создадим еще один массив переменных но уже для хранения данных интерьеров (ниже расскажу в чем суть):

Для чего мы создали этот массив? В нем вы сможете хранить всевозможные интерьеры которые могут быть присвоены домам, переменная hInterior хранит не id интерьера а порядковый id интерьера в HInts, то есть:

Даже правильнее будет сказать что переменная hInteriors хранит номер ячейке в который находится тот или иной интерьер. То есть в любой момент вы можете сами выбрать интерьеры по вашему вкусу и добавить их в этот массив ( HInts). Тем самым мы экономим 3 переменных для внутренних позиций ( hX,hY,hZ — хранят позиции дома снаружи, а для внутренних нам достаточно всего лишь одной — hInterior которая будет содержать номер ячейки массива HInts и от туда уже брать данные (ид интерьера, и внутренние координаты)).

• В этом шаге мы создадим функции для дальнейшей работы:

Внимание! Если у вас уже присутствует данная функция (которая возвращает ник игрока) не добавляйте ее, просто в дальнейшем вместо Name используйте свою!

• В этой части урока мы:

— Подключили необходимые для нас библиотеки (+плагин);
— Создали массивы для хранения различных данных;
— Создали необходимые функции которые будем использовать в дальнейшем;

Хочу отметить, при компилировании скрипта возможны варнинги , так как мы не использовали некоторые функции, на это вы пока что не обращайте внимания! Ожидайте 2-го урока, скоро! Если возникают какие-либо вопросы, пишите в данную тему. Спасибо за внимание!

Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Как сменить интерьер? — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!

  • Pawn скриптинг
  • Первая помощь
  • Вопросы по скриптингу
  • Правила форума
  • Просмотр новых публикаций

  • (2 Страниц)
  • 1
  • 2
  • >
  • Вы не можете создать новую тему
  • Тема закрыта

Как сменить интерьер?

  • Группа: Активные пользователи
  • Сообщений: 282
  • Регистрация: 04 ноября 13

  • Группа: Активные пользователи
  • Сообщений: 560
  • Регистрация: 26 июня 13

RediSka (07 декабря 2013 — 17:35) писал:

  • Группа: Vip
  • Сообщений: 1 944
  • Регистрация: 17 января 13

  • Группа: Активные пользователи
  • Сообщений: 282
  • Регистрация: 04 ноября 13

А смотрите мне просто тут подсказали, я бы хотел уточнить:
Вот про /save и т.д. я знаю, просто тут код(интерьера), мне его просто ставить же в мод надо? И сменить координаты телепорта да?

Сообщение отредактировал RediSka: 07 декабря 2013 — 21:11

  • Группа: Vip
  • Сообщений: 1 944
  • Регистрация: 17 января 13

  • Группа: Активные пользователи
  • Сообщений: 282
  • Регистрация: 04 ноября 13

Сообщение отредактировал RediSka: 07 декабря 2013 — 21:18

  • Группа: Vip
  • Сообщений: 1 944
  • Регистрация: 17 января 13

RediSka (07 декабря 2013 — 21:17) писал:

Ахаха?
Ну да.
Открою секрет, есть такая вещь, как язык pawn. С помощью которого можно сделать телепорт.
К сожалению, если автор не соизволил дать хотя бы ид интерьера, то нам ничего не остается, как телепортироваться в каждый.

Ну, есть разные способы. Допусим по команде вызывать паблик. Который будет в секунду +1 инт прибавлять. Или что то такое.

  • Группа: Активные пользователи
  • Сообщений: 282
  • Регистрация: 04 ноября 13

Ахаха?
Ну да.
Открою секрет, есть такая вещь, как язык pawn. С помощью которого можно сделать телепорт.
К сожалению, если автор не соизволил дать хотя бы ид интерьера, то нам ничего не остается, как телепортироваться в каждый.
CreateObject(1,2,3,4,5,6,7); // наш объект

if(strcmp(cmd, «/findint», true) == 0)
<
if(sscanf(params,»i», params[0])) return SendClientMessage(playerid, COLOR_WHITE,». /findint [ID]»);
SetPlayerPos(playerid,2,3,4);
SetPlayerInterior(playerid,params[0]);
return 1;
>

Ну, есть разные способы. Допусим по команде вызывать паблик. Который будет в секунду +1 инт прибавлять. Или что то такое.

Урок Создание динамической системы домов на основе плагина [MySQL R41]

Алексей Мещеряков

Эксперт

Первое, с чего хотелось бы конечно начать — это подключение плагинов.

Плагин MySQL от pBlueG:

Про то, как пользоваться Базой данной и как к ней подключиться, я долго время не буду заострять. Если желаете прочитать подробную информацию, можно найти урок от DeimoS по «Созданию системы регистрации на основе плагина MySQL [R39/R40]», там все подробно расписано. Но все же, некоторые нюансы хотелось бы уточнить.​

Как мы с вами уже знаем, а кто не знает, для работы с Базой данных(БД), нам необходимо использовать программу. Я использую Denwer.
P.S. Честно, скажу от себя, другие никогда не использовал и понятия не имею как с ними работать.

О данной программе вы можете ознакомиться на официальном сайте. |

Необходимо скачать данное приложение (У кого есть, тому конечно же не нужно.)
После того, как все действия по установке данной программы выполнены, необходимо запустить «Start Denwer.exe | Run.exe».
Открываем любой для вас удобный браузер и вводите localhost.
Появляется окно:

Если у вас уже есть База Данных, то вам не нужно ничего создавать, если же у вас ее нет, то создадим сейчас.
Нажимаете на вкладку «Базы данных»

Хранит в себе ID нашего дома.

Хранит в себе Имя владельца дома.

Хранит в себе информацию о том, занят ли дом или нет.

Хранят в себе информацию о координатах входа в дом.

Имя: enter_pos_x
Тип: FLOAT

Имя: enter_pos_y
Тип: FLOAT

Хранят в себе информацию о координатах выхода из дома.

Хранит в себе информацию о цене дома.

Хранит в себе информацию об уровне дома.

Хранит в себе информацию о ID интерьера.

Хранят в себе информацию о координатах домашнего автомобиля.

Хранит в себе ID домашнего автомобиля.

Подключение к Базе данных.

1. Открываем наш скрипт .pwn и после подключенных инклюдов, именно строчки #include , добавляем подключение:
. Если у кого то, уже имеется БД и подключение, повторного не нужно создавать(или вводите свои данные от БД)

const MAX_INTERIOR_NAME — Отвечает за количество символов в названии нашего Интерьера.(Если будете изменять названия, то изменяйте и константу)
const MAX_HOUSE_INTERIOR — Отвечает за количество интерьеров. В данном случае я добавил 34, вроде все, а может и нет. Будете добавлять, не забывайте увеличивать константу.

В enum e_HOUSE_INTERIORS_INFO внесена вся информация о нашем интерьере, для удобного дальнейшего использования.

h_int_name[MAX_INTERIOR_NAME] — Наименование нашего интерьера, с размером const MAX_INTERIOR_NAME.
Float:h_int_pos_x — Координата интерьера X.
Float:h_int_pos_y — Координата интерьера Y.
Float:h_int_pos_z — Координата интерьера Z.
h_int_interiorid — ID интерьера.

На этом, пока что необходимые нам команды мы создали.
[HR][/HR]

Как раз в эти данные мы записали и получили позицию игрока.

Дальше были созданы переменные, которые отвечают за координаты и ID интерьера:

С помощью данных переменных, мы можем записать значение нашего интерьера(Координаты и ID) в ячейки, отвечающие за это в нашей таблице.

И последнее — это массив.

Данные в нашу таблицу успешно записаны. Мы завершили создание дома.

В конце мода создадим две функции. Добавим следующий код:

Делаем автоподсчет самой длинной строки, т.к. нет смысла объявлять дважды.
Объявлены два значения — это h_no_owner и h_any_owner. У кого плохо с англиским переведу (Нет владельца | Есть владелец)

Дальше циклом проверяем наши дома, которые созданы в базе данных.

Описывать каждый столбец я не буду, т.к. при создании самой таблицы было подробное описание. Опишу только сами функции, которые мы используем:

| Получаем значение числа с плавающей точкой.

Если говорить русским языком, то «Если мы находимся у входа в дом, то попадаем в интерьер по координатам из нашей таблицы/массива»

Тоже самое у нас и с другой проверкой:

.
player_name — замените на свой массив в котором хранится имя игрока, например pInfo[playerid][pName].

Так же если у вас уже есть система регистрации аккаунта, а я в самом первом абзаце говорил, что желательно, чтобы у вас уже была регистрация, для хранения данных об игроке.
Необходимо добавить массив pHouse — в котором будет проверка на ID дома, которым владеет игрок.

Домашний транспорт
ВНИМАНИЕ! В данном пункте необходим массив с записью ID дома(pHouse).

Итак, вроде последний пункт моего урока, это домашний транспорт.
Я его решил сделать по такой схеме, что если игрок является владельцем дома и он онлайн, то домашний транспорт будет так же появляться. Как только игрок выходит из игры, его транспорт тоже пропадает. Сделал я это для того, чтобы не загружать карту, да и для удобства. Представляете если у вас например 500 домов, а где то в одном месте их немало и везде стоят машины, по мне так не удобно, но если вам нравится, когда карта забита машинами, то пожалуйста, как говорится дело вкуса. Не пугайтесь, когда создаете дом и устанавливаете машину у дома, а она не спавнится, это означает одно — нет владельца или же если он есть, то оффлайн.​

Ну вот вроде и все. Должен ничего не забыть, а возможно и забыл, честно уже голова поехала) Так что если будут ошибки, напишите.

Оцените статью