- Katılım
- 6 Eki 2024
- Konular
- 4
- Mesajlar
- 30
- Online süresi
- 10g 40233s
- Reaksiyon Skoru
- 23
- Altın Konu
- 0
- Başarım Puanı
- 36
- TM Yaşı
- 1 Yıl 6 Ay 15 Gün
- MmoLira
- 2,236
- DevLira
- 6
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
Python:
#include "stdafx.h"
#include "char.h"
#include "char_manager.h"
#include "utils.h"
#include <fstream>
#include <string>
#include <vector>
#include <thread>
#include <chrono>
#include <unordered_map>
#include <atomic>
#include <algorithm>
#include <random>
struct FakeMessage
{
std::string char_name;
std::string message;
};
static std::vector<FakeMessage> g_fake_messages;
static std::unordered_map<std::string, CHARACTER*> g_dummy_characters;
static std::atomic<bool> g_auto_shout_enabled{ true };
static std::thread g_shout_thread;
static std::atomic<bool> g_thread_running{ false };
static const std::string g_txt_path = "/home/game/sahte_mesaj.txt";
void LoadFakeMessages()
{
g_fake_messages.clear();
std::ifstream file(g_txt_path);
if (!file.is_open())
{
sys_err("SAHTE_MESAJ: Dosya acilamadi: %s", g_txt_path.c_str());
return;
}
std::string line;
while (std::getline(file, line))
{
size_t space_pos = line.find(' ');
if (space_pos != std::string::npos)
{
std::string name = line.substr(0, space_pos);
std::string msg = line.substr(space_pos + 1);
if (!name.empty() && !msg.empty())
g_fake_messages.push_back({ name, msg });
}
}
sys_log(0, "SAHTE_MESAJ: %zu sahte mesaj yüklendi.", g_fake_messages.size());
}
CHARACTER* CreateDummyCharacter(const std::string& charName)
{
auto it = g_dummy_characters.find(charName);
if (it != g_dummy_characters.end())
return it->second;
CHARACTER_MANAGER& chm = CHARACTER_MANAGER::instance();
CHARACTER* ch = chm.CreateCharacter();
if (!ch)
{
sys_err("SAHTE_MESAJ: Dummy karakter yaratılamadı: %s", charName.c_str());
return nullptr;
}
ch->SetName(charName.c_str());
ch->SetDummy(true);
ch->SetInvisible(true);
ch->WarpSet(0, 100, 100);
g_dummy_characters[charName] = ch;
sys_log(0, "SAHTE_MESAJ: Dummy yaratıldı: %s", charName.c_str());
return ch;
}
void SendFakeShout(const FakeMessage& fm)
{
if (!g_auto_shout_enabled)
return;
CHARACTER* ch = CreateDummyCharacter(fm.char_name);
if (ch)
{
ch->ChatPacket(CHAT_TYPE_SHOUT, fm.message.c_str());
sys_log(0, "SAHTE_MESAJ: %s -> %s", fm.char_name.c_str(), fm.message.c_str());
}
}
void AutoShoutLoop()
{
LoadFakeMessages();
g_thread_running = true;
std::random_device rd;
std::mt19937 g(rd());
while (g_auto_shout_enabled)
{
std::vector<FakeMessage> shuffled = g_fake_messages;
std::shuffle(shuffled.begin(), shuffled.end(), g);
for (const auto& fm : shuffled)
{
SendFakeShout(fm);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
for (int i = 0; i < 15 && g_auto_shout_enabled; ++i)
std::this_thread::sleep_for(std::chrono::seconds(1));
}
g_thread_running = false;
}
void StartAutoShout()
{
if (g_thread_running)
return;
g_auto_shout_enabled = true;
g_shout_thread = std::thread(AutoShoutLoop);
g_shout_thread.detach();
}
void StopAutoShout()
{
g_auto_shout_enabled = false;
int wait = 0;
while (g_thread_running && wait++ < 20)
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
bool DummyCharacterRecvPrivateMessage(CHARACTER* ch, const char* fromName, const char* message)
{
std::string chName = ch->GetName();
if (g_dummy_characters.find(chName) != g_dummy_characters.end())
{
sys_log(0, "SAHTE_MESAJ PM (ignored): %s -> %s : %s", fromName, chName.c_str(), message);
return true;
}
return false;
}
bool HandleAutoShoutCommand(CHARACTER* ch, const char* cmd)
{
if (!ch->IsGM())
return false;
std::string command(cmd);
if (command == "/reloadsahtemesaj")
{
LoadFakeMessages();
ch->ChatPacket(CHAT_TYPE_INFO, "Sahte mesaj listesi yeniden yüklendi.");
return true;
}
else if (command == "/sahtemesaj start")
{
StartAutoShout();
ch->ChatPacket(CHAT_TYPE_INFO, "Sahte mesaj sistemi başlatıldı.");
return true;
}
else if (command == "/sahtemesaj stop")
{
StopAutoShout();
ch->ChatPacket(CHAT_TYPE_INFO, "Sahte mesaj sistemi durduruldu.");
return true;
}
return false;
}
Yeni bir cpp oluşturun sahte_mesaj.cpp isminde.
Cpp yi makefile eklemeyi unutmayın.
/game/sahte_mesaj.txt Oluştur içine
Testtest merhaba
Ggg sa
Diye sıradan eklemeler yapabilirsiniz.
Komutlar:
sahtemesaj start, /sahtemesaj stop, /reloadsahtemesaj
//
Python:
Char cpp Arat
bool do_chat(CHARACTER* ch, const char* cmd)
{
Fonksiyonun içine hemen başına ekle
if (HandleAutoShoutCommand(ch, cmd))
return true;
Sonra tekrar char cpp arat
bool RecvWhisper(CHARACTER* ch, const char* fromName, const char* message)
{
Yine fonksiyonun hemen başına ekle
if (DummyCharacterRecvPrivateMessage(ch, fromName, message))
return true;
Son düzenleme:
- Katılım
- 16 Tem 2019
- Konular
- 714
- Mesajlar
- 3,541
- Online süresi
- 6ay 20g
- Reaksiyon Skoru
- 2,107
- Altın Konu
- 34
- Başarım Puanı
- 309
- TM Yaşı
- 6 Yıl 9 Ay 9 Gün
- MmoLira
- 26,224
- DevLira
- 122
24 saat içerisinde kanıt ekleyiniz.
- Katılım
- 17 Eki 2016
- Konular
- 127
- Mesajlar
- 2,358
- Online süresi
- 2ay 10g
- Reaksiyon Skoru
- 1,276
- Altın Konu
- 1
- Başarım Puanı
- 258
- TM Yaşı
- 9 Yıl 6 Ay 6 Gün
- MmoLira
- 1,345
- DevLira
- 12
Bunu oyunda olan event sistemiyle yapmak çok daha basit oluyor, ayrıca mesaj göndermek için karakter oluşturmanıza da gerek yok 
- Katılım
- 6 Eki 2024
- Konular
- 4
- Mesajlar
- 30
- Online süresi
- 10g 40233s
- Reaksiyon Skoru
- 23
- Altın Konu
- 0
- Başarım Puanı
- 36
- TM Yaşı
- 1 Yıl 6 Ay 15 Gün
- MmoLira
- 2,236
- DevLira
- 6
Önceden öyle kullanıyordum fakat yüksek onlinede sayıyı arttırınca şaşırdı kendiniBunu oyunda olan event sistemiyle yapmak çok daha basit oluyor, ayrıca mesaj göndermek için karakter oluşturmanıza da gerek yok![]()

- Katılım
- 17 Eki 2016
- Konular
- 127
- Mesajlar
- 2,358
- Online süresi
- 2ay 10g
- Reaksiyon Skoru
- 1,276
- Altın Konu
- 1
- Başarım Puanı
- 258
- TM Yaşı
- 9 Yıl 6 Ay 6 Gün
- MmoLira
- 1,345
- DevLira
- 12
Online sayısı ile ilgili olmamalı durum 1 tane event schedule ediyoruz günün sonunda 1xN kadar mesaj gidiyor clientlara belirlediğimiz her saniye farklı bir yükü yokÖnceden öyle kullanıyordum fakat yüksek onlinede sayıyı arttırınca şaşırdı kendini![]()
- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 214
- Cevaplar
- 18
- Görüntüleme
- 2K
- Cevaplar
- 2
- Görüntüleme
- 419
- Cevaplar
- 14
- Görüntüleme
- 1K










