World Role Play » [MYSQL] » 0.3.7 Обновление

   (0 reviews)
Sign in to follow this  
Followers 0

Человек-редиска
Спойлер

 

Oбновление недвижимости, а точнее их улучшений.

Были переработаны шкафы, теперь всё оружие и одежда отображается в шкафу, также удобная камера для выбора оружия.

Игроки, которые состоят в фракции могут менять одежду на фракционную и ту которую купили в магазине.

Все интерьеры домов были распределены по классам, то есть если вы делаете ремонт , меняется класс дома. Сейф и холодильник также были доработаны.

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

Позже количество домов на сервере будет увеличено.

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

Также есть беговые дорожки, и тренажёры. Прокачивая бег, ваш персонаж будет быстрее бегать, и меньше уставать. 

Добавили "Авиа-кампанию Los Santos "

В нём вы сможете приобрести себе любой из видов самолётов и вертолётов.

Личный самолёт, не идёт как домашний транспорт. И заспавнить в аэропорту вы можете в любое время зайдя на пикап.

Найти кампанию вы можете в /gps > Автосалоны.

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

Также номера есть и у фракционных машин.

Добавили VIP-номера , а также взаимодействия с ними. 

Например: Поиск владельца по номеру автомобиля и так далее.

Тюнинг также был переделан, теперь вам не нужно подбирать детали для своего автомобиля.

Сам тюнинг выполнен на приятных текстдравах, и не составит труда для обновления своего транспорта.

Система контрактов у наемников (Hitman's Agency) :

Теперь возможно просматривать заказы не только игроков которые в сети. Сделана мини-база контактов.

Также если вы маленький ранг, вам будет выдавать контракт наемник 5+ ранга.

Система автоматически оповещает когда жертва заходит в игру или выходит из нее.

В /contract - добавлено описание.

Добавлены команды:

/execute - Убийство с первого выстрела, действие 30 секунд, перезарядка 5 минут.

/ado - Прикрепление действия персонажа на модель.

/bugs - Удобная система для связи с разработчиками, и быстрого исправления недоработок.

Исправили - Если вы берете форму, после выхода из игры не будет пропадать. 

Исправлена команда /showall. Теперь просмотр по страницам.

Система наблюдения для полиции штата с помощью камер !

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

Итак, для того чтобы создать точку наблюдения:

- Введите команду /camera и выберите пункт "CREATE POINT".

- Затем, настройте камеру на Ваше усмотрение, и нажмите ENTER.

- В меню у вас появится порядковый номер точки наблюдения, нажав на него вы сможете наблюдать за тем местом в котором вы поставили точку, а также приближать (кнопка Y) или же отдалять (кнопка N), чтобы закончить наблюдать нажмите ENTER.

- Максимальное количество точек наблюдения по пять штук на одного игрока.

- Для того чтобы удалить точку наблюдения нажимайте H.

Данное обновление, облегчит работу сотрудникам ПД в штате.

Чтобы разнообразить игру мафиози на сервере , было принято решение убрать битвы за территории и вернуть войны за бизнесы ( /bizwar ) .

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

Также улучшен /members организаций , доступен просмотр игроков организации онлайн не только в диалоге , но и по карте , для удобства просмотра где находится игрок .

- Для "Национальной гвардии" был добавлен тир, где вы можете увеличить свои навыки стрельбы. Стоимость одного сеанса - $10.000. Один сеанс длится 5 минут. Для начала сеанса встаньте на маркер. Стреляйте по мишеням, с каждой убитой мишенью ваш уровень стрельбы увеличивается.

- Добавлена фракция San Andreas Sheriff Department. Она находится в городке Dillimore, возле Los Santos.

- Полиция Los Santos теперь имеет новое название - San Andreas Police Department.

- Возвращена фракция Hostage Rescue Team.

- Добавлена новая система оглушения игрока для гос. организаций. Достаточно взять в руки оружие и ввести команду /tazer, и зарядить своё оружие парализующими патронами, после выстрела в игрока он будет оглушен, а надеть на него наручники вы можете нажав "N"

- Возвращён /f чат для гос. организаций. Теперь сотрудники гос. служб могут координировать друг друга. 

- Добавлена новая мера наказания, такая как читерский мир.

- Разделён чат личных сообщений, теперь /sms - это IC чат, а /pm - это ООС чат.

- Исправлены все баги с /break , домами и прочее.

- Так как в гетто мы решили убрать ДМ, но есть такие игроки которые любят пострелять в гетто, то мы решили сделать для них систему PVP между бандитами, суть очень проста: вводите команду /pvp [id игрока] [оружие] , и проводите так называемый дуэль, система переместит вас в виртуальный мир, чтобы дуэль проходил без помех, по окончанию дуэля в чат напишет имя победителя и вернет вас обратно.

- Система семей также была исправлена, сделан полный вайп семей (потому-что многие были не в своих семьях). А также создание семей теперь доступно с 6 уровня.

- По многочисленным просьбам, изменена система времени на сервере. Теперь на сервере игровое время, и получается за один ООС день, вы проживаете два IC дня. 12 часов ООС дня - это 24 часа IC дня.

- Добавлена система таргета, теперь если вы стреляете издали то будет удобно смотреть за состоянием противника.

- Исправлена команда /ado, /caraction (не должна пропадать).

- Добавлена динамическая система выброса оружия. Команды: /dropgun, /dropguns. Также после того как вы умираете с оружием, то ваше оружие выпадает и его подобрать. Когда вы выкидываете одно оружие, позицию оружия можно редактировать, для большей реалистичности.

- Для соблюдения правил ПДД, добавлены ограждения на шоссе СФ-ЛС. А также добавлена система поворотников, чтобы их использовать нажмите NUM4 - NUM6.

Новый интерьер 24/7.

Обновление системы аксессуаров.

В отличии от той системы которая у нас была ранее, в этом обновлении удалось воспроизвести все те черты так сказать идеального магазина аксессуаров, который был запланирован. Иными словами мы его сделали максимально удобным и красивым для покупки и использования.

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

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

Приобретенные аксессуары хранятся в инвентаре /inv . Там вы можете снять, одеть, изменить, удалить аксессуары. 

Новое месторасположение ФБР. 

Теперь она находится в небоскрёбе, и имеет красивый интерьер.

Серфинг Клуб

Так как скоро наступает лето, вы можете ощутить его на сервере. Найти клуб можно в /gps > Развлечения. Там будут стоять продавцы и у них можно приобрести доску, после чего нужно подойти к воде у берега и стать на доску (/surf) , после чего можно начинать кататься. Если вы покинете пляжную зону то у вас будет пропадет доска.

Управление доской: влево , вправо , вниз , вверх обычными стрелками.

"Система смерти"

Теперь если в вас попадают и ваш уровень здоровья меньше чем урон от оружия, то у вас начинается первая стадия смерти. Во время этой стадии у вас начинается головокружение и вы не можете идти, вылечится вы можете аптечкой или вызовите медика.

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

"Система переноса" , вашего аккаунта с другого сервера к нам. 

Итак, чтобы это сделать нужно зайти в /mm выбрать пункт "Перенос аккаунта" . Заполнить все строчки: уровень, деньги, фракция и так далее. И ждать пока администратор перенесёт вам его. Обычно ~1-7 минут (вам не нужно будет перезаходить система сделает всё сама).

Исправлена ошибка с киком под номером 8.

Исправлен баг с /su

Исправлен дамаг, теперь урон работает отлично.

В /damages добавлена вся информация по урону, и даже тот кто вас атаковал. Также если вас убили просто так, вы продолжайте лежать и напишите в репорт жалобу. Администратор посмотрит /damages и накажет игрока, а вас вылечит и вы продолжите свою игру.

В /donate > Игровые привелегии . Добавлено два новых пункта: Снять затычку, Освобождение из тюрьмы.

Добавлен баскетбол

Поиграть в баскетбол можно в /gps > Развлечения.

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

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

Новая-обновленная система квестов

Система будет помогать новичкам при старте, а точнее направлять их. Суть системы очень проста, при старте на респавне вас будет ждать бот "Джон", он будет вашим первым куратором в штате, от него вы будете получать задания. Хронику пройденных и доступных квестов вы можете просмотреть введя команду /quest.

Вы сильно спешите и вводите на клавиатуре вместо /mm, .ьь и естественно на любом другом сервере это слово напишет в чат, но у нас сам процессор переведет в это слово в команду и получится: /mm. 

Также мы не остановились на этом и добавили одну конструкцию которая помогает при отыгрывании роли персонажа, а именно изменение команды /me. Теперь можно отыгрывать вот так: .я показал удостоверение полиции. 

Обновлена шахта. 

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

Цена за койку снижена до 15$.

Исправлены зависания сервера.

Чтобы закрыть раб. авто, используйте /lock 4.

Исправлен баг с /dropgun.

Количество собранных яблок с деревьев за квест, уменьшили до 40.

Цена за объявления понижена в два раза.

Добавлено в /gps > Работы, местонахождения машин для работ.

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

Исправлена проблема с бензином.

Если у вас есть именная машина, при /sellcar 2 - она продается. 

ВНИМАНИЕ: Именную машину можно купить только за донат, продать игроку нельзя, и купить у игрока аналогично.

Добавлена зеленая зона на лесопилку.

Исправлен баг на заводе.

Исправлена ошибка с EXP, теперь сразу повышается уровень, не нужно ждать PayDay.

Исправлена зарплата в фракциях.

Исправлен баг с античитом, код 18546.

Арендовать велосипед можно только до 3 уровня.

Добавлена система багажника 

Добавлен парк развлечений

Были изменены все интерьеры, теперь они полностью пустые, поменять можно только планировку в /hmenu. Вся мебель в доме она создается исключительно владельцем дома, и если вы продаете свой дом, то мебель сохраняется в нём, тем самым можно увеличить цену продажи дом в зависимости от качественной мебели, и уникальности планировки.

Покупка мебели происходит простым образом, вам нужно лишь приехать в магазин который можно найти в /gps, далее выбирать нажимая кнопки на экране мебель, и тип мебели. Позже вам нужно приехать домой, ввести /hmenu > Изменить > Управление мебелью, для удобства мы ввели отдельную команду: /hfurn. 

Управление мебелью очень интересное, если вы еще не поставили у себя дома например диван, то он будет красным цветом, если вы его установили то он будет обычным цветом, но когда вы кликните на него вам будет доступно 4 пункта: EDIT - изменить позицию, DELETE - удалить, CLOSE - закрыть меню, SELL - продать мебель государству. Мы не использовали диалоги, а сделали напрямую на текстдравах чтобы было удобнее расставлять и управлять мебелью.

Исправлена лесопилка, больше вы не будете падать. 

Исправлена команда /dir 

Исправлен объект который висел в гетто в воздухе. 

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

Исправлен чекпоинт разгрузок у фракций. 

Исправлен банкомат в SWAT 

В магазине одежды теперь когда вы нажимаете "Нет", деньги забирать не будет. 

Исправлен код кика, когда вы выходите из автосалона. 

Сделан чат для VIP'ов, /vr. 

Переработан функционал «Hitman's Agency»: 

Полностью переписана команда /contract. 

Убрана команда, выводящее меню агентства, заменена на: /contracts (посмотреть список доступных контрактов), /ranks (посмотреть онлайн агентства, кол-во удачно выполненных и проваленных заказов у каждого агента). 

 


 Report this file



Еще файлы steve


User Feedback

  • Similar Content

    • MetaLife Online
      By MetaLife Online
      Привествую! писал код. проверил работу, в БД отправилось информация криво 
      потом добавил к P_NICK[MAX_PLAYER_NAME] для того чтобы все было окей. Но после этого данные вообще не отпровляються и не показываеться %s. пару раз удалял и не помогло не чего 
      enum PLAYER_INFO {     P_ID,     P_NICK[MAX_PLAYER_NAME],     P_PASS,     P_GENDER,     P_SKIN,     P_LVL, };  

    • Danny_Marcelo
      By Danny_Marcelo
      Всех приветствую. Сегодня я решил обновить систему мероприятий, т.к. на самом проекте Advance RP уже давно видоизменили систему, добавили нового функционала. Мы не должны стоять на месте и я решил тоже свою систему доработать. Вы можете использовать данную систему как аналог Advance RP или же доработать для своего проекта. Все в ваших руках как говорится.
       
      Что нового?
       
      Итак приступим:
      Находим свои переменные и вставляем:
       
      new settp = 0; // Флаг включения/выключения телепортации new Float:TeleportFloat[3]; // Координаты точки телепортации new TeleportInfo[2]; // Интерьер и виртуальный мир new Float:PlayerLastPos[MAX_PLAYERS][3]; // Последние координаты игрока new PlayerLastInt[MAX_PLAYERS]; // Последний интерьер игрока new PlayerLastVW[MAX_PLAYERS]; // Последний виртуальный мир игрока new PlayerWeapons[MAX_PLAYERS][13][2]; // Оружие игрока (слот и патроны) new PlayerUsedTP[MAX_PLAYERS]; // Флаг для отслеживания использования /tp  
      Далее идём в команды, мой случай на Pawn.CMD, но +/- везде одинаково, разве что меняется шапка
       
      CMD:settp(playerid, params[]) {     if (PlayerInfo[playerid][pAdmin] < 4) return 1;     new string[95];     if (settp == 0)     {         GetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]);         TeleportInfo[0] = GetPlayerInterior(playerid);         TeleportInfo[1] = GetPlayerVirtualWorld(playerid);         settp = 1;         format(string, sizeof(string), "[A] %s[%d] установил точку телепорта для игроков. {00CC00}ТП включен.", PlayerInfo[playerid][pName], playerid);         SendAdminMessage(0x52B2B5FF, string);     }     else     {         format(string, sizeof(string), "[A] %s[%d] удалил точку телепорта для игроков. {FF6600}ТП отключен.", PlayerInfo[playerid][pName], playerid);         SendAdminMessage(0x52B2B5FF, string);         settp = 0;     }     return 1; } CMD:tp(playerid, params[]) {     if (settp == 0) return SendClientMessage(playerid, 0xCECECEFF, !"Функция отключена администратором.");     if (PlayerInfo[playerid][pJailed] >= 1) return SendClientMessage(playerid, 0xCECECEFF, !"Арестованным не разрешено покидать камеру.");     if (PlayerInfo[playerid][pRabota] != 0) return SendClientMessage(playerid, 0xCECECEFF, !"Необходимо завершить все начатые работы и активные действия.");     if (bolkam[playerid] == true) return SendClientMessage(playerid, 0xCECECEFF, !"Необходимо завершить все начатые работы и активные действия.");     GetPlayerPos(playerid, PlayerLastPos[playerid][0], PlayerLastPos[playerid][1], PlayerLastPos[playerid][2]);     PlayerLastInt[playerid] = GetPlayerInterior(playerid);     PlayerLastVW[playerid] = GetPlayerVirtualWorld(playerid);     for (new i = 0; i < 13; i++)     {         GetPlayerWeaponData(playerid, i, PlayerWeapons[playerid][i][0], PlayerWeapons[playerid][i][1]);     }     PlayerUsedTP[playerid] = 1;     ShowPlayerDialog(playerid, 22, DIALOG_STYLE_MSGBOX, !"{6699FF}Телепортация",         !"{FFFFFF}Вы уверены, что хотите попасть на место проведения мероприятия?\n{FFCD00}Ваше оружие будет изъято для хранения и возвращено позже.", !"Да", !"Нет");     return 1; }  
       
      CMD:back(playerid, params[]) {     if (!PlayerUsedTP[playerid])     {         return SendClientMessage(playerid, 0xCECECEFF, !"Эту функцию можно использовать после {FF9933}/tp, /go {CECECE}или по окончании {FF9933}мероприятий");     }     SetPlayerPos(playerid, PlayerLastPos[playerid][0], PlayerLastPos[playerid][1], PlayerLastPos[playerid][2]);     SetPlayerInterior(playerid, PlayerLastInt[playerid]);     SetPlayerVirtualWorld(playerid, PlayerLastVW[playerid]);     ResetPlayerWeapons(playerid);     for (new i = 0; i < 13; i++)     {         if (PlayerWeapons[playerid][i][0] != 0)         {             GivePlayerWeapon(playerid, PlayerWeapons[playerid][i][0], PlayerWeapons[playerid][i][1]);         }     }     PlayerUsedTP[playerid] = 0;     SendClientMessage(playerid, 0x3399FFFF, !"Вы вернулись туда, где были до телепортации");     return 1; } Ну и в OnDialogResponse:
      case 22: // Не забудьте проверить и при надобности изменить id диалога на вашу цифру или ID_NAME         {             if (response)             {                 SetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]);                 SetPlayerInterior(playerid, TeleportInfo[0]);                 SetPlayerVirtualWorld(playerid, TeleportInfo[1]);                 ResetPlayerWeapons(playerid);                 SendClientMessage(playerid, 0x66CCFFFF, "Вы были доставлены на место проведения мероприятия");                 SendClientMessage(playerid, 0x66CCFFFF, "Чтобы вернуться обратно, введите {FF9900}/back");             }         } Скриншоты:
       
      Если игрок сидит в КПЗ и вводит /tp:

       
      При включенном /tp:

       
      При выключенном /tp:

       
      Сообщение администраторам:

       
      Если работаешь или лечишься в больнице:

       
      Текст после телепортации:

       
      При вводе /back 1 и более раз:

       
      P.S. Команду /tp на Advance можно нажимать бесконечно, по этому я не стал сюда пихать аналогичную проверку как в /back.
      Если что, не сложно будет добавить 1 строчку проверки. Просто имейте ввиду, что это не баг. Просто нужно же соответствовать названию темы "На 100% КОПИЯ"))
       
      Автор: Danny_Marcelo
      Размещая на другие порталы, обязательно указать автора
    • Wiggins
      By Wiggins
      Доброго времени суток, нуждаюсь в помощи. Если есть люди, которые шарят в pawno, нужна помощь. Короче, мод ART RP, там в донате есть строка "Уникальные аксессуары", когда на него нажмешь, открывается TextDraw менью, нужно переделать это на обычную менью (/mm например, там обычная менью), буду рад, если поможете, за ранее спасибо.

      Если не ошибаюсь, строка текстдрав аксессуаров начинается с 1416 до 1443.
      art4.pwn
    • Danny_Marcelo
      By Danny_Marcelo
      Приветствую всех. Сегодня я хочу поделиться системой создания объектов как на Advance RP. Пока нигде не встречал. Да, есть аналоги, порой весьма неплохие. Особенно скрипт SOE. Но тут именно конкретная копия проекта Advance RP. Администрация Advance RP старается максимально скрывать админ информацию главной админки, но благодаря ютуберам какая то информация всё таки просочилась в общий доступ. Благодаря этому мне и удалось воссоздать почти на 100% копию данной системы. Для начала распишу суть. К никам Andrey Ringo, Smart_Jakson и прочим спец.админам привязана команда /lego. Она даёт доступ к другим командам, которые используются для создания и редактирования объектов. Как я понял объекты находятся непосредственно в базе данных MariaDB, а не на сервере, создатель боится что если всем подряд давать команду, те могут положить сервер (случайно), как например ютубер MalFoy чуть этого не сделал:

      Ну в основном она привязана на каждом сервере индивидуально. К примеру на грине по мимо Ринго и Смарта еще и к главному администратору. На Блу аналогично.
      Ну что же, меньше слов, больше дела. Приступим:
      Перейдём к нашим define:
      //========================= [ Привязка к нику ] ================================ #define FullAccessOne                    !strcmp(PlayerInfo[playerid][pName], "Andrey_Ringo", false) #define FullAccessTwo                   !strcmp(PlayerInfo[playerid][pName], "Smart_Jakson", false) #define FullAccessThree                  !strcmp(PlayerInfo[playerid][pName], "Danny_Marcelo", false) #define MAX_LEGO_OBJECTS                 100 // Максимальное количество объектов К нашим переменным:
      //========================  [ LEGO ] =========================================== new LegoObjects[MAX_PLAYERS][MAX_LEGO_OBJECTS]; // Массив для хранения объектов new LegoObjectCount[MAX_PLAYERS]; // Счетчик объектов для каждого игрока new bool:LegoMode[MAX_PLAYERS]; // Режим LEGO new Float:LegoObjectOriginalPos[MAX_PLAYERS][MAX_LEGO_OBJECTS][6]; // [playerid][object_index][x, y, z, rotX, rotY, rotZ] new Float:ServerObjectOriginalPos[MAX_OBJECTS][6]; // [objectid][x, y, z, rotX, rotY, rotZ] new bool:ServerObjectMoved[MAX_OBJECTS]; // Флаг, указывающий, был ли объект перемещён enum {     EDIT_TYPE_NONE,     EDIT_TYPE_GLOBAL,     EDIT_TYPE_PLAYER }; new EditingObjectType[MAX_PLAYERS]; // Тип редактируемого объекта (серверный или игровой) new EditingObjectID[MAX_PLAYERS] = { -1, ... }; // ID редактируемого объекта // ============================================================================= В public OnPlayerConnect(playerid)
      LegoMode[playerid] = false;     LegoObjectCount[playerid] = 0;     EditingObjectID[playerid] = -1;     for(new i = 0; i < MAX_LEGO_OBJECTS; i++)     {         LegoObjects[playerid][i] = INVALID_OBJECT_ID;     } В public OnPlayerDisconnect(playerid, reason)
      for(new i = 0; i < LegoObjectCount[playerid]; i++)     {         if(IsValidObject(LegoObjects[playerid][i]))         {             DestroyObject(LegoObjects[playerid][i]);         }     }     LegoObjectCount[playerid] = 0;     EditingObjectID[playerid] = -1;     DestroyPlayerLogo(playerid); В OnDialogResponse:
      case 272: // Диалог подтверждения для серверных объектов, не забудьте заменить на свой         {             if(response) // Если игрок нажал "Да"             {                 EditObject(playerid, EditingObjectID[playerid]);                 SendClientMessage(playerid, 0xFFFF00AA, "[LEGO] Выберите объект для редактирования");             }         }
      После стандартных public
      public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ) {     if(type == SELECT_OBJECT_GLOBAL_OBJECT) // Если выбран серверный объект     {         ShowPlayerDialog(playerid, 272, DIALOG_STYLE_MSGBOX, !"{ED7A19}Предупреждение",         !"{FFFFFF}Это не LEGO объект. Его перемещение нежелательно.\n\         Вы всё-таки хотите передвинуть его?", !"Да", !"Нет"); // Не забудьте ID диалога заменить аналогично OnDialogResponse         EditingObjectID[playerid] = objectid;         EditingObjectType[playerid] = EDIT_TYPE_GLOBAL;     }     else if(type == SELECT_OBJECT_PLAYER_OBJECT) // Если выбран LEGO-объект     {         for(new i = 0; i < LegoObjectCount[playerid]; i++)         {             if(LegoObjects[playerid][i] == objectid)             {                 EditingObjectID[playerid] = i;                 EditingObjectType[playerid] = EDIT_TYPE_PLAYER;                 EditPlayerObject(playerid, LegoObjects[playerid][i]);                 new string[128];                 format(string, sizeof(string), "[LEGO] Редактирование объекта {3E8A33}%d", i + 1);                 SendClientMessage(playerid, 0xFFFF00AA, string);                 return 1;             }         }     }     return 1; } и еще один
      public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {     if(response == EDIT_RESPONSE_FINAL)     {         if(EditingObjectType[playerid] == EDIT_TYPE_GLOBAL) // Если это серверный объект         {             GetObjectPos(objectid, ServerObjectOriginalPos[objectid][0], ServerObjectOriginalPos[objectid][1], ServerObjectOriginalPos[objectid][2]);             GetObjectRot(objectid, ServerObjectOriginalPos[objectid][3], ServerObjectOriginalPos[objectid][4], ServerObjectOriginalPos[objectid][5]);             ServerObjectMoved[objectid] = true;             SetObjectPos(objectid, fX, fY, fZ);             SetObjectRot(objectid, fRotX, fRotY, fRotZ);             new string[110];             format(string, sizeof(string), "Позиция объекта сохранена {E5A938}(%d/100){66AF0B}. Используйте /moveobj для перемещения на исходное место", LegoObjectCount[playerid]);             SendClientMessage(playerid, 0x66AF0BFF, string);         }         else if(EditingObjectType[playerid] == EDIT_TYPE_PLAYER) // Если это LEGO объект         {             SetPlayerObjectPos(playerid, objectid, fX, fY, fZ);             SetPlayerObjectRot(playerid, objectid, fRotX, fRotY, fRotZ);         }     }     return 1; } Ну и наконец перейдем в наши команды. Я для примера буду использовать pawncmd:
      Команда для доступа к остальным командам редактирвоания:
      CMD:lego(playerid, params[]) {     if (!FullAccessOne && !FullAccessTwo && !FullAccessThree) return 1;     {         LegoMode[playerid] = !LegoMode[playerid];         if(LegoMode[playerid])         {             SendClientMessage(playerid, 0xFFFFFFFF, !"Режим {F7CB31}LEGO {FFFFFF}включён");             SendClientMessage(playerid, 0xFFFFFFFF, !"Команды: /newobj /dellast /delall /objedit /repeat");             SendClientMessage(playerid, 0xFF0000FF, !"Внимательно вводите id объекта! Неверный id может вызвать падение сервера!");         }         else         {             SendClientMessage(playerid, 0xFFFFFFFF, !"Режим {F7CB31}LEGO {FFFFFF}выключен");         }     }     return 1; } Команда для создания объектов:
      CMD:newobj(playerid, params[]) {     if(PlayerInfo[playerid][pAdmin] < 5) return 1;     {         if(!LegoMode[playerid]) return SendClientMessage(playerid, 0xFFFFFFFF, !"Включи режим LEGO: {F7CB31}/lego");         SendClientMessage(playerid, 0xE3871EFF, !"Внимательно вводите id объекта! Неверный id может вызвать падение сервера!");         if(LegoObjectCount[playerid] >= MAX_LEGO_OBJECTS) return SendClientMessage(playerid, 0xFF0000FF, "Достигнут лимит объектов");         new objectid;         if(sscanf(params, "d", objectid)) return SendClientMessage(playerid, 0xCECECEFF, !"Используйте: /newobj [id объекта]");         new Float:x, Float:y, Float:z;         GetPlayerPos(playerid, x, y, z);         LegoObjects[playerid][LegoObjectCount[playerid]] = CreatePlayerObject(playerid, objectid, x, y, z, 0.0, 0.0, 0.0, 300.0);         LegoObjectOriginalPos[playerid][LegoObjectCount[playerid]][0] = x;         LegoObjectOriginalPos[playerid][LegoObjectCount[playerid]][1] = y;         LegoObjectOriginalPos[playerid][LegoObjectCount[playerid]][2] = z;         LegoObjectOriginalPos[playerid][LegoObjectCount[playerid]][3] = 0.0;         LegoObjectOriginalPos[playerid][LegoObjectCount[playerid]][4] = 0.0;         LegoObjectOriginalPos[playerid][LegoObjectCount[playerid]][5] = 0.0;         LegoObjectCount[playerid]++; // Увеличиваем счетчик объектов         new string[59];         format(string, sizeof(string), "[LEGO] Создан объект. Всего объектов: {35BD39}%d/%d", LegoObjectCount[playerid], MAX_LEGO_OBJECTS);         SendClientMessage(playerid, 0xFFFF00AA, string);     }     return 1; } Команда для редактирования объектов, включая серверных.
      CMD:objedit(playerid, params[]) {     if(PlayerInfo[playerid][pAdmin] < 5) return 1;     {         if(!LegoMode[playerid]) return SendClientMessage(playerid, 0xFFFFFFFF, !"Включи режим LEGO: {F7CB31}/lego");         SendClientMessage(playerid, 0xFFFF00AA, !"[LEGO] Выберите объект для редактирования");         SelectObject(playerid);     }     return 1; } Данная команда, вернёт передвинутые объекты вашего сервера в исходное состояние
      CMD:moveobj(playerid, params[]) {     if(PlayerInfo[playerid][pAdmin] < 5) return 1;     {         if(!LegoMode[playerid]) return SendClientMessage(playerid, 0xFFFFFFFF, !"Включи режим LEGO: {F7CB31}/lego");         new movedObjects = 0;         for(new i = 0; i < MAX_OBJECTS; i++)         {             if(ServerObjectMoved[i])             {                 SetObjectPos(i, ServerObjectOriginalPos[i][0], ServerObjectOriginalPos[i][1], ServerObjectOriginalPos[i][2]);                 SetObjectRot(i, ServerObjectOriginalPos[i][3], ServerObjectOriginalPos[i][4], ServerObjectOriginalPos[i][5]);                 ServerObjectMoved[i] = false;                 movedObjects++;             }         }         new string[92];         format(string, sizeof(string), "Стандартные объекты со смещённой позицией возвращены на свои места {E8AC32}(%d шт.)", movedObjects);         SendClientMessage(playerid, 0x78A82CFF, string);     }     return 1; } Эта команда удаляет последний созданный объект через /newobj
      CMD:dellast(playerid, params[]) {     if(PlayerInfo[playerid][pAdmin] < 5) return 1;     {         if(!LegoMode[playerid]) return SendClientMessage(playerid, 0xFFFFFFFF, "Включи режим LEGO: {F7CB31}/lego");         if(LegoObjectCount[playerid] == 0) return SendClientMessage(playerid, 0xCECECEFF, "Нет объектов для удаления.");         DestroyPlayerObject(playerid, LegoObjects[playerid][LegoObjectCount[playerid] - 1]);         LegoObjectCount[playerid]--;         new string[37];         format(string, sizeof(string), "[LEGO] Удалён объект {F74214}%d/100", LegoObjectCount[playerid]);         SendClientMessage(playerid, 0xFFFF00AA, string);     }     return 1; } Эта команда удалит все созданные вами объекты.
      CMD:delall(playerid, params[]) {     if(PlayerInfo[playerid][pAdmin] < 5) return 1;     {         if(!LegoMode[playerid]) return SendClientMessage(playerid, 0xFFFFFFFF, "Включи режим LEGO: {F7CB31}/lego");         if(LegoObjectCount[playerid] == 0) return SendClientMessage(playerid, 0xCECECEFF, "Нет объектов для удаления.");         for(new i = 0; i < LegoObjectCount[playerid]; i++)         {             DestroyPlayerObject(playerid, LegoObjects[playerid][i]);         }         LegoObjectCount[playerid] = 0;         SendClientMessage(playerid, 0xFFFF00AA, !"[LEGO] Все объекты удалены");     }     return 1; } Ну и эта команда повторит действие /newobj [id игрока]
      CMD:repeat(playerid, params[]) {     if(PlayerInfo[playerid][pAdmin] < 5) return 1;     {         if(!LegoMode[playerid]) return SendClientMessage(playerid, 0xFFFFFFFF, "Включи режим LEGO: {F7CB31}/lego");         if(LegoObjectCount[playerid] == 0) return SendClientMessage(playerid, 0xCECECEFF, "Нет объектов для повторения.");         new Float:x, Float:y, Float:z;         GetPlayerPos(playerid, x, y, z);         new lastObjectID = LegoObjects[playerid][LegoObjectCount[playerid] - 1];         new modelid = GetPlayerObjectModel(playerid, lastObjectID);         LegoObjects[playerid][LegoObjectCount[playerid]] = CreatePlayerObject(playerid, modelid, x, y, z, 0.0, 0.0, 0.0, 300.0);         LegoObjectCount[playerid]++;         new string[39];         format(string, sizeof(string), "[LEGO] Создан объект {35BD39}%d/%d", LegoObjectCount[playerid], MAX_LEGO_OBJECTS);         SendClientMessage(playerid, 0xFFFF00AA, string);     }     return 1; } Переменные
      enum pInfo {     pName[MAX_PLAYER_NAME+1],     pAdmin,  new PlayerInfo[MAX_PLAYERS][pInfo]; заменяйте на свои из вашего мода. Цвета я использовал как коды, чтобы у вас не было ошибок error 017: можете заменить на свои дефайны цвета.
      Система полностью тщательно протестирована, она полностью работает. 
      Скриншоты, как выглядит это всё:
       
       
      P.S. Если редактируете серверные объекты, то сразу имейте ввиду, что createobject и стандартные объекты карты GTA San Andreas не редактируются. А вот уже те, которые через inckude <streamer>, то есть CreateDynamicObject, они редактируются. Будьте осторожны при изменениях и добавлениях объектов. Не вбивайте рандомные числа в /newobj. ID объектов SAMP полно в интернете. 
      Спасибо за внимание!
    • Sliver
      By Sliver


      Скачать файл СЛИВ МОДА ETERNITY RP (2025)
      СЛИВ МОДА ETERNTY SAMP 2025! (НОВЫЙ)Слив мода Eternity SAMP. Почему же решил слить - Расскажу вам немного о владельце Артема Петрова. Решил кинуть на деньги не тех людей. Так же это чудо кидала Павно, заражённый скриптеру. По этому сливаем мод. Вам по установке писать сюда  помогу и расскажу как установить. Всем приятного использования!Данный мод продается на другой площадке и то какой то левый) ( ну лучше бесплатно чем платно )
      + бонус стиль етернити рп
      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ПРОЧИТАЙТЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      БАЗА ДАННЫХ ПОДКЛЮЧАЕТСЯ ЧЕРЕЗ ИНКЛУДЫ И SETTINGS.INI! 
      НЕ В САМОМ МОДЕ А В ИНКЛУДЕ И В SETTINGS.INI
      config cfg думаю ума хватит вам написать самим
      2024 : был выклан сюда мною этот мод мой бывший ник SliverShokc к сожалению потерял доступ к аккаунту
      Добавил Sliver Добавлено 19.03.2025 Категория Моды Автор By Sliver