Кот Смерч 0 Опубликовано 6 Января 2020 День добрый! Может не совсем в ту тему пишу: пытаюсь собрать исходники СДК 0.7 в борланде, при компиляции такая ошибка выскакивает: Может кто знает в чем причина? Поделиться этим сообщением Ссылка на сообщение
Кот Смерч 0 Опубликовано 16 Января 2020 День добрый, ЗП - где в классе болта указано что он бесконечный? Поделиться этим сообщением Ссылка на сообщение
Кот Смерч 0 Опубликовано 28 Января 2020 Добрый день, есть метательный нож на классе болта. Все отлично работает, но есть нюанс: если метнуть нож в НПС который в данный момент выполняет работу на смарт кавере - хит нпс не наносится - hit_callback вообще не срабатывает. Для дефолтных работ на смарт каверах (типа stay_table, stay_wall - без указания Available_animations в логике) хит не срабатывает всегда, если указать другую анимку, то с некоторым хит срабатывает (например с ward), с некоторыми (jup_b41_novikov_stand) нет. Подскажите, как можно исправить эту проблему, из-за чего может не срабатывать хит каллбек? Поделиться этим сообщением Ссылка на сообщение
Кот Смерч 0 Опубликовано 29 Января 2020 (изменено) Движок ЗП 1.6.02 Объект на классе болта, вот сам класс Скрытый текст CBolt::CBolt(void) { } CBolt::~CBolt(void) { } void CBolt::Load(LPCSTR section) { inherited::Load(section); } BOOL CBolt::net_Spawn(CSE_Abstract* DC) { BOOL ret = CHudItemObject::net_Spawn(DC); m_thrown = false; return ret; } void CBolt::net_Destroy() { CHudItemObject::net_Destroy(); } void CBolt::OnH_B_Independent(bool just_before_destroy) { CHudItemObject::OnH_B_Independent(just_before_destroy); } void CBolt::OnH_A_Independent() { inherited::OnH_A_Independent(); } void CBolt::OnH_A_Chield() { inherited::OnH_A_Chield(); CObject* o= H_Parent()->H_Parent(); if (o) SetInitiator(o->ID()); } void CBolt::State(u32 state) { switch (state) { case eThrowStart: { Fvector C; Center(C); }break; case eThrowEnd: { if (m_thrown) { if (m_pPhysicsShell) m_pPhysicsShell->Deactivate(); xr_delete(m_pPhysicsShell); PutNextToSlot(); if (Local()) { DestroyObject(); } }; }break; }; inherited::State(state); } bool CBolt::DropBolt() { EMissileStates bolt_state = static_cast<EMissileStates>(GetState()); if (((bolt_state == eThrowStart) || (bolt_state == eReady) || (bolt_state == eThrow)) && (!m_thrown) ) { Throw(); return true; } return false; } void CBolt::DiscardState() { if (GetState() == eReady || GetState() == eThrow) OnStateSwitch(eIdle); } void CBolt::SendHiddenItem() { if (GetState() == eThrow) { Throw(); } CActor* pActor = smart_cast<CActor*>(m_pInventory->GetOwner()); if (pActor && (GetState() == eReady || GetState() == eThrow)) { return; } inherited::SendHiddenItem(); } void CBolt::Throw() { if (m_thrown) return; if (!m_fake_missile) return; inherited::Throw(); m_fake_missile->processing_activate(); m_thrown = true; } void CBolt::Destroy() { } bool CBolt::Useful() const { return (TestServerFlag(CSE_ALifeObject::flCanSave)); } void CBolt::OnEvent(NET_Packet& P, u16 type) { inherited::OnEvent(P, type); } void CBolt::PutNextToSlot() { if (OnClient()) return; VERIFY(!getDestroy()); NET_Packet P; if (m_pInventory) { m_pInventory->Ruck(this); this->u_EventGen(P, GEG_PLAYER_ITEM2RUCK, this->H_Parent()->ID()); P.w_u16(this->ID()); this->u_EventSend(P); } else Msg("! PutNextToSlot : m_pInventory = NULL [%d][%d]", ID(), Device.dwFrame); if (smart_cast<CInventoryOwner*>(H_Parent()) && m_pInventory) { CBolt *pNext = smart_cast<CBolt*>(m_pInventory->Same(this, true)); VERIFY(pNext != this); if (pNext && m_pInventory->Slot(pNext->BaseSlot(), pNext)) { pNext->u_EventGen(P, GEG_PLAYER_ITEM2SLOT, pNext->H_Parent()->ID()); P.w_u16(pNext->ID()); P.w_u16(pNext->BaseSlot()); pNext->u_EventSend(P); m_pInventory->SetActiveSlot(pNext->BaseSlot()); } else { CActor* pActor = smart_cast<CActor*>(m_pInventory->GetOwner()); if (pActor) pActor->OnPrevWeaponSlot(); } m_thrown = false; } } void CBolt::OnAnimationEnd(u32 state) { switch (state) { case eHiding: { setVisible(FALSE); SwitchState(eHidden); } break; case eShowing: { setVisible(TRUE); SwitchState(eIdle); } break; case eThrowStart: { if (!m_fake_missile && !smart_cast<CMissile*>(H_Parent())) { Level().spawn_item(*cNameSect(),Position(), (g_dedicated_server) ? u32(-1) : ai_location().level_vertex_id(), ID(), false); } if (m_throw) SwitchState(eThrow); else SwitchState(eReady); } break; case eThrow: { SwitchState(eThrowEnd); } break; case eThrowEnd: { SwitchState(eHidden); } break; default: inherited::OnAnimationEnd(state); } } void CBolt::UpdateCL() { inherited::UpdateCL(); } bool CBolt::Action(u16 cmd, u32 flags) { if (inherited::Action(cmd, flags)) return true; switch (cmd) { //переключение типа болтов case kWPN_NEXT: { if (flags&CMD_START) { if (m_pInventory) { TIItemContainer::iterator it = m_pInventory->m_ruck.begin(); TIItemContainer::iterator it_e = m_pInventory->m_ruck.end(); for (; it != it_e; ++it) { CBolt *pBolt = smart_cast<CBolt*>(*it); if (pBolt && xr_strcmp(pBolt->cNameSect(), cNameSect())) { m_pInventory->Ruck(this); m_pInventory->SetActiveSlot(NO_ACTIVE_SLOT); m_pInventory->Slot(pBolt->BaseSlot(), pBolt); return true; } } return true; } } return true; }; } return false; } BOOL CBolt::UsedAI_Locations() { return inherited::UsedAI_Locations(); } void CBolt::net_Relcase(CObject* O) { inherited::net_Relcase(O); } void CBolt::DeactivateItem() { //Drop bolt if primed StopCurrentAnimWithoutCallback(); if (!GetTmpPreDestroy() && Local() && (GetState() == eThrowStart || GetState() == eReady || GetState() == eThrow)) { if (m_fake_missile) { CBolt* pBolt = smart_cast<CBolt*>(m_fake_missile); if (pBolt) { if (m_pInventory->GetOwner()) { CActor* pActor = smart_cast<CActor*>(m_pInventory->GetOwner()); if (pActor) { if (!pActor->g_Alive()) { m_constpower = false; m_fThrowForce = 0; } } } Throw(); }; }; }; inherited::DeactivateItem(); } bool CBolt::GetBriefInfo(II_BriefInfo& info) { VERIFY(m_pInventory); info.clear(); info.name._set(m_nameShort); info.icon._set(cNameSect()); u32 ThisBoltCount = m_pInventory->dwfGetSameItemCount(cNameSect().c_str(), true); string16 stmp; xr_sprintf(stmp, "%d", ThisBoltCount); info.cur_ammo._set(stmp); return true; } void CBolt::SetInitiator(u16 id) { m_thrower_id = id; } u16 CBolt::Initiator() { return m_thrower_id; } void CBolt::activate_physic_shell() { inherited::activate_physic_shell (); m_pPhysicsShell->SetAirResistance (.0001f); } using namespace luabind; #pragma optimize("s",on) void CBolt::script_register(lua_State *L) { module(L) [ class_<CBolt, CGameObject>("CBolt") .def(constructor<>()) ]; } Изменено 29 Января 2020 пользователем W.A.S.P. спойлер Поделиться этим сообщением Ссылка на сообщение
Кот Смерч 0 Опубликовано 16 Сентября 2020 Где можно найти рабочие исходники SDK 0.7? Те что идут с исходниками движка скомпилил, но сдк не запустился. Да и размер LevelEditor.exe у меня получился 2.1 мб, а в сдк этот файл 2.4 весит. Т.е. скорее всего исходники не полные. Поделиться этим сообщением Ссылка на сообщение
Кот Смерч 0 Опубликовано 17 Сентября 2020 18 часов назад, AndreySol сказал: А исходники движка вы откуда взяли? Так, вот к ним и прилагается, обычно, все что необходимо для сборки. Качал еще очень давно, архив называется X-Ray_Engine_source_code С самими исходниками движка проблем нет. Интересуют исходники СДК, собрать то их получается, но сам СДК с новыми LevelEditor.exe, ActorEditor.exe не загружается вообще. И ошибок никаких не выдает. Поделиться этим сообщением Ссылка на сообщение
Кот Смерч 0 Опубликовано 24 Марта 2021 День добрый, есть объект CCar, к нему приаттачиваю объект из инвентаря ГГ, т.е. для предмета указываю родителем (H_SetParent) текущий объект. Проблема в том что после сейв-лоада попытка найти объект с таким айди как у приаттаченого предмета возвращает null Как это исправить? void CCar::OnEvent(NET_Packet& P, u16 type) { inherited::OnEvent (P,type); CExplosive::OnEvent (P,type); //обработка сообщений, нужных для работы с багажником машины u16 id; switch (type) { case GE_OWNERSHIP_TAKE: { P.r_u16(id); CObject* itm = Level().Objects.net_Find(id); m_trunk_items.push_back(id); itm->H_SetParent(this); itm->setVisible(FALSE); itm->setEnabled(FALSE); }break; } } Поделиться этим сообщением Ссылка на сообщение
Кот Смерч 0 Опубликовано 15 Апреля 2021 Добрый день, кто то пытался решить проблему в ЗП с проваливаем авто под террейн после перехода на другую локацию? В каком направлении копать чтобы это исправить? Поделиться этим сообщением Ссылка на сообщение
Кот Смерч 0 Опубликовано 9 Сентября 2021 День добрый, пытаюсь собрать СДК, при компиляции проекта LevelEditor вылазит ошибка [C++ Error] ddraw.h(146): E2141 Declaration syntax error Full parser context LevelEditor.cpp(1): #include L:\cop\project\engine.vc2008\editors\LevelEditor\stdafx.h stdafx.h(98): #include c:\program files (x86)\borland\cbuilder6\include\dsound.h dsound.h(14): #include l:\cop\project\sdk\DXSDK\Include\d3dtypes.h d3dtypes.h(36): #include l:\cop\project\sdk\DXSDK\Include\ddraw.h Ругается на строку extern _Check_return_ HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext ); Кто нибудь знает как это можно исправить? Поделиться этим сообщением Ссылка на сообщение