So I've noticed servers that have dualdaggers still have the crapy version of them. you can't move, which basically defeats the purpose of having dualdaggers. So, here's the fix for that.
ZCharacterObject.h:
Find this:
Add this above it:ZC_STATE_UPPER_SHOT,
ZCharacter.cpp:ZC_STATE_UPPER_ATTACK1,
ZC_STATE_UPPER_ATTACK1_RET,
ZC_STATE_UPPER_ATTACK2,
in this function
find this:static ZANIMATIONINFO g_AnimationInfoTableUpper[ZC_STATE_UPPER_END] = {
Add this above it:{ "attackS" ,false ,false ,false ,false },
In ZCharacter::UpdateSpeed(), find this:{ "attack1", false, false, true, false },
{ "attack1_ret", false, false, true, true },
{ "attack2", false, false, true, false },
Replace with this:if( (aniState_Lower == ZC_STATE_LOWER_ATTACK1) || (aniState_Lower == ZC_STATE_LOWER_ATTACK1_RET) ||
(aniState_Lower == ZC_STATE_LOWER_ATTACK2) || (aniState_Lower == ZC_STATE_LOWER_ATTACK2_RET) ||
(aniState_Lower == ZC_STATE_LOWER_ATTACK3) || (aniState_Lower == ZC_STATE_LOWER_ATTACK3_RET) ||
(aniState_Lower == ZC_STATE_LOWER_ATTACK4) || (aniState_Lower == ZC_STATE_LOWER_ATTACK4_RET) ||
(aniState_Lower == ZC_STATE_LOWER_ATTACK5) || (aniState_Lower == ZC_STATE_LOWER_JUMPATTACK) ||
(m_AniState_Upper.Ref() == ZC_STATE_UPPER_SHOT))
ZMyCharacter.cppif( (aniState_Lower == ZC_STATE_LOWER_ATTACK1) || (aniState_Lower == ZC_STATE_LOWER_ATTACK1_RET) ||
(aniState_Lower == ZC_STATE_LOWER_ATTACK2) || (aniState_Lower == ZC_STATE_LOWER_ATTACK2_RET) ||
(aniState_Lower == ZC_STATE_LOWER_ATTACK3) || (aniState_Lower == ZC_STATE_LOWER_ATTACK3_RET) ||
(aniState_Lower == ZC_STATE_LOWER_ATTACK4) || (aniState_Lower == ZC_STATE_LOWER_ATTACK4_RET) ||
(aniState_Lower == ZC_STATE_LOWER_ATTACK5) || (aniState_Lower == ZC_STATE_LOWER_JUMPATTACK) ||
(m_AniState_Upper.Ref() == ZC_STATE_UPPER_SHOT) || (m_AniState_Upper.Ref() == ZC_STATE_UPPER_ATTACK1) ||
(m_AniState_Upper.Ref() == ZC_STATE_UPPER_ATTACK1_RET) || (m_AniState_Upper.Ref() == ZC_STATE_UPPER_ATTACK2))
Find this function:
Replace the information above the else statement near the top of the function with this:ZMyCharacter::OnShotMelee
In ZMyCharacter::ProcessShot(), find htis:static int nShotCount = 0;
static DWORD dwTime = timeGetTime();
// ´Ü°Ë
if (m_pVMesh->m_SelectWeaponMotionType == eq_wd_dagger ||
m_pVMesh->m_SelectWeaponMotionType == eq_ws_dagger) { // dagger
if (m_AniState_Upper.Ref() == ZC_STATE_UPPER_ATTACK1 || m_AniState_Upper.Ref() == ZC_STATE_UPPER_ATTACK2)
return;
if (m_bCharged/* || IsCounterAttackable()*/)
{
if (GetVelocity().z > 100.f || GetDistToFloor() > 80.f)
JumpChargedShot();
else
ChargedShot();
return;
}
if (m_pVMesh->m_SelectWeaponMotionType == eq_wd_dagger)
{
DWORD nCurrTime = timeGetTime();
if (dwTime + 500 < nCurrTime)
nShotCount = 0;
if (GetDistToFloor() > 80.f)
zStatus.m_bJumpShot = true;
else
{
if (nShotCount == 0)
{
SetAnimationUpper(ZC_STATE_UPPER_ATTACK1);
nShotCount++;
}
else
{
SetAnimationUpper(ZC_STATE_UPPER_ATTACK2);
nShotCount--;
}
}
dwTime = nCurrTime;
}
else
{
SetAnimationUpper(ZC_STATE_UPPER_ATTACK1);
}
uStatus.m_bWallJump = false;
uStatus.m_bWallJump2 = false;
zStatus.m_bEnterCharge = true;
}
Replace with this:ZC_STATE_UPPER_SHOT
In ZMyCharacter::OnUpdate, find this:ZC_STATE_UPPER_ATTACK1
Replace with this:if(uStatus.m_bPlayDone_upper) {
if(m_AniState_Upper.Ref()==ZC_STATE_UPPER_SHOT)
ZGame.cpp:if(uStatus.m_bPlayDone_upper) {
if(m_AniState_Upper.Ref()==ZC_STATE_UPPER_ATTACK1 || m_AniState_Upper.Ref()==ZC_STATE_UPPER_SHOT)
In SelectSlasheffectmotion, find this:
replace with this:if(lower == ZC_STATE_LOWER_ATTACK1) { nAdd = 0; }
else if(lower == ZC_STATE_LOWER_ATTACK2){ nAdd = 1; }
in filterdelayedcommand, find this:if(lower == ZC_STATE_LOWER_ATTACK1 || upper == ZC_STATE_UPPER_ATTACK1) { nAdd = 0; }
else if(lower == ZC_STATE_LOWER_ATTACK2 || upper == ZC_STATE_UPPER_ATTACK2) { nAdd = 1; }
replace with this:if(pChar!=m_pMyCharacter &&
( pChar->m_pVMesh->m_SelectWeaponMotionType==eq_wd_dagger ||
pChar->m_pVMesh->m_SelectWeaponMotionType==eq_ws_dagger )) { // dagger
pChar->SetAnimationUpper(ZC_STATE_UPPER_SHOT);
}
ZGameInterface.cppif(pChar!=m_pMyCharacter &&
( pChar->m_pVMesh->m_SelectWeaponMotionType==eq_wd_dagger ||
pChar->m_pVMesh->m_SelectWeaponMotionType==eq_ws_dagger )) { // dagger
pChar->SetAnimationUpper(ZC_STATE_UPPER_ATTACK1);
}
In ChangeWeapon, find this:
add this under it:|| (pChar->GetStateUpper() == ZC_STATE_UPPER_SHOT && pChar->IsUpperPlayDone() == false
Man01/Woman01.xml||
(pChar->GetStateUpper() == ZC_STATE_UPPER_ATTACK1 && pChar->IsUpperPlayDone() == false) ||
(pChar->GetStateUpper() == ZC_STATE_UPPER_ATTACK2 && pChar->IsUpperPlayDone() == false))
Find "attacks" (Note, there's many, find the one for the dagger stab), and replace it with "attack1". Any problems feel free to let me know, although I hope people will try to convert it from 1.0 to 1.5 before asking for help, it's a very single conversion.
ZMyCharacter.cpp (Optional):
If you want the daggers to block, find the processguard function, find this:
replace with this:if(type!=MWT_KATANA && type!=MWT_DOUBLE_KATANA) return;
Thanks to:if(type!=MWT_KATANA && type!=MWT_DOUBLE_KATANA && type!=MWT_DUAL_DAGGER) return;
Gunblade for showing me how static works



Reply With Quote


