DJ_WEST » 13 май 2010, 19:26
То что один для TF2 - особой разницы нету, во всех версиях Source движка, используемых в разных играх - есть много общего, в том числе список объектов и их свойств. SourceMod имеет хорошую особенность работать с data и send свойствами объектов. Тебе нужно у объекта player использовать свойство m_iAmmo, в котором в разных смещениях будет количество патронов разного типа. Для начало нужно создать указатель на нужное свойство, примерно так:
[pawn]g_Ammo_Offset = FindSendPropInfo("CBasePlayer", "m_iAmmo") [/pawn]
CBasePlayer в разных играх может называться по разному, в TF2 - это CTFPlayer.
Затем узнать количество патронов можно через:
[pawn]new i_Ammo = GetEntData(client, g_Ammo_Offset + i_WeaponOffset) [/pawn]
Где i_WeaponOffset - и будет смещение для разных типов патронов. То есть лучше всего для начала узнать, где что храниться, то есть экспериментами, сделать цикл, где i_WeaponOffset начинать к примеру от 0 и прибавлять по 4, то есть g_Ammo_Offset + 4, g_Ammo_Offset + 8 и т.д.
Это те патроны, что храняться на клиенте. Бесконечными ты их сделаешь если будешь в это свойство выставлять заново число, то есть, допустим там 90, вот все время и ставить 90, когда игрок стреляет.
Есть и свойство у оружия m_iClip1 и m_iClip2, в которых хранятся данные о количество патронов тоже. Получить можно так:
[pawn]GetEntProp(weapon, Prop_Data, "m_iClip1") [/pawn]
Установить через SetEntProp. То есть лежит оружие, ставишь m_iClip1, к примеру, 15, игрок поднимает оружие и он видит, что там только 15 патронов в магазине.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.