Reklam
PUPLİC
void SendKillAssistPacket(uint8 nType, uint16 nKillCount);
void CUser::KA_KillUpdate()
{
if (!isInPKZone()) return;
bool pktsend = false;
if (pAssistKill.serikillcount == 0) { pktsend = true; }
else if (UNIXTIME - pAssistKill.lastkilltime < 30) { pktsend = true; }
else { pAssistKill.serikillcount = 0; pktsend = true; }
if (pktsend)
{
SendKillAssistPacket(1, (uint16)++pAssistKill.serikillcount);
}
pAssistKill.totalkillcount++;
pAssistKill.lastkilltime = UNIXTIME;
// 10 kill'de bir geçen notice kısmı (isteğe bağlı)
if (pAssistKill.totalkillcount % 10 == 0)
{
Packet newpkt2(WIZ_KILLASSIST, uint8(kaopcode::kill));
newpkt2 << uint8(3) << uint32(1) << GetName() << GetNation() << (uint16)pAssistKill.totalkillcount;
if (isInParty()) g_pMain->Send_PartyMember(GetPartyID(), &newpkt2);
else Send(&newpkt2);
}
void CUser::SendKillAssistPacket(uint8 nType, uint16 nKillCount)
{
Packet pkt(WIZ_KILLASSIST);
pkt << uint8(nType) // 1: Kill, 2: Assist
<< uint8(1) // unk1 (DLL'de okuduğumuz boşluk)
<< uint32(1) // unk2 (DLL'de okuduğumuz boşluk)
<< GetName() // DLL'in yolu bulması için isim
<< uint8(1) // unk3
<< nKillCount; // Seri kill sayısı (01, 02...)
Send(&pkt);
}
}
case WIZ_KILLASSIST:
{
char currentDir[MAX_PATH];
char fullPath[MAX_PATH];
uint8 typeCode = pkt.read<uint8>();
pkt.read<uint8>(); pkt.read<uint32>();
std::string killerName; pkt >> killerName;
pkt.read<uint8>();
uint16 killCount = pkt.read<uint16>();
GetModuleFileNameA(NULL, currentDir, MAX_PATH);
char* lastSlash = strrchr(currentDir, '\\');
if (lastSlash) *lastSlash = '\0'; // .exe adını yoldan siler
bool isFemale = (*(uint8*)(*(DWORD*)KO_PTR_CHR + 0x678) == 1);
std::string genderFolder = isFemale ? "f1" : "m1";
std::string typeFolder = (typeCode == 1) ? "kill" : "asist";
sprintf_s(fullPath, "%s\\Snd\\%s\\%s\\%02d.wav", currentDir, typeFolder.c_str(), genderFolder.c_str(), killCount);
if (!PlaySoundA(fullPath, NULL, SND_ASYNC | SND_FILENAME | SND_NODEFAULT)) {
// Hata mesajı yerine sadece log atalım, oyunun akışını bozmasın
OutputDebugStringA("SES DOSYASI BULUNAMADI!");
}
}
ren *.ogg *.wav
ogg uzantı kullanır standartı budur. ama src den kod yazarsanız wav da çalışabilir ama stabil ol
Biliyorum v2500 snd o sesler var ordan alıp cliente atsak hook da ayarlansa bence çalışır gibi ?Efekti ses yok knk![]()
ogg uzantı kullanır standartı budur. ama src den kod yazarsanız wav da çalışabilir ama stabil ol