Keşfet

Metin2 Fake Chat /B Sa Mantığı

C++ paylaşımları.

RamazanBalci

Üye
Bronz 1
Katılım
22 Kas 2024
Mesajlar
37
Tepkime puanı
64
Puanları
18
input_main.cpp aç ve arat

extern void SendShout(const char * szText, BYTE bEmpire);

değiştir

#ifdef ENABLE_FAKE_CHAT
extern void SendShout(const char * szText, BYTE bEmpire);
#endif


arat
static int __deposit_limit()

altına ekle

#ifdef ENABLE_FAKE_CHAT
#define FILE_MAX_LEN 256
#include <iostream>
#include <fstream>
std::vector<std::string> vec_chNames;
std::string textArray[9] = {
"AS", "as","aleykum selam", "ALEYKUM SELAM", "a.s", "A.S", "was", "A.s", "Aleykum Selam"
};
#define TIMER_TICK_DIVIDING 6 //1 sec / x
#define MIN_CHAT_COUNT_FOR_A_TICK 4
#define MAX_CHAT_COUNT_FOR_A_TICK 10
EVENTINFO(chat_shout_event_info)
{
const char * szText;
int chatCount;
int maxCount;
};
EVENTFUNC(chat_shout_update_event)
{
chat_shout_event_info* info = dynamic_cast<chat_shout_event_info*>(event->info);
if (info == NULL)
{
sys_err("mountsystem_update_event> <Factor> Null pointer");
return 0;
}
if (info->chatCount >= info->maxCount) { vec_chNames.clear(); return 0; }

int startIndex = info->chatCount;
const int shoutCount = number(MIN_CHAT_COUNT_FOR_A_TICK, MAX_CHAT_COUNT_FOR_A_TICK);
info->chatCount += shoutCount;

//int tekrar = 4;
//for(int bear = 0; bear <= tekrar; bear++){
for (int i = 0; i < shoutCount; i++) {
const int useIndex = startIndex + i;
if (useIndex >= vec_chNames.size()) { vec_chNames.clear(); return 0; }
char chatbuf_global[CHAT_MAX_LEN + 1];
std::string chName = vec_chNames[useIndex];
std::string chatText = textArray[number(0, _countof(textArray)-1)];
const BYTE charEmpire = number(1,3);

const char* iconEmp[3] = {"[1] ","[2] ","[3] "};
const char* colorEmp[3] = {"|cFFFF0000","|cffffff00","|cFF0080FF"};

int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s%s : %s|HVectors:%s |h[PM]|h|r : %s" , iconEmp[charEmpire - 1], chName.c_str(), colorEmp[charEmpire - 1], chName.c_str(), chatText.c_str());

SendShout(chatbuf_global, charEmpire);
TPacketGGShout p;
p.bHeader = HEADER_GG_SHOUT;
p.bEmpire = charEmpire;
strlcpy(p.szText, chatbuf_global, sizeof(p.szText));
P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));
}
//}

return PASSES_PER_SEC(1) / TIMER_TICK_DIVIDING;
}

void CreateShoutEvent() {
FILE* f;
char line[FILE_MAX_LEN];
unsigned n = 0;

f = fopen("/usr/game/share/locale/turkey/fake_names.txt", "r"); // Bu kısımı ftp üzerinde kendinize göre ayarlamayı unutmayın fake_names.txt içerisinde sadece kullanıcı adlarını çekmektedir.
if (!f) { return; }
while (fgets(line, FILE_MAX_LEN, f)) {
std::string tmpStr = (std::string)line;
std::string strLine = tmpStr.substr(0, tmpStr.size() - 2);
vec_chNames.push_back(strLine);
}
if (!feof(f)){
fclose(f);
return;
}
fclose(f);
/***/

chat_shout_event_info* info = AllocEventInfo<chat_shout_event_info>();
info->maxCount = vec_chNames.size();
info->chatCount = 0;
event_create(chat_shout_update_event, info, PASSES_PER_SEC(1));
}
#endif

-----------------------------

cmd_gm.cpp aç


arat

ACMD(do_map_notice)

ve altına ekle


#ifdef ENABLE_FAKE_CHAT
extern void CreateShoutEvent();
#endif
ACMD(do_big_notice)
{
#ifdef ENABLE_FAKE_CHAT
std::string strLine = static_cast<std::string>(argument), stName = static_cast<std::string>(ch->GetName());
if ((strLine == " SELAMUN ALEYKUM" || strLine == " SA" || strLine == " SELAMIN ALEYKUM" || strLine == " SELAMIN ALEYKUM") && (ch->IsGM()))
CreateShoutEvent();
#endif
#ifdef ENABLE_FULL_NOTICE
BroadcastNotice(argument, true);
#else
ch->ChatPacket(CHAT_TYPE_BIG_NOTICE, "%s", argument);
#endif
}

#ifdef ENABLE_FULL_NOTICE
ACMD(do_map_big_notice)
{
SendNoticeMap(argument, ch->GetMapIndex(), true);
}

ACMD(do_notice_test)
{
ch->ChatPacket(CHAT_TYPE_NOTICE, "%s", argument);
}

ACMD(do_big_notice_test)
{
ch->ChatPacket(CHAT_TYPE_BIG_NOTICE, "%s", argument);
}
#endif

Metin2 Yazılım - Geliştirme kategorisindeki içeriklerimizi indirebilmeniz için yorum ve beğeni bırakmanız gerekmektedir.

 
Moderatör tarafında düzenlendi:
Bu sistem bitirdi zaten tüm metin2 ortamını ya :)
 
metin2 bu hallere düşecek miydi.. üzdü :)
 
Walla koskoca metin2ye yazık ettiler şu olaylara bak adamlar bot mesaj ile serveri kalabalık göstermek için neler neler yapıyor
 

Konuyu görüntüleyen kullanıcılar