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

uczoja62

Новичок
74
4
Хелп нужна помощь, как сделать следующее:
К примеру в чат вводится тект:
[Внимание] Test_Test вызывает полицию/фбр (SF). Чтобы принять вызов введите {FFFFFF}/pc
[Внимание] Причина: Я адвокат ....
и после читалось по чат логу и в чат вводилась команда:
Внимание, требуется переправка адвокатку (Nick из первой строки "Tets_Test").
help pls

Стоит подумать над регулярным выражением вместо "IfInString, lastchatline, вызывает полицию/фбр" - это уже сам.

Код:
#include UDF.ahk

Loop
{
    GetChatLine(0, lastchatline)
    IfInString, lastchatline, вызывает полицию/фбр
    {
        Nickname := StringBetween(lastchatline, "[Внимание] ", " вызывает", 1)
        addChatMessageEx("0xFFFFFF", "Внимание, требуется переправка адвокатку " Nickname)
    }
    Sleep, 100
}

return

StringBetween( Str, NS, NE := "", N := 1) {
   NE := NE = "" ? "$" : "\Q" NE "\E"
   Return RegExMatch(Str, "is)(?:\Q" NS "\E(.*?)" NE ".*?){" N "}", Res) ? Res1 : ""
}
 

VelenPlay

Новичок
2
0
Как сделать это? Можете объяснить подробно (Я НУБ). Что именно я прошу Обвёл красным!
lSplcwa.png
 

ae1c2a

Известный
195
6
крч,я криворукий скриптер :)
Code:
Код:
^9::
Loop
{
targ:=getClosestPlayerId()
name:=getPlayerNameById(targ)
StringReplace, RPName, Name, _, %A_Space%, All
sendchat("/r [Стажер MP] Общий патруль. Напарники: " name)
Sleep, 10000
}

нужно сделать так,если около меня никого нету,то скрипт писал был "Напарники:Нет."

Хэлпуйте
 
Последнее редактирование модератором:

uczoja62

Новичок
74
4
крч,я криворукий скриптер :)
Code:
^9::
Loop
{
targ:=getClosestPlayerId()
name:=getPlayerNameById(targ)
StringReplace, RPName, Name, _, %A_Space%, All
sendchat("/r [Стажер MP] Общий патруль. Напарники: " name)
Sleep, 10000
}

нужно сделать так,если около меня никого нету,то скрипт писал был "Напарники:Нет."

Хэлпуйте
Код:
^9::
Loop
{
targ:=getClosestPlayerId()
name:=getPlayerNameById(targ)
if targ = -1
name = "Нет"
StringReplace, RPName, Name, _, %A_Space%, All
sendchat("/r [Стажер MP] Общий патруль. Напарники: " name)
Sleep, 10000
}
 

ufdhbi

Известный
Проверенный
1,455
861
Как сделать это? Можете объяснить подробно (Я НУБ). Что именно я прошу Обвёл красным!
lSplcwa.png
заведи переменную i := 0
при нажатии F2 делай i := i+1
if i == 1
--действие
if i == 2
-- действие

и так далее
на последнем действии просто обнуляешь i
 

ae1c2a

Известный
195
6
Я НУБ
Нужно чтобы брались иды только копов и только которые сидят со мной в одной машине

Код:
:?:/patrullva::
Loop
{
targ:=getClosestPlayerId()
name:=getPlayerNameById(targ)
if targ = -1
name =Нет.
StringReplace, RPName, Name, _, %A_Space%, All
sendchat("/r [Стажер MP] Патруль LVa. Напарники: " RPName)
Sleep, 300000
}
:?:/dokoff::
reload
return
 
Последнее редактирование модератором:

uczoja62

Новичок
74
4
Я НУБ
Нужно чтобы брались иды только копов и только которые сидят со мной в одной машине

:?:/patrullva::
Loop
{
targ:=getClosestPlayerId()
name:=getPlayerNameById(targ)
if targ = -1
name =Нет.
StringReplace, RPName, Name, _, %A_Space%, All
sendchat("/r [Стажер MP] Патруль LVa. Напарники: " RPName)
Sleep, 300000
}
:?:/dokoff::
reload
return
Код:
:?:/patrullva::

i = 1
founded = 0

if isPlayerInAnyVehicle() = 1
{
    maxPass := getVehicleMaxPassengers()
    while i <= maxPass
    {
        if getVehiclePassengerId(i) >= 0
        {
            if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель1 || if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель2 || if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель3
            {
                cName := getPlayerNameById(getVehiclePassengerId(i))
                if founded = 0
                    RPNames .= cName
                else
                    RPNames .= ", " cName
                i++
                founded++
            }
            else
                i++
        }
        else
            i++
    }
    if founded = 0
        RPNames = "Нет."

    sendchat("/r [Стажер MP] Патруль LVa. Напарники: " RPNames)
}

return

:?:/dokoff::
reload
return
 

ae1c2a

Известный
195
6
Код:
:?:/patrullva::

i = 1
founded = 0

if isPlayerInAnyVehicle() = 1
{
    maxPass := getVehicleMaxPassengers()
    while i <= maxPass
    {
        if getVehiclePassengerId(i) >= 0
        {
            if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель1 || if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель2 || if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель3
            {
                cName := getPlayerNameById(getVehiclePassengerId(i))
                if founded = 0
                    RPNames .= cName
                else
                    RPNames .= ", " cName
                i++
                founded++
            }
            else
                i++
        }
        else
            i++
    }
    if founded = 0
        RPNames = "Нет."

    sendchat("/r [Стажер MP] Патруль LVa. Напарники: " RPNames)
}

return

:?:/dokoff::
reload
return
 

Вложения

  • bandicam 2017-12-26 18-37-54-950.jpg
    bandicam 2017-12-26 18-37-54-950.jpg
    36.3 KB · Просмотры: 259

Fomikus

Известный
Проверенный
474
343
Недавно начал изучать AHK, возник вопрос как задать переменные с кнопкой
Чтобы например F2 = названию (пусть будет UsDr)
и в ахк UsDr значило кнопку F2 или другую
Нужно чтобы
Код:
F2(Любая кнопка) = UsDr
UsDr:: (UsDr означает F2)
{
Sendinput {F6}/usedrugs 5{ENTER}
Sendinput {F6}...{ENTER}
}
return
Ибо собираюсь сделать для себя и друзей сборник нескольких АХК где каждый легко разберется как все поменять(управление)
Хотелось бы пример с 2+ простыми функциями по типу
Код:
F2 = UsDr
F3 = UsHe

UsDr::
{
Sendinput 123
}
return

UsHe::
{
Sendinput 321
}
return
И т.д.
 
Последнее редактирование:

Fomikus

Известный
Проверенный
474
343
Недавно начал изучать AHK, возник вопрос как задать переменные с кнопкой
Чтобы например F2 = названию (пусть будет UsDr)
и в ахк UsDr значило кнопку F2 или другую
Нужно чтобы
Код:
F2(Любая кнопка) = UsDr
UsDr:: (UsDr означает F2)
{
Sendinput {F6}/usedrugs 5{ENTER}
Sendinput {F6}...{ENTER}
}
return
Ибо собираюсь сделать для себя и друзей сборник нескольких АХК где каждый легко разберется как все поменять(управление)
Хотелось бы пример с 2+ простыми функциями по типу
Код:
F2 = UsDr
F3 = UsHe

UsDr::
{
Sendinput 123
}
return

UsHe::
{
Sendinput 321
}
return
И т.д.
 
Последнее редактирование:

uczoja62

Новичок
74
4
pO4Ka1337, Найди и скачай последний Samp UDF. В первой строке скрипта:
Код:
#include UDF.ahk

Недавно начал изучать AHK, возник вопрос как задать переменные с кнопкой
Чтобы например F2 = названию (пусть будет UsDr)
и в ахк UsDr значило кнопку F2 или другую
Ибо собираюсь сделать для себя и друзей сборник нескольких АХК где каждый легко разберется как все поменять(управление)
Хотелось бы пример с 2+ простыми функциями по типу

Код:
var1 = F5
Hotkey, %var%, StartVAR1
return

StartVAR1:
msgbox, 1
return
 
Последнее редактирование:

ae1c2a

Известный
195
6
Код:
:?:/patrullva::

i = 1
founded = 0

if isPlayerInAnyVehicle() = 1
{
    maxPass := getVehicleMaxPassengers()
    while i <= maxPass
    {
        if getVehiclePassengerId(i) >= 0
        {
            if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель1 || if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель2 || if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель3
            {
                cName := getPlayerNameById(getVehiclePassengerId(i))
                if founded = 0
                    RPNames .= cName
                else
                    RPNames .= ", " cName
                i++
                founded++
            }
            else
                i++
        }
        else
            i++
    }
    if founded = 0
        RPNames = "Нет."

    sendchat("/r [Стажер MP] Патруль LVa. Напарники: " RPNames)
}

return

:?:/dokoff::
reload
return
Код:
:?:/patrullva::

i = 1
founded = 0

if isPlayerInAnyVehicle() = 1
{
    maxPass := getVehicleMaxPassengers()
    while i <= maxPass
    {
        if getVehiclePassengerId(i) >= 0
        {
            if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель1 || if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель2 || if getTargetPlayerSkinIdById(getVehiclePassengerId(i)) == модель3
            {
                cName := getPlayerNameById(getVehiclePassengerId(i))
                if founded = 0
                    RPNames .= cName
                else
                    RPNames .= ", " cName
                i++
                founded++
            }
            else
                i++
        }
        else
            i++
    }
    if founded = 0
        RPNames = "Нет."

    sendchat("/r [Стажер MP] Патруль LVa. Напарники: " RPNames)
}

return

:?:/dokoff::
reload
return
 

Вложения

  • bandicam 2017-12-26 18-37-54-950.jpg
    bandicam 2017-12-26 18-37-54-950.jpg
    36.3 KB · Просмотры: 190

uczoja62

Новичок
74
4
@pO4Ka1337, я твою проблему понял, и способ её решения указал выше. Если не понимаешь, о чем речь - укажи в качестве значения переменной 3, но тогда в двухместном транспорте могут быть (а могут и не быть) баги.

Не забывай указать номера скинов полиции своего сервера вместо "модель1", "модель2", при необходимости добавив в ту строку еще условия.
 
Последнее редактирование: