[Вопрос] Считывание кол-ва патронов оружия - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
[Вопрос] Считывание кол-ва патронов оружия
[CM]Толстый Дата: Вторник, 07.02.2017, 14:50 | Сообщение # 1
Бывалый
Сообщений: 407
Статус: Offline
Есть ли в SAMP UDF функция для считывания кол-ва патронов в оружии, которое находится у тебя в руках? Если да, то подскажите, как можно будет записать это значение в переменную.
Хочу сделать скрипт, который по кол-ву патрон будет считывать, был ли выстрел, если да - производить действие, если нет - ожидать выстрела. Заранее благодарю!


Сообщение отредактировал [CM]Толстый - Вторник, 07.02.2017, 14:51
aknqkzxlcs Дата: Вторник, 07.02.2017, 17:47 | Сообщение # 2
Любитель
Сообщений: 33
Статус: Offline
getWeaponAmmo() - патроны текущего оружия
getWeaponAmmo(24) - патроны пистолета (в зависимости от того, какой ид пушки укажешь)
Пока что только пистолеты, шот, узи и автоматы. Позже добавлю еще.

Вставить в SAMP UDF:
Код
getWeaponAmmo(weaponid := -1) {
    dwPointer := getDialogStructPtr()
    if (ErrorLevel || !dwPointer)
        return -1
    dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR2_OFFSET)
    if (ErrorLevel) {
        ErrorLevel := ERROR_READ_MEMORY
        return -1
    }
    weap := (weaponid == -1 ? readMem(hGTA, dwPointer + 0x29795, 4, "int") : weaponid)
    ammo := -1
    if weap in 22,23,24
        ammo := readMem(hGTA, dwPointer + 0x29795 + 0x16, 4, "int")
    if weap in 25,26,27
        ammo := readMem(hGTA, dwPointer + 0x29795 + 0x1A, 4, "int")
    if weap in 28,29,32
        ammo := readMem(hGTA, dwPointer + 0x29795 + 0x1E, 4, "int")
    if weap in 30,31
        ammo := readMem(hGTA, dwPointer + 0x29795 + 0x22, 4, "int")
    if(!weap)
        return 0
    return ammo
}


Сообщение отредактировал aknqkzxlcs - Вторник, 07.02.2017, 18:00
[CM]Толстый Дата: Вторник, 07.02.2017, 17:56 | Сообщение # 3
Бывалый
Сообщений: 407
Статус: Offline
Цитата aknqkzxlcs ()
getWeaponAmmo() - патроны текущего оружия
getWeaponAmmo(24) - патроны пистолета (в зависимости от того, какой ид пушки укажешь)
Пока что только пистолеты, шот, узи и автоматы. Позже добавлю еще оффсеты.

Спасибо большое!

Добавлено (07.02.2017, 17:56)
---------------------------------------------
Call to nonexistent function.
Specifically: getDialogStructPtr()

Как исправить? Вставил вроде правильно.

aknqkzxlcs Дата: Вторник, 07.02.2017, 18:03 | Сообщение # 4
Любитель
Сообщений: 33
Статус: Offline
обновить свой старый samp udf
скачать можно отсюда - http://cheat-master.ru/forum/149-619860-1
код выше обновил, пару ошибок исправил

Добавлено (07.02.2017, 18:03)
---------------------------------------------
если не хочешь обновлять, то используй этот код:

Код
getWeaponAmmo(weaponid := -1) {
    if(!checkHandles())
        return -1
    dwPointer := readDWORD(hGTA, dwSAMP + 0x21A0B8)
    if (ErrorLevel || !dwPointer)
        return -1
    dwPointer := readDWORD(hGTA, dwPointer + 0x20)
    if (ErrorLevel) {
        ErrorLevel := ERROR_READ_MEMORY
        return -1
    }
    weap := (weaponid == -1 ? readMem(hGTA, dwPointer + 0x29795, 4, "int") : weaponid)
    ammo := -1
    if weap in 22,23,24
        ammo := readMem(hGTA, dwPointer + 0x29795 + 0x16, 4, "int")
    if weap in 25,26,27
        ammo := readMem(hGTA, dwPointer + 0x29795 + 0x1A, 4, "int")
    if weap in 28,29,32
        ammo := readMem(hGTA, dwPointer + 0x29795 + 0x1E, 4, "int")
    if weap in 30,31
        ammo := readMem(hGTA, dwPointer + 0x29795 + 0x22, 4, "int")
    if(!weap)
        return 0
    return ammo
}
[CM]Толстый Дата: Вторник, 07.02.2017, 18:13 | Сообщение # 5
Бывалый
Сообщений: 407
Статус: Offline
Что-то не получается у меня ничего. Не мог бы ты написать простой AHK, который проверяет кол-во патронов оружия, которое у тебя в руке и, если ты сделаешь выстрел (тобишь у тебя отбавиться один патрон), то произойдет какое-нибудь действие, например введется команда /time в чат.
Т.е. активации никакой нет, просто скрипт ждет выстрела
aknqkzxlcs Дата: Вторник, 07.02.2017, 18:54 | Сообщение # 6
Любитель
Сообщений: 33
Статус: Offline
https://yadi.sk/d/JYu-Ed3Q3DNGWt
не пиши, что иногда лагает, не всегда корректно работает, но это тебе как пример


Сообщение отредактировал aknqkzxlcs - Вторник, 07.02.2017, 18:55
[CM]Толстый Дата: Вторник, 07.02.2017, 19:16 | Сообщение # 7
Бывалый
Сообщений: 407
Статус: Offline
Цитата aknqkzxlcs ()
https://yadi.sk/d/JYu-Ed3Q3DNGWt
не пиши, что иногда лагает, не всегда корректно работает, но это тебе как пример

Запустил, не работает. Пробовал менять вывод текста на элементарное открытие чата, тоже не работает. Не знаю даже, как этим можно воспользоваться как примером. ВК есть?
aknqkzxlcs Дата: Вторник, 07.02.2017, 19:48 | Сообщение # 8
Любитель
Сообщений: 33
Статус: Offline
Из дигла стреляешь? Только сейчас заметил, что если просто взять в руки любой пистолет, то скрипт ломается и не работает до перезапуска игры. Позже погляжу в чем проблема.

крч, я теперь понял, что этот код будет работать только на моей сборке гта, так что сорян и не парься. Жди, может кто еще ответит. Я попробую доработать скрипт


Сообщение отредактировал aknqkzxlcs - Вторник, 07.02.2017, 19:57
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума