Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, сыграть в увлекательные ФРПГ, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Одновременно наверное не может быть, надо проверять. Вообще у него проверка на фокус в принципе там ничо не даст мне кажется. Вернее полностью не решит проблему.
MW 7, тебе проверка this->useWithItem.CompareI(FocusHero->useWithItem) вообще не нужна, ты по фокусу выше уже сравниваешь. Да и сам фокус не очень идея. Если я правильно понял что ты хочешь, попробуй такой, немного костыльный вариант.
Daedalus:
func int C_MobInter_UseWithItem(var string sceme, var int useWithItem)
{
Hlp_PrintConsole(Str_Format(" call C_MobInter_UseWithItem useWithItem: %i, sceme: %s", useWithItem, sceme));
return ItMiSwordRaw;
};
C++:
// Supported with union (c) 2020 Union team
// User API for oCMobInter
// Add your methods here
int GetUseWithItem_New();
int CanInteractWith_New(oCNpc*);
C++:
void Game_Loop() {
GetUseWithItemGameLoop();
}
C++:
// Supported with union (c) 2020 Union team
// Union SOURCE file
namespace GOTHIC_ENGINE {
// Add your code here . . .
oCMobInter* lastPlayerMobInter = nullptr;
HOOK Ivk_oCMobInter_CanInteractWith_New PATCH(&oCMobInter::CanInteractWith, &oCMobInter::CanInteractWith_New);
int oCMobInter::CanInteractWith_New(oCNpc* npc) {
if (player == npc) {
lastPlayerMobInter = this;
}
return THISCALL(Ivk_oCMobInter_CanInteractWith_New)(npc);
}
HOOK Ivk_oCMobInter_GetUseWithItem_New PATCH(&oCMobInter::GetUseWithItem, &oCMobInter::GetUseWithItem_New);
int oCMobInter::GetUseWithItem_New() {
if (player && this == lastPlayerMobInter) {
int sym_index = parser->GetIndex("C_MobInter_UseWithItem");
if (sym_index != -1) {
int idxUseWithItem = parser->GetIndex(this->useWithItem);
if (idxUseWithItem != -1) {
parser->datastack.Push(reinterpret_cast<int>(&this->sceme));
parser->datastack.Push(zPAR_TOK_PUSHVAR);
parser->datastack.Push(idxUseWithItem);
parser->datastack.Push(zPAR_TOK_PUSHINT);
parser->DoStack(parser->GetSymbol(sym_index)->single_intdata);
zCPar_Symbol* newUseWithItemSym = parser->GetSymbolInfo(parser->PopDataValue());
if (newUseWithItemSym) {
zSTRING old = Z this->useWithItem;
this->SetUseWithItem(newUseWithItemSym->name);
int resCall = THISCALL(Ivk_oCMobInter_GetUseWithItem_New)();
this->SetUseWithItem(old);
return resCall;
}
}
}
}
return THISCALL(Ivk_oCMobInter_GetUseWithItem_New)();
}
void GetUseWithItemGameLoop() {
if (player && !player->GetInteractMob() && lastPlayerMobInter) {
lastPlayerMobInter = nullptr;
}
}
}
В примере при взаимодействии с ведром с водой игрок будет доставать ItMiSwordRaw
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.