Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Закрома Родины
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77
recycle.bin
Всё. На этот раз - без рыб laugh.gif

https://mega.co.nz/#F!o5dXySyT!Z4Hd...3vaEKllng8kAVWg
dPlayer
Цитата(Shoкer @ 02.08.2015, 03:38) *
PSS: А вообще начиная с каких размеров (в метрах) модель начинает "обрезаться" в игре?

ДД как-то пытался сделать вращающееся колесо оборзения в Припяти, и грит, не вышло - слишком большое, это этот случай?
nikita_nz1986
Решено.
abramcumner
Цитата(Shadows @ 02.08.2015, 05:10) *
Если это так, то извините каким м*даком надо быть, чтобы писать скрипт исходя из того, что 4294967295 конвертится в 0 и в итоге всегда получается актор?..

А так никто и не делает smile.gif
sgs-sd
не могу понять тли у меня глюки толи так и надо. все на ультре а через 20 метров земля голая и фиговые тексуры ЗП. что делать? стоит фул Дх11


abramcumner
Цитата(sgs-sd @ 02.08.2015, 12:05) *
не могу понять тли у меня глюки толи так и надо. все на ультре а через 20 метров земля голая и фиговые тексуры ЗП. что делать? стоит фул Дх11

Это ж Кордон! Пинай создателей мода - пусть не сачкуют.
sgs-sd
Цитата(abramcumner @ 02.08.2015, 12:21) *
Цитата(sgs-sd @ 02.08.2015, 12:05) *
не могу понять тли у меня глюки толи так и надо. все на ультре а через 20 метров земля голая и фиговые тексуры ЗП. что делать? стоит фул Дх11

Это ж Кордон! Пинай создателей мода - пусть не сачкуют.

ТАк ж и в оригинале ЗП на оригинальных локах. думаю проблема в видюхе.
abramcumner
Цитата(sgs-sd @ 02.08.2015, 12:26) *
ТАк ж и в оригинале ЗП на оригинальных локах. думаю проблема в видюхе.

smile.gif Это нормальная ЗПшная графика.
Но это не значит, что создатели мода не могли засеять травой подальше, поменять текстурки и прочие украшательства. Все средства для этого давно есть.
sgs-sd
Цитата(abramcumner @ 02.08.2015, 12:29) *
Цитата(sgs-sd @ 02.08.2015, 12:26) *
ТАк ж и в оригинале ЗП на оригинальных локах. думаю проблема в видюхе.

smile.gif Это нормальная ЗПшная графика.
Но это не значит, что создатели мода не могли засеять травой подальше, поменять текстурки и прочие украшательства. Все средства для этого давно есть.

Аесть ли способ изменить эту убогую графику? и да ктото за русификатор возметься?
macron
Цитата(recycle.bin @ 02.08.2015, 09:13) *
Всё. На этот раз - без рыб

Больше не хочу с тобой играть, вонючка. sad.gif
Jein
Цитата(sgs-sd @ 02.08.2015, 12:05) *
все на ультре а через 20 метров земля голая

Ты меня удивил таким вопросом!
А закинуть правленые библиотеки рендера? Там дальность прорисовки травы можно выставить какую угодно - лишь бы видяха тянула.

Цитата(sgs-sd @ 02.08.2015, 12:32) *
и да ктото за русификатор возметься?

русификатор чего? Или ты не об ЗП и производных мода от него? О чём вообще речь?
sgs-sd
Цитата(Jein @ 02.08.2015, 13:03) *
Цитата(sgs-sd @ 02.08.2015, 12:05) *
все на ультре а через 20 метров земля голая

Ты меня удивил таким вопросом!
А закинуть правленые библиотеки рендера? Там дальность прорисовки травы можно выставить какую угодно - лишь бы видяха тянула.

Цитата(sgs-sd @ 02.08.2015, 12:32) *
и да ктото за русификатор возметься?

русификатор чего? Или ты не об ЗП и производных мода от него? О чём вообще речь?


1. Прошу скинуть ссылку на правленные библиотеки.
2. Русификацией недавно слитого мода.
Jein
Цитата(sgs-sd @ 02.08.2015, 13:20) *
1. Прошу скинуть ссылку на правленные библиотеки.


А самому поискать на этом форуме и даже в этой теме? Если что попадется - скину.

Цитата(sgs-sd @ 02.08.2015, 13:20) *
2. Русификацией недавно слитого мода.

Вот тут ты меня убил на повал. Какого мода? Кто его сливал? О чём вообще ты говоришь? Телепаты в отпуске.


sgs-sd
Цитата
Цитата(sgs-sd @ 02.08.2015, 13:20) *
2. Русификацией недавно слитого мода.

Вот тут ты меня убил на повал. Какого мода? Кто его сливал? О чём вообще ты говоришь? Телепаты в отпуске.

Мод Call of Chernobyl был слит, и на счет его русификации я и задаю вопрос
П.С. Модеры, сорри за оффтоп.
Jein
sgs-sd, мдя... правки сделанные К.D. куда-то постепенно пропадают. В шапке темы Возможности движка X-Ray, декомпиляция и восстановление отключённых фич
были все правленые рендеры для ЗП, но увы ссылка умерла.

Вот что нашёл, из этого мода можешь выдрать библиотеки рендера правленной дальностью прорисовки травы....но это не много не то.

В вышесказанной теме - дальность прорисовки травы работала через консоль, да и правок там поболее (плотность травы, лоды , ход солнца.. и так далее).
sgs-sd
Цитата(Jein @ 02.08.2015, 14:20) *
sgs-sd, мдя... правки сделанные К.D. куда-то постепенно пропадают. В шапке темы Возможности движка X-Ray, декомпиляция и восстановление отключённых фич
были все правленые рендеры для ЗП, но увы ссылка умерла.

Вот что нашёл, из этого мода можешь выдрать библиотеки рендера правленной дальностью прорисовки травы....но это не много не то.

В вышесказанной теме - дальность прорисовки травы работала через консоль, да и правок там поболее (плотность травы, лоды , ход солнца.. и так далее).

Спасибо
RayTwitty
QUOTE (abramcumner @ 02.08.2015, 12:05) *
А так никто и не делает

Чрезмерно полезный и развернутый комментарий.
kasper
Есть у кого-нибудь ссылка на оригинальный билд 2215 без правок и с pdb файлами z_offtop.gif rolleyes.gif ?
macron
Цитата(kasper @ 02.08.2015, 20:33) *
Есть у кого-нибудь ссылка на оригинальный билд 2215 без правок и с pdb файлами

Вот, только без основного db-архива.
http://rghost.ru/7ZNlNs4b9
RayTwitty
QUOTE (Shadows @ 02.08.2015, 04:15) *
Я не понял шутку юмора.

В общем, у кого на 7 патче возникнет подобная проблема в менеджере динамических заданий, можно использовать такой костыль:

task_manager.script
найти и заменить
CODE
local defend_object = alife():object(self.task_info[id].selected_target)

на это
CODE
local defend_object = alife():object(self.task_info[id].selected_target)                                          
if not defend_object then
    defend_object = alife():actor()
end


Причину, почему на 7 патче не работает то, что работает на 6 - пока на нашел.
nikita_nz1986
С Божьей помощью сделал пда, но не до конца.
Пда Видео
nikita_nz1986
Кто знает как решить
?
2>UIPdaWnd.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall CUIEventsWnd::CUIEventsWnd(void)" (??0CUIEventsWnd@@QAE@XZ)"
2>UIPdaWnd.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall CUIEventsWnd::Init(void)" (?Init@CUIEventsWnd@@QAEXXZ)"
-StalkMen-
nikita_nz1986,
Варианты
1) Класс не экспортирован
2) Данные функции не имеют определения
nikita_nz1986
Цитата(-StalkMen- @ 03.08.2015, 18:50) *
1) Класс не экспортирован

Можно узнать почему?
-StalkMen-
nikita_nz1986,
Экспортирован
Код
class ENGINE_API CEngine

Нет
Код
class CEngine

Но там скорее второе.
nikita_nz1986
Цитата(-StalkMen- @ 03.08.2015, 19:18) *
nikita_nz1986,
Экспортирован
Код
class ENGINE_API CEngine

Нет
Код
class CEngine

Но там скорее второе.

То есть сделать так
Код
class ENGINE_API CUIEventsWnd;

Было так
Код
class CUIEventsWnd;
-StalkMen-
nikita_nz1986,
*Скорее второе (Класс есть в .h Но его функции нигде не описаны (.cpp))

**Оговорился не "описаны", а "определены".
nikita_nz1986
Цитата(-StalkMen- @ 03.08.2015, 19:23) *
nikita_nz1986,
*Скорее второе (Класс есть в .h Но его функции нигде не описаны (.cpp))

**Оговорился не "описаны", а "определены".

Определены.

Cpp

Код
#include "pch_script.h"
#include "UIEventsWnd.h"
#include "UIFramewindow.h"
#include "UIFrameLineWnd.h"
#include "UIAnimatedStatic.h"
#include "UIMapWnd.h"
#include "UIScrollView.h"
#include "UITabControl.h"
#include "UITaskDescrWnd.h"
#include "UI3tButton.h"
#include "../HUDManager.h"
#include "../level.h"
#include "../actor.h"
#include "../gametaskmanager.h"
#include "../gametask.h"
#include "../map_manager.h"
#include "../map_location.h"
#include "../string_table.h"
#include "UITaskItem.h"
#include "../alife_registry_wrappers.h"
#include "../encyclopedia_article.h"

CUIEventsWnd::CUIEventsWnd            ()
{
    m_flags.zero            ();
}

CUIEventsWnd::~CUIEventsWnd            ()
{
    delete_data            (m_UIMapWnd);
    delete_data            (m_UITaskInfoWnd);
}

void CUIEventsWnd::Init                ()
{
    //CUIXml uiXml;
    //bool xml_result                    = uiXml.Init(CONFIG_PATH, UI_PATH, "pda_events.xml");
    //R_ASSERT3                        (xml_result, "xml file not found", "pda_events.xml");
    CUIXml                            uiXml;
    uiXml.Load(CONFIG_PATH, UI_PATH, "pda_events.xml"));
    CUIXmlInit                        xml_init;

//    CUIXmlInit xml_init;
    xml_init.InitWindow                (uiXml, "main_wnd", 0, this);


    m_UILeftFrame                    = xr_new<CUIFrameWindow>(); m_UILeftFrame->SetAutoDelete(true);
    AttachChild                        (m_UILeftFrame);
    xml_init.InitFrameWindow        (uiXml, "main_wnd:left_frame", 0, m_UILeftFrame);


    m_UILeftHeader                    = xr_new<CUIFrameLineWnd>(); m_UILeftHeader->SetAutoDelete(true);
    m_UILeftFrame->AttachChild        (m_UILeftHeader);
    xml_init.InitFrameLine            (uiXml, "main_wnd:left_frame:left_frame_header", 0, m_UILeftHeader);

//.    xml_init.InitAutoStaticGroup    (uiXml, "main_wnd:left_frame",m_UILeftFrame);

    m_UIAnimation                    = xr_new<CUIAnimatedStatic>(); m_UIAnimation->SetAutoDelete(true);
    xml_init.InitAnimatedStatic        (uiXml, "main_wnd:left_frame:left_frame_header:anim_static", 0, m_UIAnimation);
    m_UILeftHeader->AttachChild        (m_UIAnimation);

    m_UIRightWnd                    = xr_new<CUIWindow>(); m_UIRightWnd->SetAutoDelete(true);
    AttachChild                        (m_UIRightWnd);
    xml_init.InitWindow                (uiXml, "main_wnd:right_frame", 0, m_UIRightWnd);

    m_UIMapWnd                        = xr_new<CUIMapWnd>(); m_UIMapWnd->SetAutoDelete(false);
    m_UIMapWnd->Init                ("pda_events.xml","main_wnd:right_frame:map_wnd");

    m_UITaskInfoWnd                    = xr_new<CUITaskDescrWnd>(); m_UITaskInfoWnd->SetAutoDelete(false);
    m_UITaskInfoWnd->Init            (&uiXml,"main_wnd:right_frame:task_descr_view");
    

    m_ListWnd                        = xr_new<CUIScrollView>(); m_ListWnd->SetAutoDelete(true);
    m_UILeftFrame->AttachChild        (m_ListWnd);
    xml_init.InitScrollView            (uiXml, "main_wnd:left_frame:list", 0, m_ListWnd);

    m_TaskFilter                    = xr_new<CUITabControl>(); m_TaskFilter->SetAutoDelete(true);
    m_UILeftFrame->AttachChild        (m_TaskFilter);
    xml_init.InitTabControl            (uiXml, "main_wnd:left_frame:filter_tab", 0, m_TaskFilter);
    m_TaskFilter->SetWindowName        ("filter_tab");
    Register                        (m_TaskFilter);
    AddCallback                        ("filter_tab",TAB_CHANGED,CUIWndCallback::void_function(this,&CUIEventsWnd::onFilterChanged));
/*
    m_primary_or_all_filter_btn        = xr_new<CUI3tButton>(); m_primary_or_all_filter_btn->SetAutoDelete(true);
    m_UILeftFrame->AttachChild        (m_primary_or_all_filter_btn);
    xml_init.Init3tButton            (uiXml, "main_wnd:left_frame:primary_or_all", 0, m_primary_or_all_filter_btn);

    Register                        (m_primary_or_all_filter_btn);
    m_primary_or_all_filter_btn->    SetWindowName("btn_primary_or_all");
    AddCallback                        ("btn_primary_or_all",BUTTON_CLICKED,boost::bind(&CUIEventsWnd::onFilterChanged,this,_1,_2));
*/
   m_currFilter                        = eActiveTask;
   SetDescriptionMode                (true);

   m_ui_task_item_xml.Init            (CONFIG_PATH, UI_PATH, "job_item.xml");
}

void CUIEventsWnd::Update            ()
{
    if(m_flags.test(flNeedReload) ){
        ReloadList(false);
        m_flags.set(flNeedReload,FALSE );
    }
    inherited::Update        ();
}

void CUIEventsWnd::Draw                ()
{
    inherited::Draw            ();
}

void    CUIEventsWnd::SendMessage            (CUIWindow* pWnd, s16 msg, void* pData)
{
    CUIWndCallback::OnEvent(pWnd, msg, pData);
}

void CUIEventsWnd::onFilterChanged            (CUIWindow* w, void*)
{
    m_currFilter            =(ETaskFilters)m_TaskFilter->GetActiveIndex();
    ReloadList                (false);
    if(!GetDescriptionMode())
        SetDescriptionMode        (true);
}

void CUIEventsWnd::Reload                    ()
{
        m_flags.set(flNeedReload,TRUE );
}

void CUIEventsWnd::ReloadList(bool bClearOnly)
{
    m_ListWnd->Clear            ();
    if(bClearOnly)                return;

    if(!g_actor)                return;
    GameTasks& tasks            = Actor()->GameTaskManager().GameTasks();
    GameTasks::iterator it        = tasks.begin();
    CGameTask* task                = NULL;
    
    for(;it!=tasks.end();++it)
    {
        task                    = (*it).game_task;
        R_ASSERT                (task);
        R_ASSERT                (task->m_Objectives.size() > 0);

        if( !Filter(task) )        continue;
        CUITaskItem* pTaskItem    = NULL;
/*
        if(task->m_Objectives[0].TaskState()==eTaskUserDefined)
        {
            VERIFY                (task->m_Objectives.size()==1);
            pTaskItem            = xr_new<CUIUserTaskItem>(this);
            pTaskItem->SetGameTask            (task, 0);
            m_ListWnd->AddWindow            (pTaskItem,true);
        }else
*/
        for (u16 i = 0; i < task->m_Objectives.size(); ++i)
        {
            if(i==0){
                pTaskItem                    = xr_new<CUITaskRootItem>(this);
            }else{
                pTaskItem                    = xr_new<CUITaskSubItem>(this);
            }
            pTaskItem->SetGameTask            (task, i);
            m_ListWnd->AddWindow            (pTaskItem,true);
        }

    }

}

void CUIEventsWnd::Show(bool status)
{
    inherited::Show            (status);
    m_UIMapWnd->Show        (status);
    m_UITaskInfoWnd->Show    (status);

    ReloadList                (status == false);

}

bool CUIEventsWnd::Filter(CGameTask* t)
{
    ETaskState task_state        = t->m_Objectives[0].TaskState();
//    bool bprimary_only            = m_primary_or_all_filter_btn->GetCheck();

    return (false/*m_currFilter==eOwnTask && task_state==eTaskUserDefined*/ )        ||
            (
              ( true/*!bprimary_only || (bprimary_only && t->m_is_task_general)*/ )    &&
                (
                    (m_currFilter==eAccomplishedTask    && task_state==eTaskStateCompleted )||
                    (m_currFilter==eFailedTask            && task_state==eTaskStateFail )||
                    (m_currFilter==eActiveTask            && task_state==eTaskStateInProgress )
                )
            );
}


void CUIEventsWnd::SetDescriptionMode        (bool bMap)
{
    if(bMap){
        m_UIRightWnd->DetachChild        (m_UITaskInfoWnd);
        m_UIRightWnd->AttachChild        (m_UIMapWnd);
    }else{
        m_UIRightWnd->DetachChild        (m_UIMapWnd);
        m_UIRightWnd->AttachChild        (m_UITaskInfoWnd);
    }
    m_flags.set(flMapMode, bMap);
}

bool CUIEventsWnd::GetDescriptionMode        ()
{
    return !!m_flags.test(flMapMode);
}

void CUIEventsWnd::ShowDescription            (CGameTask* t, int idx)
{
    if(GetDescriptionMode()){//map
        SGameTaskObjective& o        = t->Objective(idx);
        CMapLocation* ml            = o.LinkedMapLocation();

        if(ml&&ml->SpotEnabled())
            m_UIMapWnd->SetTargetMap(ml->LevelName(), ml->Position(), true);
    }else
    {//articles
        SGameTaskObjective& o        = t->Objective(0);
        idx                            = 0;

        m_UITaskInfoWnd->ClearAll    ();

        if(Actor()->encyclopedia_registry->registry().objects_ptr())
        {
            string512    need_group;
            if(0==idx){
                strcpy_s(need_group,*t->m_ID);
            }else
            if(o.article_key.size())
            {
                sprintf_s(need_group, "%s/%s", *t->m_ID, *o.article_key);
            }else
            {
                sprintf_s(need_group, "%s/%d", *t->m_ID, idx);
            }

            ARTICLE_VECTOR::const_iterator it        = Actor()->encyclopedia_registry->registry().objects_ptr()->begin();

            for(; it != Actor()->encyclopedia_registry->registry().objects_ptr()->end(); ++it)
            {
                if (ARTICLE_DATA::eTaskArticle == it->article_type)
                {
                    CEncyclopediaArticle    A;
                    A.Load                    (it->article_id);

                    const shared_str& group = A.data()->group;

                    if( strstr(group.c_str(), need_group)== group.c_str() )
                    {
                        u32 sz            = xr_strlen(need_group);
                        if ( group.size()== sz || group.c_str()[sz]=='/' )
                            m_UITaskInfoWnd->AddArticle(&A);
                    }else
                    if(o.article_id.size() && it->article_id ==o.article_id)
                    {
                        CEncyclopediaArticle            A;
                        A.Load                            (it->article_id);
                        m_UITaskInfoWnd->AddArticle        (&A);
                    }
                }
            }
        }
    }

    int sz            = m_ListWnd->GetSize        ();

    for(int i=0; i<sz;++i)
    {
        CUITaskItem* itm            = (CUITaskItem*)m_ListWnd->GetItem(i);

        if((itm->GameTask()==t) && (itm->ObjectiveIdx()==idx) )    
            itm->MarkSelected        (true);
        else
            itm->MarkSelected        (false);
    }
}

bool CUIEventsWnd::ItemHasDescription(CUITaskItem* itm)
{
    if(itm->ObjectiveIdx()==0)// root
    {
        bool bHasLocation    = itm->GameTask()->HasLinkedMapLocations();
        return bHasLocation;
    }else
    {
        SGameTaskObjective    *obj                = itm->Objective();
        CMapLocation* ml                        = obj->LinkedMapLocation();
        bool bHasLocation                        = (NULL != ml);
        bool bIsMapMode                            = GetDescriptionMode();
        bool b                                    = (bIsMapMode&&bHasLocation&&ml->SpotEnabled());
        return b;
    }
}
void CUIEventsWnd::Reset()
{
    inherited::Reset    ();
    Reload                ();
}


h

Код
#pragma once

#include "UIwindow.h"
#include "UIWndCallback.h"
#include "UIXmlInit.h"

class CUIFrameWindow;
class CUIFrameLineWnd;
class CUIAnimatedStatic;
class CUIMapWnd;
class CUI3tButton;
class CUITabControl;
class CGameTask;
class CUITaskDescrWnd;
class CUIScrollView;
class CUITaskItem;

class CUIEventsWnd    :public CUIWindow, public CUIWndCallback{
    typedef CUIWindow            inherited;
    enum ETaskFilters{    eActiveTask            =    0,
                        eAccomplishedTask,
                        eFailedTask,
//.                        eOwnTask,
                        eMaxTask};
    enum EEventWndFlags{
                        flNeedReload    =(1<<0),
                        flMapMode        =(1<<1),
    };
    Flags16                        m_flags;
    ETaskFilters                m_currFilter;
    CUIFrameWindow*                m_UILeftFrame;
    CUIWindow*                    m_UIRightWnd;
    CUIFrameLineWnd*            m_UILeftHeader;
    CUIAnimatedStatic*            m_UIAnimation;
    CUIMapWnd*                    m_UIMapWnd;
    CUITaskDescrWnd*            m_UITaskInfoWnd;
    CUIScrollView*                m_ListWnd;
    CUITabControl*                m_TaskFilter;

    bool                        Filter                    (CGameTask* t);
    void __stdcall                onFilterChanged            (CUIWindow*,void*);
    void                        ReloadList                (bool bClearOnly);

public:
    void                        SetDescriptionMode        (bool bMap);
    bool                        GetDescriptionMode        ();
    void                        ShowDescription            (CGameTask* t, int idx);
    bool                        ItemHasDescription        (CUITaskItem*);
public:

                                CUIEventsWnd            ();
    virtual                        ~CUIEventsWnd            ();
    virtual void                SendMessage                (CUIWindow* pWnd, s16 msg, void* pData);
            void                Init                    ();
    virtual void                Update                    ();
    virtual void                Draw                    ();
    virtual void                Show                    (bool status);
            void                Reload                    ();
    virtual void                Reset                    ();

    CUIXml                        m_ui_task_item_xml;

};

-StalkMen-
nikita_nz1986,
Странно тогда.
cpp точно компилится? Мб он исключён. Я видел, когда при помощи макроса всё содержимое "выключали".

cpp в xrGame? Ошибка при компиляции его же?
nikita_nz1986
Цитата(-StalkMen- @ 03.08.2015, 19:59) *
nikita_nz1986,
Странно тогда.
cpp точно компилится? Мб он исключён. Я видел, когда при помощи макроса всё содержимое "выключали".

cpp в xrGame? Ошибка при компиляции его же?

Перестаёт компилится, выдаёт ошибку после добавления строк
Код
    UIEventsWnd = xr_new<CUIEventsWnd>();
    UIEventsWnd->Init();

Не собирается UIPdaWnd.obj


Цитата(-StalkMen- @ 03.08.2015, 19:59) *
nikita_nz1986,
Странно тогда.
cpp точно компилится? Мб он исключён. Я видел, когда при помощи макроса всё содержимое "выключали".

cpp в xrGame? Ошибка при компиляции его же?

Ты был прав он исключон из сборки, ели нашёл файл, но с Божьей помощью нашёл.
ForserX
Кто-нибудь OpenDE пытался обновить?

Цитата(Error)
Ошибка 6 error LNK2001: неразрешенный внешний символ "dWorldSetAutoEnableDepthSF1" D:\Games\FX-Ray 1.0007\src\xrODE\contrib\msvc7\ode_default\msvcdefs.def ode_default
Ошибка 5 error LNK2001: неразрешенный внешний символ "dWorldGetAutoEnableDepthSF1" D:\Games\FX-Ray 1.0007\src\xrODE\contrib\msvc7\ode_default\msvcdefs.def ode_default
Ошибка 4 error LNK2001: неразрешенный внешний символ "dWorldExportDIF" D:\Games\FX-Ray 1.0007\src\xrODE\contrib\msvc7\ode_default\msvcdefs.def ode_default
Ошибка 3 error LNK2001: неразрешенный внешний символ "dQuadTreeSpaceCreate" D:\Games\FX-Ray 1.0007\src\xrODE\contrib\msvc7\ode_default\msvcdefs.def ode_default
Stalker_Monolit
Всем доброй ночи у меня проблема с собранными сорцами ЧН, просел FPS до 10 и не повышается на Статическом освещении, когда запускаю оригинальные от ГСК то там у меня FPS больше 100 показывает dry.gif в чем может быть причина я не знаю сорци не правил на остальных настройках тоже все норм кажется laugh.gif заметил когда переключил в настройках.
nikita_nz1986
Вопрос снят, с Божьей помощью решил.
nikita_nz1986
Кто знает почему так
Код
Код
Ошибка    3    error C2065: GetInvGridRect: необъявленный идентификатор    X:\xrGame\ui\UIArtefactPanel.cpp    37    1    xrGame
Ошибка    5    error C2065: GetInvGridRect: необъявленный идентификатор    X:\xrGame\ui\UIArtefactPanel.cpp    38    1    xrGame
Ошибка    6    error C2065: GetInvGridRect: необъявленный идентификатор    X:\xrGame\ui\UIArtefactPanel.cpp    39    1    xrGame
Ошибка    7    error C2065: GetInvGridRect: необъявленный идентификатор    X:\xrGame\ui\UIArtefactPanel.cpp    40    1    xrGame
Ошибка    4    error C2039: GetYPos: не является членом "CArtefact"    X:\xrGame\ui\UIArtefactPanel.cpp    38    1    xrGame
Ошибка    2    error C2039: GetXPos: не является членом "CArtefact"    X:\xrGame\ui\UIArtefactPanel.cpp    37    1    xrGame

В коде ничего не менял, файлы Artefact.cpp и Artefact.h идентичны файлам из тч, что не так?
MegaNub
Цитата(Forser @ 03.08.2015, 20:50) *
Кто-нибудь OpenDE пытался обновить?

Зачем? Если делать нечего, тогда лучше прикручивай что-нибудь другое, нежели обновление ODE.

Цитата(Stalker_Monolit @ 04.08.2015, 01:01) *
просел FPS до 10

На какой конфигурации собраны?
Tron
Цитата(Forser @ 03.08.2015, 19:50) *
Кто-нибудь OpenDE пытался обновить?

Я этим занимался,но я скорее понижал версию,пытаясь найти ту на которой базировались GSC
Stalker_Monolit
Цитата(MegaNub @ 04.08.2015, 07:21) *
На какой конфигурации собраны?

Собрал в режиме Mixed а разве это влияет?
nikita_nz1986
Цитата(nikita_nz1986 @ 04.08.2015, 07:57) *
Кто знает почему так
Код
Код
Ошибка    3    error C2065: GetInvGridRect: необъявленный идентификатор    X:\xrGame\ui\UIArtefactPanel.cpp    37    1    xrGame
Ошибка    5    error C2065: GetInvGridRect: необъявленный идентификатор    X:\xrGame\ui\UIArtefactPanel.cpp    38    1    xrGame
Ошибка    6    error C2065: GetInvGridRect: необъявленный идентификатор    X:\xrGame\ui\UIArtefactPanel.cpp    39    1    xrGame
Ошибка    7    error C2065: GetInvGridRect: необъявленный идентификатор    X:\xrGame\ui\UIArtefactPanel.cpp    40    1    xrGame
Ошибка    4    error C2039: GetYPos: не является членом "CArtefact"    X:\xrGame\ui\UIArtefactPanel.cpp    38    1    xrGame
Ошибка    2    error C2039: GetXPos: не является членом "CArtefact"    X:\xrGame\ui\UIArtefactPanel.cpp    37    1    xrGame

В коде ничего не менял, файлы Artefact.cpp и Artefact.h идентичны файлам из тч, что не так?

Прошу прощения за оффтоп, но с Божьей помощью исправил. laugh.gif
ForserX
Цитата(MegaNub @ 04.08.2015, 08:21) *
Зачем? Если делать нечего, тогда лучше прикручивай что-нибудь другое, нежели обновление ODE.

Меня OpenDE устраивает и интересно посмотреть на его новую версию.
ForserX
Цитата(Stalker_Monolit @ 04.08.2015, 09:15) *
Собрал в режиме Mixed а разве это влияет?

Режимы влияют на производительность:
Debug - добавляет в код различные проверки на работоспособность
Mixed - микс Debug и Release
Release - релизная сборка.
Как-то так.
RedMagic
Цитата(Forser @ 04.08.2015, 10:25) *
Release - релизная сборка.

Добавлю что там ещё компилятор делает оптимизацию кода, из-за чего иногда Release версия работает не так как Debug версия.
ForserX
Цитата(STALKER2011x @ 04.08.2015, 11:44) *
Цитата(Forser @ 04.08.2015, 10:25) *
Release - релизная сборка.

Добавлю что там ещё компилятор делает оптимизацию кода, из-за чего иногда Release версия работает не так как Debug версия.

Оптимизацию кода можно в настройках включить/выключить. Но в целом - да.
MegaNub
Цитата(Forser @ 04.08.2015, 11:01) *
Меня OpenDE устраивает и интересно посмотреть на его новую версию.

Всё равно не понимаю смысла.
nikita_nz1986
С Божьей помощью почти закончил пда делать и худ.
Видео
Shoкer
Вообщем в продолжение прошлого поста.

Как я уже писал в том посте - 12.f это максимальные\минимальные координаты вертекса относительно центра модели.
Это число не только влияет на размер модели, но также на её качество.

Т.к 4-байтный float пакуется в 2-байтный short, то с помощью этого числа можно было жертвовать размером модели, оставляя больше бит на точность, и наоборот - жертвовать точностью ради размера модели. GSC остановились на среднем значении в 12 метров.

Для сравнения:

Так модель должна выглядеть в идеале (тут есть косяки, но на скрине их не видно)


Так она выглядит в оригинале


Так она выглядит, если вместо 12.f взять 1.f


На первый взгляд кажется нормальной, однако по сравнению с "идеалом" можно увидеть угловатость и пару проблемных мест.

А вот модель игрока - как видно выше 1 метра модель обрезалась:


А так она выглядит, если вместо 12.f взять 24.f, разница на лицо

Максимальная длина модели увеличивается до 24 метров, однако точность падает в разы.

Причём сама модель в ogf-е нормальная. Её ломает игра при рендеринге.


Собственно для оптимизации игры координаты вертексов (+ текстурные координаты) и пакуются в 2 байта.
Однако если не паковать координаты, а передавать их как float, то мы:

1) Получим качество модели как на 3-ем скрине. (не идеальное, к слову - нужно выделить больше бит на точность, и поменьше на длину)
2) Значительно поднимем максимальные размеры модели, а на практике избавляемся от лимитов.



Конечно побочным эффектом этого становится пока неопределённое падение производительности (каждый вертекс кушает на 2 байта видеопамяти больше, как минимум), однако ничего не мешает рендерить в высоком качестве только определённые модели, указывая их в каком нибудь ltx или в самом ogf-е файле флаг добавить.

Файлы тестов выложу чуть попозже, хочу ещё кое что доделать. Но если кому то интересно, то в движке менялся лишь файл FSkinned.cpp, а в шейдерах файл r2\skin.h.

PS: Причём это же вполне возможно касается и текстур. Ещё не тестировал, но м.б удастся поднять их чёткость.
RayTwitty
Shoкer, было бы неплохо во всех 3-х играх запилить возможность юзать нормальные качественные модели, которые бы не коцались экспортером\игрой.

Еще, надо бы добавить поддержку 16-битных анимаций в двиг и в СДК...
Stalker_Monolit
CODE
Ошибка 2 error C2039: UITitleText: не является членом "CUIFrameLineWnd" x:\engine\xrGame\UIEncyclopediaWnd.cpp 125
Ошибка 3 error C2228: выражение слева от ".SetText" должно представлять класс, структуру или объединение x:\engine\xrGame\UIEncyclopediaWnd.cpp 125
Ошибка 4 error C2027: использование неопределенного типа "CUIEncyclopediaWnd" x:\engine\xrGame\ui\UIPdaWnd.cpp 101
Ошибка 5 error C2227: выражение слева от "->Init" должно указывать на тип класса, структуры или объединения либо на универсальный тип x:\engine\xrGame\ui\UIPdaWnd.cpp 101
Ошибка 6 error C2440: =: невозможно преобразовать 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 205
Ошибка 7 error C2446: ==: нет преобразования 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 282
Ошибка 8 error C2440: ==: невозможно преобразовать 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 282

Вечер провозился с этой энциклопедией которую я хочу впилят в ПДА ЧН но пока не получается, пока на этом остановился. Может у кого есть уже готовый? huh.gif
nikita_nz1986
Цитата(Stalker_Monolit @ 05.08.2015, 03:24) *
CODE
Ошибка 2 error C2039: UITitleText: не является членом "CUIFrameLineWnd" x:\engine\xrGame\UIEncyclopediaWnd.cpp 125
Ошибка 3 error C2228: выражение слева от ".SetText" должно представлять класс, структуру или объединение x:\engine\xrGame\UIEncyclopediaWnd.cpp 125
Ошибка 4 error C2027: использование неопределенного типа "CUIEncyclopediaWnd" x:\engine\xrGame\ui\UIPdaWnd.cpp 101
Ошибка 5 error C2227: выражение слева от "->Init" должно указывать на тип класса, структуры или объединения либо на универсальный тип x:\engine\xrGame\ui\UIPdaWnd.cpp 101
Ошибка 6 error C2440: =: невозможно преобразовать 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 205
Ошибка 7 error C2446: ==: нет преобразования 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 282
Ошибка 8 error C2440: ==: невозможно преобразовать 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 282

Вечер провозился с этой энциклопедией которую я хочу впилят в ПДА ЧН но пока не получается, пока на этом остановился. Может у кого есть уже готовый? huh.gif

А зачем?Я ведь тоже самое пилю, скоро солью бету.

Цитата(Stalker_Monolit @ 05.08.2015, 03:24) *
Вечер провозился с этой энциклопедией которую я хочу впилят в ПДА ЧН но пока не получается, пока на этом остановился. Может у кого есть уже готовый? huh.gif

Иль ты хочешь впереди планеты всей?
SkyLoader
Раз тов.Shoкer решил полезной инфы скинуть, внесу свои две лепты smile.gif
Копался в полосе загрузки, нашел ошибку, по которой полоса загрузки рисуется не совсем корректно в синглплеере в ЗП. В x_ray.cpp есть такой код:
Код
void CApplication::LoadStage()
{
    load_stage++;
    VERIFY(ll_dwReference);
    Msg("* phase time: %d ms", phase_timer.GetElapsed_ms());
    phase_timer.Start();
    Msg("* phase cmem: %d K", Memory.mem_usage() / 1024);

    if (g_pGamePersistent->GameType()==1 && strstr(Core.Params,"alife"))
        max_load_stage = 17;
    else
        max_load_stage = 14;
    LoadDraw();
}


Как можно заметить по названию, max_load_stage, это переменная, которая показывает количество стадий загрузки, т.е. загрузка моделей, шейдеров, звуков, синхронизация объектов и тд. В сингле их целых 17, в мультиплеере 14.
Вот эту переменную потом получает рендер и рисует шкалу загрузки в соответствии с текущей стадией загрузки. Но тут есть ошибка, а именно сравнение strstr(Core.Params,"alife"). Но у нас никогда не происходит такого, так как никто не пишет батник запуска игры с добавлением alife biggrin.gif Именно это и проверяется. Из-за этого для игры переменная max_load_stage всегда равна 14. Поэтому в ЗП полоса загрузки очень быстро достигает конца и долго висит.
Скорее всего разраб хотел проверить существование "alife", который мы видим в скрипте ui_main_menu.script в функции старта новой игры:
Код
console:execute("start server(all/single/alife/new) client(localhost)")


В общем, надо сделать нормальную проверку на наличие "alife" в параметрах игры. Выглядит примерно так:

Код
void CApplication::LoadStage()
{
    load_stage++;
    VERIFY(ll_dwReference);
    Msg("* phase time: %d ms", phase_timer.GetElapsed_ms());
    phase_timer.Start();
    Msg("* phase cmem: %d K", Memory.mem_usage() / 1024);

    typedef IGame_Persistent::params params;
    params    &p = g_pGamePersistent->m_game_params;
    if (g_pGamePersistent->GameType() == eGameIDSingle && !xr_strcmp(p.m_alife, "alife"))
        max_load_stage = 17;
    else
        max_load_stage = 14;
    LoadDraw();
}


Теперь полоса загрузки будет более плавно идти.
Как я понял, такая ошибка есть и в ТЧ и в ЧН.
-StalkMen-
SkyLoader,
Разве этого мало?
Код
g_pGamePersistent->GameType() == eGameIDSingle
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.