[Вопрос] Считывание кол-ва патронов оружия
|
|
[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 |
|
|
|