HGn
Участник форума
- Регистрация
- 25 Июн 2013
- Сообщения
- 32
- Благодарности
- 0
- Баллы
- 155
Я взял этот доспех с просторов интернета, анимация изначально была скомпилирована.А откуда взялся скомпилированный вариант, если нет asc-исходника?
Я взял этот доспех с просторов интернета, анимация изначально была скомпилирована.А откуда взялся скомпилированный вариант, если нет asc-исходника?
Не уверен, но попробуй прописать свой доспех в MDS-файле по аналогии с другими доспехами и декомпилируй после этого.
Так, вероятно я что-то не так делаю. Я скопировал .mdm доспеха в Gothic II\_work\Data\Anims\_compiled. С помощью ГотикСоурсера открыл HumanS.mds, в раздел // Armor-Meshes добавил registerMesh ("ARMOR_NOV_D.ASC") по аналогии с другими доспехами. Сохранил HumanS.mds, выбрал декомпиляцию (mds или msb), указал пустую папку в качестве рабочей, а в качестве модели указал Humans.msb. После декомпиляции проверил рабочую папку, там были все .asc кроме нужного мне. Вероятно нужно было сначала запустить игру и задействовать этот доспех?
временно замени любую стандартную MDM'ку своей (назови свою любой готической), декомпильни HUMANS.mds и будет тебе счастье...
instance ItLsTorchburned(C_Item)
{
name = "Сгоревший факел";
mainflag = ITEM_KAT_NONE;
flags = ITEM_MULTI;
value = 0;
visual = "ItLs_Torchburned_01.3ds";
scemeName = "DRAWTORCH";
material = MAT_WOOD;
description = name;
};
ani ("t_DrawTorch_Stand_2_S0" 1 "s_DrawTorch_S0" 0.1 0.1 M. "Hum_DrawTorch_M01.asc" F 0 4)
aniAlias ("t_DrawTorch_S0_2_Stand" 1 "" 0.1 0.1 M. "t_DrawTorch_Stand_2_S0" R)
ani ("s_DrawTorch_S0" 1 "s_DrawTorch_S0" 0.0 0.0 M. "Hum_DrawTorch_M01.asc" F 5 5)
ani ("t_DrawTorch_S0_2_S1" 1 "s_DrawTorch_S1" 0.1 0.1 M. "Hum_DrawTorch_M01.asc" F 6 13)
{
*eventTag (6 "DEF_CREATE_ITEM" "ZS_LEFTHAND" "ItLsTorchburning")
}
ani ("s_DrawTorch_S1" 1 "s_DrawTorch_S1" 0.1 0.1 MI "Hum_Torch_RunAmbient_M01.asc" F 0 50 FPS:5)
ani ("t_DrawTorch_S1_2_S0" 1 "s_DrawTorch_S0" 0.1 0.1 M. "Hum_DrawTorch_M01.asc" R 6 13)
{
*eventTag (6 "DEF_DESTROY_ITEM")
}
CreateInvItem(self,ItLsTorchburned);
AI_UseItemToState(self,ItLsTorchburned,1);
AI_UseItemToState(self,ItLsTorchburned,-1);
ani ("t_DrawTorch_Stand_2_S0" 1 "s_DrawTorch_S0" 0.1 0.1 M. "Hum_RunAmbient_M01.asc" F 1 1)
aniAlias ("t_DrawTorch_S0_2_Stand" 1 "" 0.1 0.1 M. "t_DrawTorch_Stand_2_S0" R)
ani ("s_DrawTorch_S0" 1 "s_DrawTorch_S0" 0.0 0.0 M. "Hum_RunAmbient_M01.asc" F 1 1)
aniAlias ("t_DrawTorch_S0_2_S1" 1 "s_DrawTorch_S1" 0.1 0.1 M. "t_DrawTorch_Stand_2_S0" F)
aniAlias ("s_DrawTorch_S1" 1 "s_DrawTorch_S1" 0.1 0.1 M. "s_DrawTorch_S0" F)
aniAlias ("t_DrawTorch_S1_2_S0" 1 "s_DrawTorch_S0" 0.1 0.1 M. "t_DrawTorch_Stand_2_S0" R)
instance ItLsTorchburned(C_Item)
{
name = "Сгоревший факел";
mainflag = ITEM_KAT_NONE;
flags = ITEM_MULTI;
value = 0;
visual = "ItLs_Torchburned_01.3ds";
scemeName = "USETORCH";
material = MAT_WOOD;
description = name;
};
ani ("t_UseTorch_Stand_2_S0" 1 "s_UseTorch_S0" 0.1 0.1 M. "Hum_DrawTorch_M01.asc" F 0 4)
ani ("s_UseTorch_S0" 1 "s_UseTorch_S0" 0.0 0.0 M. "Hum_DrawTorch_M01.asc" F 5 5)
ani ("t_UseTorch_S0_2_Stand" 1 "" 0.1 0.1 M. "Hum_DrawTorch_M01.asc" F 6 14)
{
*eventTag (6 "DEF_CREATE_ITEM" "ZS_LEFTHAND" "ItLsTorchburning")
}
CreateInvItem(self,ItLsTorchburned);
AI_UseItem(self,ItLsTorchburned);
ani ("t_UseTorch_Stand_2_S0" 1 "s_UseTorch_S0" 0.1 0.1 M. "Hum_RunAmbient_M01.asc" F 1 1)
ani ("s_UseTorch_S0" 1 "s_UseTorch_S0" 0.0 0.0 M. "Hum_RunAmbient_M01.asc" F 1 1)
aniAlias ("t_UseTorch_S0_2_Stand" 1 "" 0.1 0.1 M. "t_UseTorch_Stand_2_S0" F)
ani ("t_UseTorch_Stand_2_S0" 1 "s_UseTorch_S0" 0.1 0.1 M. "Hum_DrawTorch_M01.asc" F 0 4)
ani ("s_UseTorch_S0" 1 "s_UseTorch_S0" 0.0 0.0 M. "Hum_DrawTorch_M01.asc" F 5 5)
ani ("t_UseTorch_S0_2_Stand" 1 "" 0.1 0.1 M. "Hum_DrawTorch_M01.asc" F 6 14)
{
*eventTag (6 "DEF_CREATE_ITEM" "ZS_LEFTHAND" "ItLsTorchburning")
*eventTag (8 "DEF_CREATE_ITEM" "ZS_LEFTHAND" "ItLsTorchburning")
*eventTag (10 "DEF_DESTROY_ITEM")
}
func void ZS_GuardUnderGround()
{
PrintDebugNpc(PD_TA_FRAME,"ZS_GuardUnderGround");
GuardPerception();
Npc_PercEnable(self,PERC_ASSESSPLAYER,B_AssessSC);
AI_Standup(self);
AI_RemoveWeapon(self);
AI_SetWalkMode(self,NPC_WALK);
if(!Npc_HasItems(self,ItLsTorchburned))
{
CreateInvItem(self,ItLsTorchburned);
};
if(!Npc_WasInState(self,ZS_Talk))
{
Npc_PerceiveAll(self);
if(Wld_DetectItem(self,ITEM_TORCH))
{
if((Npc_GetDistToItem(self,item) < 700) && Hlp_IsItem(item,ItLsTorchburning))
{
AI_GotoItem(self,item);
AI_TakeItem(self,item);
}
else
{
AI_UseItem(self,ItLsTorchburned);
};
}
else
{
AI_UseItem(self,ItLsTorchburned);
};
};
if(Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) == 0)
{
AI_GotoWP(self,self.wp);
};
};
func void ZS_GuardUnderGround_Loop()
{
PrintDebugNpc(PD_TA_LOOP,"ZS_GuardUnderGround_Loop");
AI_SetWalkMode(self,NPC_RUN);
if(Npc_GetStateTime(self) >= 5)
{
Npc_PerceiveAll(self);
if(Wld_DetectItem(self,ITEM_TORCH))
{
if(Npc_GetDistToItem(self,item) < 700)
{
AI_StopLookAt(self);
AI_SetWalkMode(self,NPC_WALK);
AI_GotoItem(self,item);
AI_TakeItem(self,item);
if(Wld_IsFPAvailable(self,"GUARD"))
{
AI_GotoFP(self,"GUARD");
}
else
{
AI_GotoWP(self,self.wp);
};
};
};
if(Npc_HasItems(self,ItLsTorch) > 2)
{
Npc_RemoveInvItem(self,ItLsTorch);
};
Npc_SetStateTime(self,0);
}
if(Npc_GetDistToNpc(self,hero) < 800)
{
B_SmartTurnToNpc(self,hero);
}
else
{
if(Npc_IsOnFP(self,"GUARD"))
{
AI_AlignToFP(self);
}
else if(Wld_IsFPAvailable(self,"GUARD"))
{
AI_SetWalkMode(self,NPC_WALK);
AI_GotoFP(self,"GUARD");
}
else
{
AI_AlignToWP(self);
};
};
AI_Wait(self,1);
};
func void ZS_GuardUnderGround_End()
{
PrintDebugNpc(PD_TA_FRAME,"ZS_GuardUnderGround_End");
};
Возможно, помог бы тег event SwapMesh, возвращающий факел в правую руку. А там уже удалить предмет через промежуточные фазы анимаций.ElderGamer написал(а):...можно ли заставить непися убрать факел в инвентарь, если он был помещён в руку с использованием описанных особенностей движка.
Попробуй так:Πавел я новый прототип для падальщиков. Нужно, чтобы они ни при каких условиях никого не атаковали. Они у меня бегают по замкнутому маршруту. гг их рубит, нужно, чтобы они не обращали на него никакого внимания.
Может кто знает как это сделать?
Чтобы не нападали первыми, можно прописать aivar[AIV_NoFightParker] = TRUE;Πавел я новый прототип для падальщиков. Нужно, чтобы они ни при каких условиях никого не атаковали. Они у меня бегают по замкнутому маршруту. гг их рубит, нужно, чтобы они не обращали на него никакого внимания.
func void B_MM_AssessDamage_NoReaction()
{
B_BeliarsWeaponSpecialDamage(other,self);
// если есть еще какой-то особый урон, добавить сюда
};
читаем начало моделирования готы.У меня есть вопрос по моделированию:
Я сделал модель меча, и когда я его экспортирую в 3ds, он становится очень большим. Я пробовал его уменьшать и экспортировать, но он всё равно увеличивается до такого же размера.
Поставил на сантиметры, но проблема осталась.читаем начало моделирования готы.
первое что приходит на ум: в чем измеряются оси X Y Z ?
Есть вопрос по заклам Пирокинез и Молния в Г1. Где у них прописывается расход маны?
Я так понимаю, что это то же, что в первой прописывается SPL_SENDCAST в файле spell_params. Вот именно для этих двух как раз не прописано (и нигде еще я тоже не нашел), а если добавлять вручную - эффекта нет. Возможно, если переписывать файл spell_logic, то сработает. Но такие заклы, не уверен, что они будут потом правильно работать.
func int Spell_Logic_LightningFlash(var int manaInvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_Cost_LightningFlash)
{
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
};