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

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

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

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

Удаления родных объектов

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

Fallas

Новичок
Иногда люди задаются вопросом: "Как удалить АШ в SF" или нечто подобное. В этом уроке научитесь это делать, а главное - делать быстро!
Приступим.

P.S Урок будет проходить, используя MTA Map Editor, он не рассчитан на иные программы.

1. Для начала вам нужно скачать МТА версией 1.3.2 и выше. В этих версиях была добавлена функция удаления родных объектов. (Офиц сайт МТА: МТА

2. Скачали, установили, вошли. Нас интересует не МТА сервер, а МТА Map Editor, так что входим туда. При нажатии кнопки F внизу вылезает ряд кнопок, последняя справа из которых и есть удаление объектов. Нажимаем - удаляем. Теперь нужно сохранить нашу карту. Помимо кнопок снизу, есть ряд кнопок сверху. Ищем "Сохранить как" (Save As), вводим название карты и сохраняем. Все, МТА можно закрыть
3. Теперь идем сюда: Мой компьютер --- Диск C (D, куда вы устанавливали МТА) --- programm files --- МТА --- server --- mods --- deathmatch --- resources --- файл с именем вашей карты. Видим здесь 4 файла. Нас интересует файл с расширением .map. Открыли. Видим строчку:
Код:
[COLOR="#000000"]<removeWorldObject[/COLOR]
Эта строчка и удаляет объект карты gta sa.

Разберем подробнее:
id - честно, не представляю зачем это нужно
radius - честно, тоже не понимаю как радиус влияет на удаление
interior - id интерьера
model - id модели объекта
lodModel - тоже не знаю
posX - координата объекта по оси Х
posY - координата объекта по оси Y
posZ - координата объекта по оси Z
rotX - угол поворота по X
rotY - угол поворота по Y
rotZ - угол поворота по Z

4. Теперь разберем синтаксис функции удаления в pawn
RemoveBuildingForPlayer(playerid, modelid, Float:fX, Float:fY, Float:fZ, Float:fRadius)

Разберем подробнее:
playerid - ид игрока, для которого нужно удалить объект. (обычно оставляем playerid)
modelid - id модели объекта
Float:fX - координата объекта по оси Х
Float:fY - координата объекта по оси Y
Float:fZ - координата объекта по оси Z
Float:fRadius - честно, тоже не понимаю как радиус влияет на удалени

5. Мы видим, что некоторые параметры совпадают. Именно их нам и надо перенести из кода МТА (removeworldobject) в код pawn (removebuildingforplayer).

Предположим, что в МТА у нам была строка:
Код:
[COLOR="#000000"]<removeWorldObject id="removeWorldObject (lamppost2) (1)" radius="8.8853034973145" interior="0" model="1290" lodModel="0" posX="-2681.88477" posY="2111.85156" posZ="64.45439" rotX="0" rotY="0" rotZ="0"></removeWorldObject>[/COLOR]
Переделываем ее в pawn:

Код:
[COLOR="#000000"]RemoveBuildingForPlayer(playerid, 1290, -2681.88477, 2111.85156, 64.45439, 8.8853034973145);[/COLOR]
Надеюсь все понятно. Значения из кода МТА, параметры которых соответствуют параметрам кода pawn, мы перенесли в pawn.

Функция эта вставляется в public OnPlayerGameModeInit.

6. А теперь представьте, что нам нужно переписать не 1 строчку, а 100. Для этого и существует славный наш convertffs.com.
По умолчанию там нет конвертера удаляемых объектов, но мы можем сделать его сами. Постараюсь объяснить как это сделать.

* Нажимаем на Input, для изменения параметров вводимого текста
* Нажимаем Add costum format, чтобы добавить свои параметры конвертирования

* Вместо Format name goes here вписываем свое название (любое).
* Переходим к самому сложному:
Сразу ввожу и объясняю что делаю. Ввожу синтаксис кода из МТА в поле над format name ... :

Код:
[COLOR="#000000"]<removeWorldObject id=""[/COLOR]
Значение в кавычках у нас может меняться, поэтому ему надо присвоить какую то из переменных, доступных в конвертере.

Т.к. id в синтаксисе pawn-кода не встречается, мы можем использовать абсолютно любую переменную. Но для id будет логично использовать "уникальный id" ({id}). Код получается таким:

Код:
[COLOR="#000000"]<removeWorldObject id="{id}"[/COLOR]
Продолжаем.

Код:
[COLOR="#000000"]<removeWorldObject id="{id}" radius=""[/COLOR]
Значение радиуса так же можем меняться, поэтому тоже присваиваем ему переменную. Но среди переменных не встречается ничего похожего на радиус. Так что возьмем любую, например, virtual world {vw}. Код следующий:

Код:
[COLOR="#000000"]<removeWorldObject id="{id}" radius="{vw}"[/COLOR]
То же самое проделываем и с остальными ... код получается следующий:

Код:
[COLOR="#000000"]<removeWorldObject id="{id}" radius="{vw}" interior="{int}" model="{model}" lodModel="{pid}" posX="{x}" posY="{y}" posZ="{z}" rotX="{rx}" rotY="{ry}" rotZ="{rz}"></removeWorldObject>[/COLOR]
* Нажимаем Add и выбираем свои параметры.
* Нажимаем Output --- Add costum format. Так же вводим имя.
* В строке над именем делаем то же самое, что и в input, только уже с кодом pawn.
Параметры, которые совпадают в обоих кодах, мы должны обозначит одинаковыми переменными. Т.е. если модель у нас встречается и там, и там, в первом коде модель у нас обозначена переменной {model}, то и в павн коде должна быть {model}.
Получившийся код:
Код:
[COLOR="#000000"]RemoveBuildingForPlayer(playerid, {model},{x}, {y}, {z}, {vw});[/COLOR]
Нажимаем Add и выбираем ваш параметр.


Надеюсь принцип вы поняли. В input мы вводим код, заменяя изменяющиеся параметры переменной. В output мы пишем код, заменяя соответствующие параметры соответствующими переменными.

Материал довольно сложный для объяснения, тем более в письменной форме. Поэтому я не отрицаю, что преподнес его не в лучшей форме:)

Автор: Porsche

 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу