Popular Post Kangaroo Posted July 5, 2016 Popular Post Share Posted July 5, 2016 Список последних изменений. Скрытый текст 20.05.20 Добавлен бинд для мафий: — Подсчет добытых материалов и бланков. 18.05.20 - Обновлен бинд для информации по контрабанде материалов для мафий. - Добавлен бинд подсчета добытых биоматериалов для банд. - Удалены бинды "умные наручники" и "автонаручники" для ПО, поскольку их легко заменяет бинд реакции на чат. - Обновлена инструкция к бинду реакции на чат. - Добавлен список полезных реакций, которые можно вставить в этот бинд. Всем привет. Я решил собрать в одной теме несколько полезных биндов, которыми я пользуюсь и которые могут пригодиться вам. Если вы не знаете, что такое AHK и как его использовать - прочтите эту тему. Инструкция по установке: 1. Скачиваем инсталлер AHK версии 1.1.26.01 отсюда (ссылка с официального сайта). 2. Запускаем его, выбираем Custom Installation, далее ANSI-32 bit. Ставим галочку на пунктах "Install script compiler" и "Separate taskbar buttons". Текст биндов и описание их работы находится под спойлерами. Кнопки и команды, на которые привязаны эти бинды, приведены для примера, вы можете заменить их на свои. Самый главный, лучший, универсальный и мой любимый бинд: — Реакция на чат. Скрытый текст Цитата #Persistent Checkchat(Chatmessage, MY_VAR1:=0, MY_VAR2:=0, MY_VAR3:=0) { StringReplace, Chatmessage, Chatmessage, (.1), %MY_VAR1% StringReplace, Chatmessage, Chatmessage, (.2), %MY_VAR2% StringReplace, Chatmessage, Chatmessage, (.3), %MY_VAR3% SetFormat, Integer, H Locale1=0x4090409 ; Английский (американский). Locale2=0x4190419 ; Русский. WinGet, WinID,, A ThreadID:=DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", "0") InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID) SendMessage, 0x50,, 0x4190419,, A sleep 100 TEMP := Clipboard Clipboard := SendInput 1+{left}^{vk58} sleep 50 If Clipboard { SendInput ^{vk41}^{vk58}{enter} sleep 50 SendInput {f6}%Chatmessage%{enter} StringReplace, Clipboard, Clipboard, !, {!}, All StringReplace, Clipboard, Clipboard, +, {+}, All StringReplace, Clipboard, Clipboard, ^, {^}, All StringReplace, Clipboard, Clipboard, #, {#}, All SendInput {f6}%Clipboard% } Else SendInput {f6}%Chatmessage%{enter} Clipboard := TEMP TEMP := sleep 200 SendMessage, 0x50,, % InputLocaleID,, A } MY_STRING_NUMBER := 1 SetTimer, MY_REACTION_TIMER, 50 return MY_REACTION_TIMER: IfWinActive GTA:SA:MP { MY_REACTION_STRING := MY_REACTION_STRING2 := FileReadLine, MY_REACTION_STRING, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, %MY_STRING_NUMBER% MY_STRING_NUMBER2 := (MY_STRING_NUMBER+20) FileReadLine, MY_REACTION_STRING2, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, %MY_STRING_NUMBER2% If MY_REACTION_STRING2 Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt MY_STRING_NUMBER := (A_Index-1) else if MY_REACTION_STRING{ MY_STRING_NUMBER += 2 ; ЗДЕСЬ НАЧИНАЕТСЯ СПИСОК РЕАКЦИЙ IfInString, MY_REACTION_STRING, Нажмите ALT, чтобы завести двигатель {SendInput {LAlt down} sleep 150 SendInput {LAlt up} } IfInString, MY_REACTION_STRING, предлагает вам дозаправку за $1, (введите /accept refill) {Checkchat("/accept refill") sleep 1111 } ; ЗДЕСЬ ЗАКАНЧИВАЕТСЯ СПИСОК РЕАКЦИЙ} } IfWinNotExist GTA:SA:MP MY_STRING_NUMBER := 1 return Бинд позволяет прописывать любую реакцию на любой текст, который появляется в чате. Для работы бинда, в скрипте его нужно поместить в зону автовыполнения, т.е. выше любых горячих клавиш и строк, можно и просто на самый верх. В приведенном выше примере установлена реакция на две строки. В первом случае бинд сам нажмет Alt, когда вы сядете в ТС с заглушенным двигателем, а во втором случае - сам примет заправку, если она предлагается за 1$. Добавлять реакцию на другие строки можно в тот же блок со списком реакций (выделен синими надписями), по такому шаблону: Цитата IfInString, MY_REACTION_STRING, Искомый текст в последней строке чата {Реакция на этот текст } Реакции могут быть самые разные. Например, такой код будет делать скриншот каждый раз, когда я отправлю объявление: Цитата IfInString, MY_REACTION_STRING, Автор: Ken_Guru {Sendinput {F8 down} sleep 100 Sendinput {F8 up} } Следующий код примет наркотики, когда вам хотят передать их. Цитата IfInString, MY_REACTION_STRING, грамм наркотиков. Введите /td для согласия {Checkchat("/td") sleep 1111 } А такой код примет предложение купить наркотики, но только по цене не больше 200 за грамм. Здесь уже вам пригодится знание команды RegExMatch. Инструкцию к ней можно найти в конце поста. Цитата IfInString, MY_REACTION_STRING, (введите /accept drugs) для покупки {FoundPos := RegExMatch(MY_REACTION_STRING, "купить у него (.*) грамм наркотика за \$(.*),", MY_MATCH) If (MY_MATCH2/MY_MATCH1<=200) Checkchat("/accept drugs") sleep 1111 } Примечания: - Если одна строка попадает под несколько условий, то все соответствующие реакции выполнятся в том же порядке, в каком они указаны в коде. PS: Для чего нужна функция Checkchat, и чем она отличается от Sendinput. Функцию Checkchat мы создали в первой части кода этого бинда. Ее удобство в том, что через нее любой текст сможет ввестись вне зависимости от того, открыт ли у вас чат в этот момент, и она не помешает вам писать дальше. Синтаксис простой: Checkchat("текст"). Вот как это работает: — Полезные реакции. Скрытый текст Это набор готовых реакций, которые вы можете вставлять к себе в бинд реакции на чат, в любом порядке. Общие реакции. IfInString, MY_REACTION_STRING, предлагает отремонтировать вашу машину за $1, { Checkchat("/accept repair") sleep 1111 } ; Принятие ремонта от механика за 1$. IfInString, MY_REACTION_STRING, предлагает вам дозаправку за $1 { Checkchat("/accept refill") sleep 1111 } ; Принятие заправки от механика за 1$. IfInString, MY_REACTION_STRING, предлагает Вам секс с ней за $1 (для согласия введите /accept sex). { Checkchat("/accept sex") sleep 1111 } ; Принятие услуг проститутки за 1$. IfInString, MY_REACTION_STRING, предлагает Вам оформить у него машину за $1 ( { Checkchat("/accept car") sleep 1111 } ; Принятие услуг оформителя за 1$. IfInString, MY_REACTION_STRING, за $100. Для согласия введите /accept gun. { Checkchat("/accept gun") sleep 1111 } ; Принять оружие по минимальной цене от мафии. IfInString, MY_REACTION_STRING, Введите /td для согласия { Checkchat("/td") sleep 1111 } ; Принять эликсир. IfInString, MY_REACTION_STRING, ] * Для начала работы введите /duty { Checkchat("/duty") sleep 1111 } ; Заступить на дежурство механика. IfInString, MY_REACTION_STRING, ] * Эта модель ТС требуется для угона. Введите /jackcar, если хотите пригнать ТС. { Checkchat("/jackcar") sleep 1111 } ; Начать угон подходящей модели ТС. Реакции для ПО. IfInString, MY_REACTION_STRING, ] * Вы ударили тазером { RegExMatch(MY_REACTION_STRING, "\] \* Вы ударили тазером (.*),", MY_TAZER) SendInput {f6}/cuff %MY_TAZER1%{enter} sleep 1111 } ; Надеть наручники на того, кого вы ударили тазером. Реакции для мафий. IfInString, MY_REACTION_STRING, ] [MATERIALS] IfNotInString, MY_REACTION_STRING, Материалы покинули штат { Checkchat("/maf ВНИМАНИЕ{!} В штат прибыли материалы{!}") } ; Оповещение о начале контрабанды. IfInString, MY_REACTION_STRING, ] [MATERIALS] IfInString, MY_REACTION_STRING, Материалы покинули штат { Checkchat("/maf ВНИМАНИЕ{!} Материалы покинули штат{!}") } ; Оповещение об окончании контрабанды. IfInString, MY_REACTION_STRING, Был совершен взлом двери склада. У Вас есть 5 минут для кражи бланков { SendInput {home down} sleep 111 SendInput {home up} } ; Открыть дверь полицейского участка при ее взломе. Если у вас это не Home, то меняете на свою кнопку. IfInString, MY_REACTION_STRING, Введите /tm для согласия { Checkchat("/tm") sleep 1111 } ; Принять материалы. IfInString, MY_REACTION_STRING, Введите /tb для согласия { Checkchat("/tb") sleep 1111 } ; Принять бланки. Общие бинды. — Прокачка навыка детектива. Скрытый текст Цитата F1:: loop { Sendinput {f6}/find 0{enter} sleep 130000 } return При нажатии кнопки бинд запускает цикл, который вводит /find 0 каждые 130 секунд. Отключить цикл можно просто перезапустив бинд. — Турбо прокачка навыка детектива. Скрытый текст Цитата F1::Reload F2:: loop { LAUNCH() WinWaitActive, GTA:SA:MP sleep 15000 SendInput пароль sleep 1000 Send {enter down} sleep 100 Send {enter up} sleep 1000 Send {esc down} sleep 100 Send {esc up} sleep 1000 SendInput {f6}/find 0{enter} sleep 1000 LAUNCH() sleep 5000 } return LAUNCH() { IfWinActive GTA:SA:MP Sendinput {f6}/q{enter} else { WinActivate, San Andreas Multiplayer 0.3.7 WinWaitActive, San Andreas Multiplayer 0.3.7 ControlClick, x60 y100, ahk_class TfmMain ;Select the server ControlClick, x20 y60, ahk_class TfmMain ;Connect } } Желательно использовать отдельным скриптом и с установленным crashes.asi для ускорения загрузки игры. В тексте бинда нужно вписать свой пароль. Нажатием F2 (игра при этом должна быть закрыта, а SAMP - открыт) активируется цикл, который запускает игру, логинится, прописывает команду /find, перезаходит в игру и так далее. Для остановки цикла используйте F1. На полную прокачку с 1 по 5 скилл уходит примерно 3.5 часа. — Генератор паролей и автоматический ввод пароля. Скрытый текст Цитата F1:: FileRead, MY_PASS, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Password.txt sleep 150 Sendinput %MY_PASS% sleep 500 Sendinput {enter} MY_PASS := "" return :?:/пароль:: sleep 200 FileRead, MY_PASS, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Password.txt Characters = abcdefghijklmnopqrstuvwxyz12345678901234567890 Filedelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Password.txt loop, 11 { Random, My_PASS_CHAR, 1, 46 Fileappend, % SubStr(Characters, MY_PASS_CHAR, 1), %A_MyDocuments%\GTA San Andreas User Files\SAMP\Password.txt } FileRead, MY_PASS_NEW, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Password.txt Sendinput {f6}/m{enter} sleep 400 Sendinput {down} sleep 200 Sendinput {enter} sleep 200 Sendinput {enter} sleep 1000 Sendinput %MY_PASS%{enter} sleep 400 Sendinput %MY_PASS_NEW%{enter} loop 3 { sleep 250 Sendinput {esc} } Fileappend, %MY_PASS_NEW%%A_TAB%%A_DD%.%A_MM%.%A_YYYY% %A_Hour%:%A_Min%:%A_Sec%, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Password_log.txt Fileappend, `n, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Password_log.txt MY_PASS := "" MY_PASS_NEW := "" return Для начала работы бинда нужно создать файл password.txt в папке сампа и скопировать туда ваш текущий пароль. Далее командой /пароль в игре вы можете сменить пароль на новый, сгенерированный автоматически. Этот пароль будет записан в тот же файл password.txt в папке SAMP. После этого, при входе в игру, вы можете нажать F1 для автоматического ввода пароля. Если вы использовали бинд, но пароль почему-либо не сменился (например, при лагах), то вы можете найти предыдущий пароль в файле Password_log.txt, который тоже находится в папке сампа и содержит все ваши предыдущие пароли и дату их смены. — Быстрый /drink в баре. Скрытый текст Цитата F2:: Sendinput {f6}/drink{enter} sleep 50 loop 30 { Send {space down}{space up} } return При нажатии бинда вводится команда /drink и спамится пробел 30 раз, позволяя быстро попить. — Быстрое доставание оружия из рюкзака. Скрытый текст Цитата Numpad0:: Sendinput {f6}/bag{enter} sleep 600 Click 1025, 300, 0 Click 2 sleep 100 Sendinput 30{enter}{esc} Return В строке Click 1025, 300, 0 цифры 1025 и 300 - это координаты ячейки, из которой будет доставаться оружие. Чтобы определить эти координаты на вашем мониторе, сделайте скриншот с открытым рюкзаком, откройте его в Paint и наведите курсор на ячейку - внизу показаны координаты курсора. В строке Sendinput 30{enter}{esc} число 30 - это доставаемое количество патронов. Если бинд работает некорректно (не успевает вовремя открыться рюкзак), увеличьте цифру в строке sleep 600 до 800 или 1000. — Быстрое доставание оружия из рюкзака (универсальный бинд by Spikey). Скрытый текст 1 слот рюкзака: f11:: sendinput, {f6}/bag{enter} sleep, 300 ; Задержка. Скрипт/сервер работает через жопу = увеличиваем, перезапускаем скрипт. MouseClick, Left, A_ScreenWidth/1.33, A_ScreenHeight/2.56 MouseClick, Left, A_ScreenWidth/1.33, A_ScreenHeight/2.56 sleep, 300 ; Задержка. Скрипт/сервер работает через жопу = увеличиваем, перезапускаем скрипт. sendinput, 50{enter}{esc} ; 50 - количество патронов для оружия в первом слоте Return 2 слот рюкзака: f12:: sendinput, {f6}/bag{enter} sleep, 300 ; Задержка. Скрипт/сервер работает через жопу = увеличиваем, перезапускаем скрипт. MouseClick, Left, A_ScreenWidth/1.33+A_ScreenWidth/26.6, A_ScreenHeight/2.56 MouseClick, Left, A_ScreenWidth/1.33+A_ScreenWidth/26.6, A_ScreenHeight/2.56 sleep, 300 ; Задержка. Скрипт/сервер работает через жопу = увеличиваем, перезапускаем скрипт. sendinput, 10{enter}{esc} ; 10 - количество патронов для оружия во втором слоте Return Работает на любых разрешениях. — Бинд "Согласен на все". Скрытый текст Цитата ^NumpadAdd:: Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt MY_CHATLOG = %A_Index% MY_CHATLOG := (MY_CHATLOG - 16) loop 16 { FileReadLine, MY_REPEAT_STRING, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, %MY_CHATLOG% MY_CHATLOG +=1 IfInString, MY_REPEAT_STRING, (введите /accept repair) { Sendinput {f6}/accept repair{enter} sleep 1100 } IfInString, MY_REPEAT_STRING, вам дозаправку { Sendinput {f6}/accept refill{enter} sleep 1100 } IfInString, MY_REPEAT_STRING, (принять - /accept mechanic) { Sendinput {f6}/accept mechanic{enter} sleep 1100 } IfInString, MY_REPEAT_STRING, введите /accept drugs { Sendinput {f6}/accept drugs{enter} sleep 1100 } IfInString, MY_REPEAT_STRING, (для согласия введите /accept car) { Sendinput {f6}/accept car{enter} sleep 1100 } IfInString, MY_REPEAT_STRING, (для согласия введите /accept sex) { Sendinput {f6}/accept sex{enter} sleep 1100 } IfInString, MY_REPEAT_STRING, Введите /accept ticket для оплаты штрафа { Sendinput {f6}/accept ticket{enter} sleep 1100 } } return При нажатии на кнопку, бинд читает последние 8 строк чата, и если видит, что вам предложили: ремонт или заправку механика, наркотики, оформление машины, секс или штраф - то он это принимает. — Распределение скриншотов по папкам для написания отчетов. Скрытый текст Цитата ~F8:: sleep 3000 Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { MY_CHATLOG = %A_Index% IfInString, A_LoopReadLine, Screenshot Taken - MY_SCREENSHOT := A_LoopReadLine } MY_CHATLOG := (MY_CHATLOG - 20) FoundPos := RegExMatch(MY_SCREENSHOT, "Screenshot Taken - (.*)", MY_SCREENSHOT) loop 20 { FileReadLine, MY_REPEAT_STRING, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, %MY_CHATLOG% MY_CHATLOG +=1 IfInString, MY_REPEAT_STRING, ] * Вы арестовали FileCopy, %A_MyDocuments%\GTA San Andreas User Files\SAMP\screens\%MY_SCREENSHOT1%,%A_MyDocuments%\GTA San Andreas User Files\SAMP\screens\Аресты IfInString, MY_REPEAT_STRING, азаза FileCopy, %A_MyDocuments%\GTA San Andreas User Files\SAMP\screens\%MY_SCREENSHOT1%,%A_MyDocuments%\GTA San Andreas User Files\SAMP\screens\Азаза } Return Зеленым выделено количество строк, которое будет читаться, причем оно всегда в два раза меньше указанного. Сейчас там стоит 20 - значит, читаться будут последние 10 строк чата, и т.д. Не рекомендую ставить значение больше 40, чтобы бинд не находил в чате слишком старые сообщения. Красным выделено ключевое слово, которое будет искаться. То есть, если я арестовал кого-то и бинд найдет текст "] * Вы арестовали" в последних 10 строках чата, он скопирует скриншот в папку, которую я создал. Синим выделен путь папки, в которую будут копироваться скрины с найденным текстом. Папку нужно создать самому, иначе скриншотам будет некуда копироваться. В данном примере я в папке screens создал еще две - Аресты и Азаза, там и будут скриншоты. Вы можете создать любую папку где угодно, но нужно тогда указать здесь полный путь к ней. Примечание: - Не привязывайте бинд к другой кнопке. - Бинд не трогает оригинальные скриншоты, которые лежат в папке screens, он просто копирует их в другую. - Если бинд находит сразу несколько ключевых слов в чате, когда вы делаете скриншот, он скопирует его во все соответствующие папки. - Если в чате не найдено ключевых слов, то бинд ничего не делает, и у вас получается просто скриншот, как обычно. - Если вам нужно добавить ключевое слово, то просто вставьте еще две строки к остальным: Цитата IfInString, MY_REPEAT_STRING, Ключевое слово FileCopy, %A_MyDocuments%\GTA San Andreas User Files\SAMP\screens\%MY_SCREENSHOT1%,%A_MyDocuments%\GTA San Andreas User Files\SAMP\screens\Название папки Таким образом, бинд полезен для скринов с арестами, обысками, чисткой ЧС, подачей объявлений, да и вообще любых событий, отображаемых в чате. — Бинд детектива. Скрытый текст Цитата Numpad0:: Sendinput {f6}/id{space} Input, MY_TARGET, V, {enter} sleep 100 return Numpad1:: Sendinput {f6}/find %MY_TARGET%{enter} return Нажав Numpad0, вы вводите id игрока, которого хотите искать. Этот id запоминается в бинде, и потом кнопкой Numpad1 вы сразу ищете этого игрока. — "Умные" смайлики. Скрытый текст Цитата :?c:ЧВ::xD :?c:чВ::xD :?c:ЖВ:::D Если вы случайно ввели смайлик на русской раскладке, то бинд автоматически заменит его на правильный. — Канистра. Скрытый текст Цитата ^9:: if (MY_FUEL := !MY_FUEL) Sendinput {f6}/fillcar{enter} else Sendinput {f6}/get fuel{enter} return Одной и той же кнопкой вы можете пополнять канистру и заправлять ей ваше ТС. — Проверка баланса передачи денег. Скрытый текст Цитата F2:: MY_BALANCE := Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { If A_LoopReadLine { StringSplit, MY_BALANCE, A_LoopReadLine, %A_Space% IfInString, A_LoopReadLine, Вы приняли $ { StringTrimLeft, MY_BALANCE5, MY_BALANCE5, 1 MY_BALANCE += MY_BALANCE5 } IfInString, A_LoopReadLine, Вы передали $ { StringTrimLeft, MY_BALANCE5, MY_BALANCE5, 1 MY_BALANCE -= MY_BALANCE5 } } } Sendinput {f6}Баланс = %MY_BALANCE% return Бинд подсчитывает баланс между тем, сколько вы выплатили и получили денег через команду /pay. Если вы лицензер или торговец из мафии и часто принимаете деньги, бинд поможет определить, какую сумму вы или вам передали. — Фильтровка чатлога. Скрытый текст Цитата !Home:: SetBatchLines, -1 Supersearch = InputBox, Supersearch, Supersearch, Введите элементы поиска. Используйте дефис "-" как разделитель , , 450, 150 If Supersearch { FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Filtered Logs\%Supersearch%.txt FileSelectFile, SupersearchFile, , , Supersearch, If SupersearchFile { SoundBeep, 600, 100 StringSplit, Supersearch, Supersearch, - ;, %A_SPACE% Loop, Read, %SupersearchFile% Loop %Supersearch0% IfInString, A_LoopReadLine, % Supersearch%A_Index% { FileAppend, %A_LoopReadLine%`n, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Filtered Logs\%Supersearch%.txt Break } } Loop %Supersearch0% Supersearch%A_Index% = } SoundBeep, 400, 100 IfExist, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Filtered Logs\%Supersearch%.txt Run, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Filtered Logs\%Supersearch%.txt else MsgBox, Не найдено Reload return Бинд позволяет отфильтровать чатлог или любой другой текстовый файл. Для работы бинда нужно создать папку с названием Filtered Logs в папке SAMP. Туда будут сохраняться результаты фильтровки. Особенно пригодиться это может для сохранения логов РП отыгрышей, интервью, бесед, да и вообще чего угодно, чтобы из обычного чатлога с кучей ненужного мусора в виде /gov, /ad и прочего у вас получился красивенький чистый лог из того, что вам нужно. При нажатии кнопки бинда появляется окно, куда вы вводите один или более элементов для поиска, которые должна содержать строка, чтобы быть записанной. После нажатия ОК в новом окне выберите файл, который будет фильтроваться. Звуковые сигналы отмечают начало и завершение фильтрации, обычно весь процесс занимает около секунды. Примеры поиска: [f] - Сохранит в новый файл только сообщения в /f чат (если, конечно, сочетание [f] не встретится еще где-то, но это редкость) Ken_Guru-Popu_Gay - Сохранит только строки, где есть одно или оба из этих имен. Ken_Guru-Объявление-[f] (рация): ПРЕСТУПЛЕНИЕ-сбежал - покажет выдачу розыска и выход из игры в /toglogins. И так далее, элементов поиска может быть сколько угодно, просто не забывайте разделять их дефисом. Примечание: в некоторых случаях скрипт бывает чувствителен к регистру букв, поэтому вводить в поиске их желательно сохраняя порядок больших и маленьких букв. — [VIP] Личные треки Скрытый текст Цитата Numpad8:: SendInput {f6}/music{enter} sleep 100 MouseClick, Left, A_ScreenWidth/3.1, A_ScreenHeight/2.32 MouseClick, Left, A_ScreenWidth/3.1, A_ScreenHeight/2.32 sleep 100 loop 10 { loop 10 { Sendinput {down} sleep 20 } sleep 100 SendInput {enter} sleep 100 MouseClick, Left, A_ScreenWidth/3.1, A_ScreenHeight/2.32 MouseClick, Left, A_ScreenWidth/3.1, A_ScreenHeight/2.32 Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { If A_LoopReadLine MY_REPEAT_STRING := A_LoopReadLine } IfInString, MY_REPEAT_STRING, * Введите ссылку на трек { sleep 100 SendInput {esc} sleep 100 SendInput {esc} break } Else continue } return Numpad9:: Sendinput {f6}/Music:{space} Input, MY_INPUT, V, {enter} If MY_INPUT Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Music.txt IfInString, A_LoopReadLine, %MY_INPUT% { Loop, Parse, A_LoopReadLine, %A_Space% IfInString, A_LoopField, mp3 MY_INPUT := A_LoopField break } sleep 1100 SendInput {f6}/music{enter} sleep 100 MouseClick, Left, A_ScreenWidth/3.1, A_ScreenHeight/2.32 MouseClick, Left, A_ScreenWidth/3.1, A_ScreenHeight/2.32 sleep 100 SendInput {enter} sleep 100 SendInput %MY_INPUT%{enter} sleep 100 loop 10 { Sendinput {down} sleep 20 } SendInput {enter} sleep 100 SendInput {enter} return Данный бинд позволяет иметь под рукой больше, чем 10 личных треков. Для этого нужно записать ссылки на треки и их названия в текстовый файл music.txt и сохранить его в папке Мои документы/SAMP. Пример: Ayreon - Amazing Flight http://dl.waix.ru/fd8fe2e81.mp3 Ayreon - Dawn Of A Million Souls http://dl.waix.ru/6016a9dcd.mp3 Ayreon - Day Eight School http://dl.waix.ru/b4ec275c9.mp3 Нажав Numpad9, вы вводите частично или полностью название песни, которую хотите запустить. Она добавится в список ваших треков и запустится автоматически. Чтобы очистить список треков в игре, нажмите Numpad8, и они будут удалены. — Подача городских новостей (/gov) Скрытый текст Цитата F3::stroka1 = 1 строкаstroka2 = 2 строкаstroka3 = 3 строкаstroka4 = 4 строка sleep 200 Sendinput {enter} sleep 200 SendInput %stroka1%{enter} sleep 200 SendInput {down} sleep 200 SendInput {enter} sleep 200 SendInput %stroka2%{enter} sleep 200 SendInput {down} sleep 200 SendInput {down} sleep 200 SendInput {enter} sleep 200 SendInput %stroka3%{enter} sleep 200 Sendinput {down} sleep 200 Sendinput {down} sleep 200 Sendinput {down} sleep 200 SendInput {enter} sleep 200 SendInput %stroka4%{enter} return Вместо выделенного цветом текста вы вставляете текст городских новостей, потом в игре, когда вы открываете меню ввода строк, нажимаете на кнопку бинда, и он введет весь текст. — Проверка на наличие игрока в БД, не сворачивая игру. Скрытый текст Цитата :?:/БД:: SendInput /Проверить на БД:{space} Input, MY_INPUT, V, {enter} whr := ComObjCreate("WinHttp.WinHttpRequest.5.1") whr.Open("GET", "https://raw.githubusercontent.com/macropus9/GW-Ken_Guru/master/Noname", true) whr.Send() whr.WaitForResponse() MY_BLACKLIST := whr.ResponseText sleep 200 If MY_INPUT is number { sleep 900 SendInput {f6}/lvl %MY_INPUT%{enter} sleep 300 Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt IfInString, A_LoopReadLine, ] ID: ( { FoundPos := RegExMatch(A_LoopReadLine, "\) (.*);", MY_NAME) MY_INPUT := MY_NAME1 } } IfInString, MY_BLACKLIST, %MY_INPUT% SendInput {f6}%MY_INPUT% находится в БД^{vk41} else SendInput {f6}%MY_INPUT% не состоит в БД^{vk41} MY_BLACKLIST := MY_NAME1 := return Красным выделен url, на который должна быть залита БД в сыром виде, т.е. только текст. Например, на Github.com (см. пример). Как это сделать - писать лень, погуглите, если что. Редактировать БД может тот, кто ее туда залил. Бинд при этом обновлять не нужно, url остается прежним. Работает по команде /БД [id/ник]. — Время последнего угона. Скрытый текст Цитата :?:/угон:: sleep 200 JACKCAR := JACKCAR1 := Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt IfInString, A_LoopReadLine, Следующий заказ можно взять через 20 минут. JACKCAR := A_LoopReadLine RegExMatch(JACKCAR, "\[(.*)]", JACKCAR) SendInput {f6}Последний угон совершен в %JACKCAR1%.^{vk41} return Команда /угон покажет время последней доставки угнанного авто в доки СФ — Выдача warblock игрокам без GWAC. Скрытый текст Цитата F1:: SendInput {f6}/members 2{enter} sleep 555 FileRead, MY_CHATLOG, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt StringGetPos, MY_BL_POS, MY_CHATLOG, Члены Вашей организации онлайн:, R StringTrimLeft, MY_CHATLOG, MY_CHATLOG, %MY_BL_POS% sleep 555 Loop, Parse, MY_CHATLOG, `n { If RegExMatch(A_LoopField, "\[id:(.*)\] - ", MY_MEMBERS) SendInput {f6}/checkgwac %MY_MEMBERS1%{enter} MY_MEMBERS1 := sleep 1111 } FileRead, MY_CHATLOG, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt StringGetPos, MY_BL_POS, MY_CHATLOG, Члены Вашей организации онлайн:, R StringTrimLeft, MY_CHATLOG, MY_CHATLOG, %MY_BL_POS% Loop, Parse, MY_CHATLOG, `n { If RegExMatch(A_LoopField, "\] \* Античит у игрока (.*)\[.*\] не установлен.", MY_MEMBERS) { SendInput {f6}/warblock %MY_MEMBERS1% Нет античита{enter} sleep 1111 } } return Бинд проверит всех игроков вашей фракции на наличие GWAC и выдаст warblock тем, у кого его нет. Бинды для ПО. — Поиск игроков из /wanted. Скрытый текст Цитата F10:: loop 100 { MY_WANTED_FIND%A_index% := } Sendinput {f6}/wanted{enter} sleep 500 MY_I := FileRead, MY_WANTED, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt StringGetPos, MY_CHATLOG, MY_WANTED, В РОЗЫСКЕ, R StringTrimLeft, MY_WANTED, MY_WANTED, %MY_CHATLOG% StringTrimLeft, MY_WANTED, MY_WANTED, 13 Loop, Parse, MY_WANTED, `n { StringTrimLeft, MY_WANTED_STRING%A_index%, A_LoopField, 11 Loop, Parse, MY_WANTED_STRING%A_index%, `., %A_space% { FoundPos := RegExMatch(A_LoopField, "\[(.*)\]", MY_WANTED_ID) If (MY_WANTED_ID1 >= 0) { MY_I += 1 MY_WANTED_FIND%MY_I% := MY_WANTED_ID1 } } } MY_I_COUNT := MY_I MY_I := return F11:: MY_I -= 1 If (MY_I > 0) { MY_FINAL_FIND := % MY_WANTED_FIND%MY_I% Sendinput {f6}/find %MY_FINAL_FIND%{enter} } If (MY_I <= 0) { SoundBeep MY_I := MY_I_COUNT MY_FINAL_FIND := % MY_WANTED_FIND%MY_I% Sendinput {f6}/find %MY_FINAL_FIND%{enter} } return F12:: MY_I += 1 If (MY_I <= MY_I_COUNT) { MY_FINAL_FIND := % MY_WANTED_FIND%MY_I% Sendinput {f6}/find %MY_FINAL_FIND%{enter} } If (MY_I > MY_I_COUNT) { SoundBeep MY_I := 1 MY_FINAL_FIND := % MY_WANTED_FIND%MY_I% Sendinput {f6}/find %MY_FINAL_FIND%{enter} } return Кнопкой F10 вы можете смотреть /wanted, как обычно. Одновременно список игроков в розыске загружается в бинд. Кнопками F11 и F12 можно искать предыдущего игрока и следующего соответственно. Если нажимать F12, то вы будете искать, начиная с первого игрока в списке и далее. Если нажимать F11, то поиск будет идти в обратном порядке - начиная с конца списка. Если вы пошли искать по второму кругу списка, произойдет звуковой сигнал. Если вы нашли кого-то поблизости таким образом, то можете открыть чат и нажать стрелку вверх, чтобы посмотреть его id и проверить, за что он в розыске и т.п. — Изъятие всех лицензий на 7 дней. Скрытый текст Цитата !7:: SendInput {f6}/take driverslicense 7{left 2} Input, MY_ID, V, {enter} If MY_ID { sleep 1100 SendInput {f6}/take gunlicense %MY_ID% 6{enter} sleep 1100 SendInput {f6}/take flyinglicense %MY_ID% 7{enter} sleep 1100 SendInput {f6}/take boatlicense %MY_ID% 7{enter} } return Тут все просто - нажимаете на бинд, вводите id для изъятия прав, остальные лицензии бинд изымет сам (лицензию на оружие на 6 дней, чтобы избежать бага). — Арест через ПКМ+h. Скрытый текст Цитата ~RButton & ~vk48:: ; RButton + H sleep 300 SendInput {down down}{down up} sleep 200 SendInput {down down}{down up} sleep 200 SendInput {enter down}{enter up} KeyWait, Enter, D, T10 sleep 200 SendInput {enter down}{enter up} return При аресте через ПКМ+h вы сразу перейдете к выбору срока ареста, после его ввода арест произойдет автоматически. — Вооруженное нападение на ПО. Скрытый текст Цитата Numpad7:: Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt MY_CHATLOG = %A_Index% MY_CHATLOG := (MY_CHATLOG - 20) loop 20 { FileReadLine, MY_REPEAT_STRING, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, %MY_CHATLOG% MY_CHATLOG +=1 IfInString, MY_REPEAT_STRING, ] * Вы ударили тазером { MY_TAZER_STRING := MY_REPEAT_STRING FoundPos := RegExMatch(MY_TAZER_STRING, "\] \* Вы ударили тазером (.*),", MY_TAZER) SendInput {f6}/su %MY_TAZER1% 4 Вооруженное нападение на ПО(4){enter} sleep 1100 SendInput {f6}/take gunlicense %MY_TAZER1% 5{enter} sleep 1100 SendInput {f6}/cuff %MY_TAZER1%{enter} } } return Если в последних 10 строках есть сообщение, что вы кого-то ударили тазером. то при нажатии этого бинда данному гражданину выдастся розыск за вооруженное нападение на ПО, наденутся наручники и изымется лицензия на оружие на 5 дней. Примечание: этот бинд конфликтует с биндом "Автонаручники", не используйте их вместе. — [NGSA] Информация о последней лодке и конфискате. Скрытый текст Цитата Numpad3:: Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { IfInString, A_LoopReadLine, ] [MATERIALS] Корабль с материалами покинул MY_SHIP := A_LoopReadLine IfInString, A_LoopReadLine, ] [MATERIALS] В неизвестный порт штата прибыл корабль MY_SHIP := A_LoopReadLine IfInString, A_LoopReadLine, ] [ARMY] Операция по конфискату склада IfInString, A_LoopReadLine, окончена. MY_SHIP := A_LoopReadLine } If MY_SHIP { IfInString, MY_SHIP, ] [MATERIALS] Корабль с материалами покинул { FoundPos := RegExMatch(MY_SHIP, "(.*) \[MATERIALS\] Корабль с материалами покинул штат.", MY_FINAL_SHIP) SendInput {f6} Последняя лодка уплыла в %MY_FINAL_SHIP1%{home} } IfInString, MY_SHIP, ] [MATERIALS] В неизвестный порт штата прибыл корабль { FoundPos := RegExMatch(MY_SHIP, "(.*) \[MATERIALS\] В неизвестный порт штата прибыл корабль", MY_FINAL_SHIP) SendInput {f6} Лодка находится с %MY_FINAL_SHIP1% в порту{space} } IfInString, MY_SHIP, ] [ARMY] Операция по конфискату { FoundPos := RegExMatch(MY_SHIP, "(.*) \[ARMY\] Операция по конфискату склада (.*) окончена.", MY_FINAL_SHIP) SendInput {f6} Последний конфискат был на %MY_FINAL_SHIP2% в %MY_FINAL_SHIP1%{home} } } else SendInput {f6} Не найдено.^{vk41} Return Бинд-памятка, читает чатлог и выдает в чат время ухода последней лодки или окончания последнего конфиската. Бинды для мафий. — Информация о контрабанде материалов. Скрытый текст Цитата Numpad3:: Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { IfInString, A_LoopReadLine, ] [MATERIALS] MY_SHIP := A_LoopReadLine } If MY_SHIP { RegExMatch(MY_SHIP, "(.*) \[MATERIALS\] (.*)", MY_SHIP) SendInput {f6} %MY_SHIP1% %MY_SHIP2% {home} } else SendInput {f6} Не найдено.^{vk41} return При нажатии бинд читает ваш чатлог и выводит в чате последнее сообщение, связанное с контрабандой. — Подсчет добытых материалов и бланков. Скрытый текст Цитата :?:/маты:: MY_MATS_COUNT := Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { IfInString, A_LoopReadLine, ] [MATERIALS] IfNotInString, A_LoopReadLine, Материалы покинули штат IfNotInString, A_LoopReadLine, _ MY_MATS_COUNT := IfInString, A_LoopReadLine, пополнил склад материалами IfInString, A_LoopReadLine, ] [WAREHOUSE] { RegExMatch(A_LoopReadLine, "пополнил склад материалами \((.*) шт", MY_MATS) MY_MATS_COUNT += MY_MATS1 } } If MY_MATS_COUNT SendInput {space}Материалов добыто за последнюю контрабанду: %MY_MATS_COUNT% {home} else SendInput Не найдено.^{vk41} return :?:/бланки:: MY_BLANKS_COUNT := Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { IfInString, A_LoopReadLine, ] [BLANKS PD] Был совершен взлом двери склада. IfNotInString, A_LoopReadLine, _ MY_BLANKS_COUNT := IfInString, A_LoopReadLine, пополнил склад бланками { RegExMatch(A_LoopReadLine, "пополнил склад бланками \((.*) шт", MY_BLANKS) MY_BLANKS_COUNT += MY_BLANKS1 } } If MY_BLANKS_COUNT SendInput {space}Бланков добыто за последний раз: %MY_BLANKS_COUNT% {home} else SendInput Не найдено.^{vk41} return Этот бинд дает нам две команды - /маты и /бланки, введя которые и нажав пробел вы можете увидеть, сколько этих ресурсов вы добыли за последнюю операцию. — Рейтинг бойцов (война за респавны). Скрытый текст Цитата F11:: MY_FACTION = Yakuza FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt FileRead, MY_CHATLOG_FILE, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt StringGetPos, MY_CHATLOG, MY_CHATLOG_FILE, [RESP ALARM], R StringTrimLeft, MY_CHATLOG_FILE, MY_CHATLOG_FILE, %MY_CHATLOG% Loop, Parse, MY_CHATLOG_FILE, `n, `r { MY_FELLOW1 := IfInString, A_LoopField, [RESP WAR] FoundPos := RegExMatch(A_LoopField, ".*\s(.*)\[Yakuza\]", MY_FELLOW) IfInString, A_LoopField, [%MY_FACTION%] покинул поле боя FoundPos := RegExMatch(A_LoopField, ".*\s(.*) \[Yakuza\]", MY_FELLOW) If MY_FELLOW1 IfNotInString, MY_RESULT, %MY_FELLOW1% { MY_RESPECT := Loop, Parse, MY_CHATLOG_FILE, `n, `r { IfInString, A_LoopField, %MY_FELLOW1%[%MY_FACTION%] завалил { FoundPos := RegExMatch(A_LoopField, "\(respect \+(.*)\)", MY_RESP) MY_RESPECT += MY_RESP1 } IfInString, A_LoopField, завалил %MY_FELLOW1%[%MY_FACTION%] { FoundPos := RegExMatch(A_LoopField, "\(respect \+(.*)\)", MY_RESP) MY_RESPECT -= MY_RESP1 } IfInString, A_LoopField, %MY_FELLOW1% [%MY_FACTION%] покинул поле боя { FoundPos := RegExMatch(A_LoopField, "\(уважение противника \+(.*)\)", MY_RESP) MY_RESPECT -= MY_RESP1 } } FileAppend, %MY_RESPECT% %MY_FELLOW1%.`n, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt FileRead, MY_RESULT, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt } } FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt Sort, MY_RESULT, NR Loop, Parse, MY_RESULT, `n, `r { If A_LoopField { StringSplit, MY_RESULT_FINAL, A_LoopField, %A_space%, `n FileAppend, %A_Index%.%A_Space%, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt If MY_RESULT_FINAL1 > 0 FileAppend, %MY_RESULT_FINAL2% (+%MY_RESULT_FINAL1%)`n, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt else FileAppend, %MY_RESULT_FINAL2% (%MY_RESULT_FINAL1%)`n, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt } } MY_CHATLOG_FILE := MY_RESULT := Soundbeep return F12:: loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt { if A_LoopReadLine { MY_REPEAT_STRING := A_LoopReadLine StringReplace, MY_REPEAT_STRING, MY_REPEAT_STRING, +, {+}, All Sendinput {f6}/f %MY_REPEAT_STRING%{enter} sleep 1100 } } return Красным выделено название вашей мафии, оно должно точно совпадать с тем, как оно написано в сообщениях чата, когда ваш боец делает на захвате плюс или минус. Первый бинд (в этом примере на F11) подсчитывает рейтинг за последний захват, результаты записываются в папку \SAMP\Рейтинг.txt. Рейтинг бойца — это сумма его + и - во время захвата (включая минусы за выход из игры). Второй бинд (F12) выводит весь рейтинг в /f чате. — Бинд на закупку нарко с заполнением рюкзака. Скрытый текст Цитата F1:: loop 2 { SendInput {enter} sleep 120 SendInput 98{enter} sleep 200 Sendinput {f6}/bag{enter} sleep 500 Click 852, 221, 0 Click MouseClick, Left, A_ScreenWidth/1.2, A_ScreenHeight/3.47 MouseClick, Left, A_ScreenWidth/1.2, A_ScreenHeight/3.47 sleep 100 Sendinput {down} sleep 100 Sendinput {enter} sleep 100 Sendinput {enter}{esc} sleep 3000 } SendInput {enter} sleep 120 SendInput 98{enter} return Бинд рассчитан на отсутствие лагов (т.е. когда рюкзак открывается быстро). Иначе лучше класть наркотики туда вручную. — Замер изменений на складах мафий. Скрытый текст Цитата Numpad8:: MDELTA(){ Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { IfInString, A_LoopReadLine, ] 1. La Cosa Nostra [Базы RegExMatch(A_LoopReadLine, "Материалы: (.*); Эликсир жизни: (.*); Бланки: (.*);", MAFIA_L_START) IfInString, A_LoopReadLine, ] 2. Russian Mafia [Базы RegExMatch(A_LoopReadLine, "Материалы: (.*); Эликсир жизни: (.*); Бланки: (.*);", MAFIA_R_START) IfInString, A_LoopReadLine, ] 3. Yakuza [Базы RegExMatch(A_LoopReadLine, "\[(.*)\] .* Материалы: (.*); Эликсир жизни: (.*); Бланки: (.*);", MAFIA_Y_START) } sleep 500 SendInput {f6}/mafiatop{enter} sleep 500 Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { IfInString, A_LoopReadLine, ] 1. La Cosa Nostra [Базы RegExMatch(A_LoopReadLine, "Материалы: (.*); Эликсир жизни: (.*); Бланки: (.*);", MAFIA_L_FINISH) IfInString, A_LoopReadLine, ] 2. Russian Mafia [Базы RegExMatch(A_LoopReadLine, "Материалы: (.*); Эликсир жизни: (.*); Бланки: (.*);", MAFIA_R_FINISH) IfInString, A_LoopReadLine, ] 3. Yakuza [Базы RegExMatch(A_LoopReadLine, "Материалы: (.*); Эликсир жизни: (.*); Бланки: (.*);", MAFIA_Y_FINISH) } MAFIA_L_RESULT1 := (MAFIA_L_FINISH1-MAFIA_L_START1) MAFIA_L_RESULT2 := (MAFIA_L_FINISH2-MAFIA_L_START2) MAFIA_L_RESULT3 := (MAFIA_L_FINISH3-MAFIA_L_START3) MAFIA_R_RESULT1 := (MAFIA_R_FINISH1-MAFIA_R_START1) MAFIA_R_RESULT2 := (MAFIA_R_FINISH2-MAFIA_R_START2) MAFIA_R_RESULT3 := (MAFIA_R_FINISH3-MAFIA_R_START3) MAFIA_Y_RESULT1 := (MAFIA_Y_FINISH1-MAFIA_Y_START2) MAFIA_Y_RESULT2 := (MAFIA_Y_FINISH2-MAFIA_Y_START3) MAFIA_Y_RESULT3 := (MAFIA_Y_FINISH3-MAFIA_Y_START4) SendInput {f6}С %MAFIA_Y_START1%: L: %MAFIA_L_RESULT1%, %MAFIA_L_RESULT2%, %MAFIA_L_RESULT3%. || R: %MAFIA_R_RESULT1%, %MAFIA_R_RESULT2%, %MAFIA_R_RESULT3%. || Y: %MAFIA_Y_RESULT1%, %MAFIA_Y_RESULT2%, %MAFIA_Y_RESULT3%.{space} } return При нажатии бинд выведет в чат, на сколько материалов, наркотиков и бланков изменились склады всех мафий с последнего ввода команды /mafiatop. — Отслеживание конфиската (УСТАРЕЛО). Скрытый текст Цитата IfInString, MY_REACTION_STRING, ] [ARMY] Операция по конфискату склада Yakuza окончена. { Checkchat("/u [MAFIA ALERT] Операция по конфискату склада Yakuza окончена.") sleep 1111 } ; Конфискат IfInString, MY_REACTION_STRING, [MAFIA ALERT] Операция по конфискату склада { SetTimer, MY_KONFISKAT, -2100000 return MY_KONFISKAT: IfWinActive, GTA:SA:MP { Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt IfInString, A_LoopReadLine, [MAFIA ALERT] Операция по конфискату склада RegExMatch(A_LoopReadLine, "\[(.*)\] \[U\] .* \[MAFIA ALERT\] Операция по конфискату склада (.*) окончена.", MY_KONFISKAT) If !MY_KONFISKAT1 MY_KONFISKAT1 := "[Неизвестно]" If !MY_KONFISKAT2 MY_KONFISKAT2 := "[Неизвестно]" Checkchat("/u [MAFIA ALERT] Внимание{!} Через 5 минут будет возможен конфискат") sleep 1111 Checkchat("/u [MAFIA ALERT] Последний конфискат был в (.1) на (.2)", MY_KONFISKAT1, MY_KONFISKAT2) sleep 1111 } return } ; Конфискат 2 IfInString, MY_REACTION_STRING, ] [MATERIALS] Корабль с материалами покинул штат. { SetTimer, MY_KONFISKAT, -2100000 return } ; Конфискат 3 Эту часть кода нужно вставить в бинд реакции на чат. См инструкцию к тому бинду. Вместо Yakuza при необходимости вставьте Russian Mafia или La Cosa Nostra, там должно быть название вашей мафии. Данные реакции делают следующее: - отписывают в чат /u сообщение об окончании конфиската на вашу мафию. - через 35 минут после окончания лодки или последнего сообщения о закончившемся конфискате, в /u чат идет предупреждение, что конфискат возможен через 5 минут. Цитата F9:: Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt IfInString, A_LoopReadLine, [MAFIA ALERT] Операция по конфискату склада RegExMatch(A_LoopReadLine, "\[(.*)] \ .* \[MAFIA ALERT\] Операция по конфискату склада (.*) окончена.", MY_KONFISKAT) If !MY_KONFISKAT1 MY_KONFISKAT1 := "[Неизвестно]" If !MY_KONFISKAT2 MY_KONFISKAT2 := "[Неизвестно]" Sendinput {f6} [MAFIA ALERT] Последний конфискат был в %MY_KONFISKAT1% на %MY_KONFISKAT2%.{home} return А данный бинд позволяет проверить, когда и на кого был последний конфискат. Он ориентируется на сообщения в /u, генерируемые реакциями выше. Поэтому чем больше людей имеет этот бинд, тем точнее будет информация по конфискату. Бинды для банд. — Рейтинг бойцов (война за бизнесы). Скрытый текст Цитата F11:: MY_FACTION = Название банды FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt FileRead, MY_CHATLOG_FILE, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt StringGetPos, MY_CHATLOG, MY_CHATLOG_FILE, псы напали на вашу территорию, R StringGetPos, MY_CHATLOG2, MY_CHATLOG_FILE, начал захват бизнеса, R If (MY_CHATLOG > MY_CHATLOG2) StringTrimLeft, MY_CHATLOG_FILE, MY_CHATLOG_FILE, %MY_CHATLOG% If (MY_CHATLOG < MY_CHATLOG2) StringTrimLeft, MY_CHATLOG_FILE, MY_CHATLOG_FILE, %MY_CHATLOG2% Loop, Parse, MY_CHATLOG_FILE, `n, `r { IfInString, A_LoopField, [GANG NEWS] { FoundPos := RegExMatch(A_LoopField, ".*\s(.*)\[Название банды\]", MY_FELLOW) IfNotInString, MY_RESULT, %MY_FELLOW1% { MY_RESPECT := Loop, Parse, MY_CHATLOG_FILE, `n, `r { IfInString, A_LoopField, %MY_FELLOW1%[%MY_FACTION%] завалил { FoundPos := RegExMatch(A_LoopField, "\(respect \+(.*)\)", MY_RESP) MY_RESPECT += MY_RESP1 } IfInString, A_LoopField, завалил %MY_FELLOW1%[%MY_FACTION%] { FoundPos := RegExMatch(A_LoopField, "\(respect \+(.*)\)", MY_RESP) MY_RESPECT -= MY_RESP1 } IfInString, A_LoopField, %MY_FELLOW1% [%MY_FACTION%] покинул поле боя { FoundPos := RegExMatch(A_LoopField, "\(уважение противника \+(.*)\)", MY_RESP) MY_RESPECT -= MY_RESP1 } } FileAppend, %MY_RESPECT% %MY_FELLOW1%.`n, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt FileRead, MY_RESULT, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt } } } FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt Sort, MY_RESULT, NR Loop, Parse, MY_RESULT, `n, `r { If A_LoopField { StringSplit, MY_RESULT_FINAL, A_LoopField, %A_space%, `n FileAppend, %A_Index%.%A_Space%, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt If MY_RESULT_FINAL1 > 0 FileAppend, %MY_RESULT_FINAL2% (+%MY_RESULT_FINAL1%)`n, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt else FileAppend, %MY_RESULT_FINAL2% (%MY_RESULT_FINAL1%)`n, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt } } MY_CHATLOG_FILE := MY_RESULT := Soundbeep return F12:: loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Рейтинг.txt { if A_LoopReadLine { MY_REPEAT_STRING := A_LoopReadLine StringReplace, MY_REPEAT_STRING, MY_REPEAT_STRING, +, {+}, All Sendinput {f6}/f %MY_REPEAT_STRING%{enter} sleep 1100 } } return Красным выделено название вашей банды, оно должно точно совпадать с тем, как оно написано в сообщениях чата, когда ваш боец делает на захвате плюс или минус. Первый бинд (в этом примере на F11) подсчитывает рейтинг за последний захват, результаты записываются в папку \SAMP\Рейтинг.txt. Подсчитывать рейтинг нужно ДО начала следующего захвата. Рейтинг бойца — это сумма его + и - во время захвата (включая минусы за выход из игры). Второй бинд (F12) выводит весь рейтинг в /f чате. На данный момент бинд учитывает фраги только на захватах вашей банды, но не союзников. — Флуд /zahvat. Скрытый текст Цитата #MaxThreadsPerHotkey 3F1:: #MaxThreadsPerHotkey 1 if SmartLoop { SmartLoop := false return } SmartLoop := true Loop { SendInput {f6}/zahvat{enter} sleep 1050 if not SmartLoop break } SmartLoop := false Return При нажатии бинд начинает флудить команду /zahvat каждую секунду. При повторном нажатии прекращает. — Отпись в чат альянса о текущем счете захвата. Скрытый текст Цитата #MaxThreadsPerHotkey 3F2:: #MaxThreadsPerHotkey 1 if SmartLoop { SmartLoop := false return } SmartLoop := true Loop { Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { IfInString, A_LoopReadLine, [GANG NEWS] IfInString, A_LoopReadLine, respect FoundPos := RegExMatch(A_LoopReadLine, "\) \| (.*)", MY_SCORE) } If MY_SCORE1 != MY_SCORE2 { SendInput {f6}/u Счет: %MY_SCORE1%{enter} MY_SCORE2 := MY_SCORE1 sleep 10000 } if not SmartLoop break } SmartLoop := false Return При нажатии бинд начинает отписывать текущий счет на захвате в /u каждые 10 секунд, если счет изменился. При повторном нажатии прекращает. — Подсчет добытых биоматериалов. Скрытый текст Цитата F1:: MY_BIO_COUNT := Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { IfInString, A_LoopReadLine, ] * В Штате произошел выброс биоматериалов MY_BIO_COUNT := IfInString, A_LoopReadLine, пополнил склад биоматериалами { RegExMatch(A_LoopReadLine, "пополнил склад биоматериалами \((.*) шт\)", MY_BIO) MY_BIO_COUNT += MY_BIO1 } } If MY_BIO_COUNT SendInput {f6} Биоматериалов добыто: %MY_BIO_COUNT%{home} else SendInput {f6} Не найдено.^{vk41} return При нажатии бинд посчитает, сколько всего биоматериалов добыла ваша банда за последнюю операцию. Прочее. — Инструкция по команде RegExMatch (извлечение нужных слов из строки в переменную). Скрытый текст RegExMatch(Строка_в_которой_ищем, "шаблон_строки", массив_с_результатом) Итак, если у нас есть переменная, содержащая строку, а нам нужно из этой строки вытащить какую-то часть в другую переменную - нам поможет Regexmatch. В скобках сначала мы указываем название строки, которая у нас есть. Далее в кавычках мы указываем, что именно нужно вытащить из этой строки - об этом чуть ниже. И в конце мы указываем название массива, где будут содержаться результаты. Например: есть у нас в бинде строка MY_STRING, которая содержит "Мы рады видеть тебя на сервере, Ken_Guru!". А нам нужно, чтобы ник из этой строки загрузился в переменную, чтобы мы могли его дальше использовать. RegExMatch(MY_STRING, "тебя на сервере, (.*)!", MY_MATCH) Обратите внимание, что нам необязательно переписывать туда всю строку целиком. В кавычках мы попросту вставляем тот кусок строки, из которого хотим вытащить результат, и вместо нужного нам слова вставляем символы (.*). Поскольку в примере выше эти символы стоят как раз вместо ника, то есть между пробелом и восклицательным знаком, то именно ник у нас и будет содержаться в переменной MY_MATCH1. Откуда там взялась единичка? Она взялась потому, что результат записывается в массив, и результатов может быть сколько угодно - столько же, сколько раз мы вставим символы (.*) в строке, поэтому у каждого результата свой номер. Например, если бы команда выглядела так: RegExMatch(MY_STRING, "Мы рады видеть (.*) на сервере, (.*)!", MY_MATCH) То и результатов было бы два: MY_MATCH1 - тебя MY_MATCH2 - Ken_Guru Примечание: если в строке в кавычках у нас есть символы \.*?+[{|()^$ - то перед каждым из них мы должны поставить знак \ Ну и если что-то еще не совсем понятно в этом, приведу несколько примеров использования этой команды, для наглядности. MY_REACTION_STRING := "[13:45:56] * Оформитель Sergey_Suroviy предлагает Вам оформить у него машину за $1 (для согласия введите /accept car)." RegExMatch(MY_REACTION_STRING, "оформить у него машину за \$(.*) \(для", MY_MATCH) Результат: MY_MATCH1 содержит 1 MY_SCREENSHOT := "[13:25:54] Screenshot Taken - sa-mp-005.png" RegExMatch(MY_SCREENSHOT, "Screenshot Taken - (.*)", MY_SCREENSHOT) Результат: MY_SCREENSHOT1 содержит sa-mp-005.png STRING:= "[17:34:34] 1. La Cosa Nostra [Базы: 1; Казна: $768613469; Материалы: 1168634; Наркотики: 714842; Бланки: 400; Онлайн: 13]" RegExMatch(STRING, "Материалы: (.*); Наркотики: (.*); Бланки: (.*);", MAFIA) Результат: MAFIA1 содержит 1168634 MAFIA2 содержит 714842 MAFIA3 содержит 400 PS: На тему неправильного отображения текста в виде вопросиков или символов в чате. Я сам столкнулся с этой проблемой, обновив версию AHK. Пофиксить это можно просто установив более старую версию. 1. Удаляем AHK. 2. Скачиваем инсталлер AHK версии 1.1.26.01 отсюда (ссылка с официального сайта). 3. Запускаем его, выбираем Custom Installation, далее ANSI-32 bit. Ставим галочку на пунктах "Install script compiler" и "Separate taskbar buttons". 75 1 Quote Link to comment Share on other sites More sharing options...
spikey Posted July 5, 2016 Share Posted July 5, 2016 18 минут назад, Kangaroo сказал: Numpad0:: Sendinput {f6}/bag{enter} sleep 600 Click 1025, 300, 0 Click 2 sleep 100 Sendinput 30{enter}{esc} Return 1 слот рюкзака: f11:: sendinput, {f6}/bag{enter} sleep, 300 ; Задержка. Скрипт/сервер работает через жопу = увеличиваем, перезапускаем скрипт. MouseClick, Left, A_ScreenWidth/1.33, A_ScreenHeight/2.56 MouseClick, Left, A_ScreenWidth/1.33, A_ScreenHeight/2.56 sleep, 300 ; Задержка. Скрипт/сервер работает через жопу = увеличиваем, перезапускаем скрипт. sendinput, 50{enter}{esc} ; 50 - количество патронов для оружия в первом слоте Return 2 слот рюкзака: f12:: sendinput, {f6}/bag{enter} sleep, 300 ; Задержка. Скрипт/сервер работает через жопу = увеличиваем, перезапускаем скрипт. MouseClick, Left, A_ScreenWidth/1.33+A_ScreenWidth/26.6, A_ScreenHeight/2.56 MouseClick, Left, A_ScreenWidth/1.33+A_ScreenWidth/26.6, A_ScreenHeight/2.56 sleep, 300 ; Задержка. Скрипт/сервер работает через жопу = увеличиваем, перезапускаем скрипт. sendinput, 10{enter}{esc} ; 10 - количество патронов для оружия во втором слоте Return Работает на любых разрешениях. 4 Quote Link to comment Share on other sites More sharing options...
Kangaroo Posted July 5, 2016 Author Share Posted July 5, 2016 11 минуту назад, Spikey сказал: Пытался найти, но не нашел. Спасибо, добавил.) Quote Link to comment Share on other sites More sharing options...
Kangaroo Posted July 5, 2016 Author Share Posted July 5, 2016 11 минуту назад, NaRKo_BiZnES сказал: Сашка, сделай бинд для gov. Например /gov (открываешь окошко), после чего открываешь время которое тебе нужно, и там 4 слота, и что бы в эти слоты можно было биндом автоматически сбить текст. Думаю всем гос. будет полезно Для этого мне нужно точно знать, что, как и когда там нажимается, а я этого не помню. Quote Link to comment Share on other sites More sharing options...
Kangaroo Posted July 5, 2016 Author Share Posted July 5, 2016 Обновил бинд "Согласен на все", теперь он примет все, что вам предложили в последних строках, а не только первое предложение. Добавил бинд "Вооруженное нападение на ПО". 1 Quote Link to comment Share on other sites More sharing options...
Jonny_Watson Posted July 6, 2016 Share Posted July 6, 2016 Цитата Numpad7:: Loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt MY_CHATLOG = %A_Index% MY_CHATLOG := (MY_CHATLOG - 20) loop 20 { FileReadLine, MY_REPEAT_STRING, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, %MY_CHATLOG% MY_CHATLOG +=1 IfInString, MY_REPEAT_STRING, ] * Вы ударили тазером { MY_TAZER_STRING := MY_REPEAT_STRING FoundPos := RegExMatch(MY_TAZER_STRING, "\] \* Вы ударили тазером (.*),", MY_TAZER) SendInput {f6}/su %MY_TAZER1% 4 Вооруженное нападение на ПО(4){enter} sleep 1100 SendInput {f6}/cuff %MY_TAZER1%{enter} sleep 1100 SendInput {f6}/take gunlicense %MY_TAZER1% 5{enter} } } return Если в последних 10 строках есть сообщение, что вы кого-то ударили тазером. то при нажатии этого бинда данному гражданину выдастся розыск за вооруженное нападение на ПО, наденутся наручники и изымется лицензия на оружие на 5 дней. Примечание: этот бинд конфликтует с биндом "Автонаручники", не используйте их вместе. ----------------------- Если ты наденешь наручники, то человек сможет двигаться, а это процентов 70, что лицензию будет невозможно изъять. Лучше сначала вставить лицензию, а потом наручники. Quote Link to comment Share on other sites More sharing options...
Kangaroo Posted July 6, 2016 Author Share Posted July 6, 2016 47 минут назад, Jonny_Watson сказал: ----------------------- Если ты наденешь наручники, то человек сможет двигаться, а это процентов 70, что лицензию будет невозможно изъять. Лучше сначала вставить лицензию, а потом наручники. Логично, изменил. Quote Link to comment Share on other sites More sharing options...
Al_Nothron Posted July 9, 2016 Share Posted July 9, 2016 Сделай ещё бинд для мафии, буду благодарен. 1 Quote Link to comment Share on other sites More sharing options...
Kangaroo Posted July 9, 2016 Author Share Posted July 9, 2016 1 час назад, Al_Nothron сказал: Сделай ещё бинд для мафии, буду благодарен. Если есть интересные идеи для биндов, обращайся. Quote Link to comment Share on other sites More sharing options...
Al_Nothron Posted July 9, 2016 Share Posted July 9, 2016 Скажите бинд: Чел пишет, Marco_Gioveze[22]: Как дела? И я нажимаю например numpad2, и он копирует его текст: * [16:30:30] Marco_Gioveze[22]: Как дела? Quote Link to comment Share on other sites More sharing options...
SRDZ BOT Posted July 9, 2016 Share Posted July 9, 2016 38 минут назад, Al_Nothron сказал: Скажите бинд: Чел пишет, Marco_Gioveze[22]: Как дела? И я нажимаю например numpad2, и он копирует его текст: * [16:30:30] Marco_Gioveze[22]: Как дела? Попугай, скинуть? Quote Link to comment Share on other sites More sharing options...
Al_Nothron Posted July 9, 2016 Share Posted July 9, 2016 Только что, SRDZ BOT сказал: Попугай, скинуть? Да. Quote Link to comment Share on other sites More sharing options...
SRDZ BOT Posted July 9, 2016 Share Posted July 9, 2016 1 минуту назад, Al_Nothron сказал: Да. скайп давай, так скину Quote Link to comment Share on other sites More sharing options...
Al_Nothron Posted July 9, 2016 Share Posted July 9, 2016 Только что, SRDZ BOT сказал: скайп давай, так скину тут давай. Quote Link to comment Share on other sites More sharing options...
Popular Post SRDZ BOT Posted July 9, 2016 Popular Post Share Posted July 9, 2016 (edited) 4 минуты назад, Al_Nothron сказал: Да. скайп давай, так скину F2:: loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { i=%A_Index% } FileReadLine, line, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, i-1 StringReplace, line, line, !, {!}, ,All StringReplace, line, line, #, {#}, ,All StringReplace, line, line, ^, {^}, ,All StringReplace, line, line, +, {+}, ,All StringTrimLeft, line, line, 11 sendinput, {f6}%line%{enter} return F1:: loop, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt { i=%A_Index% } FileReadLine, line, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt, i-1 StringTrimLeft, line, line, 11 IfInString, line, : { RegExMatch(line,"\Q: \E(.*)",line) StringTrimLeft, line, line, 2 } StringReplace, line, line, !, {!}, ,All StringReplace, line, line, #, {#}, ,All StringReplace, line, line, ^, {^}, ,All StringReplace, line, line, +, {+}, ,All sendinput, {f6}%line%{enter} return Edited July 9, 2016 by SRDZ BOT LIKE 19 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.