[Помощь] Правильное распознавание команды - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
[Помощь] Правильное распознавание команды
Daniel5225 Дата: Понедельник, 29.01.2018, 14:42 | Сообщение # 1
Новичок
Сообщений: 8
Статус: Offline
Имеется участок кода, но при вводе /invite и т.п. этот участок все равно срабатывает, как сделать так, чтобы скрипт реагировал только на /inv? Заранее благодарю
Код

#include SAMP.ahk
#SingleInstance force

$~Enter::
$~NumpadEnter::
if (isInChat() && !isDialogOpen())
{
Sleep 200
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
if chatinput contains /inv
{
if RegExMatch(chatInput, "/inv (.*)", invt)
SendChat("/do На спине висит рюкзак")
Sleep, 1000
SendChat("/me достал форму из рюкзака и передал человеку напротив")
Sleep, 1000
SendChat("/anim 21")
Sleep, 1000
SendChat("/invite " invt1)
Sleep, 1000
SendChat("/me внес человека в список сотрудников на КПК")
Sleep, 1000
nameinv := RegExReplace(getPlayerNameById(invt1),"_"," ")
SendChat("/r [" tag "] " nameinv " был признан годным для прохождения военной службы")
}
if chatinput contains /razborkaak
{
Sleep 1000
Sleep 1000
SendChat( zvan " " fam " к разборке АК-47 приступил")
sleep 3000
SendChat("/me отделил магазин, снял с предохранителя и перезарядил")
Sleep 3000
SendChat("/me поставил автомат на рукоятку и нажал на курок")
Sleep 3000
SendChat("/me вытащил шомпол и выкрутил пламегаситель,затем опустил автомат")
Sleep 3000
SendChat("/me снял крышку ствольной коробки и вытащил возвратный механизм")
sleep 3000
SendChat("/me вытащил затвор с затворной рамой и отделил их от друг друга")
sleep 3000
SendChat("/me вытащил газовую камеру")
sleep 3000
SendChat( zvan " " fam " разборку закончил!.")
sleep 3000
}
if chatinput contains /sborkaak
{
Sleep 1000
SendChat( zvan " " fam " сборку АК-47 начал!")
sleep 3000
SendChat("/me присоеденил газовую трубку к корпусу автомата")
sleep 3000
SendChat("/me присоденил затвор к раме, вставил всё в автомат")
sleep 3000
SendChat("/me присоеденил возвратный механизм")
sleep 3000
SendChat("/me закрыл ствольную коробку крышкой ствольной коробки")
sleep 3000
SendChat("/me поставил автомат на рукоятку и вставил шомпол")
sleep 3000
SendChat("/me закрутил пламегаситель")
sleep 3000
SendChat("/me нажал на спусковой крючок")
sleep 3000
SendChat("/me поставил автомат на предохранитель.")
sleep 3000
SendChat( zvan " " fam " сборку АК-74 закончил!.")
sleep 3000
}
}
Return
Toopie Дата: Понедельник, 29.01.2018, 16:29 | Сообщение # 2
Боец
Сообщений: 122
Статус: Offline
Код

#include SAMP.ahk
#SingleInstance force

$~Enter::
$~NumpadEnter::
if (isInChat() && !isDialogOpen()) {
    
    blockChatInput()
    Sleep, 130
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    unblockChatInput()
    Sleep, 30
    
    if (RegExMatch(chatInput, "^\/inv\s(\d+)$", item)) {
  SendChat("/do На спине висит рюкзак")
  Sleep, 1000
  SendChat("/me достал форму из рюкзака и передал человеку напротив")
  Sleep, 1000
  SendChat("/anim 21")
  Sleep, 1000
  SendChat("/invite " item1)
  Sleep, 1000
  SendChat("/me внес человека в список сотрудников на КПК")
  Sleep, 1000
  SendChat("/r [" tag "] " RegExReplace(getPlayerNameById(item1), "_"," ") " был признан годным для прохождения военной службы")
    } else {
  SendChat(chatInput)
    }
}
return


лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
Daniel5225 Дата: Понедельник, 29.01.2018, 17:23 | Сообщение # 3
Новичок
Сообщений: 8
Статус: Offline
Цитата Toopie ()
  if (RegExMatch(chatInput, "^\/inv\s(\d+)$", item)) {
Можно поподробнее про ^\/ и \s(\d+)$? Не совсем понятно, для чего это.


Сообщение отредактировал Daniel5225 - Понедельник, 29.01.2018, 17:24
Toopie Дата: Понедельник, 29.01.2018, 23:15 | Сообщение # 4
Боец
Сообщений: 122
Статус: Offline
Daniel5225, это называется регулярные выражения)
Смотри:
1) ^ - это означает начало строки, например: дана строка test, если поставить RegExMatch(var, "est"), то регулярное выражение найдет test, а если написать RegExMatch(var, "^est"), то уже ничего не будет, потому что условие прописано, как: (без ^) - найти строку est, а если стоит ^, то условие таково: найти строку с началом est.
2) \/ - в регулярных выражениях есть спец.символы, например: \, /, ., [, ], и т.д., чтобы эти символы читались, как обычные, а не служебные, ставится \, это означает, что вышеперечисленные символы будут считаться простыми, а не служебными.
3) \s - это пробел (SPACE), тоже служебный символ, пишется \s, \s+ - если надо задать много пробелов.
4) (\d+) - это значит, что будет стоять одно число, а символ "+" означает, что может стоять число от 0 до 999999.... (\d+) взято в скобки, как видишь, это значит, что цифра берется в переменную, если написать без (), то \d+ не будет взято в переменную, это делается в тех случаях, когда тебе не требуется брать определенный фрагмент текста, например: test123, регулярное выражение: ^test(\d+)$ - в item1 вернет 123, если сделать: ^test\d+$ - переменная item1 будет пустая.
5) $ - это означает конец строки, полная противоположность ^, если не указан параметр $: текст: test1222, регулярка: ^test1222r, вернет test1222rrrr, если указать $: ^test1222$, то ничего не вернет, потому что после 1222 есть продолжение rrrr.
На последок - поискал специально для новичков, все ясно и понятно - https://netpeak.net/ru/blog/kak-novichku-razobratsya-v-regulyarnyh-vyrazheniyah/
Если будут вопросы - обращайся)


лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
CZAR Дата: Вторник, 30.01.2018, 16:37 | Сообщение # 5
Czar Of Scripts
Сообщений: 1373
Статус: Offline
Toopie, \s - еще и табуляция, для того чтобы задать много пробелов можно и " +".
Так же недавно Тумкин нашел такую штуку как "?:" - говорит что не нужно брать в переменную. То есть: строка "test12421", а регулярка "test(?:\d+)" , не вернет цифры, но будет верной.





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
Toopie Дата: Вторник, 30.01.2018, 16:58 | Сообщение # 6
Боец
Сообщений: 122
Статус: Offline
Phoenixxx_Czar, \s табуляция? Смешно. Прогули про \t. На счёт '?' - переводится как -'возможно не будет'...

лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
CZAR Дата: Вторник, 30.01.2018, 17:38 | Сообщение # 7
Czar Of Scripts
Сообщений: 1373
Статус: Offline
Toopie, ? после регулярки и в регулярке - разные вещи.
\s matches any whitespace character (equal to [\r\n\t\f\v ]) - это все одно и тоже.





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
Toopie Дата: Вторник, 30.01.2018, 22:21 | Сообщение # 8
Боец
Сообщений: 122
Статус: Offline
Phoenixxx_Czar, спорить дальше смысла нет, ибо могу получить рид онли.
На последок:

Регулярка: test(?:\d+)
Перевод: После текста test могут идти цифры, но могут и не идти


лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
CZAR Дата: Вторник, 30.01.2018, 22:30 | Сообщение # 9
Czar Of Scripts
Сообщений: 1373
Статус: Offline
Toopie, какой ты упертый то! Лови пруф:





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
Toopie Дата: Среда, 31.01.2018, 00:06 | Сообщение # 10
Боец
Сообщений: 122
Статус: Offline
Phoenixxx_Czar, может, потому что знаю, что пишу?)
Все, это точно последнее сообщение, захочешь общаться - пиши в ЛС.
Ты сам только что показал, что "?" - это вероятность.


лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
Artur_iOS Дата: Среда, 31.01.2018, 15:17 | Сообщение # 11
Боец
Сообщений: 94
Статус: Offline
Toopie, ты не прав. В целом правильно говоришь про ?, но есть исключения в скобках.
https://developer.mozilla.org/ru....ntheses


Сообщение отредактировал Artur_iOS - Среда, 31.01.2018, 22:58
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума