-
Автор темы
- #1
Всем привет, я тут пащу икеаваре и задался вопросом о добавлении статтрека в инвентарь.
Я посмотрел как работает изменение самого скина и решил таким же образом добавить статтрек, параллельно смотря в другой сурс с инвентарем.
В итоге после нескольких проб у меня вышли только ошибки: то в инвентаре не показывался статтрек, то он был не таким как я его выставил.
Может кто подсказать как его правильно добавить или скинуть код, который нужно вставить в void Inventory::AddItem?
Если что код в AddItem выглядит вот так:
Если что могу отблагодарить копеечкой, заранее спасибо
Я посмотрел как работает изменение самого скина и решил таким же образом добавить статтрек, параллельно смотря в другой сурс с инвентарем.
В итоге после нескольких проб у меня вышли только ошибки: то в инвентаре не показывался статтрек, то он был не таким как я его выставил.
Может кто подсказать как его правильно добавить или скинуть код, который нужно вставить в void Inventory::AddItem?
Если что код в AddItem выглядит вот так:
C++:
void Inventory::AddItem(Writer& object, int index, int itemIndex, int rarity, int paintKit, int seed, float wear, int stat, std::string name)
{
uint32_t steamid = g_SteamUser->GetSteamID().GetAccountID();
Writer item(20);
item.add(Field(CSOEconItem::id, TYPE_UINT64, (int64_t)index));
item.add(Field(CSOEconItem::account_id, TYPE_UINT32, (int64_t)steamid));
item.add(Field(CSOEconItem::def_index, TYPE_UINT32, (int64_t)itemIndex));
item.add(Field(CSOEconItem::inventory, TYPE_UINT32, (int64_t)index));
item.add(Field(CSOEconItem::origin, TYPE_UINT32, (int64_t)24));
item.add(Field(CSOEconItem::quantity, TYPE_UINT32, (int64_t)1));
item.add(Field(CSOEconItem::level, TYPE_UINT32, (int64_t)1));
item.add(Field(CSOEconItem::style, TYPE_UINT32, (int64_t)0));
item.add(Field(CSOEconItem::flags, TYPE_UINT32, (int64_t)0));
item.add(Field(CSOEconItem::in_use, TYPE_BOOL, (int64_t)false));
item.add(Field(CSOEconItem::original_id, TYPE_UINT64, (int64_t)itemIndex));
if (is_uncommon(itemIndex))
rarity++;
if (is_knife(itemIndex) || is_glove(itemIndex))
{
item.add(Field(CSOEconItem::quality, TYPE_UINT32, (int64_t)3));
rarity = 6;
}
item.add(Field(CSOEconItem::rarity, TYPE_UINT32, (int64_t)rarity));
if (name.length() > 0)
item.add(Field(CSOEconItem::custom_name, TYPE_STRING, name));
// Paint Kit
float _PaintKitAttributeValue = (float)paintKit;
auto PaintKitAttributeValue = std::string{ reinterpret_cast<const char*>((void*)& _PaintKitAttributeValue), 4 };
Writer PaintKitAttribute(3);
PaintKitAttribute.add(Field(CSOEconItemAttribute::def_index, TYPE_UINT32, (int64_t)6));
PaintKitAttribute.add(Field(CSOEconItemAttribute::value_bytes, TYPE_STRING, PaintKitAttributeValue));
item.add(Field(CSOEconItem::attribute, TYPE_STRING, PaintKitAttribute.serialize()));
// Paint Seed
float _SeedAttributeValue = (float)seed;
auto SeedAttributeValue = std::string{ reinterpret_cast<const char*>((void*)& _SeedAttributeValue), 4 };
Writer SeedAttribute(3);
SeedAttribute.add(Field(CSOEconItemAttribute::def_index, TYPE_UINT32, (int64_t)7));
SeedAttribute.add(Field(CSOEconItemAttribute::value_bytes, TYPE_STRING, SeedAttributeValue));
item.add(Field(CSOEconItem::attribute, TYPE_STRING, SeedAttribute.serialize()));
// Paint Wear
float _WearAttributeValue = wear;
auto WearAttributeValue = std::string{ reinterpret_cast<const char*>((void*)& _WearAttributeValue), 4 };
Writer WearAttribute(3);
WearAttribute.add(Field(CSOEconItemAttribute::def_index, TYPE_UINT32, (int64_t)8));
WearAttribute.add(Field(CSOEconItemAttribute::value_bytes, TYPE_STRING, WearAttributeValue));
item.add(Field(CSOEconItem::attribute, TYPE_STRING, WearAttribute.serialize()));
object.add(Field(SubscribedType::object_data, TYPE_STRING, item.serialize()));
}