[Non commerce] Бесплатное создание AHK скриптов

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

StickMellos

Пользователь
Сообщения
2
Реакции
0
Баллы
0
1-Stick_Mello
2-Наверно я прошу не возможное, но мне нужен скрипт который будет писать сколько часов я нахожусь в игре
3-Нет
 

ᴍ ᴜ x ᴜ ɪ

Заблокированный
Пользователь
Сообщения
73
Реакции
26
Баллы
0
Сервер
Emerald
1-Stick_Mello
2-Наверно я прошу не возможное, но мне нужен скрипт который будет писать сколько часов я нахожусь в игре
3-Нет
Такие скрипты с радостью делаю)
Вот, пожалуйста:

JavaScript:
#SingleInstance, Force
#Persistent
#NoEnv
#Include, %A_ScriptDir%\UDF.ahk

global session := false
global time := 0

while (!IsSAMPAvailable())
    continue
addChatMessageEx(0xBDBDBD, "{BDBDBD}• {8b82f5}[AHK] {BDBDBD}Чекер проведенного времени в игре для {8b82f5}Stick Mello {bdbdbd}| От {8b82f5}muxui")

Loop {
    if (session && WinActive("GTA:SA:MP"))
        time++
    Sleep, 1000
}

$~vkD::
{
    if (isInChat() && !isDialogOpen()) {
        Sleep, 120
        chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
        Sleep, 50
    
        if (RegExMatch(chatInput, "i)^\/timechecker.?$")) {
            addChatMessageEx(0xBDBDBD, "{BDBDBD}• {8b82f5}[AHK] {BDBDBD}Чекер проведенного времени в игре " (!session ? "{6de38a}включен" : "{ff5c74}отключен")), session := !session, session ? false : time := 0
        } else if (RegExMatch(chatInput, "i)^\/time.?$")) {
            if (!session) {
                addChatMessageEx(0xBDBDBD, "{BDBDBD}• {8b82f5}[AHK] {BDBDBD}Чекер проведенного времени в игре {ff5c74}отключен{BDBDBD}. Для включения введите {8b82f5}/timechecker{BDBDBD}.")
            } else {
                addChatMessageEx(0xBDBDBD, "{BDBDBD}• {8b82f5}[AHK] {BDBDBD}За последние сутки Вы провели в игре: {8b82f5}" (floor(time / 86400) > 0 ? floor(time / 86400) " дн. " : "") (floor(mod(time, 86400) / 3600) > 0 ? floor(mod(time, 86400) / 3600) " час. " : "") (floor(mod(time, 3600) / 60) > 0 ? floor(mod(time, 3600) / 60) " мин. " : "") (time > 60 ? mod(time, 60) : time) " сек.")
            }
        }
    }
}
return
Download on G-Drive - https://drive.google.com/file/d/1XEOUMJ3abwfOMMD6OqX_sh6ciI82DBbt/view?usp=sharing
Управление:
Для активации скрипта надо ввести команду /timechecker
Далее, при каждом вводе /time в чате будет высвечиваться, сколько ты отыграл.
Скриншот:
1568547255062.png
1568552527618.png
 
Последнее редактирование:

$.ASNIP.#KJ\\\\

Пользователь
Сообщения
534
Реакции
243
Баллы
0
Сервер
Такие скрипты с радостью делаю)
Вот, пожалуйста:

JavaScript:
#SingleInstance, Force
#Persistent
#NoEnv
#Include, %A_ScriptDir%\UDF.ahk

global session := false
global time := 0

while (!IsSAMPAvailable())
    continue
addChatMessageEx(0xBDBDBD, "{BDBDBD}• {8b82f5}[AHK] {BDBDBD}Чекер проведенного времени в игре для {8b82f5}Stick Mello {bdbdbd}| От {8b82f5}muxui")

Loop {
    if (session && WinActive("GTA:SA:MP"))
        time++
    Sleep, 1000
}

$~vkD::
{
    if (isInChat() && !isDialogOpen()) {
        Sleep, 120
        chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
        Sleep, 50
      
        if (RegExMatch(chatInput, "i)^\/timechecker.?$")) {
            addChatMessageEx(0xBDBDBD, "{BDBDBD}• {8b82f5}[AHK] {BDBDBD}Чекер проведенного времени в игре " (!session ? "{6de38a}включен" : "{ff5c74}отключен")), session := !session, session ? false : time := 0
        } else if (RegExMatch(chatInput, "i)^\/time.?$")) {
            if (!session) {
                addChatMessageEx(0xBDBDBD, "{BDBDBD}• {8b82f5}[AHK] {BDBDBD}Чекер проведенного времени в игре {ff5c74}отключен{BDBDBD}. Для включения введите {8b82f5}/timechecker{BDBDBD}.")
            } else {
                addChatMessageEx(0xBDBDBD, "{BDBDBD}• {8b82f5}[AHK] {BDBDBD}За последние сутки Вы провели в игре: {8b82f5}" (floor(time / 86400) > 0 ? floor(time / 86400) " дн. " : "") (floor(mod(time, 86400) / 3600) > 0 ? floor(mod(time, 86400) / 3600) " час. " : "") (floor(mod(time, 3600) / 60) > 0 ? floor(mod(time, 3600) / 60) " мин. " : "") (time > 60 ? mod(time, 60) : time) " сек.")
            }
        }
    }
}
return
Единственное, попрошу @Lance Whisky скинуть скомпилированный скрипт.
Управление:
Для активации скрипта надо ввести команду /timechecker
Далее, при каждом вводе /time в чате будет высвечиваться, сколько ты отыграл.
Скриншот:
Посмотреть вложение 770389
Что значит эта строчка
JavaScript:
chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
 

ᴍ ᴜ x ᴜ ɪ

Заблокированный
Пользователь
Сообщения
73
Реакции
26
Баллы
0
Сервер
Emerald
Что значит эта строчка
JavaScript:
chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
Чтение последней введенной строки в чат. Также сработает, если поставить эту функцию в цикл и вводить в чат - будет лайв трансляция того, что ты вводишь.
 

$.ASNIP.#KJ\\\\

Пользователь
Сообщения
534
Реакции
243
Баллы
0
Сервер
Чтение последней введенной строки в чат. Также сработает, если поставить эту функцию в цикл и вводить в чат - будет лайв трансляция того, что ты вводишь.
А эта?
C++:
if (RegExMatch(chatInput, "i)^\/timechecker.?$"))

Кстати ты в RegExMatch хорошо разбираешься, а то я прочитал 2 раза справочник так и не понял зачем эта функция, и при каких условиях ее используют.
 

ᴍ ᴜ x ᴜ ɪ

Заблокированный
Пользователь
Сообщения
73
Реакции
26
Баллы
0
Сервер
Emerald
А эта?
C++:
if (RegExMatch(chatInput, "i)^\/timechecker.?$"))
Кстати ты в RegExMatch хорошо разбираешься, а то я прочитал 2 раза справочник так и не понял зачем эта функция, и при каких условиях ее используют.
Регулярные выражения нужны лишь для поиска условно-неопределенной строки, когда часть информации заведомо неизвестна.
Простой пример с поиском в чат-логе всех киков от администрации:

JavaScript:
#SingleInstance, Force
#Persistent

result := ""

Loop, Read, % A_ScriptDir "\chatlog.txt"
{
    if (RegExMatch(A_LoopReadLine, "O)^\[(?P<time>\d{2}:\d{2}:\d{2})\] Администратор (?P<admin>\w+) кикнул игрока (?P<player>\w+)\. Причина: (?P<reason>.*)$", o)) {
        result .= "Строка #" A_Index " | " o["time"] " | " RegExReplace(o["admin"], "([A-Z])[a-z]+_(\w+)", "$1. $2") " кикнул " RegExReplace(o["player"], "([A-Z])[a-z]+_(\w+)", "$1. $2") " | " o["reason"] "`n"
    }
}

MsgBox, 64, Результат, % "Результаты запроса по кикам:`n" result
Download on G-Drive - https://drive.google.com/file/d/1D1CLAxkoA2QhfbzXvSiUb5TMpjFrY3do/view?usp=sharing
Но объяснять то, что я делаю, извини, не смогу, это очень долго рассказывать, а ты еще только учишься, поэтому ничего не поймешь. Со временем тебе придет понимание, как работают регулярки, если будет желание продолжать учиться, конечно-же.
Мне же, в свое время (еще лет 5 назад, на этапе начинания) помогла вот такая шпаргалка, друзья скинули:

И есть онлайн сервисы для проверок твоих регулярок, как вариант - https://regex101.com/r/OzjEDo/2
 
Последнее редактирование:

$.ASNIP.#KJ\\\\

Пользователь
Сообщения
534
Реакции
243
Баллы
0
Сервер
Регулярные выражения нужны лишь для поиска условно-неопределенной строки, когда часть информации заведомо неизвестна.
Простой пример с поиском в чат-логе всех киков от администрации:

JavaScript:
#SingleInstance, Force
#Persistent

result := ""

Loop, Read, % A_ScriptDir "\chatlog.txt"
{
    if (RegExMatch(A_LoopReadLine, "O)^\[(?P<time>\d{2}:\d{2}:\d{2})\] Администратор (?P<admin>\w+) кикнул игрока (?P<player>\w+)\. Причина: (?P<reason>.*)$", o)) {
        result .= "Строка #" A_Index " | " o["time"] " | " RegExReplace(o["admin"], "([A-Z])[a-z]+_(\w+)", "$1. $2") " кикнул " RegExReplace(o["player"], "([A-Z])[a-z]+_(\w+)", "$1. $2") " | " o["reason"] "`n"
    }
}

MsgBox, 64, Результат, % "Результаты запроса по кикам:`n" result
Download on G-Drive - https://drive.google.com/file/d/1D1CLAxkoA2QhfbzXvSiUb5TMpjFrY3do/view?usp=sharing
Но объяснять то, что я делаю, извини, не смогу, это очень долго рассказывать, а ты еще только учишься, поэтому ничего не поймешь. Со временем тебе придет понимание, как работают регулярки, если будет желание продолжать учиться, конечно-же.
Мне же, в свое время (еще лет 5 назад, на этапе начинания) помогла вот такая шпаргалка, друзья скинули:

И есть онлайн сервисы для проверок твоих регулярок, как вариант - https://regex101.com/r/OzjEDo/2
Мда, трудновато для понимания. А как долго ты эту функцию разбирал?
 

ᴍ ᴜ x ᴜ ɪ

Заблокированный
Пользователь
Сообщения
73
Реакции
26
Баллы
0
Сервер
Emerald
Мда, трудновато для понимания. А как долго ты эту функцию разбирал?
Это далеко не функция, это отдельное ветвление логики, регулярные выражения есть практически во всех языках программирования.
Я не делал себе цель как можно скорее выучить, ведь выучить и понять - разные вещи.
Со временем, когда требовалось регулярное выражение - гуглил, смотрел шпаргалку, которую кинул выше, и все приходит само собой.
Единственное, какую цель я себе ставил - не учить то, что сейчас мне не надо, когда надо - познание само придет.
Ведь можно просто выучить, но не понять смысл, так бывает со многими программистами, которые хотят по-быстренькому все выучить и пойти зарабатывать, я же самообучался в свое удовольствие, учил и разбирал чужой код прямо на лету.
 

Fausto Layer

Добрый барабашка
Пользователь
Сообщения
415
Реакции
264
Баллы
0
Сервер
• Твой ник/логин:
• Подробное описание скрипта (опиши все в деталях, как хотел бы видеть итоговый скрипт):
1) Helper Government. Помощник для Правительства.
2) Небольшое, красивое GUI, где можно будет ввести префикс перед сообщением, выбрать на какую клавишу активация главного меню, перезагрузка и деактивация скрипта. Так же выбирать тэг (LS, LV, SF, КШ - капитолия штата). Выбор пола и взависимости от пола - правильная отыгровка.
4) Папка "Setting" где будут появляться файлы - settings (тэг, пол и т.д.), RP - (все биндеры, о которых я расскажу ниже), pravila (где будет устав), lectures (где будут все лекции), sobes (биндер проверки на собеседовании)
3) В Главном меню - Проверка на собеседовании (биндер в файле sobes (4 пункт)). Лекции в рацию (биндер в файле lectures). Role Paly (здесь будут обычные РП-задания(после нажатия на пункт выходит окно с РПшками, из которых игрок выбирает)). Устав (открывается подокно, где пункты "Устав стр.1", "Устав стр.2", "Устав стр.3", "Устав стр.4", и т.п. 5,6,7). Принять игрока в организацию (биндер в файле RP (4 пункт)). Выдать выговор сотруднику (где при нажатии на пункт открыватся поле,в котором игрок вводит id человека, которому выдать выговор и нажимает enter или OK, затем открывается окно в котором человек вводит причину выговора и нажимает Enter или ОК, далее начинается отыгровка и в конце отыгроки выдается выговор человеку, чье id было вписано и по вписаной причине.) Уволить игрока из организации (Все так же как и с выговором).Повысить игрока (при нажатии на пункт, начинается отыгровка (4 пункт)).
4) Хочу что бы Вы попробовали реализовать фишку на подобии - например пришел человек на собеседование, ты игрок со скриптом наводит на него ПКМ, чтобы появился над головой треугольник, далее нажимает сочетание клавиш и выскакивает окно со всеми шагами проведения собеседования. ЭТО СДЕЛАТЬ ДЛЯ ПРОВЕРКЕ НА СОБЕСЕ, ПОВЫШЕНИИ ИГРОКА И ПРИНЯТИИ ЕГО В ОРГАНИЗАЦИЮ.
• Комментарии к скрипту: Все РП-отыгровки и задания я придумаю и напишу сам. Спасибо Вам заранее. Понимаю что хочу не маленький скрипт, но он поможет многим игрокам ДРП
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху