script_name("ServerRules") script_author("Claude") script_version("3.0") -- Нужны: MoonLoader, SAMPFUNCS, mimgui -- ВАЖНО: сохраняй файл в кодировке UTF-8. Весь текст в окне работает в UTF-8 -- напрямую (так хочет ImGui), поэтому никакой перекодировки не нужно. require("lib.moonloader") local imgui = require("mimgui") local ffi = require("ffi") local wm = require("windows.message") local vkeys = require("vkeys") -- ============================================================ -- НАСТРОЙКИ -- ============================================================ local CONFIG = { commands = { "rules", "rl" }, -- команды: /rules, /rl key = vkeys.VK_F2, -- клавиша-бинд (nil — отключить) title = "Правила сервера", fontSize = 16, } -- ============================================================ -- ПРАВИЛА -- Формат текста: каждая строка — отдельный абзац. -- "# Текст" — подзаголовок (выделяется цветом) -- "- Текст" — пункт списка -- ============================================================ local RULES = { { num = [==[0]==], title = [==[Примечание об администрации]==], text = [==[Администратор должен четко и аргументированно выдавать наказание игроку за конкретные нарушения, по конкретным пунктам правил. Каждый пункт правил имеет четкое пояснение о сроках выдачи наказаний. Администратор может суммировать наказания. На ресурсах проекта, которыми являются все ресурсы, находящиеся на доменном имени gambit-rp.ru и https://saes.su/ включая страницы и поддомены. Администратор обязуется вести себя корректно, общаться отстраненно в официальном или полуофициальном стиле. В случае нарушения данного правила администратор снимается с должности. Взаимоуважение — заслуга обеих сторон. # Администратору запрещено: - Выдавать наказания, руководствуясь собственными взглядами. - Оскорблять игроков, дискредитировать их в сообществе, переходить на личности. - Общаться неуважительно или совершать действия, противоречащие правилам и здравому смыслу. # Игроку запрещено: - Провоцировать администрацию, выводить её на эмоции или оскорбления. - Обращаться неуважительно, брататься, мешать выполнять обязанности администратора. - Переходить на личности. Администратор — это в первую очередь человек, который помогает вам решать проблемы. Отталкиваясь от данного пункта правил, игрок вправе пожаловаться на администратора. Администратор, опираясь на этот пункт, вправе ограничить общение с игроком или отказать ему в помощи.]==] }, { num = [==[1]==], title = [==[Общение]==], text = [==[Первое и самое главное правило — ведите себя адекватно. На сервере и форуме запрещены оскорбления и пренебрежительное отношение к другим игрокам и администрации в любом проявлении. Вы можете получить наказание на усмотрение администратора, не зависимо от того, чем было вызвано такое поведение. Мы стараемся создать дружное, адекватное комьюнити, и Вы нам в этом поможете. Будьте терпеливее. Любую проблему всегда можно решить без нецензурных выражений и криков. Администрация, особенно Главная администрация, всегда выслушает и попробует решить возникшие трудности. Часто можно видеть ненависть, перекочевавшую из игры в ООС, между участниками группировок или обычными игроками. Помните, что это просто игра и война в IC является частью игры, а не настоящей войной. Администрация призывает к взаимоуважению каждого игрока на сервере. В местах с большим скоплением людей (Клубные вечеринки, мероприятия, похороны и т.д) Вы должны использовать такие команды, как /w (шепот) и /ame, чтобы не создавать флуд, а также не мешать остальным игрокам. - Нецензурная лексика в отыгровках запрещена. - Нецензурные выражения в ООС чат запрещены категорически. - Нецензурное или грубое общение с администрацией на сервере или форуме строго запрещено. - Любые политические высказывания в игре, не касающиеся ролевого процесса, а также на иных ресурсах проекта, запрещены, поскольку зачастую являются почвой для разжигания конфликтов Блокировка ООС-чата, Warn, Бан от 1 до 10 дней]==] }, { num = [==[2]==], title = [==[Игровая атмосфера]==], text = [==[Согласитесь, что атмосфера на сервере — один из самых важных факторов интересной и приятной игры. Но создать подобающую атмосферу могут только сами игроки, а никак не администрация. Мы можем только призвать Вас не рушить атмосферу, созданную другими игроками, а также дать несколько советов, как создать её самому.]==] }, { num = [==[2.1]==], title = [==[Неролевое поведение]==], text = [==[- Запрещено бегать, прыгать, кататься на машине вокруг игроков, участвующих в игровой ситуации, тем самым мешая им и нарушая атмосферу. - Запрещено ездить на крыше авто под предлогом посадки в салон, в котором более нет системных мест. Исключениями являются только кабриолеты с возможностью посадки на задние места. - Отсутствие ролевого обоснования своих действий. В частности, запрещено обосновывать действия своего персонажа ООС причинами. - Технические драки регулируются данным понятием. Запрещено бегать по кругу, прятаться от драки на пассажирском сидении авто. - Если у Вашего авто повреждено более 2-х колес (отсутствуют покрышки на дисках), вы обязаны остановиться. - Запрещено носить бронежилет на персонаже без весомой IC причины. Допустимо: при перевозке больших сумм денег; в случае подтвержденного конфликта фракций и т.д. Итоговое решение по обоснованности ношения жилета принимает игровая администрация. Блокировка персонажа на 3 - 10 дней]==] }, { num = [==[2.2]==], title = [==[Несоответствие роли]==], text = [==[- Запрещено необоснованно преувеличивать физические возможности своего персонажа. - Запрещено необоснованно преувеличивать психологические возможности своего персонажа. - Запрещено необоснованно преувеличивать материальные/социальные возможности своего персонажа. - Продолжение движения после значительного ДТП и столкновения запрещено. - Провокация полиции на погоню строго запрещена. - Запрещается обычная, завуалированная реклама интим-услуг, поиск половых партнёров через объявления G:BUY. Для игры такой роли - воспользуйтесь соц. сетью Nova в разделе "G-Finder" - Запрещается использование функционала G:BUY или команды /action с целью продажи огнестрельного оружия. Блокировка персонажа от 5 до 15 дней]==] }, { num = [==[2.3]==], title = [==[Применение оружия гражданскими лицами]==], text = [==[Не каждый человек способен носить, хранить и применять оружие на практике. Обычные граждане не стремятся совершать тяжкие преступления и повсеместно нарушать закон в повседневной жизни. Для применения оружия должна быть весомая причина.Демонстрировать оружие = показать готовность к самозащите, но не приравнивается к намерению лишить жизни. Однако ввиду того, что к гражданам штата в рамках ролевой игры мы относим также членов криминальных фракций и игроков с нестандартными/криминальными ролями, объем возможностей с игроком того же цивильного сегмента у них будет отличаться. Перейдем к примерам. # Если вы обычный игрок без привязки к какому-либо сегменту ролевого процесса или являетесь частью цивильной фракции, то весомыми причинами являются: - Угроза вашей жизни от одного или группы лиц. Под этим подразумеваются прямые или косвенные признаки, позволяющие однозначно сделать вывод, что вас хотят: ограбить, избить, убить. Намерения должны четко прослеживаться в формулировках и отыгровках. Наличие оружия в руках у второй стороны конфликта также является причиной для начала стрельбы. Однако возвращаться спустя 15 и более минут с оружием в руках или поддержкой в виде друзей - значит инициировать новую ситуацию, а что будет считаться нарушением данного правила. - Применение в отношении вас или вашего имущества противоправных действий, в частности: взлом вашего транспорта, проникновение в жилище. В указанных ситуациях вы имеете право открыть огонь по нарушителям с целью обезвредить и вызывать полицию или просто защитить себя, не доводя преступника до 2 стадии (без добивания). - Если у вас есть веская причина, завязанная на ролевом процессе, которая приведет к СК другого персонажа. Ситуации бывают разные. Игроки-одиночки или из цивильного сегмента порой тоже могут запрашивать CK для других игроков, поэтому при наличии причин возможно инициировать стрельбу и доводить игрока до 2 стадии с последующим оформлением CK по всем правилам форума. Однако вы обязаны согласовывать подобные ситуации с администрацией до их начала, поскольку если причина для стрельбы окажется незначительной, персонаж может быть заблокирован по данному пункту правил. - Если имеет место угроза жизни и здоровью персонажу, который имеет тесную и четко прослеживаемую связь с вашим персонажем. Или же роль вашего персонажа позволяет точно определить, что он способен защитить другого человека, не связанного с персонажем-жертвой какими-либо значимыми взаимоотношениями. Речь в данном пункте идёт про постоянное окружение персонажа. В данной ситуации лучше всего обозначить второго персонажа как соигрока технически для подтверждения связи. Во втором случае подобные моральные ориентиры должны быть отражены в квенте. Этим же положениям обязаны следовать фракции, находящиеся на стадии заявок. # Рукоприкладство или техническая драка с каким-либо персонажем. - Если на вас накидывается человек без весомой на то причины и хочет нанести вам вред здоровью, вы можете достать оружие, но обязаны сделать предупредительный в воздух или пригрозить человеку. Это положение актуально для ситуаций, когда намерения уже четко обозначены, но первый удар еще не нанесен (и нет риска сразу же попасть в 1 стадию). Если же драка уже идет, то нападающая сторона может попробовать добить вас с целью сохранения собственной жизни. После окончания ситуации вы можете написать на него жалобу, либо вызвать администрацию для разбора ситуации. # Если вы игрок криминального сегмента, относящийся к фракции со статусом "одобренная" и выше или обладаете нестандартной/криминальной ролью в статусе "одобрена", то к вышеперечисленным положениям добавляются следующие: - Техническая драка в публичном поле, сопровождающаяся оскорблениями/унижениями чести и достоинства персонажа или его семьи являются поводом для применения оружия. При этом не стоит сразу же укладывать противника во вторую стадию. Напоминаем, что для этого должна быть весомая причина в виде репутационных рисков. Однако нанесение несмертельных ранений с огнестрельного оружия в данном случае будет уместно. *Под публичным полем понимается присутствие в обществе других персонажей, в рамках которого подобные действия со стороны другого игрока могут понести за собой репутационные или финансовые риски для вашего персонажа - Если ваша роль позволяет (одобренный топик в скриншотах персонажей), то при наличии причины, соответствующей вашему ролевому отыгрышу, вы также можете инициировать стрельбу, которая не приведет к летальным последствиям для другого игрока (СК). То есть, если ваш персонаж, в соответствии с топиком, является излишне агрессивным, или склонным к иного рода противоправным действиям, вы можете отыгрывать их и даже причинять смерть другому персонажу (ПК). Однако будьте готовы сослаться на свой топик, где прослеживается "типичность" такого поведения для персонажа. Это будет основной критерий для администрации при рассмотрении жалобы в случае ее написания. Кроме того, в случае, если ваши намерения раскроются в рамках ролевого процесса, то вы можете столкнуться со стрельбой раньше и ее инициатором станет "жертва" вашего персонажа. Правило о CK при этом применяется в общем порядке. - Если против вашего имущества (бизнес, транспорт, дом) были совершены противоправные или иные действия, которые повлекли или могут повлечь повреждение/уничтожение последнего, то будучи членом криминальной организации (соответствующего уровня), вы можете первым применять оружие в случае обнаружения персонажа, который является автором противоправных действий. Проще говоря, это положение про "самосуд". Если вы находите персонажа, который навредил вашему имуществу в течение 3 часов после события, то в рамках РП вы имеете полное право его наказать. Также важно, чтобы в рамках ролевого процесса вы могли это доказать, а в последствии сослаться на эти доказательства в случае написания жалобы на ваше имя. К данному пункту НЕ относятся стандартные и абсурдные ДТП из-за пинга или удары по машине по причине миссклика. В качестве причин подходит только то, что является частью осознанного ролевого процесса и не откатывается впоследствии. Данное правило не исчерпывающее. В каждой ситуации стоит руководствоваться в первую очередь ролью своего персонажа, чтобы определять рамки дозволенного, а также не забывать про РП логику и здравый смысл. При возникновении спорных ситуаций, во всех случаях без исключений, они должны быть доиграны до конца. В случае несогласия с произошедшим, игрок, в чью сторону был открыт огонь (жертва), может написать жалобу на форум. При необходимости она будет направлена ассистентам криминальных организаций для более детального рассмотрения. 1 Warn или бан на 3 - 10 дней.]==] }, { num = [==[3]==], title = [==[Имя Вашего персонажа]==], text = [==[Если у Вас есть трудности в придумывании имени, можете воспользоваться генератором RP ников в интернете. - У Вашего персонажа не должно быть имени Leha, Sanek и прочих сокращенных, правильно будет: Alexander, Alexey. Представьте, как было бы написано в паспорте у персонажа, то имя и пишите. - Имя персонажа не должно повторять имени какой-либо знаменитости, это категорически запрещено. - Имя персонажа должно соответствовать его национальности. Если по какой-либо причине национальность и имя рознятся, это должно быть описано в одобренной биографии персонажа или при регистрации через UCP. - Имя и фамилия не должны быть разнонациональные. Пример: Vladimir_Catalino, Brandon_Kalashnikov. Если по какой-либо причине это необходимо, то это должно быть описано в одобренной биографии персонажа или при регистрации через UCP. Отклонение заявки на регистрацию через UCP. Помещение игрока в Jail до момента смены имени.]==] }, { num = [==[4]==], title = [==[Игра животных]==], text = [==[Самые активные домашние питомцы, которые взаимодействуют с людьми — собаки. По этой причине на сервере разрешено отыгрывать роль собак. - В форме NickName указывается "Кличка собаки"_Dog. - Если Вы собираетесь играть собаку, то при подаче заявки на UCP, Вы должны отвечать на вопросы с ситуациями от лица человека. А в графе "Квента" описывать собаку. - Отыгрыш поведенческих отклонений животных, отличных от нормы, запрещён и будет расцениваться как несоответствие роли. - Также запрещено отыгрывать взаимодействия, связанные с половым влечением животных друг к другу и к людям Играть иные типы животных (кроме собак) можно только с одобрения куратора окружного сегмента. Блокировка от 3 до 10 дней/блокировка аккаунта навсегда.]==] }, { num = [==[5]==], title = [==[Отказ от игры]==], text = [==[- Зачастую случается, что многие игроки нашего сервера отказываются продолжать игру из-за некомпетентности своего оппонента или по каким-либо другим причинам — это большая ошибка. В любом случае вы должны закончить ситуацию, а уже после этого написать жалобу на форум, в соответствующий раздел. - Если игрок, с которым Вы участвуете в ситуации, допускает какие-либо мелкие нарушения или имеет недочеты в отыгровке, но при этом старается играть свою роль, Вы обязаны доиграть ситуацию до конца. Вы можете подсказать ему в /pm и указать на его ошибки, избегая флуда и оскорблений. Отказ от игры приравнивается к выходу с/от ролевой ситуации. Блокировка персонажа на 5 - 15 дней.]==] }, { num = [==[5.1]==], title = [==[Взаимодействие с SA-ES]==], text = [==[Даже если Вы считаете, что полицейский проводит задержание без должной на то причины, Вы должны понимать, что это сугубо IC проблема и решать её стоит в игре, подав жалобу в соответствующие органы на офицера. Либо, если присутствовало нарушение правил сервера, Вы обязаны доиграть ситуацию до конца и подать жалобу на форум в соответствующий раздел. Также как отказ от госпитализации и взаимодействии при ДТП и ЧС. Не стоит переносить IС нарушения полиции на OOC уровень. Блокировка персонажа на 5 - 10 дней.]==] }, { num = [==[5.2]==], title = [==[Взаимодействие с игроками]==], text = [==[Если к Вам напрямую обращается другой игрок или же показывает с помощью отыгровки, что он взаимодействует именно с Вами, то Вы обязаны отреагировать на это. Будь то какая-то фраза или даже пояснение в /do о том, почему Вы не реагируете на действия оппонента. Просто развернуться и убежать является неуважением и приравнивается к отказу от игры или к выходу с/от ролевой ситуации. Warn/Блокировка на 1 - 3 дня.]==] }, { num = [==[6]==], title = [==[Metagaming (MG)]==], text = [==[Metagaming - это использование любой внеигровой информации в IC процессе. Является очень грубым нарушением. ООС игра подразумевает под собой действия не имеющие за собой IC подвязки в рамках процесса, обмен информацией посредством ООС связи и злоупотребление ей. Пример ситуации: Вы узнали о свидетеле преступления на форуме по скриншот ситуации и убрали его. Кто-то в социальной сети сказал, что Вас собираются убить и Вы не заходите в игру. Блокировка персонажа на 10 - 30 дней]==] }, { num = [==[7]==], title = [==[Bunny Hopping (BH)]==], text = [==[Прыжки, с помощью которых Ваш персонаж передвигается быстрее, запрещены. 1 Warn]==] }, { num = [==[8]==], title = [==[Злоупотребление ООС чатом]==], text = [==[Во время ролевой ситуации запрещено дискуссировать без какой-либо на то причины. Если вы хотите пообщаться со своим другом, то используйте /pm. За злоупотребление ООС чатом Вы будете наказаны. Пишите в ООС чат только необходимое и умещайте все в одно предложение, дабы исключить флуд. Злоупотребление данным чатом приравнивается к нарушению игровой атмосферы. 1 Warn]==] }, { num = [==[9]==], title = [==[Character Kill (CK)]==], text = [==[Character Kill — полное уничтожение персонажа. В этом случае игрок, которого убили, получает бан аккаунта со статусом CK, после которого он обязан пересоздать аккаунт в личном кабинете используя новое имя, роль. Все имущество обнуляется. Использование купона на смену роли категорически запрещено. - Исходя из Системы стадий и урона, сервер сам определяет статус игрока. Соответственно если над игроком в стадии написано, что он мертв, то игрок получает CK, в случае если над человеком написано, что он ранен, то игрок не получает СК. Любые спорные ситуации или исключение решаются с помощью следящего администратора. - В ситуации, когда жизни вашего персонажа грозит очевидная опасность, следует играть соответствующе. Несмотря на то, кем является ваш персонаж, базовый инстинкт самосохранения и желания жить у него присутствовать должен. Если же ваши действия могут быть расценены как откровенное превышения физических или психологических возможностей персонажа, то администратор на свое усмотрение может в качестве наказания за нарушение указанных правил применить CK к вашему персонажу.]==] }, { num = [==[10]==], title = [==[Faction Character Kill (FCK)]==], text = [==[Полное уничтожение роли путём убийства вашего персонажа, обыгранное той или иной фракцией. Приписывается при запросе исполняющих прямо в игре. FCK могут получить только мемберы или аутсайдеры криминальной организации. Руководство организации имеют право на FCK и иные манипуляции только со своим составом внутри организации по их усмотрению. Решение о FCK от лидера и руководства организации подлежит оспариванию в разделе жалоб. Минимальный трехдневный срок взаимодействия внутри фракции от лица к которому применяется FCK является обязательным. Фракция должна предоставить доказательства того, что велась какая-то ситуация, которая отыгрывалась и привела к причинам и последствиям. FCK не выдается при взаимодействии фракции со сторонними лицами, которые не имеют никакого отношения к организации. Обязательна 2 стадия или отыгрывание самим погибшим свою смерть независимо от стадии или типа ранения для приписывания понятия FCK. Примеры: - Руководство организации решило выдать FCK своему мемберу, поскольку тот решил работать на полицию, узнав об этом в IC и имея причины его заманили и ликвидировали. Выдается FCK. - Фракция убила полицейского, который ранее работал на них, однако впоследствии между фракцией и этим полицейским случился конфликт. FCK не выдается, нужен топик CK на форуме. - Фракция убила владельца цветочного магазина, который ранее выделял долю с выручки, однако позже начал работать с правоохранительными органами. FCK не выдается, нужен топик CK на форуме.]==] }, { num = [==[11]==], title = [==[Player Kill (PK)]==], text = [==[PlayerKill(PK) — убийство игрока, при этом не наносящее ущерб его основной роли. В отличие от CK, PK имеет частный характер и не мешает продолжению игры основной роли персонажа. Чаще всего встречается при уличных перестрелках, в которых не замешано крупнокалиберное оружие. В случае получения PK Ваш персонаж забывает все события и обстоятельства, ставшие впоследствии причиной самого убийства. Персонажу ограничивается доступ к игре на 90 минут.]==] }, { num = [==[12]==], title = [==[Revenge Kill (RK)]==], text = [==[Убийство игрока за то, что он убил вас. Неважно попали ли вы в PK, CK. Сам факт вашей смерти говорит о том что вы забываете ситуацию целиком и полностью, так же, как вашего убийцу. Блокировка персонажа на 3 - 10 дней.]==] }, { num = [==[13]==], title = [==[Drive-by (DB)]==], text = [==[Стрельба из оружия с водительского места строго запрещена, т.к это дает большое преимущество игроку, который производит стрельбу. Наезд автомобилем на другого игрока с целью убийства или снятия HP без отыгровки строго запрещён. Блокировка персонажа на 5 - 20 дней. Блокировка всего аккаунта навсегда.]==] }, { num = [==[14]==], title = [==[Deathmatch (DM)]==], text = [==[Убийство персонажа, а равно нанесение урона без весомой IC причины. Любое действие в рамках IC процесса должно быть обосновано, а в случае с нанесением урона каждый игрок должен иметь готовность предоставить это обоснование администрации по запросу. Блокировка персонажа/аккаунта навсегда.]==] }, { num = [==[15]==], title = [==[Стрельба по полицейским. Полицейские Рейды и погони]==], text = [==[Человек, который решился на стрельбу по сотрудникам полиции, должен понимать, что против него вооруженный и обученный человек, который готов открыть огонь при первой возможности. То есть, в этом случае преступник должен отыграть все свои эмоции, проявлять страх и иметь представление о последствиях. - Если преступник или полицейский умирает во время рейда/штурма или специальной ситуации, он получает СК. Стоит учитывать, что в случае активного кейс-файла на вашего персонажа или фракцию, любое взаимодействие с полицией с применением огнестрельного оружия приравнивается к рейду/штурму. - В рандомных ситуациях (пешее преследование, погоня, спонтанная перестрелка и т.п.) обе стороны получают PK. - Если персонаж находится в группе других персонажей, которые открыли огонь по полицейским, но при этом не достал оружия и не сделал выстрела, к нему применяются обычные процедуры задержания. - Если вы первый открываете огонь по полицейскому, вы обязаны отыграть то, как достали оружие и c какой целью. - Выход из игры во время ареста или рейда приравнивается к отказу от игры. - Стрельба по сотрудникам полиции без какой-либо причины строго запрещена и приравнивается к несоответствию роли. - При захвате дома, стрельбы в интерьере, рейде или любых подобных мероприятиях, ожидание 10 секунд распространяется не только на вошедших в интерьер полицейских, но и на вышедших из интерьера. Все захваты домов, рейды или штурмы рекомендуется проводить при прямом присутствии следящей администрации. - Баллистический шлем специальных отрядов государственных фракций, находящийся в комплекте тяжелого бронежилета способен выдержать только одно попадание, система сама расчитывает урон. Игрок обязан отыгрывать действия персонажа в соответствии с полученной стадией смерти. - Все ранения, которые получил ваш персонаж вы обязаны отыгрывать после того, как активная перестрелка заканчивается. Все ранения, что получил ваш персонаж можно отыгрывать как не смертельные при условии, что вы не находитесь в первой или второй стадии.]==] }, { num = [==[15.1]==], title = [==[Cтадии применения силы]==], text = [==[Если полицейский ввязался в перестрелку с преступником, вооруженным оружием малого калибра (Deagle, Colt 9mm) или оружием ближнего боя, запрещается применять автоматическое оружие и оружие большего калибра (дробовик, М4, МP5) в том случае, если оно изначально не находилось у офицера в руках. Исключением являются сотрудники SWAT. Если преступник во время перестрелки применяет автоматическое оружие любого калибра (UZI, Tec-9, MP5), разрешается применять автоматическое оружие и оружие большего калибра (дробовик, М4, МP5). Увольнение. Блокировка персонажа на 5 - 10 дней.]==] }, { num = [==[15.2]==], title = [==[Избежание ареста]==], text = [==[В случае, если в попытке избежать ареста Ваш персонаж попадает в ситуацию, выживание в которой физически невозможно, он получает СK. Сюда же входит уход от полиции по воде без лодки, ведь если человек попробует избежать встречи с полицией вплавь в водах Тихого Океана (омывающего Сан-Франциско, аналог Сан-Фиерро) - он точно захлебнется. Это правило справедливо и для крутых склонов, падение с которых приводит к повреждениям, не совместимым с жизнью. CK на персонажа.]==] }, { num = [==[15.3]==], title = [==[Уклонение от ареста путем избежания входа в игру]==], text = [==[В случае, если в ваших действиях прослеживается уклонение от уголовного или административного преследования со стороны САЕС путем намеренного избегания входа в игру за подследственного персонажа, то на персонажа может быть наложено наказание в виде СК. Под уклонением подразумевается умышленное избегание входа в игру за персонажа в течение 7 дней после того, как у вас появилась информация о ведении следствия в отношение персонажа.]==] }, { num = [==[16]==], title = [==[Игра в свою пользу]==], text = [==[Во время ролевой ситуации некоторые игроки зачастую используют игру в свою пользу — это серьезное нарушением. Примеры ситуаций: - Допустим, вы решили ограбить человека и отыгрываете, что вокруг вас нет камер видеонаблюдения и свидетелей, то есть направляете внешние факторы в свою пользу. - У вас на руках 30 000$, при ограблении вы играете 15 000$. - В меру обстоятельств вы участвуете в драке 1 против 3, но играете как технично уворачиваетесь от всех ударов. - Вы врезались в стену на огромной скорости, ваше авто отлетело в сторону. Вы играете что поцарапали свою машину. - Упавшего во вторую стадию игрока строго запрещено поднимать мелкими отыгровками с земли. Поднятым с помощью аптечки может быть только игрок, который не имеет смертельных ранений и находится в первой стадии. Блокировка персонажа на 5 - 25 дней.]==] }, { num = [==[16.1]==], title = [==[Ношение маски]==], text = [==[В случае, если у модификации на вашу внешность присутствует маска и вы не хотите ломать собственную атмосферу, достаточно описать наличие маски в /pame Маску носить строго с аттачем, также использование маски должно быть обусловлено веской причиной. Пример: Вы поехали на дело - маска разрешена. Вы захотели просто прокатиться на машине в маске/шлеме - запрещено. Исключением является езда на мотоцикле в шлеме Предупреждение персонажа. Jail от 90 минут.]==] }, { num = [==[16.2]==], title = [==[Поджидание человека в AFK]==], text = [==[Запрещено поджидать человека находящегося в AFK, к данному пункту относятся ситуации, при которых игрока намеренно поджидают либо в непосредственной близости, либо катаясь где-то рядом в ожидании, когда человек задвигается, чтобы совершить над ним какие-либо действия - похитить, убить, ограбить и так далее. 1 Warn / Блокировка персонажа на 1 - 5 дней.]==] }, { num = [==[17]==], title = [==[Продажа игровой валюты и аккаунтов]==], text = [==[Запрещено продавать / приобретать игровое имущество за реальные деньги другим игрокам. Блокировка аккаунта с последующим удалением всех персонажей.]==] }, { num = [==[18]==], title = [==[Сексуальное насилие и жестокость]==], text = [==[На сервере запрещены любые проявления сексуального насилия и чрезмерной жестокости по отношению к другим игрокам. - Отыгровка таких ситуаций должна быть по обоюдному согласию обеих сторон. - Если игрок начал отыгрывать подобное, напишите ему в ООС чат, указывая на правило, чтобы он прекратил. Если игрок упорно продолжает, то Вы можете отказаться от игры и позвать администратора. Нельзя отказываться, предварительно не предупредив игрока о том, что необходимо остановиться. - Подобные действия можно отыграть в одну строчку, например: /do Произошло изнасилование. Запрещена игра сексуальных отношений между несовершеннолетними персонажами в любом ее проявлении Блокировка персонажа на 3 - 10 дней или Блокировка навсегда]==] }, { num = [==[18.1]==], title = [==[Сексуализация несовершеннолетних (педофилия и прочее)]==], text = [==[На сервере категорически запрещён любой сексуализированный отыгрыш с участием персонажей, чей возраст составляет менее 18 лет. Запрет охватывает любые формы и проявления, включая обсуждение, планирование, намеки или текстовую симуляцию подобных действий. Запрет распространяется на влечение к детям и подросткам любых возрастов до 18 лет (включая клинические понятия педофилии, гебефилии и эфебофилии), вне зависимости от стадий их полового созревания. Данный запрет является абсолютным и обусловлен законодательством о запрете демонстрации подобных материалов. В отличие от общего пункта 18, он не допускает никаких исключений, в том числе по «обоюдному согласию» игроков или персонажей. 1 Warn, в последующем нарушении блокировка персонажа навсегда. При частых рецидивах — чёрный список проекта]==] }, { num = [==[19]==], title = [==[Год на сервере (Криминал в Гетто)]==], text = [==[На сервере отыгрывается настоящее время, то есть нынешний год. Во многих оживленных местах находятся камеры видеонаблюдения, используют современную вычислительную технику, современные машины и вещи. В своей отыгровке это нужно учитывать. Однако, большим заблуждением многих игроков является то, что преступности в настоящее время практически нет. Это не так. Да, разгул преступности чуть меньше, чем в тех же девяностых, потому что полиция в Америке работает отлично, но на улицах происходят все те же перестрелки, те же драки, тот же криминал. Нужно помнить, что-то — жизнь, а это — игра. Люди играют так, как хотят, придерживаясь лишь правил сервера. Принуждать их и диктовать свою игру никто не собирается и не будет.]==] }, { num = [==[20]==], title = [==[Крупногабаритное оружие и инвентарь]==], text = [==[Во время игры на сервере мы можем часто увидеть, как в различных ситуациях фигурирует крупногабаритное оружие. Оно не может быть спрятано в карманах брюк или за поясом. На сервере присутствует система инвентаря и аттачей. Абсолютно все, что Вы носите в инвентаре персонажа, нужно отыгрывать, особенно крупногабаритное оружие. Согласитесь, что Вы, будучи в здравом уме, не выйдете с АК-47 за спиной или в сумке на прогулку, да и вообще не будете ходить в людных местах с битой, автоматом в сумке, это огромный риск и полиция может Вас надолго упрятать за решетку. Подобное оружие необходимо либо выносить из дома, либо вытаскивать из автомобиля. - Запрещено ношение крупногабаритного оружия в сумке или инвентаре вашего персонажа. - Запрещено скроллить оружие. - Отыгрывать доставание и стрельбу с малогабаритного оружия обязательно, если вы инициируете перестрелку, для того, чтобы окружающие вас люди поняли причину и начало перестрелки. Если перестрелка уже началась, как и в случае с технической дракой отыгрывать доставание не обязательно. - Отыгрывать доставание и стрельбу с крупногабаритного оружия разрешено в одну строку. Исключением является уже начавшаяся перестрелка. - Категорически запрещено отыгрывать нахождение крупногабаритного оружия в инвентаре как нахождение его в багажнике, сумке, доме, гараже. - Если Вы переносите куда-либо а не носите с собой крупногабаритные предметы/оружие, либо несколько небольших предметов/оружий, у Вас должно присутствовать /pame, в котором Вы указываете где конкретно у Вас это находится. # Крупногабаритное оружие - М4, АК-47, MP-5, винтовка, дробовик, бита, клюшка, трость, катана, кий. # Малогабаритное оружие - Пистолеты, полуавтоматические пистолеты, тазер, нож, кастет, обрез. Блокировка персонажа на 3 - 15 дней.]==] }, { num = [==[20.1]==], title = [==[Хранение огнестрельного оружия/наркотиков в транспорте]==], text = [==[Запрещено использовать багажники и бардачки транспортных средств в качестве постоянных "складов" для вооружения. К запрещённым местам хранения также относятся дома-трейлеры. Максимально допустимое количество огнестрельного оружия в инвентаре одного автомобиля — 5 единиц оружия и 5 единиц наркотиков. Исключение: Спецтранспорт силовых структур, одобренные (официальные) криминальные организации в момент активной транспортировки партии оружия (при наличии доказательств/SS о проведении сделки), а также одобренные персонажи из раздела "скриншоты персонажей" из крайм-сегмента или с пометкой "Нестандартная роль". Изъятие оружия сверх лимита без компенсации / Деморган / Предупреждение (Warn) при рецидиве.]==] }, { num = [==[21]==], title = [==[AFK / Выход во время ролевой ситуации]==], text = [==[Выходить в AFK или из игры для того, чтобы избежать какой-либо ситуации строго запрещено. Если Вам необходимо срочно отойти, Вы должны удостовериться в том, что играющие стороны не против этого. - В случае вылета из игры во время РП ситуации у вас есть ровно 5 минут на то, чтобы вернуться в игру и продолжить РП процесс. - В случае намеренного выхода из игры, вы автоматически наказываетесь за выход с игры во время РП процесса. - Вы не можете стоять AFK на оживлённой или узкой по дорожному покрытию дороге, так как можете помешать проезжающим игрокам в силу рассинхронов с вашим автомобилем. Блокировка персонажа на 10 - 25 дней, либо CK персонажа, если выход во время ролевой ситуации имело весомое значение для ее развития или навредило сюжету других игроков.]==] }, { num = [==[21.1]==], title = [==[Фарм с помощью AFK]==], text = [==[Запрещено оставлять своего персонажа без AFK, для генерации пейчеков. Особенно это касается персонажей с VIP статусом. Одна из самых распространенных ситуаций это оставление персонажа на ночь под предлогом "РП сна". 1 Warn, обнуление 50% имущества.]==] }, { num = [==[22]==], title = [==[Зеленые зоны (ЗЗ)]==], text = [==[На сервере существуют так называемые Зеленые зоны (ЗЗ), представленные на карте с описанием, на которых запрещены неправомерные действия, но разрешено мелкое хулиганство по типу воровства кошелька, небольшого мордобоя один на один. Зеленые зоны: - Общественные места, где потенциально может находиться большое скопление игроков (Спавн, места проведения мероприятий, территории близ зданий государственных структур) - Интерьеры любых коммерческих организаций (бизнесов) - Если нужно отыграть какую-либо ситуацию в Зеленой Зоне, сначала нужно спросить разрешения администратора. - Если Вы все-таки совершили преступление, Вы обязаны незамедлительно сообщить полиции от лица свидетелей. (командой /callw) - Если одна ситуация приводит к ЗЗ, а там продолжается - является исключением из правил. Вызов 911 от лица свидетелей Вызывать 911 от лица свидетелей необходимо только в том случае, если вы находитесь в заведомо оживленном месте, трасса, город. В случае если вокруг вас есть более 2 - 3 игроков вызывать 911 не обязательно, также не обязательно вызывать 911 в безлюдных местах, пустыни, лесу и тд. Согласитесь, что если вы грабите человека на дороге или убиваете его, исходя из IC процесса в местах, где оживленный участок и трафик автомобилей, даже если вокруг вас нет игроков, вам нужно вызвать полицию от лица свидетелей. 1 Warn / Блокировка персонажа на 3 - 10 дней.]==] }, { num = [==[23]==], title = [==[Ограбления и аферы]==], text = [==[ООС-ограбления строго запрещены на сервере. Вы можете производить различные аферы и ограбления только в IC. Подробный гайд с советами Вы можете прочитать на нашем сайте. - Максимальная сумма ограбления одного человека составляет 50% от его наличности. Вы можете забрать у него половину суммы, которая находится у него в кармане. (Запрещено караулить игроков у банкоматов в Зеленых Зонах, у центра купли-продажи и подобных мест). Поэтому не носите с собой большие суммы наличных и храните свои сбережения на банковской карте. - Запрещено требовать продать имущество во время ограбления. - Запрещено проводить ограбления слишком часто, не более двух раз в день, в противном случае ваша игра превращается в лутерство. - Запрещено проводить ограбления игроков, которые находятся в стадии смерти или добивать их после ограбления. - Если ограбление происходит в относительно оживленном месте, где потенциально могут быть свидетели, то стоит вызвать полицию от лица свидетелей. Вы можете уточнить у администратора, нужно ли в данном месте звонить в полицию или нет. Если место оживлённое, то Вы должны вызвать полицию в начале или середине ситуации. Вызов полиции в конце ситуации будет рассматриваться как игра в свою пользу. - Если в заведомо безлюдном месте или при наличии свидетелей, которые могут сами вызвать полицию, вы, будучи жертвой, вызываете полицию от лица свидетелей - вы играете в свою пользу и вторая сторона вправе воспринимать ваш вызов от вашего лица. - Если вы являетесь свидетелем какого-либо криминального действия и хотите вызвать полицию, вы обязаны это делать через /call 911, а не через /callw. В случае вызова полиции через /callw, ваш вызов со второй стороны будет восприниматься как вызов в полицию от вашего лица. Блокировка персонажа на 3 - 10 дней.]==] }, { num = [==[23.1]==], title = [==[Изъятие при ограблении]==], text = [==[Изъятие при ограблении телефона, наркотиков, оружия, ключей от машины, дома, бизнеса без разрешения жертвы запрещено. Хорошим тоном будет обговорить изъятие имущества между игроками, например отдать дополнительную часть денежных средств в обмен на телефон. При получении урона вашим персонажем, желательно уделять этому должное внимание. Пример: персонажа избили, он попал в стадию, но продолжает агрессию и оскорбления. Ваш персонаж упал с высокого склона, но никак не отыграл полученные повреждения (к примеру). Важное замечание: некоторые правила могут варьироваться в случае, если Вы являетесь членом одобренной или официальной криминальной фракции. Администрация призывает Вас взаимодействовать не ради имущества.]==] }, { num = [==[23.2]==], title = [==[Крупные ограбления]==], text = [==[Крупные ограбления и аферы можно производить на сумму не более 200.000$. Ограбления банка могут осуществляться только с разрешения администратора. Все должно быть тщательно и грамотно спланировано. Важное замечание: ограбление на улице не является крупным ограблением. Если вы носите 1 000 000 наличности в кармане, это ваши проблемы и ваша отвественность.]==] }, { num = [==[23.3]==], title = [==[Ограбления банков]==], text = [==[Вы должны сообщить все детали ограбления заранее следящему администратору. Войдя в банк, спустя несколько минут нужно обязательно сообщить сотрудникам полиции, что в банке сработала сигнализация. Если ограбление пройдет удачно, администрация выдаст сумму на свое усмотрение, исходя из уровня подготовки, отыгровки и количества участников. Если ограбление пройдет неудачно и кого-то из преступников убьют/поймают либо кто-то выйдет из игры, то персонажу автоматически выдаётся СК. Грабить банк можно не чаще, чем дважды в неделю, неважно, кем при этом проводилось ограбление - вами или другими игроками. При грамотно запланированных и отыгранных ситуациях, сумма выручки может доходить до 2 000 000$.]==] }, { num = [==[23.4]==], title = [==[Разрешенное к изъятию]==], text = [==[Членам криминальной организации и иным игрокам разрешено грабить и получать те предметы инвентаря, что были отыграны на ситуации или замечены в использовании до ситуации и находятся в инвентаре на данный момент. В данный список входят: - Наркотики. Ограничением по данному пункту выступает 50% от всех обыгранных единиц нарк. средств. - Холодное оружие. В данный список входит любое холодное оружие, что было отыграно на ситуации или замечены в использовании до ситуации и находится в инвентаре на ситуации. - Мелкокалиберное огнестрельное оружие. В данный список входят пистолеты, обрезы и ПП, что были отыграны на ситуации или замечены в использовании до ситуации и находятся в инвентаре на данный момент. - Мобильный телефон. По согласию обеих сторон может быть изъята сумма равная стоимости моб. телефона. Обязательным условием является отыгровка отсутствия телефона до конца ситуации. - Аттачи. Одетые на игрока, например часы или головные уборы. Категорически запрещены намеренные провокации на использования оружия в ситуации с целью ограбления и откровенный фарм оружия через ограбления. В случае нарушения данного запрета, игроки фракции получают бан приравниваемый к OOC махинациям, а организация предупреждение.]==] }, { num = [==[23.5]==], title = [==[Угон транспортных средств]==], text = [==[Имея одобренный топик в криминальном разделе/в скриншотах персонажей, вы можете оформить РП-ситуацию на угон транспортного средства в соответствующем разделе. После одобрения данной ситуации транспортное средство будет передано технически. - Не более 5 автомобилей в месяц - Не более 2 автомобилей в неделю - При оформлении РП-ситуации игрок обязан зафиксировать и указать дату совершения угона. - При автоугоне обязательно внесение номера транспортного средства в улики. В случае запросов уникального, государственного или специального транспорта, выдача осуществляется исключительно на фракционную панель организации и не добавляется на личные игровые аккаунты. В рамках крупных ролевых событий уникальный или специальный транспорт может выдаваться временнó.]==] }, { num = [==[23.6]==], title = [==[Убийство после ограблений, ограбление мертвых жертв]==], text = [==[На случай запланированной ролевой ситуации со стороны криминальной фракции, при которой какой-либо объект (склад организации, персонаж) подвергается ограблению со стороны участников криминальной фракции - разрешено убивать жертв. Под категорию запланированных ролевых ситуаций могут попасть: ситуация с CK (жертвы грабят и убивают, либо наоборот), подготовленная ситуация на вынос того же склада/бизнеса/барыги другой фракции, во время действующей варзоны между двумя фракциями (в целях нанести существенный вред оппоненту). Также, участникам криминальных фракций разрешается доводить жертв до 2 стадии смерти, также, в случае, когда жертва всячески угрожает расправой. Во всех иных случаях, при спонтанных ситуациях (а-ля "пошли вынесем паренька") - доводить жертву до 2 стадии смерти/убивать - запрещено, так и грабить жертву, которая находится во 2 стадии. Неправильное использование: - Игроки решили ограбить рандомного игрока, убивают того после ограбления. - Игроки решили ограбить рандомного игрока, который находится во 2 стадии смерти. Правильное использование: - Во время ситуации с CK игроки решили ограбить жертву, после убить ее в целях выставления ситуации как ограбление. - Игроки фракции занимаются выносом складов и барыг других организаций. Во время одной из таких ситуаций игрок противоположной банды фиксирует данное действие со стороны грабителей. Дабы избавить себя от возможных угроз и неприятностей, грабители избавляются от жертвы, убив того. Вторая стадия смерти. Блокировка персонажа на 3 - 15 дней / 1 Warn]==] }, { num = [==[23.7]==], title = [==[Несанкционированное проникновение в стэш-хаусы]==], text = [==[Категорически запрещено проникать, находиться внутри, а также взаимодействовать с инвентарем стэш-хаусов (тайников фракций) без предварительного одобрения от уполномоченной администрации (Следящие за краймом / Следящие за РП-ситуациями). Любое проникновение должно быть подкреплено весомым IC мотивом и качественной подготовкой. Блокировка игрового аккаунта на 3 - 15 дней, либо перманентно в случае рецидива.]==] }, { num = [==[24]==], title = [==[Махинации с имуществом]==], text = [==[- Запрещены OOC-махинации с финансами и имуществом, не обоснованные ролевой и игровой логикой. - Запрещается осуществлять передачу денежных средств, игровых предметов, имущества, транспортных средств и иных материальных ценностей между персонажами, находящимися на одном личном кабинете. Передача запрещена независимо от цели такой операции, в том числе при попытке сохранить имущество, перераспределить средства между персонажами, обойти игровые ограничения либо получить преимущество за счет другого персонажа того же личного кабинета. - Категорически запрещено передавать имущество и деньги с одного персонажа на другой. Игрок, замеченный за подобными махинациями, получит удаление всего имущества. Блокировка персонажа навсегда / Удаление аккаунта]==] }, { num = [==[25]==], title = [==[Ролевые махинации]==], text = [==[Игроки могут реализовывать ролевые ситуации, связанные с получением имущества или денежных средств другого персонажа путём обмана, если такая ситуация заранее согласована с ассистентами RP-раздела при соблюдении следующих условий: - процесс получения информации о предполагаемой сумме или имуществе должен быть раскрыт в ходе ролевой ситуации; - способ получения имущества должен быть описан заранее; - сумма полученной выгоды не может превышать заявленную в теме; - лимит для персонажей-«одиночек» на совершение ролевой махинации с имуществом — один раз в месяц, для фракции — не более двух раз в месяц; - после завершения ситуации должны быть опубликованы улики для последующего расследования (не менее 5). Блокировка персонажа навсегда / Удаление аккаунта]==] }, { num = [==[26]==], title = [==[Количество аккаунтов и персонажей на проекте]==], text = [==[На проекте возможно иметь один аккаунт и пять персонажей на этом аккаунте. Если будет создано два и более аккаунта, администрация имеет полное право удалить аккаунт и привязанных к нему персонажей без возможности восстановления и уведомления. Также запрещено создавать персонажей с ником, имитирующим ник или имеющим полностью идентичную роль наказанного персонажа, с целью обхода наказания (подмена символов, добавление неразличимых знаков, копипаст квенты, перефразирование квенты) Обнуление имущества на замешанных в этом аккаунтах / Блокировка всех личных кабинетов.]==] }, { num = [==[27]==], title = [==[Лечение во время перестрелки]==], text = [==[- Лечиться аптечками, едой и прочими принадлежностями во время перестрелки или драк строго запрещено по той причине, что это дает преимущество перед другими игроками. - Процесс лечения упавшего в стадию игрока должен обязательно обыгрываться в два этапа. За несколько секунд поднять человека, пользуясь одной отыгровкой в несколько слов — слишком легко. В реальной жизни это затратный по времени процесс и заставить бежать/посадить в машину лежачего на земле — очень трудно. Блокировка персонажа на 3 - 10 дней / 1 Warn]==] }, { num = [==[28]==], title = [==[Нестандартные роли]==], text = [==[На нашем сервере иметь топик персонажа не обязательно, но, если ваш персонаж необычен, к примеру, психопат, или же какой-то серийный маньяк, или же он владеет какими-то отличительными качествами, что могут сильно повлиять на его отыгрыш, делая его психически нездоровым человеком, то обязательно, вы должны иметь топик и одобрение на игру нестандартной роли на форуме. Нужно учитывать грань между преступником и психически нездоровым человеком. К примеру, наемный убийца, действующий сам по себе, сам встает на данный путь, не находясь ни под чьим влиянием и самостоятельно избирает подобную судьбу, в отличий от убийцы преступного синдиката, который приходит к этому под давлением преступности и безысходности.]==] }, { num = [==[28.1]==], title = [==[Топики на Character Kill от Нестандартных Ролей]==], text = [==[При отыгрыше нестандартной роли и убийстве чужого персонажа, вы, по правилам раздела Ролевых Ситуаций, обязаны добавить отыгранное в топик. Выдача CK будет происходить только постфактум добавления отыгранного в топик Это необходимо для дальнейшего взаимодействия с детективными агентствами и/или SA-ES.]==] }, { num = [==[29]==], title = [==[Использование багов игры]==], text = [==[GTA SA - достаточно старая игра, имеющая ряд особенностей и нестыковок игрового движка. Некоторые из них полюбились игроками, некоторые вообще стали неотъемлемой частью их жизни. На ролевых проектах использование данных багов запрещено. Примеры распространенных багов игры: - Быстрая стрельба со сбивом анимации. - Сбив анимации при стрельбе во время перекатов. - Быстрое нажатие стрелочки вперед при езде на мотоциклах. - Излишне быстрая стрельба с Desert Eagle на пассажирском сидении. Блокировка персонажа на 5 - 35 дней.]==] }, { num = [==[30]==], title = [==[Использование Role Play чатов]==], text = [==[Старайтесь писать грамотно. Реплики писать с большой буквы. Ставить в конце предложений и действий точку. Действия писать с маленькой буквы. Не используйте знак тире « - » перед каждой репликой, это неправильно. Устное предупреждение / 1 Warn.]==] }, { num = [==[30.1]==], title = [==[/me and /ame]==], text = [==[Существует два вида отыгровки действий: "/me" и "/ame". На техническом уровне эти команды отличаются только тем, что "/me" видно в чате, а "/ame" только над головой. В "/me" отыгрывают крупные действия, без которых ситуации не обойтись, а в "/ame" более мелкие действия, которые можно упустить (Например "/ame молча нажал на газ."). Некоторые игроки считают, что главное в этом ремесле отыграть строку, как можно длиннее, но это не так. Конечно, нужно отыгрывать действие побольше, но не стоит описывать самые мелкие детали отыгровки. Пример неправильной отыгровки: /me подойдя к столу, наклонился к нему корпусом, затем протянул правую руку к чашке, которая стоит на столе, после чего обхватил ее пальцами, выровнял спину и начал пить чай из чашки. Пример правильной отыгровки: /me подойдя к столу, взял чашку со стола, после чего начал пить чай. /me взяв букет цветов со стола, опустил тот в вазу с водой. /me зло глянув на Закари сначала дает тому легкую пощечину, а потом и вовсе кидается на него с кулаками. /me вытягивает G19 из пластиковой кобуры и оглядывается по сторонам.]==] }, { num = [==[30.2]==], title = [==[/do]==], text = [==[Для отыгровки от третьего лица нам понадобится команда "/do". Если Вы хотите отыграть свое окружение, что происходит с вами, улицей или другие факторы - используйте эту команду. Не забывайте, что на сервере запрещено отыгрывать за других, но в "/do" можно задать вопрос для того, чтобы понять, что происходит с тем, кто стоит перед вами. Пример неправильной отыгровки: /do Ричард Роксон мертв. (при этом вы — не Ричард Роксон) /do Присев на стул, откинулась на спинку, при этом закрыла глаза. Пример правильной отыгровки: /do На углу дома висит видеокамера, обзор которой выходит на парковочную зону. /do В бассейне была ярко-голубая вода, где плавал большой мяч и надувной матрас.]==] }, { num = [==[30.3]==], title = [==[/todo]==], text = [==[Эта команда используется в том случае, когда персонаж говорит, выполняя какое-либо действие. Действия описываются с использованием деепричастного оборота, а также обязательно с маленькой буквы. Пример неправильной отыгровки: /todo Я знаю.*кивнула головой. /todo Улыбаясь девушке.*привет. (Не нужно путать действие с репликой). /todo Эй, негр, сюда иди!*Мэтью был одет в спортивные штаны и кофту, полностью покрывающую его торс. Пример правильной отыгровки: /todo Аа... ээм.. Все хорошо?*своей репликой пытаясь разрядить обстановку в комнате. /todo Я не буду этого делать!*упираясь руками в грудь мужчины, пытаясь оттолкнуть того от себя.]==] }, { num = [==[30.4]==], title = [==[Отыгровки в IC чате]==], text = [==[Если Вы не желаете использовать команду /todo, но в речи необходимо подчеркнуть какое-либо важное действие персонажа, Вы можете между репликой выделить действие звёздочками. В таком случае, во фразе, сказанной Вашим персонажем, будет выделено то действие, которое вы указали Пример неправильный отыгровки: Всем привет! *довольный* Как ваши дела?! Нет-нет. Не нравится она мне. *синяя машина*. Слишком яркая Пример правильной отыгровки: Что?! *поперхнулся* Как это произошло? Хорошо, я понял. *встал, поправил пиджак* Можем выезжать.]==] }, { num = [==[30.5]==], title = [==[/action]==], text = [==[Это описание окружения персонажа, которое остается закрепленным на месте, где была использована команда до тех пор, пока игрок его не удалит. Команда /action является аналогом команды /do, но их различие в том, что после использования команды /action действие вашего персонажа появится не в чате, а рядом с вашим персонажем в виде 3D текста. Данную команду запрещается использовать в качестве рекламной листовки, записи, буклета и т.д. На этот случай имеется функционал доски объявлений. Пример неправильной отыгровки: /action В конце улицы стоит полицейский крузер. /action На улице хорошая погода, светит солнце и дует прохладный ветер. /action Шумная толпа надвигалась с юга, они скандировали непонятные лозунги. /action В банк с криками ворвались грабители в масках. Пример правильной отыгровки: /action На кафельном полу стоит табличка, на которой написано «Осторожно, мокрый пол!». /action Кровавый след тянется вдоль всего коридора дома, а на стене пальцами оставлены следы крови. /action Песчаный замок, построенный Эмили, был на половину разрушен.]==] }, { num = [==[30.6]==], title = [==[G:BUY или доска объявлений]==], text = [==[В мобильном приложении существует иконка G:BUY. Это информационная площадка, направленная на взаимодействие между игроками. С её помощью вы можете что-либо приобрести, продать или просто прорекламировать какие-либо услуги. Использование команды /action с целью рекламы чего-либо в IC процессе является нарушением, для этого есть вышеописанная система внутриигровой площадки.]==] }, { num = [==[30.7]==], title = [==[/to]==], text = [==[Данная команда применяется, когда есть необходимость обратиться к какому-либо персонажу в рамках диалога. Позволяет акцентировать внимание на вашей реплике.]==] }, { num = [==[31]==], title = [==[Террористические акты и крупные организованные преступления]==], text = [==[Теракты или крупные криминальные деяния на сервере проводятся только в тех случаях, если выполнены все условия: - Ваша фракция должна быть одобренной или официальной. - Для теракта должен быть подготовлен подробный план самого акта, а также взаимодействия всех участников с приведенными скриншот-ситуациями, одобренные куратором крайм сегмента и отделов принимающих участие или затрагиваемых в ходе ситуации. - Для крупных криминальных ситуаций Вы также обязаны получить одобрение от куратора крайм сегмента и отделов затрагиваемых в ходе ситуации. Во всех случаях, данные мероприятия должны проводиться, когда на сервере присутствует достаточное количество представителей полицейского и пожарного департамента. Между каждым терактом или крупной ситуацией вводится промежуток в 14 дней. Действия, приведенные выше, во время данного интервала — запрещаются. Проведение такой ситуации без ведома администрации строго запрещено и карается наказанием. Целесообразным будет, перед исполнением замысла написать в репорт и запросить администратора на ситуацию. Вы должны понимать, что любая крупная ситуация - это полноценный ивент, польза и эмоции от которого должны покрывать всех участников ситуации, а не только ее инициаторов. Подобных результатов можно достичь только в ходе общей договоренности и взаимодействия. Блокировка инициаторов ситуации навсегда / Архив организации.]==] }, { num = [==[32]==], title = [==[Дорожно-транспортные происшествия]==], text = [==[Дорожно-транспортные происшествия обязаны играть все участники IC процесса на сервере. Не забывайте, ведь именно за счет взаимодействия между игроками, рождается настоящая ролевая игра, пожарному департаменту и парамедикам будет приятно приехать и поиграть с вами, показав Вам красивую игру и получив от этой ситуации максимум удовольствия. # Отыгрывать ДТП обязательно, если: - Происшествие совершено при погоне, рейде. - Данное происшествие серьезное и несёт за собой смерть людей, высокие материальные потери. # Отыгрывать ДТП необязательно, если: - Если две или более сторон согласны на откат ДТП. Подобное обговаривается в /pm или /b с участниками.]==] }, { num = [==[32.1]==], title = [==[Неролевое поведение на дорогах.]==], text = [==[Если вы ведете себя неадекватно на дороге, преувеличивая физические возможности вашего персонажа или же автомобиля, сбивая столбы, съезжая с большой высоты и так далее, вы попадаете под данный пункт правил. В случае если вы участвуете в погоне, быстро двигаетесь, но при этом не сбиваете столбы и не попадаете в ДТП, данные действия считаются допустимыми. Предупреждение / Блокировка персонажа на 1 - 5 дней.]==] }, { num = [==[33]==], title = [==[Взлом аккаунтов и утеря доступа к нему]==], text = [==[Вы самостоятельно устанавливаете модификации на свою игру и именно вы отвечаете за качество данных модификаций, отсутствие в них стиллеров и прочего нежелательного ПО. Вас никто не заставляет этого делать, так же, как и устанавливать защиту на аккаунт. Однако администрация дает Вам способы защиты аккаунтов. Мы ответственны только за работоспособность и выполнение прямых функций, а именно защиты, данных способов. Поэтому фразы вида - "Меня взломали, восстановите, я после восстановления установлю защиту" не помогут. # Администрация несёт ответственность за аккаунт если: - Был установлен Google Auth. - Был привязан аккаунт Telegram # Администрация не несёт ответственность за аккаунт если: - Если способы защиты аккаунта не были использованы. - Вы используете модификации и CLEO скрипты.]==] }, { num = [==[34]==], title = [==[Игра в тюрьме (Взаимодействие с SADCR)]==], text = [==[SADCR (San Andreas Department of Corrections&Rehabilitation) - Федеральная тюрьма, со-значение реабилитации игроков и прямого взаимодействия с ними. Данное правило напрямую регулирует положение в тюрьме и ее атмосферы. За нарушение каждого из пунктов выдается наказание в зависимости от тяжести: warn/ban.]==] }, { num = [==[34.1]==], title = [==[Драки в тюрьме]==], text = [==[Чтобы устроить драку в тюрьме, нужно как минимум 2 действующих офицеров коррекции на смене. Для массовой драки офицеров должно быть пропорционально дерущимся. При летальном исходе осужденного в ходе урегулирования ситуации/драки, игроку выдают бан/статус CK, в зависимости от его желания. Время бана выбирает напрямую администратор, после анализа ситуации.]==] }, { num = [==[34.2]==], title = [==[Бунт / Массовая забастовка]==], text = [==[Перед тем как организовать бунт, нужно сделать SS на организацию и планировку бунта, где четко будет показано что, где, а главное как вы собираетесь. Эта SS считается подготовительной, поэтому играет важную роль. SS выкладывается на форум. Бунт проводится после оповещения лидера CADCR и договора о дате и времени проведения данного мероприятия, где руководство тюрьмы должно собственноручно обеспечить игру с офицерами коррекции на ситуации. При том, если бунт был подавлен летальным исходом для игрока, в том или ином случае, игроку выдается статус CK, ибо игрок должен понимать что он идет на риск.]==] }, { num = [==[34.3]==], title = [==[Побег]==], text = [==[Побег отыгрывается с подготовительной SS, SS выкладывается на форум. При отыгрыше подготовительного этапа, важно прямое взаимодействие с игроками/офицерами. Побег производится, когда офицеров на смене три к одному. Руководство фракции должно быть оповещено о ведении SS топика. В случае того, если в процессе побега вашего персонажа довели до 2 стадии/убили, вам выдается статус CK.]==] }, { num = [==[34.4]==], title = [==[Контрабанда / Изготовление заточек]==], text = [==[Для изготовления заточек требуется SS, где показано, как вы её изготовили. Сама SS должна быть на форуме и одобрена администрацией, после этого она имеет Ролевое значение. Внутренняя/Внешняя контрабанда действует, после того как вы выложили SS на форум, где четко видно взаимодействие игрока с предметом. В случае отсутствия SS на форуме, Администратор в праве выдать вам наказания за нрп инвентарь. Любая нонРП передача через забор/перекидывание карается БАНом/ВАРНом.]==] }, { num = [==[34.5]==], title = [==[УДО (Условно-Досрочное Освобождение)]==], text = [==[На игроке со статусом "Условно-Досрочное-Освобождение" одет специальный браслет, при котором SADCR имеет право следить за его передвижением. При выводе из строя браслета/его снятие, от игрока требуется SS с процессом всех его взаимодействий с предметом. SS должна быть одобрена Администрацией. При запросе вашего местонахождение офицером Коррекции, вы должны дать точное местонахождение, так как на вас надет браслет с датчиком.]==] }, { num = [==[35]==], title = [==[Мародёрство. Погоня за наживой]==], text = [==[Вы находитесь на ролевом проекте где у вас, как и любого гражданина есть потребности, желания, мысли, характер, слабости. Не стоит нарушать атмосферу игрового проекта банальными действиями вида — увидел труп, надо залутать. Данные действия в первую очередь портят атмосферу, являются несоответствием роли и портят игровой процесс в целом. То же самое и с забиранием оружия после перестрелок. Именно поэтому запрещено: - Обыскивать трупы с целью наживы. - Обыскивать брошенные автомобили государственных структур - Убивать игрока с целью получить его оружие. Забрать оружие можно лишь с его согласия, независимо от наличия стадии у жертвы. Исключением может быть решение администратора на ситуации. Блокировка персонажа на 5 - 40 дней.]==] }, { num = [==[36]==], title = [==[Монополия и финансовая стабильность]==], text = [==[Большинство игроков не понимают что экономика проекта в первую очередь строится на их действиях и распоряжении финансов, а в следствии регулируется скриптами и алгоритмами сервера. Таким образом игроки имеющие достаточное количество денег нарочно, в обход системы повышают себестоимость предметов, имущества, недвижимости. Тем самым устанавливают собственные рыночные отношения и стоимость товаров. Запрещено завышать себестоимость имущества выше чем в 5 раз. Если ваш дом стоит 10 000, вы можете продать его за 20 000, а не за 2 000 000. За нарушение данного правила игрок отправляется в бан навсегда, с возможностью разбана при условии сокращения его финансового положения на 80 процентов.]==] }, { num = [==[37]==], title = [==[Атмосфера дорожного движения]==], text = [==[Играя на ролевом проекте вы должны понимать и осознавать, что атмосфера играет важную роль в процессе игры. Для адекватного вождения и движения на дороге и реалиях SA:MP достаточно соблюдать основные понятия: - Главная и второстепенная дорога. - Помеха справа. - Скоростной режим. - Возможности и аспекты поведения вашего персонажа. - Повороты направо с крайнего правого ряда. - Повороты налево с крайнего левого ряда. Блокировка персонажа на 1 - 5 дней.]==] }, { num = [==[38]==], title = [==[Похищения]==], text = [==[В случае похищения персонажа вы обязаны проводить с ним игру, направленную на его убийство, удержание или освобождение. В случае отсутствия игры в течение 24-х часов по вине похитителей, ситуация откатывается, а похищенное лицо подлежит немедленному освобождению. В случае намеренного отказа от игры путем отсутствия в игре более 24-х часов без веской на то причины, похитители имеют право написать жалобу на похищенного игрока. Наказание в данном случае устанавливается на усмотрение ассистентов и главы crime раздела. Кроме того, в рамках похищения нужно в обязательном порядке обозначить свои требования в ролевом процессе. Это могут быть денежные средства, убийство или иные условия в рамках желаний похитителей, но все они должны быть выполнимы и четко обозначены в процессе взаимодействия между игроками. Для ограничения какого-либо игрока в рамках закрытой локации должны быть ролевые причины, в ином случае, данные действия могут быть расценены как метагейминг и привести к блокировке по указанному пункту правил.]==] }, { num = [==[38.1]==], title = [==[Взаимодействие с полицией]==], text = [==[Если игрока посадили в КПЗ для дальнейшего расследования, у полиции есть 24 часа для того, чтобы согласовать и отыграть допрос. Далее игроку дается выбор посредством команды /do «Виновен» или «Не виновен». Если игрок признает вину таким образом, то в процессе РП взаимодействия персонаж отправляется в САДОК. В случае выбора второго варианта инициируется судебное разбирательство.По истечению 24 часов без взаимодействия, игрок выпускается из КПЗ, а ситуация откатывается полностью.]==] }, { num = [==[38.2]==], title = [==[СК/Блокировка персонажа]==], text = [==[Если в ходе ролевого процесса ваш персонаж будет отправлен в тюрьму, то вы можете выбрать CK на указанного персонажа вместо срока в тюрьме. Также CK/блокировка персонажа на 7 дней (на выбор) применяется в случаях, когда срок заключения согласно законодательству штата превышает 15 IC лет.]==] }, { num = [==[39]==], title = [==[Поджоги, рэкет и крышевание]==], text = [==[Средние по тяжести преступления в сторону цивильных и коммерческих организаций проходят строго через одобрение представителей криминальных ассистентов и руководящий состав. На события из разряда рэкета, преступного рейда требуется особое разрешение от вышеперечисленных, объяснение всех важных решений, а также тщательная и многодневная (в зависимости от планируемого события) подготовка, заранее спланированная, и показанная на SS в соответствующем топике фракции. Необходима весомая причина для совершения подобного рода действий, мотив определяется представителем одного из перечисленных разделов. Практика начала взаимодействия на пустом месте с активными площадками противоположного криминальному сегменту раздела при помощи инструментария и отсутствия всего перечисленного строго наказывается, фракции выдаётся предупреждение в зависимости от её статуса. Т.е приезжать на место игры первой попавшейся фракции, имея подготовку в несколько минут, предлагать её крышевать с выдвинутыми условиями без всякой на то причины и устраивать разбой в любых целях запрещается. Желающим заняться подобного рода взаимодействием без нахождения в какой-либо фракции выставляются следующие условия: - Обязательное взаимодействие с фракцией которая наталкивает ваше объединение на противоправные действия по отношению к цивильным и коммерческим площадкам/организациям. - Подходящие персонажи и ресурсы. - Обязательное обсуждение полной ситуации от начала до конца с представителями раздела и последующей консультацией, а также их одобрением. - Фиксация при помощи скриншотов/видеоматериала всех важных аспектов при игре. Создание топиков на CK при возникновении указанных ситуаций также обговаривается с ассистентами crime менеджмента. В иных случаях это запрещено.]==] }, { num = [==[40]==], title = [==[Правила пользования G:BUY]==], text = [==[GBUY - приложение в телефоне пользователей, с помощью которого осуществляется продажа, покупка, обмен, знакомства, поиск работы и прочие социальные взаимодействия. Исходя из обширности применения данного ресурса, необходимо следовать ряду ограничений. Реклама интим-услуг частными лицами или эскорт-агентствами регулируется согласно действующему внутриигровому законодательству.]==] }, { num = [==[40.1]==], title = [==[Реклама мероприятий]==], text = [==[Одно мероприятие может иметь только ОДНО объявление в G:BUY. Наказание - бан на сутки, с последующем увеличением срока. Примеры: Открыт клуб - владелец создаёт 1 объявление об открытии - разрешено. Открыт клуб - 2 и более игроков подают объявление об открытии клуба - запрещено.]==] }, { num = [==[40.2]==], title = [==[Продажа запрещённых предметов]==], text = [==[Запрещена завуалированная продажа запрещённых законодательством города вещей. Явные примеры: холодное и огнестрельное оружие, наркотики.]==] }, { num = [==[40.3]==], title = [==[Интим]==], text = [==[Открытая и прямая реклама интимных услуг или знакомств запрещена.]==] }, { num = [==[40.4]==], title = [==[Транс-персонажи в G:BUY]==], text = [==[Запрещено открытое или завуалированное упоминание взаимоотношений и создание предложений знакомств с трансгендерными персонажами.]==] }, { num = [==[41]==], title = [==[Лицензионное оружие и его использование]==], text = [==[Использование лицензионного оружия - серьёзный шаг для любого персонажа, так как всё оружие которое игрок покупает в AMMO, имеет свою маркировку и вносится в базу данных полицейского департамента. Применяя такое оружие в пользу криминала, персонаж осознанно идёт на риск быть арестованным на длительный срок. Использование такого оружия криминальным сегментом может повлечь ролевые последствия, вплоть до заключения под стражу и соответствующего запрета на последующее приобретение и использование лицензированного оружия. Использование лицензионного оружия в личных целях гражданскими лицами разрешено, но, несёт за собой последствия внутри игры. Игроки, которые использовали лицензионное оружие, в случае полицейского расследования обязаны играть все вытекающие последствия, улики и маркировку. В ином случае приравнивается к правилу 16. Криминальным организациям запрещено использовать лицензионное оружие как основной источник для преступлений вместо панели организации. Блокировка персонажа на 5 - 25 дней, Архив криминальной организации.]==] }, { num = [==[41.1]==], title = [==[Передача / продажа лицензионного оружия]==], text = [==[- Продажа лицензионного оружия запрещена, как внутри игры, так и на ДаркНет приравнивается к правилу 2.2 - Передача лицензионного оружия запрещена, приравнивается к ООС махинациям, правило 24. - В случаях, когда вас грабят и намереваются забрать лицензионное оружие (если оно фигурировало в ситуации), вы обязаны его передать Важно сделать скриншоты, доказывающие передачу оружия в рамках IC ограбления обеим сторонам с целью избежания недопониманий с администрацией. Отсутствие скриншотов в качестве доказательств может привести к блокировке персонажа навсегда. Блокировка персонажа/аккаунта навсегда, обнуление 80% имущества.]==] }, { num = [==[42]==], title = [==[Защита персональных данных, деанонимизация (доксинг) и буллинг]==], text = [==[- Категорически запрещается поиск, публикация, распространение и любое использование в личных целях персональных данных (включая, но не ограничиваясь: ФИО, реальные фотографии, адрес проживания/места работы/учебы, номера телефонов, IP-адреса, адреса электронной почты, ссылки на личные страницы в социальных сетях) любого пользователя проекта без его явного на то согласия. - Данный запрет действует на всех официальных ресурсах проекта Gambit Role Play (игровые серверы, форум, Discord-серверы, сообщества ВКонтакте, Telegram-каналы и чаты). - Публикация персональных данных, даже если они находятся в открытом доступе на сторонних ресурсах, но совершается с целью травли (буллинга), дискредитации, шантажа или личной мести, расценивается как грубое нарушение данного правила. Угрозы деанонимизацией, публикацией или использованием личных данных во вред (включая SMS-бомбинг, атаки на домашнюю сеть и т.п.) приравниваются к свершившемуся нарушению. Блокировка всех игровых и форумных аккаунтов, внесение в Чёрный список проекта (ЧСП).]==] }, { num = [==[42.1]==], title = [==[Использование служебного положения для деанонимизации]==], text = [==[Представителям команды проекта (администраторам, ассистентам, модераторам и т.д.) категорически запрещено использовать свои служебные полномочия и доступ к личным данным пользователей (IP-адреса, почты, данные Личного кабинета) в личных целях, для деанонимизации, передачи третьим лицам, шантажа или мести. Немедленное снятие со всех постов, внесение в пожизненный Чёрный список проекта (ЧСП) и Чёрный список команды проекта без права на восстановление или амнистию.]==] }, { num = [==[43]==], title = [==[Использование сторонних программ, дающих преимущество над другими игроками]==], text = [==[Этот пункт правил регламентирует использование читов и иного софта в процессе игры на сервере. Обусловимся, что на сервере запрещено использование любого стороннего ПО, изменяющего игру, ее механики и возможности. В случае использования такого ПО в любом случае последует блокировка, однако строгость наказания напрямую зависит от нескольких факторов: ситуация, в которой использовалось ПО, причиненный вред, общественная опасность. Блокировка аккаунта на 10 в случае первого нарушения/использование читов, не дающих явного преимущества. В случае рецидива или применения читов, дающих явное преимущество - блокировка аккаунта навсегда. В особых случаях - черный список проекта.]==] }, { num = [==[44]==], title = [==[Обман администрации]==], text = [==[Запрещены действия, направленные на введение администрации в заблуждение с целью получения выгоды либо избежания ответственности за нарушение правил. Блокировка на 3—10 дней. При повторном нарушении — перманентная блокировка с возможностью занесения в чёрный список проекта.]==] }, } -- ============================================================ -- ПОДГОТОВКА ДАННЫХ -- ============================================================ -- нижний регистр для UTF-8 (латиница + кириллица) local function lower(s) s = s:gsub("[A-Z]", function(c) return string.char(c:byte() + 32) end) s = s:gsub("\208([\144-\159])", function(c) return "\208" .. string.char(c:byte() + 32) end) -- А-П s = s:gsub("\208([\160-\175])", function(c) return "\209" .. string.char(c:byte() - 32) end) -- Р-Я s = s:gsub("\208\129", "\209\145") -- Ё return s end local function trim(s) return (s:gsub("^%s+", ""):gsub("%s+$", "")) end -- ImGui режет слишком длинные строки в одном виджете, поэтому длинные -- абзацы делим по границам предложений (UTF-8 безопасно) local function splitLong(s, limit) local out = {} while #s > limit do local cut, pos = nil, 1 while true do local a = s:find(". ", pos, true) if not a or a > limit then break end cut, pos = a + 1, a + 1 end if not cut then pos = 1 while true do local a = s:find(" ", pos, true) if not a or a > limit then break end cut, pos = a, a + 1 end end if not cut then cut = limit while cut > 1 and s:byte(cut + 1) and s:byte(cut + 1) >= 0x80 and s:byte(cut + 1) < 0xC0 do cut = cut - 1 end end out[#out + 1] = s:sub(1, cut) s = s:sub(cut + 1) end out[#out + 1] = s return out end for _, r in ipairs(RULES) do r.depth = select(2, r.num:gsub("%.", "")) r.paras = {} for line in (r.text .. "\n"):gmatch("(.-)\n") do if line ~= "" then local kind, body = "p", line if line:sub(1, 2) == "# " then kind, body = "h", line:sub(3) elseif line:sub(1, 2) == "- " then kind, body = "b", line:sub(3) end for i, piece in ipairs(splitLong(body, 1200)) do r.paras[#r.paras + 1] = { kind = kind, text = piece, cont = i > 1 } end end end -- чистый текст правила для копирования в буфер обмена local buf = { "Пункт " .. r.num .. ". " .. r.title, "" } for _, p in ipairs(r.paras) do if p.cont then buf[#buf] = buf[#buf] .. p.text else if p.kind == "h" then buf[#buf + 1] = "" end buf[#buf + 1] = (p.kind == "b" and "- " or "") .. p.text end end r.plain = table.concat(buf, "\n") -- текст для поиска считаем один раз при загрузке r.hay = lower(r.num .. " " .. r.title .. " " .. r.text) end -- ============================================================ -- ОКНО -- ============================================================ local new = imgui.new local window = new.bool(false) local searchBuf = new.char[128]("") local selected = 1 -- индекс выбранного правила в RULES local shownRule = nil -- какое правило сейчас показано (для сброса прокрутки) local lastQuery, found = nil, {} local function getFound(q) if q ~= lastQuery then lastQuery = q found = {} local ql = lower(trim(q)) for i, r in ipairs(RULES) do if ql == "" or r.hay:find(ql, 1, true) then found[#found + 1] = i end end end return found end local COLOR_TITLE = imgui.ImVec4(1.00, 0.84, 0.00, 1) local COLOR_SUB = imgui.ImVec4(0.63, 0.77, 1.00, 1) local COLOR_PUNISH = imgui.ImVec4(1.00, 0.25, 0.25, 1) local COLOR_HIGHLIGHT = imgui.ImVec4(1.00, 0.82, 0.15, 1) local COLOR_HIGHLIGHT_BG = imgui.ImVec4(0.55, 0.38, 0.02, 0.75) -- Строки, в которых указано наказание/срок, выводим красным. -- Совпадение ищется с начала слова ("бан" не сработает на "банк"/"обман"), -- а для коротких аббревиатур (бан, CK, СК) слово должно и заканчиваться. local PUNISH_STEMS = { { "блокиров" }, { "бан", true }, { "ban", true }, { "warn" }, { "предупреждени" }, { "jail" }, { "деморган" }, { "ck", true }, { "ск", true }, { "увольнени" }, { "удалени" }, { "обнулени" }, { "архив организаци" }, { "чёрный список" }, { "черный список" }, } local function isLetterByte(b) return b >= 0x80 or (b >= 48 and b <= 57) or (b >= 65 and b <= 90) or (b >= 97 and b <= 122) end local function hasStem(t, stem, exact) local pos = 1 while true do local a, b = t:find(stem, pos, true) if not a then return false end local prev, nxt = t:byte(a - 1), t:byte(b + 1) local startOk = (a == 1) or not isLetterByte(prev) local endOk = (not exact) or not nxt or not isLetterByte(nxt) if startOk and endOk then return true end pos = a + 1 end end local function isPunishmentLine(text) local t = lower(text) for _, st in ipairs(PUNISH_STEMS) do if hasStem(t, st[1], st[2]) then return true end end return false end -- начинается ли с позиции i заглавная буква / кавычка (начало нового предложения) local function isSentenceStart(s, i) local b = s:byte(i) if not b then return false end if b >= 65 and b <= 90 then return true end if b == 208 then local c = s:byte(i + 1) return c ~= nil and ((c >= 144 and c <= 175) or c == 129) end return b == 194 or b == 34 or b == 40 -- « " ( end -- делит текст на предложения; "п. 2.3" и "т.д." не режутся local function splitSentences(text) local out, start, pos = {}, 1, 1 while true do local a, b = text:find("[%.!%?]%s+", pos) if not a then break end if isSentenceStart(text, b + 1) then out[#out + 1] = trim(text:sub(start, a)) start = b + 1 end pos = b + 1 end out[#out + 1] = trim(text:sub(start)) return out end -- Для каждого правила собираем предложения с наказанием (показываем блоком сверху) for _, r in ipairs(RULES) do r.punish = {} local seen = {} for _, p in ipairs(r.paras) do p.punish = isPunishmentLine(p.text) if p.punish and p.kind ~= "h" then for _, sentence in ipairs(splitSentences(p.text)) do if sentence ~= "" and not seen[sentence] and isPunishmentLine(sentence) then seen[sentence] = true r.punish[#r.punish + 1] = sentence end end end end local lines = { "Пункт " .. r.num .. ". " .. r.title .. " — наказание:" } for _, sentence in ipairs(r.punish) do lines[#lines + 1] = "- " .. sentence end r.punishText = table.concat(lines, "\n") end -- диапазоны символов шрифта: латиница, кириллица + типографика (—, «», №, •) local glyphRanges = ffi.new("unsigned short[9]", { 0x0020, 0x00FF, 0x0400, 0x052F, 0x2000, 0x206F, 0x2116, 0x2116, 0, }) imgui.OnInitialize(function() local io = imgui.GetIO() io.IniFilename = nil local fontPath = getFolderPath(0x14) .. "\\arial.ttf" -- 0x14 = папка Fonts io.Fonts:AddFontFromFileTTF(fontPath, CONFIG.fontSize, nil, glyphRanges) local style = imgui.GetStyle() style.WindowRounding = 6 style.ChildRounding = 4 style.FrameRounding = 4 end) -- Рисует текст с переносами и подсветкой найденного запроса. -- Поиск регистронезависимый и работает с кириллицей. local function drawHighlightedText(text, query, color) local q = lower(trim(query or "")) if q == "" then imgui.PushStyleColor(imgui.Col.Text, color) imgui.TextWrapped(text) imgui.PopStyleColor() return end local textLower = lower(text) local parts = {} local pos = 1 while true do local a, b = textLower:find(q, pos, true) if not a then if pos <= #text then parts[#parts + 1] = { text:sub(pos), false } end break end if a > pos then parts[#parts + 1] = { text:sub(pos, a - 1), false } end parts[#parts + 1] = { text:sub(a, b), true } pos = b + 1 end -- Рисуем по словам и сами переносим строки. -- ВАЖНО: после Text курсор уже на следующей строке, поэтому ширину занятого -- места берём из правого края предыдущего элемента (GetItemRectMax). local wrapX = imgui.GetCursorScreenPos().x + imgui.GetContentRegionAvail().x local firstOnLine = true -- true, если элемент шириной w не помещается в текущую строку local function overflows(w) return imgui.GetItemRectMax().x + w > wrapX end for _, part in ipairs(parts) do local segment = part[1] local highlighted = part[2] local p = 1 while p <= #segment do local ws, we = segment:find("%s+", p) local tokenEnd = ws and (ws - 1) or #segment if tokenEnd >= p then local token = segment:sub(p, tokenEnd) local size = imgui.CalcTextSize(token) if not firstOnLine then if overflows(size.x) then -- не влезает: просто не делаем SameLine, элемент уйдёт на новую строку else imgui.SameLine(0, 0) end end if highlighted then local min = imgui.GetCursorScreenPos() local max = imgui.ImVec2(min.x + size.x, min.y + size.y) imgui.GetWindowDrawList():AddRectFilled( min, max, imgui.ColorConvertFloat4ToU32(COLOR_HIGHLIGHT_BG), 2 ) imgui.TextColored(COLOR_HIGHLIGHT, token) else imgui.TextColored(color, token) end firstOnLine = false end if not ws then break end -- пробелы: если не влезают — просто пропускаем, следующее слово начнёт новую строку local spaces = segment:sub(ws, we) if not firstOnLine then local spaceSize = imgui.CalcTextSize(spaces) if overflows(spaceSize.x) then firstOnLine = true else imgui.SameLine(0, 0) imgui.TextColored(color, spaces) end end p = we + 1 end end end local COLOR_WHITE = imgui.ImVec4(1, 1, 1, 1) local COLOR_OK = imgui.ImVec4(0.45, 0.90, 0.45, 1) local COLOR_HOVER_BG = imgui.ImVec4(1, 1, 1, 0.07) local copyMsg, copyMsgUntil = "", 0 local ctxText = "" -- абзац, по которому кликнули ПКМ local function copyText(text, msg) imgui.SetClipboardText(text) copyMsg, copyMsgUntil = msg, os.clock() + 2.5 end local function drawRule(r) local query = ffi.string(searchBuf) -- Подсвечиваем совпадение и в заголовке правила. drawHighlightedText("Пункт " .. r.num .. ". " .. r.title, query, COLOR_TITLE) imgui.Separator() -- Блок "Наказание": выжимка предложений с наказанием из всего правила if #r.punish > 0 then imgui.TextColored(COLOR_PUNISH, "Наказание:") imgui.SameLine() if imgui.SmallButton("Копировать##punish_copy") then copyText(r.punishText, "Наказание скопировано") end for _, sentence in ipairs(r.punish) do imgui.Indent(12) drawHighlightedText("• " .. sentence, query, COLOR_PUNISH) imgui.Unindent(12) end imgui.Separator() end for i, p in ipairs(r.paras) do local text = p.text local color = p.punish and COLOR_PUNISH or COLOR_WHITE if p.kind ~= "b" and not p.cont then imgui.Spacing() end local start = imgui.GetCursorScreenPos() local width = imgui.GetContentRegionAvail().x if p.kind == "h" then drawHighlightedText(text, query, COLOR_SUB) elseif p.kind == "b" then imgui.Indent(12) drawHighlightedText((p.cont and " " or "- ") .. text, query, color) imgui.Unindent(12) else drawHighlightedText(text, query, color) end -- невидимая кнопка поверх абзаца: подсветка при наведении + ПКМ = меню копирования local stop = imgui.GetCursorScreenPos() local height = stop.y - start.y if height > 0 then imgui.SetCursorScreenPos(start) imgui.InvisibleButton("##para" .. i, imgui.ImVec2(width, height)) if imgui.IsItemHovered() then imgui.GetWindowDrawList():AddRectFilled( start, imgui.ImVec2(start.x + width, start.y + height), imgui.ColorConvertFloat4ToU32(COLOR_HOVER_BG), 3 ) end if imgui.IsItemClicked(1) then ctxText = text imgui.OpenPopup("##rule_ctx") end imgui.SetCursorScreenPos(stop) end end if imgui.BeginPopup("##rule_ctx") then if imgui.Selectable("Копировать абзац") then copyText(ctxText, "Абзац скопирован") end if imgui.Selectable("Копировать правило целиком") then copyText(r.plain, "Правило скопировано") end if #r.punish > 0 and imgui.Selectable("Копировать наказание") then copyText(r.punishText, "Наказание скопировано") end imgui.EndPopup() end end imgui.OnFrame( function() return window[0] end, function() local sw, sh = getScreenResolution() imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) imgui.SetNextWindowSize(imgui.ImVec2(900, 520), imgui.Cond.FirstUseEver) -- обычное окно ImGui: таскается за заголовок, тянется за края/угол, -- сворачивается стрелкой; крестик справа сверху закрывает if imgui.Begin(CONFIG.title .. "###server_rules", window) then -- строка поиска imgui.PushItemWidth(-90) imgui.InputTextWithHint("##search", "Поиск по правилам...", searchBuf, ffi.sizeof(searchBuf)) imgui.PopItemWidth() imgui.SameLine() if imgui.Button("Сбросить", imgui.ImVec2(80, 0)) then ffi.fill(searchBuf, ffi.sizeof(searchBuf), 0) end local list = getFound(ffi.string(searchBuf)) -- если выбранное правило не подходит под поиск — выбираем первое найденное local visible = false for _, idx in ipairs(list) do if idx == selected then visible = true break end end if not visible and list[1] then selected = list[1] end -- левая колонка: список imgui.BeginChild("##list", imgui.ImVec2(imgui.GetWindowWidth() * 0.34, -32), true) if #list == 0 then imgui.TextDisabled("Ничего не найдено") end for _, idx in ipairs(list) do local r = RULES[idx] local label = string.rep(" ", r.depth) .. r.num .. " " .. r.title if imgui.Selectable(label .. "##r" .. idx, selected == idx) then selected = idx end if imgui.IsItemHovered() then imgui.SetTooltip(r.num .. " " .. r.title) end end imgui.EndChild() imgui.SameLine() -- правая колонка: текст правила imgui.BeginChild("##view", imgui.ImVec2(0, -32), true) local r = RULES[selected] if r and #list > 0 then if shownRule ~= selected then imgui.SetScrollY(0) shownRule = selected end drawRule(r) end imgui.EndChild() -- нижняя строка imgui.Text(("Найдено: %d из %d"):format(#list, #RULES)) imgui.SameLine() if os.clock() < copyMsgUntil then imgui.TextColored(COLOR_OK, " " .. copyMsg) else imgui.TextDisabled(" ПКМ по тексту — копировать") end imgui.SameLine(imgui.GetWindowWidth() - 100 - 168) if imgui.Button("Копировать правило", imgui.ImVec2(160, 0)) then local cur = RULES[selected] if cur and #list > 0 then copyText(cur.plain, "Правило скопировано") end end imgui.SameLine(imgui.GetWindowWidth() - 100) if imgui.Button("Закрыть", imgui.ImVec2(88, 0)) then window[0] = false end end imgui.End() end ) -- ESC закрывает окно addEventHandler("onWindowMessage", function(msg, wparam) if window[0] and msg == wm.WM_KEYDOWN and wparam == vkeys.VK_ESCAPE then consumeWindowMessage(true, false) window[0] = false end end) function main() while not isSampLoaded() do wait(100) end while not isSampAvailable() do wait(100) end for _, cmd in ipairs(CONFIG.commands) do sampRegisterChatCommand(cmd, function() window[0] = not window[0] end) end while true do wait(0) if CONFIG.key and wasKeyPressed(CONFIG.key) and not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive() then window[0] = not window[0] end end end