Необходима помощь с AHK

Статус
В этой теме нельзя размещать новые ответы.

DarkHawk

Известный
Автор темы
9
2
Всем привет. Необходима помощь с написанием скрипта. Вернее его ДОписанием. Не знаю как сделать следующую вещь:
Мне необходимо надеть наручники на преступника командой /cuff. Но для этого мне нужна полная рп отыгровка, типа "/me взял наручники в руку , /do наручники в руках" и т.д. так вот, мне необходимо ввести команду /cuf [id] (не /cuff), чтобы сначала происходила отыгровка, а только потом прописывалось /cuff с указанным id в начале, в /cuf [id]. Прошу помочь, ибо не знаю как это сделать.
Так же у меня есть sampUDF и API.
 
  • Нравится
Реакции: Zheka43516

AIMP

Известный
124
36
Всем привет. Необходима помощь с написанием скрипта. Вернее его ДОписанием. Не знаю как сделать следующую вещь:
Мне необходимо надеть наручники на преступника командой /cuff. Но для этого мне нужна полная рп отыгровка, типа "/me взял наручники в руку , /do наручники в руках" и т.д. так вот, мне необходимо ввести команду /cuf [id] (не /cuff), чтобы сначала происходила отыгровка, а только потом прописывалось /cuff с указанным id в начале, в /cuf [id]. Прошу помочь, ибо не знаю как это сделать.
Так же у меня есть sampUDF и API.
Функция получения текста из чата (нужен SAMPUDF)

Код:
ChatInput()
{
if !isInChat()
    return ""
While isInChat()
    sleep 1
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
return chatInput
}

Функцию вызывай через $~Enter::

StrSplit в помощь - что бы узнать айди
 

DarkHawk

Известный
Автор темы
9
2
Функция получения текста из чата (нужен SAMPUDF)

Код:
ChatInput()
{
if !isInChat()
    return ""
While isInChat()
    sleep 1
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
return chatInput
}

Функцию вызывай через $~Enter::

StrSplit в помощь - что бы узнать айди
Можешь написать пример кода? Вот отыгровка к примеру:
/cuf [id] (ид будет использоваться в последней строчке (/cuff)
/me взял наручники
/do наручники в руках
/me надел на преступника наручники
/do наручники на преступнике
/cuff [id] (id указываемый в начале)
 

zhas

Новичок
10
0
Работает 100%. Все исправил. Активация клавиша: P.
CLEO:
{$CLEO}
0000: NOP
    gosub @OnOff
:OnOff
wait 0
if 0AB0: 80
jf @OnOff
jump @start

:pause
wait 2000
jump @OnOff



:start
wait 0
0B3B: samp show_dialog id 16 caption "Меню наручников" text "Введите id нарушителя" button_1 "Заковать" button_2 "Пощадить" style 1
0AC8: 2@ = allocate_memory_size 128
:ifzone
wait 0
if
0B3C: samp is_dialog_responded id 16 button 1@ list_item 0 input_text 2@
then
if
1@ == 1
then
0AF9: samp say_msg "/me взял наручники"
wait 1000
0AF9: samp say_msg "/do наручники в руках"
wait 1000
0AF9: samp say_msg "/me надел на преступника наручники"
wait 1000
0AF9: samp say_msg "/do наручники на преступнике"
wait 1000
0AF9: "/cuff %s" 2@
0AC9: free_allocated_memory 2@
jump @pause
else
0AC9: free_allocated_memory 2@
jump @pause
end
else
jump @ifzone
end
0AC9: free_allocated_memory 2@
jump @pause
 
Последнее редактирование:

DarkHawk

Известный
Автор темы
9
2
Работает 100%. Есть баг при выходе, могут быть еще баги, отлажу как нить потом. Активация клавиша: P.
CLEO:
{$CLEO}
0000: NOP
    gosub @OnOff
:OnOff
wait 0
if 0AB0: 80
jf @OnOff
jump @start

:pause
wait 2000
jump @OnOff



:start
wait 0
0B3B: samp show_dialog id 16 caption "Меню наручников" text "Введите id нарушителя" button_1 "Заковать" button_2 "Пощадить" style 1
0AC8: 2@ = allocate_memory_size 128
:ifzone
wait 0
if
0B3C: samp is_dialog_responded id 16 button 1@ list_item 0 input_text 2@
then
if
1@ == 1
then
0AF9: samp say_msg "/me взял наручники"
wait 1000
0AF9: samp say_msg "/do наручники в руках"
wait 1000
0AF9: samp say_msg "/me надел на преступника наручники"
wait 1000
0AF9: samp say_msg "/do наручники на преступнике"
wait 1000
0AF9: "/cuff %s" 2@
0AC9: free_allocated_memory 2@
jump @pause
else
0AC9: free_allocated_memory 2@
jump @pause
end
else
jump @ifzone
end
0AC9: free_allocated_memory 2@
jump @pause
Спасибо конечно, но это клео, а не АХК. Я собираюсь писать несколько скриптов АХК по тому типу, что указал, поэтому мне нужен именно АХК и БЕЗ ДИАЛОГОВ.
 

serhiyrubin

Известный
396
106
Все намного проще чем вы думаете. Пример кода на Правую кнопку мыши + С
Чтобы сработало надо навести прицел на преступника и нажать С и пойдет РП отыгровка
Если прицел наведен не на человека, и была нажата С, то ничего не произойдет
Код:
~RButton & vk43::
id:=getIdByPed(getTargetPed())
If (id > -1) {
    SendChat("/do Наручники на поясе")
    Sleep 1010
    SendChat("/me Снял наручники с пояса")
    Sleep 1010
    SendChat("cuff "id)
}
Return
 
  • Нравится
Реакции: monolith04 и DarkHawk

DarkHawk

Известный
Автор темы
9
2
Все намного проще чем вы думаете. Пример кода на Правую кнопку мыши + С
Чтобы сработало надо навести прицел на преступника и нажать С и пойдет РП отыгровка
Если прицел наведен не на человека, и была нажата С, то ничего не произойдет
Код:
~RButton & vk43::
id:=getIdByPed(getTargetPed())
If (id > -1) {
    SendChat("/do Наручники на поясе")
    Sleep 1010
    SendChat("/me Снял наручники с пояса")
    Sleep 1010
    SendChat("cuff "id)
}
Return
А есть такой же, только без активации ПКМ+С, без прицела, а просто с команды /cuf [id]?
 

serhiyrubin

Известный
396
106
Ну можно так

Код:
:B0?:/cuff::
Input, id ,V, {enter}
    SendChat("/do Наручники на поясе")
    Sleep 1010
    SendChat("/me Снял наручники с пояса")
    Sleep 1010
    SendChat("/cuff "id)
Return
 
  • Нравится
Реакции: DarkHawk

serhiyrubin

Известный
396
106
Вот ещё вариант, но он отправляется к серверу почему то. По этому как ты сначала хотел команда /cuf
Тут добавлена проверка на то что вписаны ли цифры или нет, не будет ложных срабатываний.
Если у кого есть ещё способы активации, кидайте свои коды)
Код:
:B0?:/cuf::
Input, id ,V, {enter}
RegExMatch(id, "([0-9]*)", cuf)
   if (cuf1>-1) {
    SendChat("/do Наручники на поясе")
    Sleep 1010
    SendChat("/me Снял наручники с пояса")
    Sleep 1010
    SendChat("/cuff "id)
}
Return
 

AIMP

Известный
124
36
Добавляешь функцию
Код:
ChatInput()
{
if !isInChat()
    return ""
While isInChat()
    sleep 1
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
return chatInput
}

В скрипте пишешь
Код:
$~Enter::
if isDialogOpen()
    return
else
    goto, GetChat
return
И
Код:
GetChat:
chatInput := StrSplit(ChatInput(), A_Space)
if (ChatInput[1] = "") or !(IsSAMPAvailable())
    return
if (ChatInput[1] = "/bsu")
{
if !(ChatInput[2] = "") and !(ChatInput[3] = "") and !(ChatInput[4] = "")
Su(ChatInput[2], ChatInput[3], ChatInput[4])
else
addChatMessage("{FF00FF}[MIA] {FF0000}Используйте /bsu [id игрока] [Уровень розыска] [Причина]")
}
return
Или можно айди брать из "Таргета". В данном случае на ПКМ + F1
Код:
vk02 & vk70::
Su(getIdByPed(getTargetPed()), "5", "УК 1.2")
return
И функция "Su" для удобства
Код:
Su(TargetID, Wanteds, Reason) {
if (TargetID = "-1") or (getPlayerNameById(TargetID) = "")
{
addChatMessage("{FF00FF}[MIA] {FF0000}Ошибка, не могу найти игрока.")
return false
}
TargetNickName := getPlayerNameById(TargetID)
TargetRpNickName := RegExReplace(TargetNickName, "_", A_Space)
SendChat("/me достал(а) КПК « MIA » из кармана")
SendChat("/me сообщил о " TargetRpNickName " диспетчеру.")
SendChat("/su " TargetID " " Wanteds " " Reason)
return true
}
 
Последнее редактирование:

serhiyrubin

Известный
396
106
У меня почему то вот с этим нифига не работает. Как я только не использовал
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
 
Статус
В этой теме нельзя размещать новые ответы.