*Descriere:
Mai jos vei afla cum sa faci un NPC (sau orice mob) sa atace alt mob sau un jucator.
Functiile sunt deja bagate in sursa oricarui serverfiles, deoarece ymir a vrut sa faca ceva cu acestea - dar s-a razgandit eventual (evident
)
Cum functioneaza sistemul gandit de ymir?
- Acestia voiau sa puna gardieni in mapele de la regate ca sa "apere regatul".
- De exemplu, daca erai in Regatul Albastru si puneai un NPC Gardian (11004) sau / Administratorul Luptelor (11005), iar un jucator din Regatul Galben venea in regatul tau, acesta era omorat instant de acesti NPC. (One hit kill)
De aceea avem 3 variante de gardieni pentru fiecare regat, cu alt cod.
Va las varianta originala unde NPC va omori instant jucatorul/mob-ul
Si o varianta cu damage setat de voi.
Puteti modifica singuri sa ia DMG-ul din mob_proto.
*Poze / Video:
*Link download / Code:
Dupa care mergem in char_state.cpp si cautam:
Adaugam deasupra:
Acum cautam:
Inlocuim cu:
Daca vrem ca NPC/Mob sa atace alti mobi, cautam in char_state.cpp:
Modificam asa:
Acum cauta si comenteaza ca mai jos:
Daca vrem ca damage-ul sa nu fie 100% (insta kill) mergem in char_battle.cpp si cautam:
Modificam cu:
Asa setam 10k atacu la acesti NPC/Mobi.
Putet modifica sa citeasca dmg din mob_proto.txt, adaptati voi
Mai jos vei afla cum sa faci un NPC (sau orice mob) sa atace alt mob sau un jucator.
Functiile sunt deja bagate in sursa oricarui serverfiles, deoarece ymir a vrut sa faca ceva cu acestea - dar s-a razgandit eventual (evident
Cum functioneaza sistemul gandit de ymir?
- Acestia voiau sa puna gardieni in mapele de la regate ca sa "apere regatul".
- De exemplu, daca erai in Regatul Albastru si puneai un NPC Gardian (11004) sau / Administratorul Luptelor (11005), iar un jucator din Regatul Galben venea in regatul tau, acesta era omorat instant de acesti NPC. (One hit kill)
De aceea avem 3 variante de gardieni pentru fiecare regat, cu alt cod.
Va las varianta originala unde NPC va omori instant jucatorul/mob-ul
Si o varianta cu damage setat de voi.
Puteti modifica singuri sa ia DMG-ul din mob_proto.
*Poze / Video:
![[C++] Tutorial NPC ataca alt mob/player - Mesaj 1 - Imagine 1 [C++] Tutorial NPC ataca alt mob/player - Mesaj 1 - Imagine 1](https://i.imgur.com/MktHerN.gif)
Ca sa adaugam un mob care sa atace mergem in char.cpp si cautam:Inainte de toate mergeti la npc/mob in mob_proto.txt si scoateti flag-ul NOMOVE!
Cod: Selectaţi tot
bool CHARACTER::IsGuardNPC() const
{
return IsNPC() && (GetRaceNum() == 11000 || GetRaceNum() == 11001 || GetRaceNum() == 11002 || GetRaceNum() == 11003 || GetRaceNum() == 11004 || GetRaceNum() == 11005);
}Nota! Aici adaugam in lista mobii/npc care vrei sa atace alti mobi/playeri.
Dupa care mergem in char_state.cpp si cautam:
Cod: Selectaţi tot
void CHARACTER::__StateIdle_NPC() Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum cautam:
Cod: Selectaţi tot
else if (IsGuardNPC())
{
if (!quest::CQuestManager::instance().GetEventFlag("noguard"))
{
FuncFindGuardVictim f(this, 50000);
if (GetSectree())
GetSectree()->ForEachAround(f);
LPCHARACTER victim = f.GetVictim();
if (victim)
{
m_dwStateDuration = passes_per_sec/2;
if (CanBeginFight())
BeginFight(victim);
}
}
} Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Daca vrem ca NPC/Mob sa atace alti mobi, cautam in char_state.cpp:
Cod: Selectaţi tot
if (pkChr->IsPC() && pkChr->GetEmpire() != m_pkChr->GetEmpire()) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Va jucati cu functia asta si o modificati dupa bunul plac.. puteti folosi argumente specifice precum:si multe altele - aici tine de imaginatia voastra!Cod: Selectaţi tot
(GetRaceNum() == cod mob aici
Acum cauta si comenteaza ca mai jos:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Daca vrem ca damage-ul sa nu fie 100% (insta kill) mergem in char_battle.cpp si cautam:
Cod: Selectaţi tot
else if (pAttacker->IsGuardNPC())
{
SET_BIT (m_pointsInstant.instant_flag, INSTANT_FLAG_NO_REWARD);
Stun();
return true;
} Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Asa setam 10k atacu la acesti NPC/Mobi.
Putet modifica sa citeasca dmg din mob_proto.txt, adaptati voi






