Перейти к контенту

Редактирование движка X-Ray


Рекомендуемые сообщения

люди,есть ли в движке готовая функция разбивки строки на части по нужному мне символу?Нашёл 

XRCORE_API LPSTR _GetItem(LPCSTR, int, LPSTR, u32 const dst_size, char separator = ',', LPCSTR = "", bool trim = true);

но тут свой разделитель задать нельзя. Можно ли просто удалить n-ое кол-во символов из строки?


Сам же отвечу на свой вопрос - в двигле вместо string нужно писать xr_string, вот у неё как раз есть нужная функция удаления erase


Никто не знает как из серверного итема получить клиентский? Я знаю его ID, но функция для поиска итема по уровню

 CObject* itm = Level().Objects.net_Find(id);

ничего не даёт. Мб предмет где-то не регистрируется?

Изменено пользователем mortan
Ссылка на комментарий
но тут свой разделитель задать нельзя.

почему нельзя???

_GetItem (cmd_line,i,m_params,'/');
в то же движке обычным поиском.

для std::string есть функция erase.

// string::erase
#include <iostream>
#include <string>

int main ()
{
  std::string str ("This is an example sentence.");
  std::cout << str << '\n';
                                           // "This is an example sentence."
  str.erase (10,8);                        //            ^^^^^^^^
  std::cout << str << '\n';
                                           // "This is an sentence."
  str.erase (str.begin()+9);               //           ^
  std::cout << str << '\n';
                                           // "This is a sentence."
  str.erase (str.begin()+5, str.end()-9);  //       ^^^^^
  std::cout << str << '\n';
                                           // "This sentence."
  return 0;
}

 

 

Изменено пользователем Winsor
Ссылка на комментарий

@Winsor, erase я нашёл уже, спасибо, гуглом я тоже пользоваться умею. Только вот в xray вместо string зачем-то сделали xr_string

мдя, я нашёл когда игра создаёт объект для клиента, тут уж никак ты раньше этого срока не сможешь получить объект. Придётся отслеживать как-то этот момент и уже оттуда подавать инфу что объект можно использовать. Очень неудобно спавнить предметы в движке)
Можно ли указать серверному итему при спавне слот в котором он должен заспавниться?

Изменено пользователем mortan
Ссылка на комментарий

Нашел вылет в движке ЗП 1602 случайно, по логу игры: HW.cpp

 

.6        _tmp.back()                    = xr_strdup(str);

 

Вот такая бяка: .6 - зачем в начале строки это? Это опечатка или так надо. Но явно в игре об это есть спотыкание. Я убрал, короче.

 

 

void fill_vid_mode_list(CHW* _hw)
{
    if(vid_mode_token != NULL)        return;
    xr_vector<LPCSTR>    _tmp;
    u32 cnt = _hw->pD3D->GetAdapterModeCount    (_hw->DevAdapter, _hw->Caps.fTarget);

    u32 i;
    for(i=0; i<cnt;++i)
    {
        D3DDISPLAYMODE    Mode;
        string32        str;

        _hw->pD3D->EnumAdapterModes(_hw->DevAdapter, _hw->Caps.fTarget, i, &Mode);
        if(Mode.Width < 800)        continue;

        xr_sprintf                        (str,sizeof(str),"%dx%d", Mode.Width, Mode.Height);
    
        if(_tmp.end() != std::find_if(_tmp.begin(), _tmp.end(), _uniq_mode(str)))
            continue;

        _tmp.push_back                (NULL);
//.6        _tmp.back()                    = xr_strdup(str); //Diesel было так
        _tmp.back()                    = xr_strdup(str); //Diesel
    }

    u32 _cnt                        = _tmp.size()+1;

    vid_mode_token                    = xr_alloc<xr_token>(_cnt);

    vid_mode_token[_cnt-1].id            = -1;
    vid_mode_token[_cnt-1].name        = NULL;

#ifdef DEBUG
    Msg("Available video modes[%d]:",_tmp.size());
#endif // DEBUG
    for(i=0; i<_tmp.size();++i)
    {
        vid_mode_token.id        = i;
        vid_mode_token.name        = _tmp;
#ifdef DEBUG
        Msg                            ("[%s]",_tmp);
#endif // DEBUG
    }
}

 

 

Кстати, легко, знаю как вернуть вектор направления движения в ЗП автомобиля после сохранения на юг. Пару строчек в коде исходников подшаманить.

Ищем:

xrServer_Objects_ALife.cpp

 

//////////////////////////////////////////////////////////////////////////////////////////////

void CSE_ALifeCar::data_load(NET_Packet    &tNetPacket)

 

    //tNetPacket.r_vec3(o_Angle); //Меняем на ниже:
        tNetPacket.r_vec3 (o_Angle.set (0.f,0.f,0.f));//Diesel

////////////////////////////////////////////////////////////////////////////////////////////

void CSE_ALifeCar::data_save(NET_Packet &tNetPacket)

 

    //tNetPacket.w_vec3(o_Angle); //Меняем на ниже:
        tNetPacket.w_vec3 (o_Angle.set (0.f,0.f,0.f));//Diesel

 

Автор идеи: Я!

Но это не является искоренением проблемы. Камеру надо возвращать мышкой самому.

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

@mortan, я не смог записать сразу лог. Что то крутил с СCar или с памятью (хотел расшарить), и вот туда и упёрся. Это же явный баг разрабов. Я такого кода не встречал, вообще, что бы строка так начиналась.

 

... Я создал  на практике новый класс лодки, а в точнее авто-амфибии. !!! Правда камыши и кустарники труднопроходимые - думаю в материалах доканаю их.

40 дней выводил совершенно новый класс - не Ccar, а новый. Хотел сделать вертолёт сперва - упёрся в управление, делал вертолёт - получилась лодка. :)

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

 

 

Хотел сделать вертолёт сперва - упёрся в управление, делал вертолёт - получилась лодка.

Будет шикарно, если всё же сделаете вертолёт.

 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

Ссылка на комментарий

Меня вот такой вопрос интересует - если основной двиг собран в 2013 студии, можно ли к нему подключить рендер который собран, например, в 2008?
P.S. Ну или есть у кого сорцы атмосфира?)

Ссылка на комментарий

@mortan, скорее всего не существует сорцев даже у автора.. Там только погодой, скриптами и партиклом выброса (нелеквидным).

 

Там рендер травы и Fov есть правленые - причём я бы их не стал внедрять ( скорее всего там через патчи сделано).

 

Или ты про какой атмосфир толкуешь?

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

@mortan, а зачем тебе левая делка рендера? Свою доработай.

В делках рендера Атмосфера, 100% ничего нового, там только настройка цифер.

  • Нравится 1

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

Извините за глупый вопрос... Может ли кто-то скинуть мне уже декомпилированные исходники Зова Припяти? Я там хочу кое-что исправить под себя, но на сталкер-инсайд я нашел исходники ТЧ. Ну или в крайнем случае расскажите, как ПРАВИЛЬНО его декомпилировать.

Изменено пользователем MegaStalker

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

Ссылка на комментарий
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

×
×
  • Создать...