u seride doğrudan Metin2'den tersine mühendislik(reverse engineering) ile sökülmüş veya Metin2'ye sağdık kalınarak yazılmış sistemleri paylaşacağım.
Sistemler 2014 yılında sızdırılan kraizy.tgz arşivindeki mainline için yazılmıştır. Siz başka server dosyaları kullanıyorsanız aradığınız bazı kodları bulamayabilir veya birtakım hatalarla karşılaşabilirsiniz.
Sistem sahibi metin2.dev'den xP3NG3Rx'dir.
Sistemi aldığım asıl konu: How To Storing Affects for Check later
6- Storing Affects: Karakter üzerindeki her affecti kontrol edebilmenize olanak sağlayan sistem.
1 - Client/UserInterface/PythonPlayer.h dosyasını açın.
Bu kodu CPythonPlayer class'ının en sonuna ekleyin
2 - Client/UserInterface/PythonPlayer.cpp dosyasını açın.
CPythonPlayer::Clear fonksiyonunu bulun ve en altına bu satırı ekleyin:
CPythonNetworkStream::RecvAffectRemovePacket fonksiyonunda return'un üzerine ekleyin:
4 - Client/UserInterface/PythonPlayerModule.cpp dosyasını açın.
Fonksiyonu istediğiniz uygun bir yere ekleyin:
void initPlayer() içinde en sona ekleyin:
Sistemler 2014 yılında sızdırılan kraizy.tgz arşivindeki mainline için yazılmıştır. Siz başka server dosyaları kullanıyorsanız aradığınız bazı kodları bulamayabilir veya birtakım hatalarla karşılaşabilirsiniz.
Sistem sahibi metin2.dev'den xP3NG3Rx'dir.
Sistemi aldığım asıl konu: How To Storing Affects for Check later
6- Storing Affects: Karakter üzerindeki her affecti kontrol edebilmenize olanak sağlayan sistem.
- Metin2 bu sistemi Otomatik Av sistemiyle beraber şebnemlerin ve diğer potların sürlerini kontrol etmek için ekledi.
- Bu sistem, [Loot Filter] sisteminin bir ön gereksinimidir.
1 - Client/UserInterface/PythonPlayer.h dosyasını açın.
C++:
protected:
typedef std::vector<TPacketAffectElement> TAffectDataVector;
TAffectDataVector m_mapAffectData;
public:
void AddAffect(DWORD dwType, TPacketAffectElement kElem);
void RemoveAffect(DWORD dwType, BYTE bApplyOn);
int GetAffectDataIndex(DWORD dwType, BYTE bApplyOn);
TPacketAffectElement GetAffectData(DWORD dwType, BYTE bApplyOn);
Bu kodu CPythonPlayer class'ının en sonuna ekleyin
2 - Client/UserInterface/PythonPlayer.cpp dosyasını açın.
CPythonPlayer::Clear fonksiyonunu bulun ve en altına bu satırı ekleyin:
C++:
m_mapAffectData.clear();
CPythonNetworkStream::RecvAffectRemovePacket fonksiyonunda return'un üzerine ekleyin:
C++:
CPythonPlayer::instance().RemoveAffect(kAffectRemove.dwType, kAffectRemove.bApplyOn);
4 - Client/UserInterface/PythonPlayerModule.cpp dosyasını açın.
Fonksiyonu istediğiniz uygun bir yere ekleyin:
C++:
PyObject * playerCheckAffect(PyObject* poSelf, PyObject* poArgs)
{
DWORD dwType;
if (!PyTuple_GetUnsignedLong(poArgs, 0, &dwType))
return Py_BadArgument();
BYTE bApplyOn;
if (!PyTuple_GetByte(poArgs, 1, &bApplyOn))
return Py_BadArgument();
int iAffIndex = CPythonPlayer::Instance().GetAffectDataIndex(dwType, bApplyOn);
return Py_BuildValue("b", iAffIndex != -1);
}
void initPlayer() içinde en sona ekleyin:
C++:
{ "CheckAffect", playerCheckAffect, METH_VARARGS },
Son düzenleme: