[SoC] Модострой: вопросница
|
|
|
Overfirst
Воскресенье, 31.12.2017, 13:17 | Сообщение # 1
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
[SoC] Модострой: вопросница
Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
|
|
Воскресенье, 31.12.2017, 13:17
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
Время Альянса
Статус: |
|
Ветеран: |
|
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
BeeRsek, Проблема не в этом.
|
|
Вторник, 09.01.2018, 18:34
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
BeeRsek
Вторник, 09.01.2018, 18:54 | Сообщение # 47
Тайна Зоны: История Стрелка
Статус: |
|
Опытный: |
|
Сообщений: |
1308 |
Награды: |
7 |
Регистрация: |
24.01.2011 |
|
снизил настройки компиляции - пошло дальше, но после просчета лайтмапов,на стадии Converting to OGFs выдало такое:
FATAL ERROR
[error]Expression : assertion failed [error]Function : OGF::Optimize [error]File : I:\xray-svn\xrLC\OGF_Face.cpp [error]Line : 153 [error]Description : x_faces.size() == faces.size()
|
|
Вторник, 09.01.2018, 18:54
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
24.01.2011 |
|
|
|
|
|
xr_Sanya
Вторник, 09.01.2018, 21:07 | Сообщение # 48
Статус: |
|
Бывалый: |
|
Сообщений: |
876 |
Награды: |
4 |
Регистрация: |
19.08.2015 |
|
BeeRsek, Проверьте модели, какая то модель не может конвертироваться в OGF из за того что компилятор не может разбить полигоны на более мелкие, еще такая ошибка возможна если криво декомпилированную локацию заного пытаются скомпилить
Сообщение отредактировал xr_Sanya - Вторник, 09.01.2018, 21:21
|
|
Вторник, 09.01.2018, 21:07
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
19.08.2015 |
|
|
|
|
|
Graff46
Среда, 10.01.2018, 22:46 | Сообщение # 49
Новое Время
Статус: |
|
Бывалый: |
|
Сообщений: |
867 |
Награды: |
7 |
Регистрация: |
02.05.2013 |
|
Где есть описание класса LVL_CHNG? В lua_help его нет.
|
|
Среда, 10.01.2018, 22:46
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
02.05.2013 |
|
|
|
|
|
Jargon
Среда, 10.01.2018, 23:35 | Сообщение # 50
X-Ray Multiplayer Extension
Статус: |
|
Бывалый: |
|
Сообщений: |
1078 |
Награды: |
3 |
Регистрация: |
24.06.2012 |
|
Цитата Graff46 ( ) Где есть описание класса LVL_CHNG? В lua_help его нет. #define CLSID_LEVEL_CHANGER MK_CLSID('L','V','L','C','H','N','G','R') //Server and Client classes
Код //////////////////////////////////////////////////////////////////////////// // Module : xrServer_Objects_ALife.cpp // Created : 19.09.2002 // Modified : 04.06.2003 // Author : Oles Shyshkovtsov, Alexander Maksimchuk, Victor Reutskiy and Dmitriy Iassenev // Description : Server objects for ALife simulator //////////////////////////////////////////////////////////////////////////// // CSE_ALifeLevelChanger //////////////////////////////////////////////////////////////////////////// CSE_ALifeLevelChanger::CSE_ALifeLevelChanger(LPCSTR caSection) : CSE_ALifeSpaceRestrictor(caSection) { m_tNextGraphID = GameGraph::_GRAPH_ID(-1); m_dwNextNodeID = u32(-1); m_tNextPosition.set (0.f,0.f,0.f); m_tAngles.set (0.f,0.f,0.f); #ifdef XRSE_FACTORY_EXPORTS fp_data.inc (); #endif m_bSilentMode = FALSE; }
CSE_ALifeLevelChanger::~CSE_ALifeLevelChanger() { #ifdef XRSE_FACTORY_EXPORTS fp_data.dec (); #endif }
void CSE_ALifeLevelChanger::STATE_Read (NET_Packet &tNetPacket, u16 size) { inherited::STATE_Read (tNetPacket,size); if (m_wVersion < 34) { tNetPacket.r_u32 (); tNetPacket.r_u32 (); } else { tNetPacket.r (&m_tNextGraphID,sizeof(m_tNextGraphID)); tNetPacket.r_u32 (m_dwNextNodeID); tNetPacket.r_float (m_tNextPosition.x); tNetPacket.r_float (m_tNextPosition.y); tNetPacket.r_float (m_tNextPosition.z); if (m_wVersion <= 53) m_tAngles.set (0.f,tNetPacket.r_float(),0.f); else tNetPacket.r_vec3 (m_tAngles); } tNetPacket.r_stringZ (m_caLevelToChange); tNetPacket.r_stringZ (m_caLevelPointToChange);
if (m_wVersion > 116) m_bSilentMode = !!tNetPacket.r_u8();
}
void CSE_ALifeLevelChanger::STATE_Write (NET_Packet &tNetPacket) { inherited::STATE_Write (tNetPacket); tNetPacket.w (&m_tNextGraphID,sizeof(m_tNextGraphID)); tNetPacket.w_u32 (m_dwNextNodeID); tNetPacket.w_float (m_tNextPosition.x); tNetPacket.w_float (m_tNextPosition.y); tNetPacket.w_float (m_tNextPosition.z); tNetPacket.w_vec3 (m_tAngles); tNetPacket.w_stringZ (m_caLevelToChange); tNetPacket.w_stringZ (m_caLevelPointToChange); tNetPacket.w_u8 (m_bSilentMode?1:0); }
void CSE_ALifeLevelChanger::UPDATE_Read (NET_Packet &tNetPacket) { inherited::UPDATE_Read (tNetPacket); }
void CSE_ALifeLevelChanger::UPDATE_Write (NET_Packet &tNetPacket) { inherited::UPDATE_Write (tNetPacket); }
void CSE_ALifeLevelChanger::FillProps (LPCSTR pref, PropItemVec& items) { inherited::FillProps (pref,items); #ifdef XRSE_FACTORY_EXPORTS PHelper().CreateRList (items,PrepareKey(pref,*s_name,"Level to change"), &m_caLevelToChange, &*fp_data.level_ids.begin(), fp_data.level_ids.size()); #endif PHelper().CreateRText (items,PrepareKey(pref,*s_name,"Level point to change"), &m_caLevelPointToChange);
PHelper().CreateBOOL (items,PrepareKey(pref,*s_name,"Silent mode"), &m_bSilentMode); } //////////////////////////////////////////////////////////////////////////// // Module : level_changer.cpp // Created : 10.07.2003 // Modified : 10.07.2003 // Author : Dmitriy Iassenev // Description : Level change object ////////////////////////////////////////////////////////////////////////////
#include "stdafx.h" #include "level_changer.h" #include "hit.h" #include "actor.h" #include "xrserver_objects_alife.h" #include "level.h" #include "ai_object_location.h" #include "ai_space.h" #include "level_graph.h" #include "game_level_cross_table.h" #include "HudManager.h" #include "UIGameSP.h" #include "../xr_collide_form.h"
xr_vector<CLevelChanger*> g_lchangers;
CLevelChanger::~CLevelChanger () { }
void CLevelChanger::Center (Fvector& C) const { XFORM().transform_tiny (C,CFORM()->getSphere().P); }
float CLevelChanger::Radius () const { return CFORM()->getRadius (); }
void CLevelChanger::net_Destroy () { inherited ::net_Destroy (); xr_vector<CLevelChanger*>::iterator it = std::find(g_lchangers.begin(), g_lchangers.end(), this); if(it != g_lchangers.end()) g_lchangers.erase(it); }
BOOL CLevelChanger::net_Spawn (CSE_Abstract* DC) { m_entrance_time = 0; CCF_Shape *l_pShape = xr_new<CCF_Shape>(this); collidable.model = l_pShape; CSE_Abstract *l_tpAbstract = (CSE_Abstract*)(DC); CSE_ALifeLevelChanger *l_tpALifeLevelChanger = smart_cast<CSE_ALifeLevelChanger*>(l_tpAbstract); R_ASSERT (l_tpALifeLevelChanger);
m_game_vertex_id = l_tpALifeLevelChanger->m_tNextGraphID; m_level_vertex_id = l_tpALifeLevelChanger->m_dwNextNodeID; m_position = l_tpALifeLevelChanger->m_tNextPosition; m_angles = l_tpALifeLevelChanger->m_tAngles;
m_bSilentMode = !!l_tpALifeLevelChanger->m_bSilentMode; if (ai().get_level_graph()) { //. this information should be computed in xrAI ai_location().level_vertex (ai().level_graph().vertex(u32(-1),Position())); ai_location().game_vertex (ai().cross_table().vertex(ai_location().level_vertex_id()).game_vertex_id()); }
feel_touch.clear (); for (u32 i=0; i < l_tpALifeLevelChanger->shapes.size(); ++i) { CSE_Shape::shape_def &S = l_tpALifeLevelChanger->shapes[i]; switch (S.type) { case 0 : { l_pShape->add_sphere(S.data.sphere); break; } case 1 : { l_pShape->add_box(S.data.box); break; } } }
BOOL bOk = inherited::net_Spawn(DC); if (bOk) { l_pShape->ComputeBounds (); Fvector P; XFORM().transform_tiny (P,CFORM()->getSphere().P); setEnabled (TRUE); } g_lchangers.push_back (this); return (bOk); }
void CLevelChanger::shedule_Update(u32 dt) { inherited::shedule_Update (dt);
const Fsphere &s = CFORM()->getSphere(); Fvector P; XFORM().transform_tiny (P,s.P); feel_touch_update (P,s.R);
update_actor_invitation (); } #include "patrol_path.h" #include "patrol_path_storage.h" void CLevelChanger::feel_touch_new (CObject *tpObject) { CActor* l_tpActor = smart_cast<CActor*>(tpObject); VERIFY (l_tpActor); if (!l_tpActor->g_Alive()) return;
if (m_bSilentMode) { NET_Packet p; p.w_begin (M_CHANGE_LEVEL); p.w (&m_game_vertex_id,sizeof(m_game_vertex_id)); p.w (&m_level_vertex_id,sizeof(m_level_vertex_id)); p.w_vec3 (m_position); p.w_vec3 (m_angles); Level().Send(p,net_flags(TRUE)); return; } Fvector p,r; bool b = get_reject_pos(p,r); CUIGameSP *pGameSP = smart_cast<CUIGameSP*>(CurrentGameUI()); if (pGameSP) pGameSP->ChangeLevel (m_game_vertex_id, m_level_vertex_id, m_position, m_angles, p, r, b);
m_entrance_time = Device.fTimeGlobal; }
bool CLevelChanger::get_reject_pos(Fvector& p, Fvector& r) { p.set(0,0,0); r.set(0,0,0); //-- db.actor:set_actor_position(patrol("t_way"):point(0)) //-- local dir = patrol("t_look"):point(0):sub(patrol("t_way"):point(0)) //-- db.actor:set_actor_direction(-dir:getH())
if(m_ini_file && m_ini_file->section_exist("pt_move_if_reject")) { LPCSTR p_name = m_ini_file->r_string("pt_move_if_reject", "path"); const CPatrolPath* patrol_path = ai().patrol_paths().path(p_name); VERIFY (patrol_path); const CPatrolPoint* pt; pt = &patrol_path->vertex(0)->data(); p = pt->position();
Fvector tmp; pt = &patrol_path->vertex(1)->data(); tmp.sub (pt->position(),p); tmp.getHP (r.y,r.x); return true; } return false; }
BOOL CLevelChanger::feel_touch_contact (CObject *object) { BOOL bRes = (((CCF_Shape*)CFORM())->Contact(object)); bRes = bRes && smart_cast<CActor*>(object) && smart_cast<CActor*>(object)->g_Alive(); return bRes; }
void CLevelChanger::update_actor_invitation() { if(m_bSilentMode) return; xr_vector<CObject*>::iterator it = feel_touch.begin(); xr_vector<CObject*>::iterator it_e = feel_touch.end();
for(;it!=it_e;++it){ CActor* l_tpActor = smart_cast<CActor*>(*it); VERIFY (l_tpActor); if(!l_tpActor->g_Alive()) continue;
if(m_entrance_time+5.0f < Device.fTimeGlobal){ CUIGameSP* pGameSP = smart_cast<CUIGameSP*>(CurrentGameUI()); Fvector p,r; bool b = get_reject_pos(p,r); if(pGameSP) pGameSP->ChangeLevel(m_game_vertex_id,m_level_vertex_id,m_position,m_angles,p,r,b);
m_entrance_time = Device.fTimeGlobal; } } } //////////////////////////////////////////////////////////////////////////// // Module : level_changer.h // Created : 10.07.2003 // Modified : 10.07.2003 // Author : Dmitriy Iassenev // Description : Level change object ////////////////////////////////////////////////////////////////////////////
#pragma once
#include "GameObject.h" #include "../feel_touch.h" #include "game_graph_space.h"
class CLevelChanger : public CGameObject, public Feel::Touch { private: typedef CGameObject inherited;
private: GameGraph::_GRAPH_ID m_game_vertex_id; u32 m_level_vertex_id; Fvector m_position; Fvector m_angles; float m_entrance_time;
void update_actor_invitation (); bool m_bSilentMode; bool get_reject_pos(Fvector& p, Fvector& r);
public: virtual ~CLevelChanger (); virtual BOOL net_Spawn (CSE_Abstract* DC); virtual void net_Destroy (); virtual void Center (Fvector& C) const; virtual float Radius () const; virtual void shedule_Update (u32 dt); virtual void feel_touch_new (CObject* O); virtual BOOL feel_touch_contact (CObject* O);
virtual bool IsVisibleForZones() { return false;} };
Сообщение отредактировал Jargon - Среда, 10.01.2018, 23:36
|
|
Среда, 10.01.2018, 23:35
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
24.06.2012 |
|
|
|
|
|
Статус: |
|
Зевака: |
|
Сообщений: |
8 |
Награды: |
0 |
Регистрация: |
28.12.2017 |
|
Кто нибудь правил в окне диалога баг? Когда у ГГ фразы в окне диалога количество оver 9000 символов текст уходит за пределы окна.
|
|
Четверг, 11.01.2018, 17:02
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
28.12.2017 |
|
|
|
|
|
Время Альянса
Статус: |
|
Ветеран: |
|
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
Echostefun, Если имеете ввиду нет авто переноса, то включите его в этом элементе окна.
|
|
Четверг, 11.01.2018, 19:13
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
riper
Четверг, 11.01.2018, 19:14 | Сообщение # 53
Статус: |
|
Бывалый: |
|
Сообщений: |
612 |
Награды: |
6 |
Регистрация: |
11.08.2013 |
|
как правильно должен выглядеть файл sguad_descr_(имя локации ).ltx получаю вот такой вылет хотя вроде все делаю по уроку
FATAL ERROR [error]Expression : I [error]Function : CInifile::Load [error]File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp [error]Line : 256 [error]Description : Can't find include file: [error]Arguments : squad_descr_escape.ltx
Сообщение отредактировал riper - Четверг, 11.01.2018, 19:57
|
|
Четверг, 11.01.2018, 19:14
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.08.2013 |
|
|
|
|
|
atanda
Четверг, 11.01.2018, 20:04 | Сообщение # 54
Статус: |
|
Бывалый: |
|
Сообщений: |
672 |
Награды: |
7 |
Регистрация: |
12.07.2017 |
|
riper, вылет не в правильности настройки файла, а в том, что макрос(знаю, что в лтх он так не называется просто привык) не находит файл который включён. Решение: - Проверить название файла и то, что ты включаешь и исправить ошибку.Добавлено (11.01.2018, 20:04) --------------------------------------------- denis2000, я думаю он просто обращается к строке напрямую, а не через идентификатор в строковой таблице.
|
|
Четверг, 11.01.2018, 20:04
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
12.07.2017 |
|
|
|
|
|
riper
Четверг, 11.01.2018, 20:24 | Сообщение # 55
Статус: |
|
Бывалый: |
|
Сообщений: |
612 |
Награды: |
6 |
Регистрация: |
11.08.2013 |
|
buffy, Цитата buffy ( ) Проверить название файла и то, что ты включаешь и исправить ошибку. ка кого именно файла я что вообще запутался . может имя смарта большое
;Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.
[esc_smart_terrain_stalker_sguad]:online_offline_group faction = stalker npc = sim_default_stalker_1, sim_default_stalker_2 target_smart = esc_smart_terrain;spawn_point = esc_smart_terrain_ spawn_point story_id = esc_smart_terrain_stalker_sguad
Сообщение отредактировал riper - Четверг, 11.01.2018, 20:25
|
|
Четверг, 11.01.2018, 20:24
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.08.2013 |
|
|
|
|
|
Khyzyr
Четверг, 11.01.2018, 20:40 | Сообщение # 56
Статус: |
|
Неопытный: |
|
Сообщений: |
452 |
Награды: |
5 |
Регистрация: |
19.06.2017 |
|
riper, В чем ты мог запутаться? Вылет говорит о том, что у тебя нет файла squad_descr_escape.ltxДобавлено (11.01.2018, 20:40) --------------------------------------------- Проверяй папку configs/misc
|
|
Четверг, 11.01.2018, 20:40
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
19.06.2017 |
|
|
|
|
|
makdm
Четверг, 11.01.2018, 21:05 | Сообщение # 57
Время Альянса
Статус: |
|
Опытный: |
|
Сообщений: |
1787 |
Награды: |
19 |
Регистрация: |
22.11.2012 |
|
riper, тебе уже всё объяснили. Открываешь файл squad_descr.ltx В него пишешь: #include "squad_descr_escape.ltx" Только всё это работает для ЗП, а не для ТЧ.
Сообщение отредактировал makdm - Четверг, 11.01.2018, 21:07
|
|
Четверг, 11.01.2018, 21:05
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
22.11.2012 |
|
|
|
|
|
sine
Пятница, 12.01.2018, 00:39 | Сообщение # 58
Последний день
Статус: |
|
Новичок: |
|
Сообщений: |
305 |
Награды: |
1 |
Регистрация: |
14.09.2010 |
|
Ребят, в ЗП НПС научили открывать двери, изучив файлы ЗП, у меня почти получилось перенести эту фичу в ТЧ, но упираюсь в некоторые функции, ссылки на которые есть только в lua_help.script. Есть ли у кого скрипт, который позволяет НПС открыть дверь?
Сообщение отредактировал sine - Пятница, 12.01.2018, 00:39
|
|
Пятница, 12.01.2018, 00:39
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
14.09.2010 |
|
|
|
|
|
Время Альянса
Статус: |
|
Ветеран: |
|
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
sine, А чего конкретно и в каком месте не хватает?
|
|
Пятница, 12.01.2018, 11:01
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
sine
Пятница, 12.01.2018, 15:07 | Сообщение # 60
Последний день
Статус: |
|
Новичок: |
|
Сообщений: |
305 |
Награды: |
1 |
Регистрация: |
14.09.2010 |
|
denis2000, да уже не суть важно. Я так понял, что таких функции вообще нет в тч. Я тут ковыряю LWO, нашел где реализовано это, но не могу ни как заставить работать у себя. Что этому делу вообще нужно для работы?
|
|
Пятница, 12.01.2018, 15:07
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
14.09.2010 |
|
|
|
|