Помогите с активацией через команду

CaJlaT

Овощ
Автор темы
Модератор
2,809
2,596
Почему не работает?
AutoHotKey:
#Include samp.ahk
#IfWinActive GTA:SA:MP
#NoEnv
#UseHook
#SingleInstance, force


$~NumpadEnter::
$~Enter::
if (!isInChat()) || (isDialogOpen() && (getDialogStyle() == 1 || getDialogStyle() == 3))
   Return
sleep 200
dwAddress := dwSAMP + 0x12D8F8
tempText := readString(hGTA, dwAddress, 512)
tempCmd := StrSplit(tempText, " ")[1]


;==============Мут репорта за капс==============
if (tempCmd == "/caps")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
        SendChat("/rmute " string1 " 5 caps")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите " tempCmd " [id]")
}
;==============Ожидайте==============
if (tempCmd == "/wait")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
        SendChat("/pm " string1 " Ожидайте | Приятной игры :3")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите " tempCmd " [id]")
}
;==============Баг==============
if (tempCmd == "/bug")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
        SendChat("/pm " string1 " /bugs | Приятной игры :3")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите " tempCmd " [id]")
}
;==============Рп путём==============
if (tempCmd == "/rp")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
        SendChat("/pm " string1 " Рп путём! | Приятной игры :3")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите " tempCmd " [id]")
}
return
Немного переделал скрипт
AutoHotKey:
#IfWinActive GTA:SA:MP
#NoEnv
SendMode Input
#UseHook
#SingleInstance, force
#Include SAMP.ahk


~Enter::
  if (IsInChat() && (getDialogStyle() != 1 || getDialogStyle() != 3))
{
    blockChatInput()
    Sleep 200
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)


;==============Ответ по промокодам==============
if (chatInput == "/promo")
{
   if (RegExMatch(chatInput, "/promo \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Активных промокодов нет, следите за группой вк | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /promo [id]")
}


;==============Ожидайте==============
if (chatInput == "/wait")
{
   if (RegExMatch(chatInput, "/wait \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Ожидайте | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /wait [id]")
}


;==============Приятной игры==============
if (chatInput == "/pr")
{
   if (RegExMatch(chatInput, "/pr (.*)", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /pr [id]")
}

;==============Баг==============
if (chatInput == "/bug")
{
   if (RegExMatch(chatInput, "/bug \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " /bugs | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /bug [id]")
}


;==============Меню мутов==============
if (chatInput == "/hpanel")
{
    AntiCrash()
    addChatMessageEx("800080", "1.{66CDAA}MetaGaming (MG)        {FF6347}10-15 минут.")
    addChatMessageEx("800080", "2.{66CDAA}Нецензурная лексика        {FF6347}15 минут.")
    addChatMessageEx("800080", "3.{66CDAA}Неадекватное поведение    {FF6347}15 - 30 минут.")
    addChatMessageEx("800080", "4.{66CDAA}Translit            {FF6347}5 минут.")
    addChatMessageEx("800080", "5.{66CDAA}CapsLock            {FF6347}5 минут.")
    addChatMessageEx("800080", "6.{66CDAA}Offtop                {FF6347}5 минут.")
    addChatMessageEx("800080", "7.{66CDAA}Оскорбления в OOC        {FF6347}15 минут.")
    addChatMessageEx("800080", "8.{66CDAA}Оскорбление администрации    {FF6347}30 минут.")
    addChatMessageEx("800080", "9.{66CDAA}Упоминание родных        {FF6347}30 минут.")
    addChatMessageEx("800080", "10.{66CDAA}Оскорбление родных        {FF6347}60 минут.")
    addChatMessageEx("800080", "11.{66CDAA}Реклама            {FF6347}60 минут.")
    addChatMessageEx("800080", "12.{66CDAA}Оскорбление игрока        {FF6347}20 минут.")
    addChatMessageEx("800080", "13.{66CDAA}Оскорбление проекта        {FF6347}60 минут.")
    addChatMessageEx("800080", "14.{66CDAA}Обман администрации    {FF6347}10 минут.")
    writeString(hGTA, dwAddress, "")
    return
}

;==============Рп путём==============
if (chatInput == "/rp")
{
    unBlockChatInput()
   if (RegExMatch(chatInput, "/rp \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Рп путём! | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /rp [id]")
}

;==============ЖБ==============
if (chatInput == "/jb")
{
   if (RegExMatch(chatInput, "/jb \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Оставьте жалобу в свободной группе vk.com/russia_sv | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /jb [id]")
}

;==============ПМ==============
if (chatInput == "/pm")
{
   if (RegExMatch(chatInput, "/pm (.*)", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /pm [id] [text]")
}

else
  {
    if (chatInput != "")
    {
      unBlockChatInput()
      SendChat(chatInput)
      writeString(hGTA, dwAddress, "")
    }
  }
}
else
    return

return
Для того, чтобы эти команды не отправлять серверу. Но теперь есть другая пробелма, серверные команды он отправляет, а если вводить команды скрипта с аргументами скрипт дальше не идёт, но если ввести просто команду без аргуметов будет выводить ошибку (как оно и должно работать)
 
Последнее редактирование:
Решение
Может не стоит так париться?
AutoHotKey:
#SingleInstance force
#include cmd.ahk ; Подключаем инклуд
#include samp.ahk ; Обязателен инклуд сампа

; ПРИМЕР БЕЗ ИСПОЛЬЗОВАНИЯ ПАРАМЕТРОВ
CMD.Register("test_cmd", "test_func") ; Регистрируем команду (test_cmd - команда, test_func - вызываемая функция)

; ПРИМЕР С ИСПОЛЬЗОВАНИЕМ ПАРАМЕТРОВ
CMD.Register("test_cmd2", "test_func2") ; Регистрируем команду (test_cmd - команда, test_func - вызываемая функция)

test_func()
{
    addchatmessage("Введена команда /test_cmd")
    return
}

test_func2(params)
{
    if(params = "")
        addchatmessage("Введена команда /test_cmd2, но без параметров!")
    else
        addchatmessage("Введена команда /test_cmd2 с параметром " params)
    return
}

F2::
Reload...

Smer4

Известный
424
51
Почему не работает?
AutoHotKey:
#Include samp.ahk
#IfWinActive GTA:SA:MP
#NoEnv
#UseHook
#SingleInstance, force


$~NumpadEnter::
$~Enter::
if (!isInChat()) || (isDialogOpen() && (getDialogStyle() == 1 || getDialogStyle() == 3))
   Return
sleep 200
dwAddress := dwSAMP + 0x12D8F8
tempText := readString(hGTA, dwAddress, 512)
tempCmd := StrSplit(tempText, " ")[1]


;==============Мут репорта за капс==============
if (tempCmd == "/caps")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
        SendChat("/rmute " string1 " 5 caps")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите " tempCmd " [id]")
}
;==============Ожидайте==============
if (tempCmd == "/wait")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
        SendChat("/pm " string1 " Ожидайте | Приятной игры :3")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите " tempCmd " [id]")
}
;==============Баг==============
if (tempCmd == "/bug")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
        SendChat("/pm " string1 " /bugs | Приятной игры :3")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите " tempCmd " [id]")
}
;==============Рп путём==============
if (tempCmd == "/rp")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
        SendChat("/pm " string1 " Рп путём! | Приятной игры :3")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите " tempCmd " [id]")
}
return
Немного переделал скрипт
AutoHotKey:
#IfWinActive GTA:SA:MP
#NoEnv
SendMode Input
#UseHook
#SingleInstance, force
#Include SAMP.ahk


~Enter::
  if (IsInChat() && (getDialogStyle() != 1 || getDialogStyle() != 3))
{
    blockChatInput()
    Sleep 200
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)


;==============Ответ по промокодам==============
if (chatInput == "/promo")
{
   if (RegExMatch(chatInput, "/promo \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Активных промокодов нет, следите за группой вк | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /promo [id]")
}


;==============Ожидайте==============
if (chatInput == "/wait")
{
   if (RegExMatch(chatInput, "/wait \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Ожидайте | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /wait [id]")
}


;==============Приятной игры==============
if (chatInput == "/pr")
{
   if (RegExMatch(chatInput, "/pr (.*)", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /pr [id]")
}

;==============Баг==============
if (chatInput == "/bug")
{
   if (RegExMatch(chatInput, "/bug \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " /bugs | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /bug [id]")
}


;==============Меню мутов==============
if (chatInput == "/hpanel")
{
    AntiCrash()
    addChatMessageEx("800080", "1.{66CDAA}MetaGaming (MG)        {FF6347}10-15 минут.")
    addChatMessageEx("800080", "2.{66CDAA}Нецензурная лексика        {FF6347}15 минут.")
    addChatMessageEx("800080", "3.{66CDAA}Неадекватное поведение    {FF6347}15 - 30 минут.")
    addChatMessageEx("800080", "4.{66CDAA}Translit            {FF6347}5 минут.")
    addChatMessageEx("800080", "5.{66CDAA}CapsLock            {FF6347}5 минут.")
    addChatMessageEx("800080", "6.{66CDAA}Offtop                {FF6347}5 минут.")
    addChatMessageEx("800080", "7.{66CDAA}Оскорбления в OOC        {FF6347}15 минут.")
    addChatMessageEx("800080", "8.{66CDAA}Оскорбление администрации    {FF6347}30 минут.")
    addChatMessageEx("800080", "9.{66CDAA}Упоминание родных        {FF6347}30 минут.")
    addChatMessageEx("800080", "10.{66CDAA}Оскорбление родных        {FF6347}60 минут.")
    addChatMessageEx("800080", "11.{66CDAA}Реклама            {FF6347}60 минут.")
    addChatMessageEx("800080", "12.{66CDAA}Оскорбление игрока        {FF6347}20 минут.")
    addChatMessageEx("800080", "13.{66CDAA}Оскорбление проекта        {FF6347}60 минут.")
    addChatMessageEx("800080", "14.{66CDAA}Обман администрации    {FF6347}10 минут.")
    writeString(hGTA, dwAddress, "")
    return
}

;==============Рп путём==============
if (chatInput == "/rp")
{
    unBlockChatInput()
   if (RegExMatch(chatInput, "/rp \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Рп путём! | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /rp [id]")
}

;==============ЖБ==============
if (chatInput == "/jb")
{
   if (RegExMatch(chatInput, "/jb \s(\d{1,3})$", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " Оставьте жалобу в свободной группе vk.com/russia_sv | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /jb [id]")
}

;==============ПМ==============
if (chatInput == "/pm")
{
   if (RegExMatch(chatInput, "/pm (.*)", string))
   {
        unBlockChatInput()
        SendChat("/pm " string1 " | Приятной игры :3")
        writeString(hGTA, dwAddress, "")
        return
    }
    else
        addChatMessageEx(800080, "[Helper AHK] {66CDAA} Ошибка, введите /pm [id] [text]")
}

else
  {
    if (chatInput != "")
    {
      unBlockChatInput()
      SendChat(chatInput)
      writeString(hGTA, dwAddress, "")
    }
  }
}
else
    return

return
Для того, чтобы эти команды не отправлять серверу. Но теперь есть другая пробелма, серверные команды он отправляет, а если вводить команды скрипта с аргументами скрипт дальше не идёт, но если ввести просто команду без аргуметов будет выводить ошибку (как оно и должно работать)
У тебя идут проверки через if то есть
AutoHotKey:
if (tempCmd == "/caps")
а то что в чате введено равно допустим /caps 123 123, тоесть "/caps" не равно "/caps 123 123", можно через функцию IfInString проверки сделать и RegExMatch-ем искать значения которые вводил пользыватель
AutoHotKey:
/caps 123 123
 

CaJlaT

Овощ
Автор темы
Модератор
2,809
2,596
У тебя идут проверки через if то есть
AutoHotKey:
if (tempCmd == "/caps")
а то что в чате введено равно допустим /caps 123 123, тоесть "/caps" не равно "/caps 123 123", можно через функцию IfInString проверки сделать и RegExMatch-ем искать значения которые вводил пользыватель
AutoHotKey:
/caps 123 123
Не совсем понял, можешь пример привести?
 

meowprd

Тот самый Котовский
Проверенный
1,283
710
Может не стоит так париться?
AutoHotKey:
#SingleInstance force
#include cmd.ahk ; Подключаем инклуд
#include samp.ahk ; Обязателен инклуд сампа

; ПРИМЕР БЕЗ ИСПОЛЬЗОВАНИЯ ПАРАМЕТРОВ
CMD.Register("test_cmd", "test_func") ; Регистрируем команду (test_cmd - команда, test_func - вызываемая функция)

; ПРИМЕР С ИСПОЛЬЗОВАНИЕМ ПАРАМЕТРОВ
CMD.Register("test_cmd2", "test_func2") ; Регистрируем команду (test_cmd - команда, test_func - вызываемая функция)

test_func()
{
    addchatmessage("Введена команда /test_cmd")
    return
}

test_func2(params)
{
    if(params = "")
        addchatmessage("Введена команда /test_cmd2, но без параметров!")
    else
        addchatmessage("Введена команда /test_cmd2 с параметром " params)
    return
}

F2::
Reload
return
 

Вложения

  • cmd.ahk
    1.8 KB · Просмотры: 71
  • SAMP.ahk
    253.1 KB · Просмотры: 37
  • Влюблен
Реакции: CaJlaT

Smer4

Известный
424
51
Не совсем понял, можешь пример привести?
AutoHotKey:
String := "/caps pram1 pram2" ; Строка из чата
IfInString, String, /caps ; проверка есть ли в этой строке слово " /caps "
{
    RegExMatch(String, "/caps (.*) (.*)", StringOut) ; Извлекаем то что ввел юзер
    MsgBox, % StringOut1 " - " StringOut2 ; String1 - 1ый параметр, 2ой соответственно
}
 
AutoHotKey:
String := "/caps pram1 pram2" ; Строка из чата
IfInString, String, /caps ; проверка есть ли в этой строке слово " /caps "
{
    RegExMatch(String, "/caps (.*) (.*)", StringOut) ; Извлекаем то что ввел юзер
    MsgBox, % StringOut1 " - " StringOut2 ; String1 - 1ый параметр, 2ой соответственно
}
Ну это уж совсем дикость. Можно все уместить в одну строку через регулярку.