Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Как выдать патроны основному оружию?

[РЕШЕНО]
Статус пользователя navigator19
сообщение 13.4.2016, 15:31
Сообщение #1
Стаж: 16 лет

Сообщений: 177
Благодарностей: 22
Полезность: 12

Так выдает когда оружие в руках
Код:

#define OFFSET_CLIPAMMO 51
#define OFFSET_ACTIVE_ITEM 373

set_pdata_int(get_pdata_cbase(id, OFFSET_ACTIVE_ITEM), OFFSET_CLIPAMMO, 30)


А как выдать патроны основному оружию в активную обойму, если оружие в данный момент не в руках?
Искал офсеты но чет описания очень мало, и не понятно что куда

Отредактировал: navigator19, - 13.4.2016, 15:33
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
voed
сообщение 13.4.2016, 15:56
Сообщение #2
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

никаких оффсетов не нужно. надо пройтись по оружию игрока, найти нужное и выдать патроны, все
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя navigator19
сообщение 13.4.2016, 16:27
Сообщение #3
Стаж: 16 лет

Сообщений: 177
Благодарностей: 22
Полезность: 12

voed, В смысле пройтись? Дать игроку в руки основное оружие, и потом выдать патроны на активное оружие?

Отредактировал: navigator19, - 13.4.2016, 16:30
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 13.4.2016, 17:10
Сообщение #4
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

https://www.amxmodx.org/api/amxmodx/get_user_weapons
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя navigator19
сообщение 13.4.2016, 17:32
Сообщение #5
Стаж: 16 лет

Сообщений: 177
Благодарностей: 22
Полезность: 12

voed, Ссылка не рабочая, но из названия я понял что это get_user_weapons http://amxxmodx.ru/core/amxmodxinc/363-get...t-u-igroka.html
Как узнать список оружия и его ID я знаю, мне нужна команда на получение патронов в активную обойму к примеру на CSW_AK47 когда его нет в руках, но он имеется у игрока

Вот эта выдает в запас патроны
Код:
cs_set_user_bpammo(id, CSW_AK47, 90)

а мне нужно в активную обойму
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 13.4.2016, 18:00
Сообщение #6
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

navigator19, оффсеты
Код:
 368 - last gained primary (cbase)
369 - last gained secondary (cbase)
370 - last gained knife (cbase)
371 - last gained grenade (cbase)
372 - last gained c4 (cbase)
373 - m_pActiveItem (cbase)
374 - m_pClientActiveItem (cbase)
375 - m_pLastItem (cbase)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя navigator19
сообщение 13.4.2016, 18:26
Сообщение #7
Стаж: 16 лет

Сообщений: 177
Благодарностей: 22
Полезность: 12

Algalon, Я так понял мне надо вот так использовать
Код:
set_pdata_int(get_pdata_cbase(id, 368), 51, 30)


368 - last gained primary (cbase) = Выдать основному оружию в активную обойму?
369 - last gained secondary (cbase)
370 - last gained knife (cbase)
371 - last gained grenade (cbase)
372 - last gained c4 (cbase)
373 - m_pActiveItem (cbase) = Выдать основному оружию в активную обойму если оно в руках
374 - m_pClientActiveItem (cbase)
375 - m_pLastItem (cbase)

Остальные не понял, не могли бы написать что каждый оффсет значит?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 13.4.2016, 19:22
Сообщение #8
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

navigator19, там все по англиский описано, мне лень переводить, достаточно взять это и в гугле перевести.

Я лучше помогу тебе с кодом:
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Reload Ak47"
#define AUTHOR "Player"
#define VERSION "0.1"

#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_pNext 42
#define m_iId 43
#define m_iClip 51

#define m_rgpPlayerItems_Slot1 368
#define m_rgpPlayerItems_Slot2 369

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /reload", "ClCmd_ReloadAk47")
register_clcmd("say_team /reload", "ClCmd_ReloadAk47")
}

public ClCmd_ReloadAk47(id)
{
if(!is_user_alive(id))
return

new iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_Slot1, XO_PLAYER)

while(pev_valid(iWeapon))
{
if(get_pdata_int(iWeapon, m_iId, XO_WEAPON) == CSW_AK47)
{
if(!get_pdata_int(iWeapon, m_iClip, XO_WEAPON))
set_pdata_int(iWeapon, m_iClip, 30, XO_WEAPON)
}

iWeapon = get_pdata_int(iWeapon, m_pNext, XO_WEAPON)
}
}


Отредактировал: Algalon, - 13.4.2016, 19:26
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя navigator19
сообщение 13.4.2016, 19:58
Сообщение #9
Стаж: 16 лет

Сообщений: 177
Благодарностей: 22
Полезность: 12

Algalon, Спасибо за код, учту некоторые тонкости проверки на валидность оружия, но мой плагин делает не просто перезарядку, а при убийстве с определенного оружия с кастомной моделью, добавляется патроны даже когда убил с другого оружия

Скин плиз ссылку где описание оффсетов на буржуйском языке есть, искал но чет не нашел
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: