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

Nagenbl4

Новичок
107
2
Как там сделать, чтобы одна из функций АХК работала постоянно? Тип вместо нажатия на клавишу, он по кд работал.
 

Kbho

Участник
59
4
Напиши его сам) Вывести уровень и пинг игрока можно с помощью getPlayerScoreById(ID) - получить уровень игрока по ID и getPlayerPingById(ID) - получить пинг игрока по ID (НЕОБХОДИМО подключить SAMP UDF)



Код:
loop
{
  if (RegExMatch(GetChatLineEx(), "Connected. Joining the game...", vars))
  {
    Sleep, 500
    addChatMessage("Done")
    break
  }
}
return

Не получается поэтому обратился к вам,проблемы с input,v и с выводом(в чат).Кароче даже кастылно у меня работат не будет,побовал уже
 

darksoor

Известный
674
353
Не получается поэтому обратился к вам,проблемы с input,v и с выводом(в чат).Кароче даже кастылно у меня работат не будет,побовал уже

Ну раз так, вот тебе пример:
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
      if(RegExMatch(chatInput, "^/com"))
      {
        if(RegExMatch(chatInput, "^/com (\d{1,3})", info))
        {
                nick := getPlayerNameById(info1) ;получаем никнейм по введённому ID
                score := getPlayerScoreById(info1) ;получаем уровень по введённому ID
                ping := getPlayerPingById(info1) ;получаем пинг по введённому ID
                addChatMessageEx("{0070ba}","[AHK] {bdbdbd}У игрока {0070ba}" nick "[" info1 "] {bdbdbd}" score " уровень и " ping " пинг.") ;вывод информации в чат
        }
        else addChatMessageEx("{0070ba}","[AHK] {bdbdbd}Используйте: {FFFFFF}/com [id]") ;Если неверно использовал команду
      }   
}
Return

Да и тебе тут врятли кто-то будет разжёвывать, так что вчитывайся и изучай информацию.
 
  • Нравится
Реакции: Kbho

Kbho

Участник
59
4
Ну раз так, вот тебе пример:
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
      if(RegExMatch(chatInput, "^/com"))
      {
        if(RegExMatch(chatInput, "^/com (\d{1,3})", info))
        {
                nick := getPlayerNameById(info1) ;получаем никнейм по введённому ID
                score := getPlayerScoreById(info1) ;получаем уровень по введённому ID
                ping := getPlayerPingById(info1) ;получаем пинг по введённому ID
                addChatMessageEx("{0070ba}","[AHK] {bdbdbd}У игрока {0070ba}" nick "[" info1 "] {bdbdbd}" score " уровень и " ping " пинг.") ;вывод информации в чат
        }
        else addChatMessageEx("{0070ba}","[AHK] {bdbdbd}Используйте: {FFFFFF}/com [id]") ;Если неверно использовал команду
      } 
}
Return

Да и тебе тут врятли кто-то будет разжёвывать, так что вчитывайся и изучай информацию.
Спасибо за коментарии и за код,этот код значительно отличается он моего,правда я не понял что делает строка chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
Lua:
#Include samp-udf.ahk
;это мой код
:?:/pinfo::
SendInput /pinfo{space}
Input, idp, V, {Enter}{F6}
idp1 := "ID Игрока: "
name := "Имя игрока: "
name1 := getPlayerNameById(%idp%)
lvl := "{ff0000}Уровень: "
lvl1 := getPlayerScoreById(%idp%)
ping := "Ping: "
ping1 := getPlayerPingById(%idp%)
addChatMessageEx("{ff00ff}" , "{ff0000}__________  Player Info  __________")
addChatMessageEx("{ff00ff}" , "{ff00ff}"(idp1)(idp))
addChatMessageEx("{ff00ff}" , "{ff00ff}"(name)(name1))
addChatMessageEx("{ff00ff}" , "{ff00ff}"(lvl)(lvl1))
addChatMessageEx("{ff00ff}" , "{ff00ff}"(ping)(ping1))
addChatMessageEx("{ff00ff}" , "{ff0000}___________________________________")
addChatMessage(lvl , "{ff0000}[", lvl1 ,"]")
name1 := getPlayerNameById(id)
addChatMessage(ping , "{ff0000}[" , ping1 , "]")
addChatMessage("{ff0000}ID:[" , id , "]"
return
 
Последнее редактирование:

darksoor

Известный
674
353
Спасибо за коментарии и за код,этот код значительно отличается он моего,правда я не понял что делает строка chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
Lua:
#Include samp-udf.ahk
;это мой код
:?:/pinfo::
SendInput /pinfo{space}
Input, idp, V, {Enter}{F6}
idp1 := "ID Игрока: "
name := "Имя игрока: "
name1 := getPlayerNameById(%idp%)
lvl := "{ff0000}Уровень: "
lvl1 := getPlayerScoreById(%idp%)
ping := "Ping: "
ping1 := getPlayerPingById(%idp%)
addChatMessageEx("{ff00ff}" , "{ff0000}__________  Player Info  __________")
addChatMessageEx("{ff00ff}" , "{ff00ff}"(idp1)(idp))
addChatMessageEx("{ff00ff}" , "{ff00ff}"(name)(name1))
addChatMessageEx("{ff00ff}" , "{ff00ff}"(lvl)(lvl1))
addChatMessageEx("{ff00ff}" , "{ff00ff}"(ping)(ping1))
addChatMessageEx("{ff00ff}" , "{ff0000}___________________________________")
addChatMessage(lvl , "{ff0000}[", lvl1 ,"]")
name1 := getPlayerNameById(id)
addChatMessage(ping , "{ff0000}[" , ping1 , "]")
addChatMessage("{ff0000}ID:[" , id , "]"
return

Неправильно используешь переменные в своём коде. Делай всё по примеру. В функциях UDF не допустимы %.
ChatInput - переменная, которая считывает что ты вводишь в строку чата.
Код:
SendInput, {F6}Привет, меня зовут %var%{Enter} ;так переменную выделяют в стандартном исполнении макросового языка
SendChat("Привет, меня зовут " var) ;в функции SAMP UDF

В цикле имеешь ввиду?
Loop
{
*code*
}

Можно так, а можно и через SetTimer
Код:
;наглядный пример
SetTimer, test, 500 ;test - метка, 500 - задержка (в м/с)

test:
;тут твой код
Return

F2::
SetTimer, test, Off ;выключить цикл
Return
 

Kbho

Участник
59
4
Неправильно используешь переменные в своём коде. Делай всё по примеру. В функциях UDF не допустимы %.
ChatInput - переменная, которая считывает что ты вводишь в строку чата.
Код:
SendInput, {F6}Привет, меня зовут %var%{Enter} ;так переменную выделяют в стандартном исполнении макросового языка
SendChat("Привет, меня зовут " var) ;в функции SAMP UDF



Можно так, а можно и через SetTimer
Код:
;наглядный пример
SetTimer, test, 500 ;test - метка, 500 - задержка (в м/с)

test:
;тут твой код
Return

F2::
SetTimer, test, Off ;выключить цикл
Return
я понял что работает так:/com id(в чат),но чего-то не работает
 

darksoor

Известный
674
353
я понял что работает так:/com id(в чат),но чего-то не работает
Вчера лично проверял.
Пробуй один из вариантов:
- установи АХК в ANSI-32
- скачай SAMP-UDF под версию твоего клиента SAMP (если клиент SAMP R2, то и версия такая же)
- может работе мешать антивирус
- запусти от имени администратора
 
  • Нравится
Реакции: Kbho

Kbho

Участник
59
4
Вчера лично проверял.
Пробуй один из вариантов:
- установи АХК в ANSI-32
- скачай SAMP-UDF под версию твоего клиента SAMP (если клиент SAMP R2, то и версия такая же)
- может работе мешать антивирус
- запусти от имени администратора
Установил ахк в ANSI-32 и все работает)
 
  • Нравится
Реакции: darksoor

BenMaklain

Новичок
8
0
Можно сделать скрипт,чтоб он брал информацию из чата и переносил её туда же.Вот пример:(нужно то,что в кавычках)
 

Вложения

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

BenMaklain

Новичок
8
0
Скинь эту строку из чатлога (Мои документы/GTA San Andreas User Files/SAMP/chatlog.txt) я тебе напишу код.

{FF0000}Викторина: {11FF00}Тот кто быстрее введет "{FFC000}gmzhgby3{11FF00}", то получит {FF0000}$650000

И ещё нельзя ли сделать на подобие только на решение примера ? Срока из чат лога:
{FF0000}Викторина: {11FF00}Сколько будет {F3FF00}1088{FFC000} + {F3FF00}761{FF0000} ? {AFFF00}
 

darksoor

Известный
674
353
{FF0000}Викторина: {11FF00}Тот кто быстрее введет "{FFC000}gmzhgby3{11FF00}", то получит {FF0000}$650000

И ещё нельзя ли сделать на подобие только на решение примера ? Срока из чат лога:
{FF0000}Викторина: {11FF00}Сколько будет {F3FF00}1088{FFC000} + {F3FF00}761{FF0000} ? {AFFF00}

Подключи SAMP UDF
Код:
#Include SAMP-UDF.ahk
Loop
{
    if (RegExMatch(getChatLineEx(), "Викторина:\s\{\w+\}Тот\sкто\sбыстрее\sвведет\s\''\{\w+\}(\w+)\{\w+\}\''", var))
    {
        SendChat(var1)
        addChatMessage("Отправил из викторины " var1 " в чат..")
    }
    if (RegExMatch(getChatLineEx(), "Викторина:\s\{\w+\}Сколько\sбудет\s\{\w+\}(\d+)\{\w+\}\s(\W)\s\{\w+\}(\d+)\{\w+\}", vars))
    {
        if (vars2=="+")
            otvet := vars1 + vars3
        if (vars2=="-")
            otvet := vars1 - vars3
        SendChat(otvet)
        addChatMessage("Отправил из викторины " otvet " в чат..")
    }
}
 

BenMaklain

Новичок
8
0
Подключи SAMP UDF
Код:
#Include SAMP-UDF.ahk
Loop
{
    if (RegExMatch(getChatLineEx(), "Викторина:\s\{\w+\}Тот\sкто\sбыстрее\sвведет\s\''\{\w+\}(\w+)\{\w+\}\''", var))
    {
        SendChat(var1)
        addChatMessage("Отправил из викторины " var1 " в чат..")
    }
    if (RegExMatch(getChatLineEx(), "Викторина:\s\{\w+\}Сколько\sбудет\s\{\w+\}(\d+)\{\w+\}\s(\W)\s\{\w+\}(\d+)\{\w+\}", vars))
    {
        if (vars2=="+")
            otvet := vars1 + vars3
        if (vars2=="-")
            otvet := vars1 - vars3
        SendChat(otvet)
        addChatMessage("Отправил из викторины " otvet " в чат..")
    }
}
Подскажи как
 

darksoor

Известный
674
353

Найди тему с подобным названием, перейди по ссылке к нужной тебе версии (версия должна совпадать с версией клиента SAMP), далее выделяешь весь код и создаёшь около своего скрипта новый файл SAMP-UDF.ahk. Пихаешь туда код, сохраняешь.
Profit!