Вопросы по AHK-скриптингу

AnonimusTK

Новичок
2
0
Можете помочь? Не знаю, в чём ошибка.
 

Вложения

  • AutoHotkey Script.ahk
    7.4 KB · Просмотры: 13

Kev1H

Новичок
19
0
Как сделать так, чтобы AHK писал в чат, не влияя на то, что ты пишешь. Допустим ты открыл чат и запустил биндер. Твой чат приэтом не закрывается и все продолжает писать.
 

7jizzle

Участник
238
14
AutoHotKey:
#IfWinActive GTA:SA:MP
#Include SAMP.ahk

$~NumpadEnter::
$~Enter::
if (!isInChat()) || (isDialogOpen() && (getDialogStyle() == 1 || getDialogStyle() == 3))
   Return
Sleep 250
chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
if (chatInput == "/trka") {
   hp := !hp
   addChatMessage("{FFFFFF} " (hp ? "ON" : "OFF"))
   SetTimer, check_hp, % (hp ? 1000 : "off")
}
return

check_hp:
if (getPlayerHealth() < 50) {
   SendChat ("Привет")
}
return



Так не будет работать, потому что условие не верное.
KeyWait в помощь.

AutoHotKey:
F1::
SendInput, {f6}Любой текст номер 1{Enter}
Sleep 2000
if (peremennaya >= 0) {
   SendInput, {f6}Любой текст 2{Enter}
} else {
   KeyWait, ESC,  D T15 ; ждёт нажатие клавиши 15 секунд
   if (!ErrorLevel) {
      SendInput, {f6}Хм...{Enter}
   }
}
return

Смог я его запустить. 1. Пишет что активирован, но с задержкой. И в игру тоже передаёт команду. 2. В чат не пишет "привет" когда хп меньше 50.
 

Tiva

Известный
76
1
Не запускается скрипт на windows 8.
Сам скрипт рабочий.
Еще не можно поставить ANSI
ХЕЛП)
 

George

Новичок
5
0
Работа с базой данных. GTA:SA:MP. Дабы работа с диалогами (они здесь не будут представлены) была более приятной для пользователя, я хотел бы, чтобы имя пользователя (и другие важные данные) сохранялись локально в файле с базой данных (sql например, или что-то подобное). В SQL не смыслю, файл cookie.sql пуст. То есть вопрос здесь об использовании SQL таблиц через .ahk. Если у вас есть идеи для хранения получше, буду рад увидеть.
C++:
#SingleInstance force
#include %A_ScriptDir%\cookie.sql ; source .sql
SendMode Input

#IfWinActive GTA:SA:MP

NumPadEnter::

SendMessage, 0x50,, 0x4190419,, A

SendInput tName:{space}
Suspend On
Hotkey, Enter, On
Hotkey, Esc, On

Input, uName, V I M, {enter}
Send, {end}+{home}{Del}{esc}

; дальше нужно вывести uName в файл с базой данных (cookie.sql)

return

И еще (я уже повернут на диалоговых окнах), есть ли способ перехватить сообщение из окна авторизации (локально; на Arizona например)? Использую эти исходники. Я предположу, что делается это примерно так:
C++:
#SingleInstance force
#include %A_ScriptDir%\SAMP.ahk
SendMode Input

#IfWinActive GTA:SA:MP

global gPassword := "" ; {g} - grab

#If
OnDialogResponse(response) {
    dCaption := GetDialogCaption()
    if (response) {
        if (dCaption == "Авторизация") {
            ClipboardBuffer := ClipboardAll
            Clipboard := ""
            Send, ^{A}
            Send, ^{X}
            sleep 250
            gPassword := Clipboard
            Clipboard := ClipboardBuffer
            Send, {enter}
            AddChatMessage("" gPassword)
        }
    }
    return
}
Сорян, я пока не сильно шарю
 

Вложения

  • sa-mp-001.png
    sa-mp-001.png
    459.2 KB · Просмотры: 180

Kolbasa241

Известный
213
57
Ребят, помогите. Как сделать, чтобы при выборе определённого профиля, переключатель(radio) переключался на тот профиль который был настроен, а если такого нет профиля в .ini то просто убирался.
 

Вложения

  • upload_2019-3-7_17-30-54.png
    upload_2019-3-7_17-30-54.png
    6.1 KB · Просмотры: 225
  • upload_2019-3-7_17-31-43.png
    upload_2019-3-7_17-31-43.png
    5.7 KB · Просмотры: 214

CaJlaT

Овощ
Модератор
2,806
2,609
Помогите со скриптом, мне нужен скрипт, который по команде выдавал мут игроку, в зависимости от его уровня.
Я сделал вот такой скрипт:
Код:
#Include SAMP.ahk
$~Enter::
if (isInChat() && !isDialogOpen())
{
    blockChatInput()
    sleep 200
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 512)
    writeString(hGTA, dwAddress, "")
      if (RegExMatch(chatInput, "^/cens (.*)",string))
      {
        nick := getPlayerNameById(string1) ; никнейм по ID
                score := getPlayerScoreById(string1) ;уровень по ID
                addChatMessageEx("{fc0000}", "[МУТ] {ff8400}У игрока " nick "[" string1 "] " score " уровень.") ;вывод уровня в чат
        if(score < 50)
        {
            SendChat("/mute " string1 " 15 цензура")
        }
        if(score >= 50 && score < 70)
        {
            SendChat("/mute " string1 " 30 цензура")
        }   
        if(score >= 70)
        {
            SendChat("/mute " string1 " 50 цензура")
        }       
    if string1 =
        {
        addChatMessageEx("{fc0000}", "[МУТ] {ff8400}Используйте: {00ff04}/cens [id]") ;Если неверно использовал команду
        return
    }
      }  
}
Return
Он вроде запускается, но не работает....
Помогите, пожалуйста!
 

darksoor

Известный
674
353
Помогите со скриптом, мне нужен скрипт, который по команде выдавал мут игроку, в зависимости от его уровня.
Я сделал вот такой скрипт:
Код:
#Include SAMP.ahk
$~Enter::
if (isInChat() && !isDialogOpen())
{
    blockChatInput()
    sleep 200
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 512)
    writeString(hGTA, dwAddress, "")
      if (RegExMatch(chatInput, "^/cens (.*)",string))
      {
        nick := getPlayerNameById(string1) ; никнейм по ID
                score := getPlayerScoreById(string1) ;уровень по ID
                addChatMessageEx("{fc0000}", "[МУТ] {ff8400}У игрока " nick "[" string1 "] " score " уровень.") ;вывод уровня в чат
        if(score < 50)
        {
            SendChat("/mute " string1 " 15 цензура")
        }
        if(score >= 50 && score < 70)
        {
            SendChat("/mute " string1 " 30 цензура")
        }  
        if(score >= 70)
        {
            SendChat("/mute " string1 " 50 цензура")
        }      
    if string1 =
        {
        addChatMessageEx("{fc0000}", "[МУТ] {ff8400}Используйте: {00ff04}/cens [id]") ;Если неверно использовал команду
        return
    }
      } 
}
Return
Он вроде запускается, но не работает....
Помогите, пожалуйста!

В функции addChatMessageEx() не обязательно в первом параметре ставить скобки.

AutoHotKey:
#NoEnv
#SingleInstance force
#Include SAMP-UDF.ahk
#IfWinActive GTA:SA:MP

$~NumpadEnter::
$~Enter::
if (!isInChat()) || (isDialogOpen())
   Return
Sleep 250
blockChatInput()
tempText := readString(hGTA, dwSAMP + 0x12D8F8, 256)
tempCmd := StrSplit(tempText, " ")[1]
unblockChatInput()

if (tempCmd == "/cens")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
      nick := getPlayerNameById(string1) ; никнейм по ID
      score := getPlayerScoreById(string1) ;уровень по ID
      addChatMessageEx("fc0000", "[МУТ] {ff8400}У игрока " nick "[" string1 "] " score " уровень.") ;вывод уровня в чат
      if(score < 50)
         SendChat("/mute " string1 " 15 цензура")
      if(score >= 50 && score < 70)
         SendChat("/mute " string1 " 30 цензура")
      if(score >= 70)
         SendChat("/mute " string1 " 50 цензура")
   }
   Else
         addChatMessageEx("fc0000", "[МУТ] {ff8400}Используйте: {00ff04}" tempCmd " [id]") ;Если неверно использовал команду
}
return
 

swift_taylor

Новичок
2
0
Добрый день.
Прошу помочь со скриптом, который бы из чатлога сервера GTA5 "вытаскивал" промокоды и моментально их вводил в чат. Чатлог нашел. Просьба помочь с кодом.
Вырезка из чат лога:
Код:
 [21:51:25.208] [ Info] [ClassicChat] [3] ~y~• • • • ~r~ВНИМАНИЕ! ~y~• • • • 
[21:51:25.208] [ Info] [ClassicChat] [3] ~p~Рандом-промокод:~r~ 
[21:51:25.208] [ Info] [ClassicChat] [3] ~w~~P~B~B~LB~R~~R~G~C~M~B~X~R~Y~Y~TX~O~~B~D~Q~U~Y~V~Q~K 
[21:51:25.221] [ Info] [ClassicChat] [3] ~b~Активируй первым и получи ~g~$5000 
[21:51:25.221] [ Info] [ClassicChat] [3] ~p~И второй промокод:~r~ 
[21:51:25.221] [ Info] [ClassicChat] [3] ~w~~O~R~O~~B~J~R~A~R~MO~Q~~B~B~B~~O~Y~Y~F~B~P~R~Q~R~~Y~O~Y~SR~G~~Y~A 
[21:51:25.221] [ Info] [ClassicChat] [3] ~b~Активируй его первым и получи ~g~$5000 
[21:51:27.819] [Debug] [MeleeCombatStateHandler] [3] Evgeny_PWNZ changed melee combat state to True! 
[21:51:29.959] [Debug] [MeleeCombatStateHandler] [3] Evgeny_PWNZ changed melee combat state to False! 
[21:51:31.025] [ Info] [ClassicChat] [3] ~g~Рандом-промокод ~w~BLBGMXYTXDUVK ~g~АКТИВИРОВАН! 
[21:51:31.025] [ Info] [ClassicChat] [3] ~g~Победитель: ~w~Flawless_MacLoude ~b~Приз: ~g~$5000 
[21:51:31.033] [ Info] [ClassicChat] [3] ~y~Промокоды появляются примерно раз в 30-180 минут 
[21:51:31.548] [ Info] [ClassicChat] [3] ~g~Рандом-промокод ~w~RJAMOBYFPQOSRA ~g~АКТИВИРОВАН! 
[21:51:31.548] [ Info] [ClassicChat] [3] ~g~Победитель: ~w~Aiden_Bishop ~b~Приз: ~g~$5000 
[21:51:31.548] [ Info] [ClassicChat] [3] ~y~Промокоды появляются примерно раз в 30-180 минут
Каждый день создается новый чатлог с датой в имени. Путь чатлога - C:\VMP\logs\vmp-2019-03-13.txt
 
Последнее редактирование:

darksoor

Известный
674
353
Добрый день.
Прошу помочь со скриптом, который бы из чатлога сервера GTA5 "вытаскивал" промокоды и моментально их вводил в чат. Чатлог нашел. Просьба помочь с кодом.

Строку из чатлога предоставь, скажи, что из строки вывести.
Также предоставь путь до чатлога.