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

Hatiko

Известный
Проверенный
1,469
610
Доброго времени суток, требуется помощь с AHK. Вот я для примера написал небольшой пример снизу. По идеи. при нажатии Alt+1 должно выводить сообщение, к примеру "Мой id: 250". но при нажатии получаю "Мой id:-1" и так со всеми опкодами, пишет -1.

#Include samp.ahk
#SingleInstance
!1::
addChatMessage("Мой id:" getId())
 

Belo4ka_belka1

Участник
31
0
Ничего не решит твой набор параметров, ни один из них не относится к UDF. TheKontulup, добавь скрипт а так же ahk.exe в исключения антивируса, а если у тебя АХК не ANSI 32 bit то переустанавливай на анси. Этого хватит.
 

asdzxcjqwe

¯\_(ツ)_/¯
Друг
621
704
запускай скрипт в кодировке ANSI

JwNo05r.png
 
  • Нравится
Реакции: HamBurgeR

melanris

Новичок
5
0
Код:
#NoEnv
#Include %A_ScriptDir%\samp-udf.ahk

author = FYP
website = BlastHack.Net
v1 := 0, v3 := 0, v4 := 0

while(true)
{
    if(!IsSAMPAvailable())
    {
        v1 := 0, v3 := 0, v4 := 0
        continue
    }
   
    if(isPlayerDriver() != -1 || getPlayerHealth() == 0.0)
        continue
   
    writeMemory(hGTA, 0x5109AC, 0xEB, 1, "byte")
    writeMemory(hGTA, 0x5109C5, 0xEB, 1, "byte")
    writeMemory(hGTA, 0x5231A6, 0xEB, 1, "byte")
    writeMemory(hGTA, 0x52322D, 0xEB, 1, "byte")
    writeMemory(hGTA, 0x5233BA, 0xEB, 1, "byte")
   
    v5 := readDWORD(hGTA, ADDR_CPED_PTR) + 0x718
    v5 := readMem(hGTA, v5, 1, "byte") + 1
   
    if(v5 < 3 || v5 > 7 || getPlayerWeaponId() == 34)
        continue
   
    if(GetKeyState("RButton", "P"))
    {
        if(v1 == 0)
        {
            v10 := readMem(hGTA, 0x52169D, 4, "uint")
            v11 := readMem(hGTA, 0x5216A1, 2, "byte")
            writeBytes(hGTA, 0x52169D, "90909090")
            writeBytes(hGTA, 0x5216A1, "9090")
            v1 := 1
        }
        if(v3 == 0)
        {
            if v5 between 6 and 7
            {
                v2 := readMem(hGTA, 0xB6F250, 4, "uint")
                if(v2 <= 50.0 || v4 == 1)
                {
                    v12 := readMem(hGTA, 0x5216BE, 4, "uint")
                    v13 := readMem(hGTA, 0x5216C2, 2, "byte")
                    writeBytes(hGTA, 0x5216BE, "90909090")
                    writeBytes(hGTA, 0x5216C2, "9090")
                    v3 := 1
                    v4 := 0
                }
            }
        }
    } else
    {
        if(v1 == 1)
        {
            writeMemory(hGTA, 0x52169D, v10, 4, "uint")
            writeMemory(hGTA, 0x5216A1, v11, 2, "byte")
            v1 := 0
        }
        if(v3 == 1)
        {
            writeMemory(hGTA, 0x5216BE, v12, 4, "uint")
            writeMemory(hGTA, 0x5216C2, v13, 2, "byte")
            v3 := 0
        }
    }
}

$~WheelUp::
    if(!v1)
        return
    v2 := readFloat(hGTA, 0xB6F250) - 2.0
    if(v2 < 4.0)
        v2 := 4.0
    writeFloat(hGTA, 0xB6F250, v2)
    if(v3 == 0)
        v4 := 1
return

$~WheelDown::
    if(!v1)
        return
    v2 := readFloat(hGTA, 0xB6F250) + 2.0
    if(v2 > 70.0)
        v2 := 70.0
    writeFloat(hGTA, 0xB6F250, v2)
    if(v3 == 0)
        v4 := 1
return

Помогите сделать в этом ahk ExtraWS по оси Y возвращение прицела на исходную точку после выстрела
 

Cortazar

Новичок
1
0
Ребят, я новичок в скриптинге АХК, хотел сделать для сампа запрет дела в /d по id
Например: /zap 345
И оно выкидует в /d чат: Mayor. Дело Vladimir Pozdnyakov рассмотру не подлежит. ООП.
Как это сделать? Кто подскажет?
 

Tanaka

Участник
41
10
Ребят, я новичок в скриптинге АХК, хотел сделать для сампа запрет дела в /d по id
Например: /zap 345
И оно выкидует в /d чат: Mayor. Дело Vladimir Pozdnyakov рассмотру не подлежит. ООП.
Как это сделать? Кто подскажет?
Качаешь sampudf последней версии, подключаешь и подключаешь его.
Код:
#Include, SAMP-UDF-Developer.ahk

$~Enter:
if (isInChat() && !isDialogOpen()) {
    Sleep, 200
    dwAddress := dwSAMP + 0x12D8F8
    chatText  := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatText, "^\/zap (.*)", var)) {
        Nick := RegExReplace(getPlayerNameById(var1), "_", " ")
        SendChat("/d Mayor. Дело " Nick " рассмотру не подлежит. ООП")
    }
}
Return
 
  • Нравится
Реакции: Cesar Ballard

Zefir2511

Активный
277
31
Всем привет.
Вот есть рабочий код в ахк.Как сделать что бы после того как он сделал что было задумано,ахк скрипт автоматичскии удалялся.
 

RandeVulll

Новичок
5
1
Пари всем привет у меня такой вопрос, не могу понять как связать чекер ЧС с игрой...
Мне необходимо что-бы в игре (SAMP)
Код:
^x::
{
id := getIdByPed(getTargetPed())
if id > -1
goto next
else
return
next:
nick := getPlayerNameById(id)
lvl := getPlayerScoreById(id)
text := ("{00FFFF}Вы навели на{FFFFFF} ID: " id " | Nick: " nick " | Lvl: " lvl "")
addChatMessage(text)
SendChat("/history " nick " ")
Return
}
После того как я нажимаю Ctrl+X помимо этого происходил чек человека на ЧС..
Вот код чекера:
Код:
~$Enter::
if (isInChat() = 1 && IsDialogOpen() = 0)
{
sleep 200
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
if chatInput contains /check
    {
        filedelete, %a_temp%/history.txt
        RegExMatch(chatInput, "^/check (.*)", p)
        csk:=getPlayerNameById(p1)
        idans := getPlayerIdByName(csk)
        if p1 =
        {
        addChatMessageEx("{FF8C00}","{FF8C00}[AHK]:{ffb300} Используйте /check <id>")
            Return
        }
        if idans = -1
        {
        addChatMessageEx("{FF8C00}","{FF8C00}[AHK]:{ffb300} Такого игрока на сервере нет")
            Return
        }
        nick := getPlayerNameById(p1)
        FileRead, csniki, %DIR%blacklist.txt
        sleep, 50
        If RegExMatch(csniki, nick)
        {
            sleep, 50
        addChatMessageEx("{FF8C00}","{FF8C00}[AHK]: {ffb300}Игрок {3399FF}" nick " {ff0000}находится{ffb300} в черном списке")
            return
        }
        else
        {
            sleep, 50
        addChatMessageEx("{FF8C00}","{FF8C00}[AHK]: {ffb300}Игрок {3399FF}" nick " {00b300}не находится{ffb300} в черном списке")
            sleep, 500
        addChatMessageEx("{FF8C00}","{FF8C00}[AHK]: {ffb300}Проверяем историю ников игрока на ЧС...")
            sleep, 500
            SendChat("/history " csk)
            sleep, 1000
            niki := getDialogText()
        send, {esc}
            sleep, 150
            fileappend, %niki%, %a_temp%/history.txt
            Loop, read, %a_temp%/history.txt
            {
                FileReadLine, nickiki, %a_temp%/history.txt, %A_Index%
                fileread, var, %DIR%BlackList.txt
                if nothist contains %nickiki%
                {
                addChatMessageEx("{FF8C00}","{FF8C00}[AHK]:{ffb300} История изменения имён {3399FF}" csk "{ffb300} пуста")
                    filedelete, %a_temp%/history.txt
                    return
                }
                if var contains %nickiki%
                {
                fileappend, {FF8C00}[AHK]: {3399FF}%nickiki% {ff0000}находится{ffb300} в черном списке`n, %a_temp%/result.txt
                }
                else
                {
                fileappend, {FF8C00}[AHK]: {3399FF}%nickiki% {00b300}не находится{ffb300} в черном списке`n, %a_temp%/result.txt
                }
            }
            fileread, nicks123, %a_temp%/result.txt
        ShowDialog("0", "{ffcc00}AHK - История ников " csk "", nicks123,"Отмена")
            filedelete, %a_temp%/history.txt
            filedelete, %a_temp%/result.txt
            return
        }
    }
Кто понимает, отпишите пожалуйста, я сейчас туплю, в скайпе я могу более понятно выразить идею..
 

Hatiko

Известный
Проверенный
1,469
610
Код:
Способ:

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
#Include, SAMP.ahk

;~ Создаем массивы с номерами строк диалога.

1Array := ["Первый.", "Первый массив.", "Выбрана первая строка."]
2Array := ["Второй.", "Второй массив.", "Выбрана вторая строка."]
3Array := ["Третий.", "Третий массив.", "Выбрана третья строка."]

!1::
Sleep, 100
ShowDialog(2, "Выбор массива", "Первый массив`nВторой массив`nТретий массив", "Закрыть") ;~ Создаем диалог с выбором строк.

Line := LineResult()

if (Line) {
    For k, v in %Line%Array {
        SendChat(v)
        Sleep, 2000
    }
}
return
Код:
Функция LineResult()
LineResult() {
    if (!isDialogOpen())
        return false
    if (getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
        return false
    while(!GetKeyState("LButton", "P") && !GetKeyState("Enter", "P") && !GetKeyState("Esc", "P"))
        continue
    if (GetKeyState("Enter", "P"))
        return getDialogLineNumber()
    else if (GetKeyState("Esc", "P"))
        return false
    else{
        KeyWait, LButton
        KeyWait, LButton, D T0.4
        if (isDialogOpen())
            return LineResult()
        else
            return getDialogLineNumber()
    }
}

Помогите пожалуйста. Листая эту тему, я наткнулся на данный ответ. Мне как раз надо было сделать диалоговое окно с функцией выбором. Но хотелось бы сделать так, чтобы при выборе определённого пункта в списке кидало на какую-то метку, после чего она делала свою работу. К примеру, метки met: , met2: , met3, met4.
 

RTD

Нестандартное звание
Модератор
391
413
Помогите пожалуйста. Листая эту тему, я наткнулся на данный ответ. Мне как раз надо было сделать диалоговое окно с функцией выбором. Но хотелось бы сделать так, чтобы при выборе определённого пункта в списке кидало на какую-то метку, после чего она делала свою работу. К примеру, метки met: , met2: , met3, met4.
Код:
!1::
ShowDialog(2, "Выбери действие", "Пункт №1`nПункт №2", "Ок")
Result := LineResult()
if (!Result)
    return
Gosub, Label%Result%
return
Label1:
addChatMessageEx("FFFFFF", "Выбран 1-ый пункт")
return
Label2:
addChatMessageEx("FFFFFF", "Выбран 2-ой пункт")
return
LineResult() {
    if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
        return false
    while (isDialogOpen())
        continue
    if(GetKeyState("Esc", "P"))
        return false
    return getDialogLineNumber()
}
 
  • Нравится
Реакции: Cesar Ballard

Hatiko

Известный
Проверенный
1,469
610
Код:
!1::
ShowDialog(2, "Выбери действие", "Пункт №1`nПункт №2", "Ок")
Result := LineResult()
if (!Result)
    return
Gosub, Label%Result%
return
Label1:
addChatMessageEx("FFFFFF", "Выбран 1-ый пункт")
return
Label2:
addChatMessageEx("FFFFFF", "Выбран 2-ой пункт")
return
LineResult() {
    if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
        return false
    while (isDialogOpen())
        continue
    if(GetKeyState("Esc", "P"))
        return false
    return getDialogLineNumber()
}
От души спасибо! Теперь открылись много новых возможностей.