[Помощь] Автоматизированное принятие во фракцию. - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
[Помощь] Автоматизированное принятие во фракцию.
Andreyringo1 Дата: Четверг, 16.08.2018, 02:49 | Сообщение # 1
Новичок
Сообщений: 25
Статус: Offline
Возник вопрос как можно реализовать данную функцию, представляю её себе так! Мы чекаем игрока на ЧС с помощью таргета.
Код

NickName := getPlayerNameById(getIdByPed(getTargetPed()))
if (NickName="")
{
    addChatMessageEx("FF0000", "Ошибка. Прицельтесь на игрока")
    sleep 100
  return
}
Loop, read, ЧС.txt
{
    IfInString, A_LoopReadLine, %NickName%
  {
  addChatMessageEx("FF0000", "Игрок " NickName " находится в ЧС")
  sleep 2000
  return
  }
}
addChatMessageEx("00FF00", "Игрок " NickName " не находится в ЧС")
sleep 2000
return

Если его нет в ЧС, мы проводим для него собеседование
Код

addChatMessageEx("[sobes]: Ты хочешь провести собеседование для игрока " NickName " 1. - Да. 2 - Нет ")
Loop,
{
    if (getkeystate("1", "P"))
    {
        sendchat("Для собеседования покажите ваши документы, а именно, паспорт, мед.карту и лицензии.")
        Return
    }
    else if (getkeystate("2", "P"))
    {
        addChatMessage( "[sobes]: Нет")
        Return
    }
}

В чём собственно проблема как сделать продолжение собеседования после показа именно 3-х документов, а именно паспорта, мед.карты, лицензий, после просмотра его паспорта мы, чекаем есть ли у игрока 35 законки, если же меньше 35, мы отказываем.
Вот как выглядят диалоговые окна.

Мед.карта

Код

Имя: Nick_Name

Дата: 30/6/2018
Статус: Полностью здоровый(ая)

{CEAD2A}Наркозависимость: 0{FFFFFF}


Паспорт

Код

Имя: {FFD700}Nick_Name  
{FFFFFF}Лет в штате: {FFD700}1
{FFFFFF}Серия: {FFD700}3132
{FFFFFF}Номер: {FFD700}321243
{FFFFFF}Законопослушность: {FFD700}34/100
{FFFFFF}Семейное положение: {FFD700}[ Женат(а) на Nick_Name ]
{FFFFFF}Прописка: {FFD700}[ Дом номер 322 ]{FFFFFF}
{FFFFFF}Прописка: {FFD700}[ Дом номер 412 ]{FFFFFF}

{FFFFFF}Работа: {FFD700}None
{FFFFFF}Благотворительность: {FFD700}1000000$
{FFFFFF}Военный билет:  {FFD700}[ Есть ]{FFFFFF}

{FF6200}Лечился в Психиатрической больнице: 1 раз (Необходимо обновить мед. карту)


Лицензии

Код

{FFFFFF}Лицензия на авто:   {10F441}Есть    
{FFFFFF}Лицензия на мото:   {10F441}Есть    
{FFFFFF}Лицензия на полеты:   {10F441}Есть    
{FFFFFF}Лицензия на плавание:  {10F441}Есть    
{FFFFFF}Лицензия на ловлю рыбы:  {10F441}Есть    
{FFFFFF}Лицензия на оружие:   {10F441}Есть


Сообщение отредактировал Andreyringo1 - Четверг, 16.08.2018, 02:52
slavawar Дата: Четверг, 16.08.2018, 11:27 | Сообщение # 2
Проверенный
Сообщений: 172
Статус: Offline
Можно сделать примерно таким образом:
Код

RegExMatch(pass, "{FFFFFF}Законопослушность: {FFD700}(?<num>d+)/100", pass_)
RegExMatch(pass, "{CEAD2A}Наркозависимость: (?<num>d+){FFFFFF}", med_)
RegExMatch(pass, "{FFFFFF}Лицензия на оружие:\s+{10F441}(?<gan>.*)", lic_)

if (pass_num < 35 || med_num != 0 || lic_gan != "Есть") {
    SendChat("Извините, мы вынуждены Вам отказать.")
}

Желательно опиши подробные критерии тогда скину полный готовый код.


Мои темы:
[AHK] Шифратор текста
[AHK] Акцент 3 в 1
[C#] Генератор RP ников
MrGPro Дата: Четверг, 16.08.2018, 12:10 | Сообщение # 3
Боец
Сообщений: 202
Статус: Offline
slavawar, можно еще проверку открытого диалога через DisDialogOpen() и по названию диалога getDialogCaption()

Код

if (getkeystate("1", "P"))
    {
        ;sendchat("Для собеседования покажите ваши документы, а именно, паспорт, мед.карту и лицензии.")
  Loop
  {
   if (RegExMatch(getDialogText(), "\{FFFFFF\}Законопослушность: \{FFD700\}(?<lvl>\d+)\/100", zakon_))
   {
    if (zakon_lvl < 35 )
      addChatMessageEx("FFFFFF", "Отказано! Ваша Законопослушность: " zakon_lvl ", для вступления необходимо 35 и более")
      return
   }
  }
        Return
    }
}


=D отучаем потихоньку всех от обычной конструкции (....) с переменными match, match2.... в RegExMatch в более понятную для редактирования key_ (?<subKey>...)



Тебе помогли не забывай про благодарность >> тыкни репутацию
---------------------------------------͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏ -----------------------------------------------------
Зам.Администратора на проекте "DayZ Epoсh SPN" сервер Arma 2OA DayZ Epoch пиратка и лицензия


Сообщение отредактировал MrGPro - Четверг, 16.08.2018, 12:15
Andreyringo1 Дата: Четверг, 16.08.2018, 12:23 | Сообщение # 4
Новичок
Сообщений: 25
Статус: Offline
slavawar, В общем приходит человек на собеседование, мы по таргету вычисляем его id , после чего в чат идёт сообщение по типу : "Для собеседования мне нужны ваши документы, а именно паспорт, лицензии, мед.карта" После того как нам игрок их показал, и если у него в паспорт больше чем 35 законки, мы продолжаем для него собеседование, если же меньше 35, мы ему отказываем.
slavawar Дата: Пятница, 17.08.2018, 14:46 | Сообщение # 5
Проверенный
Сообщений: 172
Статус: Offline
Цитата MrGPro ()
=D отучаем потихоньку всех от обычной конструкции (....) с переменными match, match2.... в RegExMatch в более понятную для редактирования key_ (?<subKey>...)

То намного удобнее)
Andreyringo1, А когда он показывает, у вас отображаются данные диалогом или в чате все таки?
Если диалог, то вам нужно сделать некий цикл который будет следить за диалоговыми окнами и считывать сам от туда данные и потом уже сверять)
Если случай с чатом там немного проще, после того как он все показать, нажимаете любую клавишу и используете тот код который я Вам показал.
Мой пример не будет уместен для диалоговых окон.

Добавлено (17.08.2018, 17:17)
---------------------------------------------
MrGPro, забыл сказать, в данном случае

Код

f (zakon_lvl < 35 )
      addChatMessageEx("FFFFFF", "Отказано! Ваша Законопослушность: " zakon_lvl ", для вступления необходимо 35 и более")
      return
   }


Лучше будет сделать вот так:
Код

if (RegExMatch(getDialogText(), "\{FFFFFF\}Законопослушность: \{FFD700\}(?<lvl>\d+)\/100", zakon_) && zakon_lvl < 35) {
    SendChat("Отказано! Ваша Законопослушность: " zakon_lvl ", для вступления необходимо 35 и более")
}

И раз уж там Loop, break - будет более уместен. А сам return уже в конце блока самого лупа.


Мои темы:
[AHK] Шифратор текста
[AHK] Акцент 3 в 1
[C#] Генератор RP ников
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7210]

[CM]Russel [5557]

kenlo763 [4952]

[CM]AGRESSOR [4639]

Snake_Firm [4452]

Сэс [4416]

Artem_Buero [4223]

[CM]Durman [3204]

[CM]Рафаэль [3080]

iMaddy [2855]

sky_Woker [2854]

getrekt [2745]

Новые пользователи