Jump to content

Galet

Premium
  • Posts

    1384
  • Joined

  • Last visited

  • Days Won

    14
  • Feedback

    0%

Everything posted by Galet

  1. I just corrected a bit the code and now it works perfectly, thanks ! say("Your pet level: "..pc.getqf("pet_"..pc.getqf("pet_item").."_level")-1)
  2. Your welcome, I love you too
  3. Someone know how to display the pet level in a "say" for example ? I tried to put : "say("Your pet is level" ..pet_level)" but it doesn't work.
  4. sema / newja, did your quest are release or not ? Or how to put the pet level before his name please ?
  5. I have it, and a friend had the same before. I think we have to remove the affect at each login, in char.cpp or input_login. ^^
  6. "m_iMobItemRate" This is the flag, settable in game. you can use priv_empire if you want, or use some mathematics in your mob_proto in order to increase gold_min gold_max and exp.
  7. If you have : SKILL_FLAG_PARTY = (1 << 27), In skill.h then put it in 27th pos. In your table the flag is in the first position, so it won't work.
  8. Thanks !
  9. Yeah, but I think it's better to use this post, in case if others peoples need the same help.
  10. Try with the position you put at the beginning, then check your code, it's work for me.
  11. Me I have this bug too (i think), but the horse level is only 40, even if I have "50" in my gamecore.
  12. Ah indeed, I'll try, thanks sema
  13. Perfect ! I love it !
  14. [Hidden Content] Try this ^^ For me the pet don't do dammage, but he can die. ^^
  15. It's all good, I don't know, upload your whole file in pastebin, i'll correct for you.
  16. Check your end braces "}" "{"
  17. I corrected, there's an include missing, I edited my tutorial, but this is missing in the original too. Your welcome
  18. Corrected tabulation, code, include and english How-To [HowTo] Search in petsystem.h "void unmount();" and add this under : bool Attack(LPCHARACTER pkVictim = NULL); It's look like this : Then search "CPetActor* GetByVnum(DWORD vnum) const;" and add this under : void LaunchAttack(LPCHARACTER pkVictim = NULL); It's look like this : -> Save and then open PetSystem.cpp: Search the "bool CPetActor::Update(DWORD deltaTime)" function And replace it with this : bool CPetActor::Update(DWORD deltaTime) { bool bResult = false; if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead()) || NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID()) || ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner() ) { this->Unsummon(); return true; } if (this->GetCharacter()->GetVictim()) { bResult = this->Attack(); } if (!bResult) { if (this->IsSummoned() && HasOption(EPetOption_Followable)) bResult = this->_UpdateFollowAI(); } return bResult; } Search the "void CPetActor::ClearBuff()" function And add this function under : bool CPetActor::Attack(LPCHARACTER pkVictim) { if (pkVictim) { if (!pkVictim->IsMonster() || pkVictim->IsDead()) return false; if (m_pkChar->GetVictim()) return false; } else { pkVictim = m_pkChar->GetVictim(); if (!pkVictim) return false; } m_pkChar->SetVictim(pkVictim); const PIXEL_POSITION& rkPetPos = m_pkChar->GetXYZ(); const PIXEL_POSITION& rkVictimPos = pkVictim->GetXYZ(); int iDistance = DISTANCE_APPROX(rkPetPos.x - rkVictimPos.x, rkPetPos.y - rkVictimPos.y); if (iDistance >= m_pkChar->GetMobAttackRange()) { m_pkChar->Follow(pkVictim, m_pkChar->GetMobAttackRange()); } else { if (get_dword_time() - m_pkChar->GetLastAttackTime() >= 3000) { if (m_pkChar->Attack(pkVictim)) { m_pkChar->SendMovePacket(FUNC_ATTACK, 0, rkPetPos.x, rkPetPos.y, 0, get_dword_time()); m_pkChar->SetLastAttacked(get_dword_time()); } } } return true; } It will look like this: Search "bool CPetSystem::Update(DWORD deltaTime)" And add this above: void CPetSystem::LaunchAttack(LPCHARACTER pkVictim) { if (!pkVictim) return; for (itertype(m_petActorMap) it = m_petActorMap.begin(); it != m_petActorMap.end(); ++it) { CPetActor* pkPetActor = it->second; if (pkPetActor->IsSummoned()) pkPetActor->Attack(pkVictim); } } It will look like this: Save and open "char_battle.cpp" : Add a the begining : #include "PetSystem.h" Then search this function : "bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)" And especially this part: // only pc sets victim null. For npc, state machine will reset this. if (BATTLE_DEAD == iRet && IsPC()) SetVictim(NULL); Add this under: if (BATTLE_DEAD != iRet && IsPC()) { if (m_petSystem && m_petSystem->CountSummoned() > 0) m_petSystem->LaunchAttack(pkVictim); } It will look like this: Save and open "pvp.cpp" Then search this function : "bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)" And add this under : if (pkChr->IsPet() && pkVictim->IsMonster()) { return true; } if (pkChr->IsMonster() && pkVictim->IsPet()) { return true; } Like this: Recompile, and done
  19. We trying to solve your problem but you still criticize, really ? '-'
  20. It's working perfectly. Design your table and put the "PARTY" flag at the 27th position.
  21. Yeah, I take a look before, boost 1.5.3, gcc48, but it's better to use your own source code.
  22. Haha thanks, useful
  23. ALLWIP sources are the most complete files about serverside
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.