SA:MP CR:MP работа с txd в С++

Maximka Samper

Участник
Автор темы
59
9
Версия SA-MP
  1. Любая
короче мне надо добавлять текстуры в txd файлы, я так понимаю надо юзать какие то либы связанные с renderware но где их взять, короче кто шарит подскажите как это ваще реализовать
 

g305noobo

Известный
Модератор
361
655
короче мне надо добавлять текстуры в txd файлы, я так понимаю надо юзать какие то либы связанные с renderware но где их взять, короче кто шарит подскажите как это ваще реализовать
Используй Plugin-SDK - https://github.com/DK22Pac/plugin-sdk, там множество различных классов, которые тебе понадобятся.

Я с TXD очень мало работал, единственное, что требовалось это изменить текстуру radardisc, вот моя функция: для получения текстуры из TXD

C++:
RwTexture* utils::gta::load_texture(const std::string& name) {
  if (!std::filesystem::exists("resamp++.txd"))
    return nullptr;

  int txd_slot = CTxdStore::AddTxdSlot("resamp++");
  if (txd_slot == -1) {
    printf("ERROR: Failed to add TXD slot.\n");
    return nullptr;
  }

  if (!CTxdStore::LoadTxd(txd_slot, "resamp++.txd"))
    return nullptr;

  CTxdStore::AddRef(txd_slot);
  CTxdStore::SetCurrentTxd(txd_slot);

  RwTexture* texture =
      plugin::CallAndReturn<RwTexture*, 0x7F3AC0, const char*, const char*>(
          name.c_str(), nullptr);  // RwTextureRead
  CTxdStore::PopCurrentTxd();

  return texture;
}
 
  • Нравится
Реакции: Maximka Samper

Maximka Samper

Участник
Автор темы
59
9
Используй Plugin-SDK - https://github.com/DK22Pac/plugin-sdk, там множество различных классов, которые тебе понадобятся.

Я с TXD очень мало работал, единственное, что требовалось это изменить текстуру radardisc, вот моя функция: для получения текстуры из TXD

C++:
RwTexture* utils::gta::load_texture(const std::string& name) {
  if (!std::filesystem::exists("resamp++.txd"))
    return nullptr;

  int txd_slot = CTxdStore::AddTxdSlot("resamp++");
  if (txd_slot == -1) {
    printf("ERROR: Failed to add TXD slot.\n");
    return nullptr;
  }

  if (!CTxdStore::LoadTxd(txd_slot, "resamp++.txd"))
    return nullptr;

  CTxdStore::AddRef(txd_slot);
  CTxdStore::SetCurrentTxd(txd_slot);

  RwTexture* texture =
      plugin::CallAndReturn<RwTexture*, 0x7F3AC0, const char*, const char*>(
          name.c_str(), nullptr);  // RwTextureRead
  CTxdStore::PopCurrentTxd();

  return texture;
}
пасиба за ответ, а что подтягивать к проекту?
 

g305noobo

Известный
Модератор
361
655

Орк

Известный
411
348
Большое спасибо, сильно помог. А не знаешь можно ли подобное реализовать в exe формате
 
  • Нравится
Реакции: g305noobo