[Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018 - Страница 30 - Форум Cheat-Master.ru
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
Форум » Программирование » AHK Программирование » [Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018 (Разработка новых функций SA-MP UDF)
[Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018
Abilka Дата: Четверг, 02.08.2018, 16:11 | Сообщение # 436
Новичок
Сообщений: 11
Статус: Offline
Цитата fiMa02 ()
Хелпани пожалуйста.
Смотри. делаю например команду :?:/name [id]::
Дальше в скрипте мне нужно вывести то что я написал на месте [id].
Команда показывает имя человека id которого я ввел.
Знаю что такое можно
Можешь?


Код
#Include UDF.ahk

:?:/name::
    SendInput,/name{space}
    input, dwId, V, {enter}
    again:
    Name := getPlayerNameById(dwId)
    if (Name != getPlayerNameById(dwId))
    {
  goto again
    }
    else
   addChatMessage("Я ввел " dwID " ID игрока " Name)
return

Почему-то ник не всегда выводило, вставил if для этого, и так сойдет xD


Сообщение отредактировал Abilka - Четверг, 02.08.2018, 16:12
fiMa02 Дата: Четверг, 02.08.2018, 23:04 | Сообщение # 437
Новичок
Сообщений: 4
Статус: Offline
Цитата Abilka ()
Код
#Include UDF.ahk

:?:/name::
    SendInput,/name{space}
    input, dwId, V, {enter}
    again:
    Name := getPlayerNameById(dwId)
    if (Name != getPlayerNameById(dwId))
    {
  goto again
    }
    else
   addChatMessage("Я ввел " dwID " ID игрока " Name)
return


Спасибо. Но можешь объяснить этот момент? input, dwId, V, {enter}
Abilka Дата: Пятница, 03.08.2018, 11:59 | Сообщение # 438
Новичок
Сообщений: 11
Статус: Offline
fiMa02, скрипт ожидает ввод значения и отправляет значение в перемененную нажатием Enter, dwID переменная с ID игрока.
CZAR Дата: Пятница, 03.08.2018, 17:53 | Сообщение # 439
Czar Of Scripts
Сообщений: 1373
Статус: Offline
fiMa02, данная тема не для помощи.




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

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


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

Гарант 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
MrGPro Дата: Воскресенье, 05.08.2018, 18:07 | Сообщение # 440
Боец
Сообщений: 202
Статус: Offline
RUStoGTA(string) ; перевод русских символов в GTA text при установленном русификаторе (Символы "ц", "ф" переводятся в верхний регистр, за неимением кодов в большинстве русификаторов.)
Код
; Работает нормально с руссификатором: http://galaxy-rpg.ru/files/190_sl-2-00-install.exe
; Перевода русских GameText, TextDraw символов в поддерживаемый GTA-русификаторами формат.
; Символы "ц", "ф" переводятся в верхний регистр, за неимением кодов в большинстве русификаторов.
; На основе https://autohotkey.com/board/topic/28714-transliteration-russian-to-english/
; Ключи символов взяты http://cheat-master.ru/forum/117-273903-1
RUStoGTA(string)
{
strTokenRU = а,А,б,Б,в,В,г,Г,д,Д,е,Е,ё,Ё,ж,Ж,з,З,и,И,й,Й,к,К,л,Л,м,М,н,Н,о,О,п,П,р,Р,с,С,т,Т,у,У,ф,Ф,х,Х,ц,Ц,ч,Ч,ш,Ш,щ,Щ,ь,Ь,ъ,Ъ,ы,Ы,э,Э,ю,Ю,я,Я
strTokenGT = a,A,—,Ђ,ў,‹,™,‚,љ,ѓ,e,E,e,E,›,„,џ,€,њ,…,ќ,…,k,K,ћ,‡,Ї,M,®,H,o,O,Ј,Њ,p,P,c,C,¦,Џ,y,Y,Ѓ,Ѓ,x,X,‰,‰,¤,Ќ,Ґ,Ћ,Ў,Љ,©,’,ђ,§,Ё,‘,Є,“,«,”,¬,•
StringSplit tokenRU, strTokenRU, `,
StringSplit tokenGT, strTokenGT, `,
Loop Parse, string
{
    token := A_LoopField
    isReplaced := false
    Loop %tokenRU0%
    {
        if ( token == tokenRU%A_Index% )
        {
            isReplaced := true
            tokenReplace := tokenGT%A_Index%
            break
        }
    }
    if ( isReplaced )
        strRes := strRes . tokenReplace
    else
        strRes := strRes . token
}
    return strRes
}


Тебе помогли не забывай про благодарность >> тыкни репутацию
---------------------------------------͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏ -----------------------------------------------------
Зам.Администратора на проекте "DayZ Epoсh SPN" сервер Arma 2OA DayZ Epoch пиратка и лицензия
yollee Дата: Четверг, 16.08.2018, 20:22 | Сообщение # 441
Новичок
Сообщений: 4
Статус: Offline
Код
playAnimation(id){
    sendChat("/anim")
    Sleep, 500
    loop id{
  Send, {NumpadDown}
    }
Send, {Enter}
}

Проигрывает анимацию с помощью алгоритма, не на всех серверах такой алгоритм. by yollee


Yollee cheese!

Сообщение отредактировал yollee - Пятница, 17.08.2018, 14:19
МVДОННА Дата: Четверг, 23.08.2018, 00:17 | Сообщение # 442
Новичок
Сообщений: 2
Статус: Offline
Добавь описание к каждой строчке.
CZAR Дата: Четверг, 23.08.2018, 12:56 | Сообщение # 443
Czar Of Scripts
Сообщений: 1373
Статус: Offline
yollee
1. Зачем делать задержку 500мс? Не проще ожидать пока диалог откроется?
2. Зачем юзать стрелку вниз, если есть уже готовая функа SetDialogIndex?





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

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


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

Гарант 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
hutorupita Дата: Пятница, 24.08.2018, 12:07 | Сообщение # 444
Новичок
Сообщений: 14
Статус: Offline
Проверьте работает ли
restartGameEx() и connect(IP) ?
У меня и то и то вылетает с крашем.
Другие некоторые функции работают.
Серв 037 r2
JayscoreINC Дата: Вторник, 02.10.2018, 20:09 | Сообщение # 445
Любитель
Сообщений: 30
Статус: Offline
Есть ли функция, которая бы возвращала версию клиента? R1 или R2 ?

Некоторые люди наслаждаются дождём, другие просто промокают.
Rinat_Namazov Дата: Вторник, 02.10.2018, 21:58 | Сообщение # 446
Боец
Сообщений: 122
Статус: Offline
Цитата JayscoreINC ()
Есть ли функция, которая бы возвращала версию клиента? R1 или R2 ?

По адресу dwSAMP + 0x1036 и dwSAMP + 0xBABE можно определить версию.
FForest Дата: Четверг, 04.04.2019, 00:07 | Сообщение # 447
Местный Дурачок
Сообщений: 129
Статус: Offline
Вот функция, которая возвращает 1 если прицеп прицеплен, или 0 если прицеп отцеплен от фуры.

Код
isTrailerAttached()
{
    return !checkHandles() ? "" : readMem(hGTA, getModuleBaseAddress("gta_sa.exe", hGTA) + 0x76FC70)
}
aknqkzxlcs_25 Дата: Вторник, 09.04.2019, 15:40 | Сообщение # 448
Новичок
Сообщений: 2
Статус: Offline
я хз живой ли еще этот сайт и обновляется ли здесь udf до сих пор, но всё равно скину
эти функции писал очень давно и отдал на доработку тумкину, но походу позже он забил на это так же как и я
в основном идея была для регистрации команд-пустышек, которые ничего не делают, но зато не отправляются серверу и это можно использовать с любым командным процессором вместо chat block input функции.
делал когда еще не было 0.3.7 r2, поэтому это только для r1 (возможно, не проверял)
привязывать команды нельзя к ahk функции, только по адресу к любой функции внутри gta_sa.exe которая выполняется без параметров (samp.dll / *.dll / *.asi / *.sf - все это тоже внутри gta_sa.exe , найти указатель на функцию можно при помощи отладчика)

Код
; addClientCommand("cmd") ; добавить пустую клиентскую команду /cmd, которая ничего не делает
; addClientCommand("cmd", 0x111111) ; добавить клиентскую команду и назначить на неё функцию
; renameClientCommand("q", "exit") ; переименовать клиентскую команду (на примере, /q в /exit)
; isClientCommand("fontsize") ; проверить клиентскую команду на существование
; setClientCommand("dl", 0x111111) ; назначить на клиентскую команду функцию (если команда существует)
; setClientCommand("fpslimit", dwClientQuit) ; заставить команду /fpslimit закрывать игру (как /q /quit)
; removeClientCommand("fpslimit") ; удалить клиентскую команду

addClientCommand(name, func := -1)
{
    if !checkHandles() or !strlen(name) or strlen(name) > 32
        return false
    if isClientCommand(name)
    {
        addChatMessageEx(0xdd0000, "the " name " command already exists")
        return false
    }
    if(func == -1)
        func := readDWORD(hGTA, dwSAMP + 0x65679)
    dwChatInfo := readDWORD(hGTA, dwSAMP + 0x21A0E8)
    dwNames := dwChatInfo + 0x24C
    dwPointers := dwChatInfo + 0xC
    dwCount := dwChatInfo + 0x14DC
    count := readMem(hGTA, dwCount, 1, "byte")
    loop 144
    {
        cmd := readString(hGTA, dwNames + (0x21 * (A_Index - 1)), 32)
        if strlen(cmd)
            continue
        count++
        writeString(hGTA, dwNames + (0x21 * (A_Index - 1)), name)
        writeMemory(hGTA, dwPointers + (4 * (A_Index - 1)), func, 4, "UInt")
        writeMemory(hGTA, dwCount, count, 1, "byte")
        return name
    }
    addChatMessageEx(0xdd0000, "CMDPROC is overloaded (too many commands)")
    return false
}

isClientCommand(name)
{
    if !checkHandles() or !strlen(name) or strlen(name) > 32
        return false
    dwAddress := readDWORD(hGTA, dwSAMP + 0x21A0E8) + 0x24C
    loop 144
    {
        cmd := readString(hGTA, dwAddress + (0x21 * (A_Index - 1)), 0x21)
        if format("{:L}", name) == format("{:L}", cmd)
            return true
    }
    return false
}

renameClientCommand(name, set)
{
    if !checkHandles() or !strlen(name) or strlen(name) > 32 or !strlen(set) or strlen(set) > 32
        return false
    dwAddress := readDWORD(hGTA, dwSAMP + 0x21A0E8) + 0x24C
    loop 144
    {
        dwAddr := dwAddress + (0x21 * (A_Index - 1))
        cmd := readString(hGTA, dwAddr, 0x21)
        if format("{:L}", name) == format("{:L}", cmd)
        {
            writeString(hGTA, dwAddr, set)
            state := true
        }
    }
    return state
}

setClientCommand(name, func := -1)
{
    if !checkHandles() or !strlen(name) or strlen(name) > 32
        return false
    dwChatInfo := readDWORD(hGTA, dwSAMP + 0x21A0E8)
    dwNames := dwChatInfo + 0x24C
    dwPointers := dwChatInfo + 0xC
    count := readMem(hGTA, dwCount, 1, "byte")
    loop 144
    {
        cmd := readString(hGTA, dwNames + (0x21 * (A_Index - 1)), 0x21)
        if format("{:L}", name) == format("{:L}", cmd)
        {
            writeMemory(hGTA, dwPointers + (4 * (A_Index - 1)), 0, 4, "UInt")
            state := true
        }
    }
    return state
}

removeClientCommand(name)
{
    if !checkHandles() or !strlen(name) or strlen(name) > 32
        return false
    dwChatInfo := readDWORD(hGTA, dwSAMP + 0x21A0E8)
    dwNames := dwChatInfo + 0x24C
    dwPointers := dwChatInfo + 0xC
    dwCount := dwChatInfo + 0x14DC
    count := readMem(hGTA, dwCount, 1, "byte")
    struct := {"names": [], "pointers": []}
    loop 144
    {
        struct["names"].insert( readString(hGTA, dwNames + (0x21 * (A_Index - 1)), 0x21) )
        struct["pointers"].insert( readDWORD(hGTA, dwPointers + (4 * (A_Index - 1))) )
    }
    for k, v in struct["names"]
    {
        if format("{:L}", name) == format("{:L}", v)
        {
            count--
            struct["names"].remove(k)
            struct["pointers"].remove(k)
            writeMemory(hGTA, dwCount, count, 1, "byte") ; пробовал --count, но ахк говно
            state := true
        }
    }
    for k, v in struct["names"]
    {
        if strlen(v)
        {
            writeString(hGTA, dwNames + (0x21 * (k - 1)), struct["names"][k])
            writeMemory(hGTA, dwPointers + (4 * (k - 1)), struct["pointers"][k], 4, "UInt")
        } else
        {
            writeMemory(hGTA, dwNames + (0x21 * (k - 1)), 0, 0x21, "byte")
            writeMemory(hGTA, dwPointers + (4 * (k - 1)), 0, 4, "byte")
        }
    }
    return state
}


* иногда багано (не помню в чем именно и как, при повторном тесте не смог найти баги)
CZAR Дата: Вторник, 09.04.2019, 20:09 | Сообщение # 449
Czar Of Scripts
Сообщений: 1373
Статус: Offline
aknqkzxlcs_25, как это может пригодится?




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

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


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

Гарант 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
FForest Дата: Вторник, 09.04.2019, 22:16 | Сообщение # 450
Местный Дурачок
Сообщений: 129
Статус: Offline
aknqkzxlcs_25, Как по мне бесполезно, можно продолжать использовать блокировку чата, ибо метод 100% рабочий.
Форум » Программирование » AHK Программирование » [Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018 (Разработка новых функций SA-MP UDF)
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7209]

[CM]Russel [5557]

kenlo763 [4952]

[CM]AGRESSOR [4639]

Snake_Firm [4452]

Сэс [4416]

Artem_Buero [4223]

[CM]Durman [3204]

[CM]Рафаэль [3080]

iMaddy [2855]

sky_Woker [2854]

getrekt [2745]

Новые пользователи
donaldga2 [05:28]

rubenia18 [21:17]

pokotiloroman91 [18:24]

stephensh5 [12:00]

calliesv7 [06:11]

louqm16 [22:14]

artushak [16:32]

Kingpolker [15:42]

leeyv11 [15:12]

Trappa17 [01:00]

Djamalchik [16:40]

ajeense [14:24]

654470559 [08:55]