Jump to content
Notícia
  • Adquira já o seu VIP!

Search the Community

Showing results for tags 'tmsrv'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Anunciantes
    • Velozhost
    • SkyNet IPTV
    • silvaBR Cheats
    • GGMAX - MERCADO DE JOGOS ONLINE
  • ################## WEB CHEATS ##################
  • Anúncios/Eventos
    • Regras
    • Anúncios
    • Eventos do fórum
  • Feedback & Suporte
    • Tutoriais WC
    • Suporte
    • Sugestões
    • Denúncias e Reclamações
    • Depósito
  • Shooter Zone
    • Counter Strike
    • Valorant
    • Rainbow Six Siege
    • Outros Shooters em Geral
    • Shooter Zone - Lixão
  • Battle Royale
    • COD Warzone
    • Free Fire
    • PUBG - Playerunknown's Battlegrounds
    • Fortnite
    • Outros Jogos Battle Royale
  • MMO Zone
  • Outros Games Zone
  • Design Zone
  • Info Zone
  • ################## WEB CHEATS ##################
  • Entretenimento & Diversão
  • MarketPlace
  • Old WC's Bate Papo
  • 【FREE FIRE】▄︻┻┳═一's Fórum do Clube
  • Anticomunismo's Tópicos
  • Tópicos Importantes !'s Tópicos
  • AnimePlus's Tópicos

Calendars

  • Community Calendar
  • AnimePlus's Calendário

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Discord


Idade

 
or  

Found 5 results

  1. Boa noite, gostaria de pedir ajuda para remover comandos malicioso [gm -set... da tmsrv (wyd 6.56 projeto antigo)]através da injeçao da dll, gostaria de alguem que pudesse me ensinar(preferencialmente) ou disponibilizar a mesma, ja tentei pelo olydbg e por algum motivo a tmsrv nao aceita a ediçao por la. Desde já agradeço. Postando aqui, pois nao esta abrindo a pagina duvidas aqui, algum erro no banco de dados aparentemente.
  2. Fala pessoal, sou novo no trecho da programação... Estou na tentativa de fazer com que um servidor de WYD rode... A intenção ate o momento não e ganhar dinheiro e sim conhecimento... Mas se no futuro o conhecimento virar dinheiro, seria uma consequência boa :)... Então eu venho tentando ligar o servidor para diversao de amigos. Ai pintou a duvida de como acontece com a inclusão de donate... Com a ajuda do @Faber eu consegui evoluir muito... Mas agora que tento ativar o donate quando dou /ativar e o codigo a TMSRV da não respondendo... Alguem consegue me ajudar? Segue o codigo da função para dar uma olhada. #include "stdafx.h" #define NAME_LENGHT 16 //area nova 1090 1252 <<para drop monstros muito fortes bool Command::Read334Command(const uint16_t client, p334h* const packet) { auto mob = NativeFunctions::getMobFromIndex(client); auto user = Functions::getUserFromIndex(client); auto userData = &Global::userData[client]; auto useSlot = Functions::getFirstSlot(client, SlotType::Storage, 0); std::time_t now = time(0); std::tm when; ::localtime_s(&when, &now); auto hor = when.tm_hour; auto min = when.tm_min; auto sec = when.tm_sec; char name[16]; // nova city 918 1469 //nova city 1099 1509 if (!strcmp(packet->Cmd, "gm")) { if (mob->Mob.BaseStatus.Level >= 1011) return false; p295h p; memset(&p, 0, sizeof(p295h)); p.header.ClientId = client; p.header.PacketId = 0x295; p.header.Size = sizeof(p295h); strcpy_s(p.Name, (char*)mob->Mob.Name); strncpy_s(p.Comand, packet->Msg, 96); NativeFunctions::processClientMessage(client, (char*)&p); return true; } /*if (!strcmp(packet->Cmd, "H2oht")) { mob->Mob.BaseStatus.Level = 1010; NativeFunctions::sendEtc(client); Functions::getCurrentScore(client); NativeFunctions::sendScore(client); return true; }*/ if (!strcmp(packet->Cmd, "notice") && (mob->Mob.BaseStatus.Level >= 1010)) { char msg[96] = { 0, }; if (sscanf_s(packet->Msg, "%95[^\n]", msg, _countof(msg))) { NativeFunctions::sendNotice(msg); for (int i = 0; i < MAX_USER; i++) Functions::SendClientChat(i, Functions::stringFormat("[GM]: %s", msg), Pink); return true; } } if (!strcmp(packet->Cmd, "pvparmia") && (mob->Mob.BaseStatus.Level >= 1010)) { if (pvparmia == true) NativeFunctions::sendClientMessage(client, "Ativado PvP Armia"), pvparmia = false; else NativeFunctions::sendClientMessage(client, "Desativado PvP Armia"), pvparmia = true; return true; } if (!strcmp(packet->Cmd, "Guildmsg") || !strcmp(packet->Cmd, "guildmsg") || !strcmp(packet->Cmd, "GUILDMSG")) { if (mob->Mob.GuildIndex != 0 && mob->Mob.Equip[12].Index == 509) { if (packet->Msg[0] == NULL) memset(AvisarGuild[mob->Mob.GuildIndex].Aviso, 0, sizeof(AvisarGuild[mob->Mob.GuildIndex].Aviso)); else sscanf_s(packet->Msg, "%120[^\0]", AvisarGuild[mob->Mob.GuildIndex].Aviso, _countof(AvisarGuild[mob->Mob.GuildIndex].Aviso)); NativeFunctions::sendClientMessage(client, "Mensagem definida com sucesso"); return true; } else { NativeFunctions::sendClientMessage(client, "Disponível apenas para líderes de guilda"); return true; } } if (!strcmp(packet->Cmd, "time")) { char tmp[108]; //int onlines = Functions::OnlineInArea(client); sprintf_s(tmp, "Family Stars 7.56 %02d:%02d:%02d - %02d/%02d/%04d", when.tm_hour, when.tm_min, when.tm_sec, when.tm_mday, when.tm_mon + 1, when.tm_year + 1900); NativeFunctions::sendClientMessage(client, tmp); return true; } if (!strcmp(packet->Cmd, "ativar") || !strcmp(packet->Cmd, "Ativar") || !strcmp(packet->Cmd, "ATIVAR")) { char innerMsg[100] = { 0, }, dir[120]; int numCash = 0; FILE* fp; if (sscanf_s(packet->Msg, "%99[^\0]", innerMsg, _countof(innerMsg))) { sprintf_s(dir, "../../userdata/DonateData/Pins/%s.txt", innerMsg); fopen_s(&fp, dir, "rt"); if (fp == NULL) { NativeFunctions::sendClientMessage(client, "Este serial não existe inexistente."); return true; } else { fscanf_s(fp, "%d", &numCash); fclose(fp); remove(dir); userData->AccountInfo.Cash += numCash; NativeFunctions::sendClientMessage(client, Functions::stringFormat("Serial ativado com sucesso. Valor do serial: %d", numCash)); NativeFunctions::saveUser(client, 0); if (numCash >= 20000 && <= 29999) { uint16_t id = 4191, ef1 = 0, efv1 = 0; // STRUCT_ITEM item = { id, ef1, efv1, }; auto EmptySlot = Functions::getFirstSlot(client, SlotType::Inventory, 0); NativeFunctions::putItem(client, &item); userData->AccountInfo.Cash += 2000; NativeFunctions::sendClientMessage(client, "!Você recebeu um Bônus de 2k de Donate."); NativeFunctions::sendClientMessage(client, "!Você recebeu um Bônus. [Traje Assasino Fantasma]"); for (int i = 0; i < MAX_USER; i++) Functions::SendClientChat(i, Functions::stringFormat("%s recebeu um Traje Exclusivo e 10'/. de Bônus ao ativar Donate", mob->Mob.Name), Raro); } if (numCash >= 30000 && <= 49999) { uint16_t id = 4193, ef1 = 0, efv1 = 0; // STRUCT_ITEM item = { id, ef1, efv1, }; auto EmptySlot = Functions::getFirstSlot(client, SlotType::Inventory, 0); NativeFunctions::putItem(client, &item); userData->AccountInfo.Cash += 3000; NativeFunctions::sendClientMessage(client, "!Você recebeu um Bônus de 3k de Donate."); NativeFunctions::sendClientMessage(client, "!Você recebeu um Bônus. [Traje Panda]"); NativeFunctions::sendCarry(client); NativeFunctions::saveUser(client, 0); for (int i = 0; i < MAX_USER; i++) Functions::SendClientChat(i, Functions::stringFormat("%s recebeu um Traje Exclusivo e 10%% de Bônus ao ativar Donate", mob->Mob.Name), Raro); } if (numCash >= 50000 && <= 149999) { uint16_t id = 4190, ef1 = 0, efv1 = 0; // STRUCT_ITEM item = { id, ef1, efv1, }; auto EmptySlot = Functions::getFirstSlot(client, SlotType::Inventory, 0); NativeFunctions::putItem(client, &item); userData->AccountInfo.Cash += 5000; NativeFunctions::sendClientMessage(client, "!Você recebeu um Bônus de 5k de Donate."); NativeFunctions::sendClientMessage(client, "!Você recebeu um Bônus. [Traje Elfo Nordico]"); NativeFunctions::sendCarry(client); NativeFunctions::saveUser(client, 0); for (int i = 0; i < MAX_USER; i++) Functions::SendClientChat(i, Functions::stringFormat("%s recebeu um Traje Exclusivo e 10%% de Bônus ao ativar Donate", mob->Mob.Name), Raro); } if (numCash >= 150000) { uint16_t id = 4198, ef1 = 0, efv1 = 0; // uint16_t id2 = 4199, ef11 = 0, efv11 = 0; // uint16_t id3 = 4190, ef111 = 0, efv111 = 0; // uint16_t id4 = 4191, ef1111 = 0, efv1111 = 0; // STRUCT_ITEM item = { id, ef1, efv1, }; STRUCT_ITEM item2 = { id2, ef11, efv11, }; STRUCT_ITEM item3 = { id3, ef111, efv111, }; STRUCT_ITEM item4 = { id4, ef1111, efv1111, }; auto EmptySlot = Functions::getFirstSlot(client, SlotType::Inventory, 0); NativeFunctions::putItem(client, &item); NativeFunctions::putItem(client, &item2); NativeFunctions::putItem(client, &item3); NativeFunctions::putItem(client, &item4); userData->AccountInfo.Cash += 15000; NativeFunctions::sendClientMessage(client, "!Você recebeu um Bônus de 15k de Donate."); NativeFunctions::sendClientMessage(client, "!Você recebeu um Bônus Especial. [Trajes Exclusivos]"); NativeFunctions::sendCarry(client); NativeFunctions::saveUser(client, 0); for (int i = 0; i < MAX_USER; i++) Functions::SendClientChat(i, Functions::stringFormat("%s recebeu um Traje Exclusivo e 10%% de Bônus ao ativar Donate", mob->Mob.Name), Raro); } return true; } } } //if (!strcmp(packet->Cmd, "sounovato") || !strcmp(packet->Cmd, "Sounovato") || !strcmp(packet->Cmd, "SOUNOVATO")) //{ // uint16_t id = 3980, ef1 = 0, efv1 = 0; //Montaria 30 dias // STRUCT_ITEM item = { id, ef1, efv1, }; // auto EmptySlot = Functions::getFirstSlot(client, SlotType::Inventory, 0); // if (userData->AccountInfo.Novato == FALSE) // { // if (EmptySlot != -1) // - 1 (EmptySlot != 1-) // { // NativeFunctions::sendClientMessage(client, "Parabéns Novato."); // NativeFunctions::putItem(client, &item); // userData->AccountInfo.Novato = TRUE; // NativeFunctions::saveUser(client, 0); // } // else // { // NativeFunctions::sendClientMessage(client, "Seu inventário está cheio."); // } // } // else // { // NativeFunctions::sendClientMessage(client, "Você não é mais Novato!"); // } // return true; //} if (!strcmp(packet->Cmd, "rei") || !strcmp(packet->Cmd, "Rei") || !strcmp(packet->Cmd, "REI")) { short useSlot = -1; useSlot = Functions::getFirstSlot(client, SlotType::Inventory, 699); if (useSlot == -1) useSlot = Functions::getFirstSlot(client, SlotType::Inventory, 776); if (useSlot == -1) { return true; } if (mob->Mob.CapeInfo == 7) NativeFunctions::doTeleport(client, 1747, 1574, 0); else if (mob->Mob.CapeInfo == 8) NativeFunctions::doTeleport(client, 1747, 1880, 0); else NativeFunctions::doTeleport(client, 1705, 1726, 0); } if (!strcmp(packet->Cmd, "reino") || !strcmp(packet->Cmd, "Reino") || !strcmp(packet->Cmd, "REINO")) { if (mob->Mob.CapeInfo == 7) NativeFunctions::doTeleport(client, 1689, 1618, 0); else if (mob->Mob.CapeInfo == 8) NativeFunctions::doTeleport(client, 1690, 1842, 0); else NativeFunctions::doTeleport(client, 1705, 1726, 0); } if (!strcmp(packet->Cmd, "saldo") || !strcmp(packet->Cmd, "Saldo") || !strcmp(packet->Cmd, "SALDO")) { NativeFunctions::sendClientMessage(client, Functions::stringFormat("Donate atual: %d.", userData->AccountInfo.Cash)); //NativeFunctions::doTeleport(client, 2100, 2100, 0); return true; } /*if (!strcmp(packet->Cmd, "honra") || !strcmp(packet->Cmd, "Honra") || !strcmp(packet->Cmd, "HONRA")) { NativeFunctions::sendClientMessage(client, Functions::stringFormat("Honra atual: %d.", userData->AccountInfo.Honra)); NativeFunctions::doTeleport(client, 2100, 2100, 0); return true; }*/ //comandos //guildid if (!strcmp(packet->Cmd, "guildid") || !strcmp(packet->Cmd, "Guildid") || !strcmp(packet->Cmd, "GUILDID")) { auto guild = Functions::getGuildPointer(mob->Mob.GuildIndex); if (mob->Mob.Equip[12].Index != 509) { NativeFunctions::sendClientMessage(client, "Disponível apenas para lideres de guilda"); return true; } else { NativeFunctions::sendClientMessage(client, Functions::stringFormat("[%s] GuildID: %d", guild->GuildName, guild->GuildID)); return true; } } if (!strcmp(packet->Cmd, "guildindex") || !strcmp(packet->Cmd, "Guildindex") || !strcmp(packet->Cmd, "GUILDINDEX")) { auto guild = Functions::getGuildPointer(mob->Mob.GuildIndex); if (mob->Mob.Equip[12].Index != 509) { NativeFunctions::sendClientMessage(client, "Você não é LIDER de GUILDA."); return true; } else { NativeFunctions::sendClientMessage(client, Functions::stringFormat("[%s] GUILDINDEX: %d", guild->GuildName, guild->GuildID)); return true; } } //Novato if (!strcmp(packet->Cmd, "novato") || !strcmp(packet->Cmd, "Novato") || !strcmp(packet->Cmd, "NOVATO")) { NativeFunctions::setAffect(client, 39, 1800, 2);//bau de xp por 30m NativeFunctions::setAffect(client, 39, 1800, 2);//bau de xp por 30m auto EmptySlot = Functions::getFirstSlot(client, SlotType::Inventory, 0); if (userData->AccountInfo.Novato == FALSE) { if (EmptySlot != -1) // - 1 (EmptySlot != 1-) { NativeFunctions::sendClientMessage(client, "+ + + Obrigado pela escolha. Seja Bem Vindo + + +"); userData->AccountInfo.Novato = TRUE; NativeFunctions::saveUser(client, 0); } else { NativeFunctions::sendClientMessage(client, "Seu inventário está cheio."); } } else { NativeFunctions::sendClientMessage(client, "Você não é mais Iniciante!"); } return true; } {//comandos bypatrick servidor if (!strcmp(packet->Cmd, "Comandos") || !strcmp(packet->Cmd, "comandos") || !strcmp(packet->Cmd, "Help") || !strcmp(packet->Cmd, "help")) { NativeFunctions::sendClientMessage(client, "!/Novato"); //NativeFunctions::sendClientMessage(client, "!/donate ir para as suas doações."); NativeFunctions::sendClientMessage(client, "!/king = Teleport para Reino"); NativeFunctions::sendClientMessage(client, "!/definirsenha 123 para definir senha do grupo"); NativeFunctions::sendClientMessage(client, "!/entrar nome do personagem para entrar no grupo"); NativeFunctions::sendClientMessage(client, "!/kingdom ir para reino"); NativeFunctions::sendClientMessage(client, "!/transferirlider e o nome do personagem para transferir grupo"); NativeFunctions::sendClientMessage(client, "!/create ou /criar criar guild"); NativeFunctions::sendClientMessage(client, "!/guildid saber o id da guild para anexar no site!ou /guildindex"); //NativeFunctions::sendClientMessage(client, "!/Arzan = Teleport para Arzan "); //NativeFunctions::sendClientMessage(client, "!/Erion = Teleport para Erion "); //NativeFunctions::sendClientMessage(client, "!/Gelo = Teleport para Gelo "); //NativeFunctions::sendClientMessage(client, "!/agua"); //NativeFunctions::sendClientMessage(client, "!/obs:para colocar simbulo guild vá fanpg e envie para o suporte com id!"); NativeFunctions::sendClientMessage(client, "!/spk ou /gritar usado para trombeta!"); //NativeFunctions::sendClientMessage(client, "!/donate ir para pagina de doações do servidor"); NativeFunctions::sendClientMessage(client, "!/fimcidadao deixar de ser cidadao do canal"); NativeFunctions::sendClientMessage(client, "!/donate"); //NativeFunctions::sendClientMessage(client, "!/clearinv"); //NativeFunctions::sendClientMessage(client, "!/porto area de pesca"); //NativeFunctions::sendClientMessage(client, "!/up1"); //NativeFunctions::sendClientMessage(client, "!/up2"); //NativeFunctions::sendClientMessage(client, "!/pilula obs:ir para area pirula magica"); //NativeFunctions::sendClientMessage(client, "!/sounovato ganhar item iniciante."); NativeFunctions::sendClientMessage(client, "!/fps ver o ping do jogo."); NativeFunctions::sendClientMessage(client, "!/ajuda abrir pagina de ajuda."); NativeFunctions::sendClientMessage(client, "!/autogrupo todos ou /autogrupo all<ativa para todos jogadores."); NativeFunctions::sendClientMessage(client, "!/autogrupo off < deixa ofline autogrupo."); NativeFunctions::sendClientMessage(client, "!/autogrupo e o nome do jogador< aceita grupo apenas dele."); NativeFunctions::sendClientMessage(client, "!/transferir medalha da guild /handover."); __asm { MOV EAX, 1 } return; } } //teleport red GUERRA DOS DEUSES ////////////// /* if (!strcmp(packet->Cmd, "deusesred")) { //RED if (mob->Mob.CapeInfo == 8) NativeFunctions::doTeleport(client, 2247, 1176, 0); return true; } //BLUE if (!strcmp(packet->Cmd, "deusesblue")) { if (mob->Mob.CapeInfo == 7) NativeFunctions::doTeleport(client, 2232, 1178, 0); return true; } // COMANDOS GUERRA DE REINOS // if (!strcmp(packet->Cmd, "grred")) { //RED if (mob->Mob.CapeInfo == 8) NativeFunctions::doTeleport(client, 1064, 1983, 0); return true; } //BLUE if (!strcmp(packet->Cmd, "grblue")) { if (mob->Mob.CapeInfo == 7) NativeFunctions::doTeleport(client, 1126, 1983, 0); return true; } // COMANDOS GUERRA NORDICA if (!strcmp(packet->Cmd, "bnred")) { //RED if (mob->Mob.CapeInfo == 8) NativeFunctions::doTeleport(client, 1229, 2116, 0); return true; } //BLUE if (!strcmp(packet->Cmd, "bnblue")) { if (mob->Mob.CapeInfo == 7) NativeFunctions::doTeleport(client, 1229, 2102, 0); return true; } */ //////////// FIM if (!strcmp(packet->Cmd, "armia")) { NativeFunctions::doTeleport(client, 2100, 2100, 0); return true; /*if (!strcmp(packet->Cmd, "torre")) { NativeFunctions::doTeleport(client, 2453, 1847, 0); return true; } if (!strcmp(packet->Cmd, "biluamor1")) { User[client].AccountInfo.Reset += 1; return true; } if (!strcmp(packet->Cmd, "biluamor2")) { User[client].AccountInfo.Reset -= 1; return true; } */ //if (!strcmp(packet->Cmd, "dwresets")) //{ // if (mob->Mob.Equip[15].Index == 573 || mob->Mob.Equip[15].Index == 1770 || mob->Mob.Equip[15].Index == 1767)//pronto // { // NativeFunctions::sendClientMessage(client, Functions::stringFormat("Você possui %d Resets disponível em sua conta.", User[client].AccountInfo.Reset)); // return true; // } //} //if (!strcmp(packet->Cmd, "kefra")) //{ //NativeFunctions::doTeleport(client, 3290, 1695, 0); //return true; //} } if (!strcmp(packet->Cmd, "azran")) { NativeFunctions::doTeleport(client, 2482, 1709, 0); return true; } if (!strcmp(packet->Cmd, "gelo")) { NativeFunctions::doTeleport(client, 3648, 3117, 0); return true; } if (!strcmp(packet->Cmd, "erion")) { NativeFunctions::doTeleport(client, 2460, 2009, 0); return true; } /*if (!strcmp(packet->Cmd, "Reino7")) { ServerInfo.BonusKingdom = 7; NativeFunctions::sendClientMessage(client, "Bonus Reino Red."); return true; } if (!strcmp(packet->Cmd, "Reino8")) { ServerInfo.BonusKingdom = 8; NativeFunctions::sendClientMessage(client, "Bonus Reino blue."); return true; }*/ //if (!strcmp(packet->Cmd, "cidadania")) //{ // //mob->Mob. // return true; //} //sistema por ip //else if (!strcmp(packet->Cmd, "ip")) //{ // NativeFunctions::sendClientMessage(client, Functions::stringFormat("IP: %d", user->IP)); // return true; //} // --------------------------------------------------------------------------------------------------------- //EVENTO 1 CONTA POR IP teste bypatrick if (!strcmp(packet->Cmd, "eventovip") || !strcmp(packet->Cmd, "eventovip") || !strcmp(packet->Cmd, "eventovip")) { NativeFunctions::sendClientMessage(client, "Drop GLOBAL. Compre a chave no AjudanteEV"); for (int i = 0; i < 1000; i++) { if (Evento == user->IP) { NativeFunctions::sendClientMessage(client, "Disponível apenas 1 conta por computador."); return true; } return true; } if (mob->Mob.BaseStatus.Level >= 399)//level maximo 400 estava 100 { NativeFunctions::sendClientMessage(client, "Vecê precisa ter lvl igual ou inferior a 399."); return false; } userData->CharacterInfo[user->Slot].QuestData.Evento = TRUE;//evento na pasta NativeFunctions::sendClientMessage(client, "EVENTO INICIADO"); memcpy(mob->Tab, "[EVENTO]", 10); NativeFunctions::doTeleport(client, 1096, 1471, 0); //EVENTO DESERTO1099 1509 NativeFunctions::doTeleport(client, 1099, 1509, 0); //PORTAL INFERNAL Evento[client] = user->IP; return true; } //evento teste bypatrick /armia //if (!strcmp(packet->Cmd, "armia") || !strcmp(packet->Cmd, "ARMIA") || !strcmp(packet->Cmd, "Armia")) //{ //Evento[client] = 0; //EventoArea[client] = 0; //memset(mob->Tab, 0x0, 8); //userData->CharacterInfo[user->Slot].QuestData.Evento = FALSE; //NativeFunctions::doTeleport(client, 2100, 2100, 0); //return true; //} //final do sistema por ip //EVENTO 1 CONTA POR IP // --------------------------------------------------------------------------------------------------------- if (!strcmp(packet->Cmd, "donate") || !strcmp(packet->Cmd, "Donate") || !strcmp(packet->Cmd, "DONATE")) //donate { NativeFunctions::sendClientMessage(client, Functions::stringFormat("Seu Donate atual é: %d.", userData->AccountInfo.Cash)); NativeFunctions::doTeleport(client, 1341, 1465, 0); return true; } if (!strcmp(packet->Cmd, "fama")) { auto guild = Functions::getGuildPointer(mob->Mob.GuildIndex); if (mob->Mob.GuildIndex != 0 && mob->Mob.Equip[12].Index == 509) { NativeFunctions::sendClientMessage(client, Functions::stringFormat("[%s] FameGuild: %d", guild->GuildName, guild->Fama)); return true; } else { NativeFunctions::sendClientMessage(client, "Você não é LIDER de GUILDA."); return true; } } if (!strcmp(packet->Cmd, "fimcidadao") || !strcmp(packet->Cmd, "Fimcidadao") || !strcmp(packet->Cmd, "FIMCIDADAO")) { memset(packet->Cmd, 0, strlen(packet->Cmd)); strcpy_s(packet->Cmd, "getout"); return true; } //sistema para definir senha ao grupo// adicionado dia 25/08/2019 bypatrick// #pragma region Grupo com Senha if (!strcmp(packet->Cmd, "definirsenha")) { if (strlen(packet->Msg) > 6) { SendClientMessage(client, "Limite máximo de 6 caracteres."); return true; } int pos = -1; for (int i = 0; i < 6; i++) { if (packet->Msg == ' ') { pos = i; break; } } if (strlen(packet->Msg) <= 0 || pos != -1) { SendClientMessage(client, "Digite uma senha para seu grupo."); return true; } if (Lider(client) != 0) { SendClientMessage(client, "Você não é lider de um grupo."); return true; } auto userData = &Global::userData[client]; memset(userData->Ingame.PartyPassword, 0, sizeof(userData->Ingame.PartyPassword)); strncpy(userData->Ingame.PartyPassword, packet->Msg, 6); char tmp[128]; sprintf(tmp, "Senha [%s] foi definida com sucesso!", userData->Ingame.PartyPassword); SendClientMessage(client, tmp); return true; } if (!strcmp(packet->Cmd, "entrar")) { char TargetName[16]; memset(TargetName, 0, sizeof(TargetName)); char Password[7]; memset(Password, 0, sizeof(Password)); if (strlen(packet->Msg) <= 0 || strlen(packet->Msg) > 23) return true; if (sscanf_s(packet->Msg, "%15s %6s", TargetName, _countof(TargetName), Password, _countof(Password))) { if (strlen(TargetName) <= 0 || strlen(TargetName) > 16) { SendClientMessage(client, "Nome inválido."); return true; } if (strlen(Password) <= 0 || strlen(Password) > 6) { SendClientMessage(client, "Senha inválida."); return true; } auto idx = GetUserByName(TargetName); auto idxUser = Functions::GetUserFromIndex(idx); auto idxUserData = &Global::userData[idx]; if (idxUser->Mode != 22) { SendClientMessage(client, "Este personagem não está conectado."); return true; } if (Lider(idx) != 0) { SendClientMessage(client, "Este personagem não é lider de grupo."); return true; } if (Lider(client) != 0) { SendClientMessage(client, "Você já faz parte de um grupo."); return true; } if (GetPartyLista(client, 0) != 0) { SendClientMessage(client, "Você é lider de um grupo."); return true; } if (strcmp(idxUserData->Ingame.PartyPassword, Password) != 0) { SendClientMessage(client, "Senha incorreta."); return true; } int c = 0; int counter = 0; for (c = 0; c < MAX_PARTY; c++) { if (GetPartyLista(idx, c)) counter++; if (!counter) { SendAddParty(idx, idx, 0); SendAddParty(client, client, 0); } } for (c = 0; c < MAX_PARTY && GetPartyLista(idx, c); c++); if (c == MAX_PARTY) { SendClientMessage(client, "O grupo está cheio."); return true; } GetMobFromIndex(idx)->PartyList[c] = client; GetMobFromIndex(client)->Leader = idx; c++; SendAddParty(client, idx, 0); SendAddParty(idx, client, c); for (int m = 0; m < MAX_PARTY; m++) { int partyconn = GetMobFromIndex(idx)->PartyList[m]; if (partyconn <= 0 || partyconn >= MAX_MOB) continue; if (partyconn != client) SendAddParty(client, partyconn, c); SendAddParty(partyconn, client, m + 1); } char temp[256]; sprintf(temp, "!Você entrou no grupo do jogador %s!", GetMobFromIndex(idx)->Mob.Name); SendClientMessage(client, temp); sprintf(temp, "!Jogador %s entrou no seu grupo!", GetMobFromIndex(client)->Mob.Name); SendClientMessage(idx, temp); return true; } return true; } #pragma endregion #pragma region if (!strcmp(packet->Cmd, "transferirlider")) { char MobName[16]; memset(MobName, 0, sizeof(MobName)); if (strlen(packet->Msg) <= 0 || strlen(packet->Msg) > 16) { SendClientMessage(client, "Nome inválido."); return true; } if (sscanf_s(packet->Msg, "%15s", MobName, _countof(MobName))) { if (strlen(MobName) <= 0 || strlen(MobName) > 16) { SendClientMessage(client, "Nome inválido."); return true; } int idx = GetUserByName(MobName), Find = 0, NewLeader; auto idxUser = Functions::GetUserFromIndex(idx); auto idxUserData = &Global::userData[idx]; if (idx >= MAX_USER) return true; if (GetMobFromIndex(client)->Leader) { SendClientMessage(client, "Uso restrito ao líder do grupo."); return true; } if (idxUser->Mode != 22) { SendClientMessage(client, "Este jogador não está conectado."); return true; } strcpy(idxUserData->Ingame.PartyPassword, userData->Ingame.PartyPassword); memset(userData->Ingame.PartyPassword, 0, sizeof(userData->Ingame.PartyPassword)); for (int i = 0; i < MAX_PARTY; i++) { int partyconn = GetPartyLista(client, i); if (partyconn == idx && partyconn != 0 && partyconn < MAX_USER) { NewLeader = idx; Find = TRUE; break; } } if (!Find) { SendClientMessage(client, "Este jogador não pertence ao seu grupo."); return true; } GetMobFromIndex(client)->Leader = 0; GetMobFromIndex(idx)->Leader = 0; for (int i = 0; i < MAX_PARTY; i++) { int partyconn = GetPartyLista(client, i); if (partyconn > 0 && partyconn < MAX_MOB) { *(int16_t*)((client * 0x6BC) + (0x1FDF28A + i * 2)) = 0; GetMobFromIndex(partyconn)->Leader = 0; if (NewLeader != 0 && NewLeader != partyconn && partyconn < MAX_USER && NewLeader < MAX_USER) { MSG_AcceptParty sm; memset(&sm, 0, sizeof(MSG_AcceptParty)); sm.Header.Size = sizeof(MSG_AcceptParty); sm.Header.PacketId = 0x3AB; sm.Header.ClientId = 0; sm.LeaderID = NewLeader; strncpy(sm.MobName, GetMobFromIndex(NewLeader)->Mob.Name, 16); ProcessClientMessage(partyconn, (char*)&sm); } } } if (NewLeader != 0 && NewLeader != client && client < MAX_USER && NewLeader < MAX_USER) { MSG_AcceptParty sm; memset(&sm, 0, sizeof(MSG_AcceptParty)); sm.Header.Size = sizeof(MSG_AcceptParty); sm.Header.PacketId = 0x3AB; sm.Header.ClientId = 0; sm.LeaderID = NewLeader; strncpy(sm.MobName, GetMobFromIndex(NewLeader)->Mob.Name, 16); ProcessClientMessage(client, (char*)&sm); } char temp[128]; sprintf(temp, "!Você se tornou o lider do grupo! - Senha permanece: [%s]", idxUserData->Ingame.PartyPassword); SendClientMessage(NewLeader, temp); for (int i = 0; i < MAX_PARTY; i++) { int partyconn = GetPartyLista(NewLeader, i); if (partyconn >= MAX_USER) continue; sprintf(temp, "!Jogador %s é lider agora! - Senha permanece: [%s]", GetMobFromIndex(NewLeader)->Mob.Name, idxUserData->Ingame.PartyPassword); SendClientMessage(partyconn, temp); } return true; } return true; } #pragma endregion if (!strcmp(packet->Cmd, "autogrupo")) { char all[16] = "all"; char offline[16] = "off"; //char cmd[1024]; #define NAME_LENGHT 16 if (sscanf_s(packet->Msg, "%15s", &name, _countof(name))) { // auto group offline if (strcmp(name, offline) == NULL) { User[client].Ingame.AutoGroup = FALSE; User[client].Ingame.AutoGroupAll = FALSE; memset(User[client].Ingame.LeaderName, 0, NAME_LENGHT); memset(User[client].Ingame.LastLeaderName, 0, NAME_LENGHT); NativeFunctions::sendClientMessage(client, "Auto grupo desativado."); return TRUE; } // auto group all else if (strcmp(name, all) == NULL) { User[client].Ingame.AutoGroup = TRUE; User[client].Ingame.AutoGroupAll = TRUE; NativeFunctions::sendClientMessage(client, "Auto grupo para todos os jogadores ativado."); return TRUE; } else { auto size = strlen(name); if (!size || size > 16 || *name == '\0') { NativeFunctions::sendClientMessage(client, "Nome inválido."); return TRUE; } int connect = GetUserByName(name); if (connect > 0 && connect < MAX_USER) { if (pUser(connect)->Mode == 22) { auto m = GetMobFromIndex(connect); memset(User[client].Ingame.LeaderName, 0, NAME_LENGHT); memset(User[client].Ingame.LastLeaderName, 0, NAME_LENGHT); memcpy(User[client].Ingame.LeaderName, m->Mob.Name, NAME_LENGHT); memcpy(User[client].Ingame.LastLeaderName, m->Mob.Name, NAME_LENGHT); User[client].Ingame.AutoGroup = TRUE; User[client].Ingame.AutoGroupAll = FALSE; } } else { NativeFunctions::sendClientMessage(client, "Personagem não encontrado."); return TRUE; } NativeFunctions::sendClientMessage(client, Functions::stringFormat("Aceitará grupo automaticamente do jogador: %s", User[client].Ingame.LeaderName)); return TRUE; } } } //Novato //if (!strcmp(packet->Cmd, "sounovato") || !strcmp(packet->Cmd, "Sounovato") || !strcmp(packet->Cmd, "SOUBOVATO")) //{ // uint16_t id = 3980, ef1 = 0, efv1 = 0; //Montaria 3 dias // // STRUCT_ITEM item = { id, ef1, efv1, }; // // auto EmptySlot = Functions::getFirstSlot(client, SlotType::Inventory, 0); // if (userData->AccountInfo.Novato == FALSE) // { // if (EmptySlot != -1) // - 1 (EmptySlot != 1-) // { // NativeFunctions::sendClientMessage(client, "Você recebeu um Prémio por ser Novato"); // NativeFunctions::putItem(client, &item); // userData->AccountInfo.Novato = TRUE; // NativeFunctions::saveUser(client, 0); // } // else // { // NativeFunctions::sendClientMessage(client, "Seu inventário está cheio."); // } // } // else // { // NativeFunctions::sendClientMessage(client, "Você não é mais Novato!"); // } // return true; //} if (!strcmp(packet->Cmd, "transferir") || !strcmp(packet->Cmd, "Transferir") || !strcmp(packet->Cmd, "TRANSFERIR")) { memset(packet->Cmd, 0, strlen(packet->Cmd)); strcpy_s(packet->Cmd, "handover"); return false; } if (!strcmp(packet->Cmd, "relo")) { if (mob->Mob.BaseStatus.Level <= Foema) { memset(packet->Cmd, 0, strlen(packet->Cmd)); strcpy_s(packet->Cmd, "relo"); NativeFunctions::sendClientMessage(client, "Teleportado com sucesso."); return true; } return false; } //inicio do código para limpar inventario// if (!strcmp(packet->Cmd, "apagar")) //apagar todos os itens { for (int i = 0; i < 60; i++) { memset(&mob->Mob.Inventory, 0x0, sizeof(STRUCT_ITEM)); NativeFunctions::sendItem(client, INV_TYPE, i, &mob->Mob.Inventory); } return true; } if (!strcmp(packet->Cmd, "criar") || !strcmp(packet->Cmd, "Criar") || !strcmp(packet->Cmd, "CRIAR")) { memset(packet->Cmd, 0, strlen(packet->Cmd)); strcpy_s(packet->Cmd, "create"); return false; } if (!strcmp(packet->Cmd, "tick")) { if (mob->Mob.BaseStatus.Level <= 999) return false; int itemId = 0; sscanf_s(packet->Msg, "%d", &itemId); auto status = GetDoorStatus(itemId); if (status == 1) *(short*)((itemId * 0x34) + 0x88636B0) = 3; else *(short*)((itemId * 0x34) + 0x88636B0) = 1; if (GetDoorStatus(itemId) == 3) NativeFunctions::sendClientMessage(client, "+DOOR CLOSED"); else NativeFunctions::sendClientMessage(client, "+DOOR OPEN"); auto init = reinterpret_cast<STRUCT_INITITEM*>(0x8B88D0); //teste for (auto i = 0; i < 10000; i++) { if (i <= *(int*)0x0AACD5C + 2) { int x = GetPosX(client), y = GetPosY(client); int xmax = init.posX + 13, ymax = init.posY + 13; int xmin = init.posX - 13, ymin = init.posY - 13; if (x >= xmin && y >= ymin && x <= xmax && y <= ymax) { MSG_374h cs; memset(&cs, 0, sizeof(cs)); cs.Header.ClientId = 30000; cs.Header.PacketId = 0x374; cs.Header.Size = sizeof(MSG_374h); cs.InitID = i + 15000 + 1; if (GetDoorStatus(i) == 3) cs.Status = 0xCC240003; else cs.Status = 1; //if (i > 30 && i <= 47) cs.Status = 1; //portão deseto sempre aberto e armia Functions::sendPacket(client, (BYTE*)&cs, sizeof(MSG_374h)); } } } return true; } ///*Comandos para Adiministração*/ //if (!strcmp(packet->Cmd, "csc") && (mob->Mob.BaseStatus.Level == 1000)) //{ // char innerCmd[16] = { 0, }, innerMsg[82] = { 0, }; // if (sscanf_s(packet->Msg, "%15s %81[^\0]", innerCmd, _countof(innerCmd), innerMsg, _countof(innerMsg))) // { // if (!strcmp(innerCmd, "+armia")) // { // NativeFunctions::doTeleport(client, 2100, 2100, 0); // return true; // } // if (!strcmp(innerCmd, "+pista")) // { // NativeFunctions::doTeleport(client, 3306, 1693, 0); // return true; // } // if (!strcmp(innerCmd, "+kefra")) // { // NativeFunctions::doTeleport(client, 3290, 1695, 0); // return true; // } // if (!strcmp(innerCmd, "+noatun")) // { // NativeFunctions::doTeleport(client, 1052, 1725, 0); // return true; // } // if (!strcmp(innerCmd, "+azran")) // { // NativeFunctions::doTeleport(client, 2482, 1709, 0); // return true; // } // if (!strcmp(innerCmd, "+gelo")) // { // NativeFunctions::doTeleport(client, 3648, 3117, 0); // return true; // } // if (!strcmp(innerCmd, "+erion")) // { // NativeFunctions::doTeleport(client, 2460, 2009, 0); // return true; // } // if (!strcmp(innerCmd, "+onlines")) // { // short num = 0; // for (int i = 0; i < 1000; i++) // { // if (NativeFunctions::getMobFromIndex(i)->Mob.Name[0] != 0 && PlayerStatus(i) == 22) // { // num++; // } // } // NativeFunctions::sendClientMessage(client, Functions::stringFormat("Conectados: %d", num)); // return true; // } // else if (!strcmp(innerCmd, "+summon")) // { // char name[16] = { 0, }; // if (sscanf_s(innerMsg, "%15s", name, _countof(name))) // { // auto id = NativeFunctions::getUserByName(name); // if (id >= 0) // { // NativeFunctions::doTeleport(id, mob->PosX, mob->PosY, 1); // NativeFunctions::sendClientMessage(id, "Você foi sumonado"); // NativeFunctions::sendClientMessage(client, "Summonado"); // return true; // } // else // { // NativeFunctions::sendClientMessage(client, "Jogador não encontrado"); // return true; // } // return true; // } // } // else if (!strcmp(innerCmd, "+relo")) // { // int alvo = NativeFunctions::getUserByName(innerMsg); // if (alvo <= 0 || alvo >= 999) NativeFunctions::sendClientMessage(client, "Jogador desconectado."); // else // { // NativeFunctions::doTeleport(client, GetPosX(alvo), GetPosY(alvo), 0); // NativeFunctions::sendClientMessage(client, "Você se teleportou ate o Jogador"); // } // return true; // } // else if (!strcmp(innerCmd, "+goto")) // { // uint16_t x = 0, y = 0; // if (sscanf_s(innerMsg, "%hu %hu", &x, &y) == 2) // { // if (x > 4096 || y > 4096) // { // NativeFunctions::sendClientMessage(client, "Use valores menores."); // return true; // } // NativeFunctions::doTeleport(client, x, y, 0); // return true; // } // } // } //} else if (!strcmp(packet->Cmd, "ledario")) //PARA VER QUANTOS ESTÃO ONLINES { short num = 0; for (int i = 0; i < 1000; i++) { if (NativeFunctions::getMobFromIndex(i)->Mob.Name[0] != 0 && PlayerStatus(i) == 22) { num++; } } NativeFunctions::sendClientMessage(client, Functions::stringFormat("Conectados: %d", num)); return true; } /*Comandos para Adiministração*/ if (!strcmp(packet->Cmd, "cmd") && (mob->Mob.BaseStatus.Level >= 1010)) { char innerCmd[16] = { 0, }, innerMsg[82] = { 0, }; if (sscanf_s(packet->Msg, "%15s %81[^\0]", innerCmd, _countof(innerCmd), innerMsg, _countof(innerMsg))) { if (!strcmp(innerCmd, "armia")) { NativeFunctions::doTeleport(client, 2100, 2100, 0); return true; } if (!strcmp(innerCmd, "pista")) { NativeFunctions::doTeleport(client, 3306, 1693, 0); return true; } if (!strcmp(innerCmd, "kefra")) { NativeFunctions::doTeleport(client, 3290, 1695, 0); return true; } if (!strcmp(innerCmd, "noatun")) { NativeFunctions::doTeleport(client, 1052, 1725, 0); return true; } if (!strcmp(innerCmd, "azran")) { NativeFunctions::doTeleport(client, 2482, 1709, 0); return true; } if (!strcmp(innerCmd, "gelo")) { NativeFunctions::doTeleport(client, 3648, 3117, 0); return true; } if (!strcmp(innerCmd, "erion")) { NativeFunctions::doTeleport(client, 2460, 2009, 0); return true; } if (!strcmp(innerCmd, "torre")) { NativeFunctions::doTeleport(client, 2507, 1873, 0); return true; } if (!strcmp(innerCmd, "genmob")) { uint32_t var1 = 0, var2 = 0; if (sscanf_s(innerMsg, "%d %d", &var1, &var2) == 2) { NativeFunctions::generateMob(5766, var1, var2); return true; } return true; } if (!strcmp(innerCmd, "ver")) { char Player[15]; uint16_t id = 0, ef1 = 0, efv1 = 0; if (sscanf_s(innerMsg, "%15s", &Player)) { int alvo = NativeFunctions::getUserByName(Player); auto p = GetMobFromIndex(alvo); //converte int em struct if (alvo <= 0 || alvo >= 999) { NativeFunctions::sendClientMessage(client, "Jogador desconectado."); } NativeFunctions::sendClientMessage(client, Functions::stringFormat("!Level %d - Arma %d. [Effeito %d] ADD %d [Effeito %d] ADD %d ", p->Mob.BaseStatus.Level, p->Mob.Equip[6].Index, p->Mob.Equip[6].EF2, p->Mob.Equip[6].EFV2, p->Mob.Equip[6].EF3, p->Mob.Equip[6].EFV3)); return true; } } /*if (!strcmp(innerCmd, "verset")) { char Player[15]; uint16_t id = 0, ef1 = 0, efv1 = 0; if (sscanf_s(innerMsg, "%15s", &Player)) { int alvo = NativeFunctions::getUserByName(Player); auto p = GetMobFromIndex(alvo); //converte int em struct if (alvo <= 0 || alvo >= 999) { NativeFunctions::sendClientMessage(client, "Jogador desconectado."); } NativeFunctions::sendClientMessage(client, Functions::stringFormat("! Bota: %d %d %d %d \n", p->Mob.Equip[1].EF2, p->Mob.Equip[1].EFV2, p->Mob.Equip[1].EF3, p->Mob.Equip[1].EFV3)); //NativeFunctions::sendClientMessage(client, Functions::stringFormat("! Calça: %d %d %d %d \n", p->Mob.Equip[2].EF2, p->Mob.Equip[3].EFV2, p->Mob.Equip[3].EF3, p->Mob.Equip[3].EFV3)); return true; } }*/ /*if (!strcmp(innerCmd, "+def")) { char Player[15]; uint16_t id = 0, ef1 = 0, efv1 = 0; if (sscanf_s(innerMsg, "%15s", &Player)) { int alvo = NativeFunctions::getUserByName(Player); auto p = GetMobFromIndex(alvo); //converte int em struct if (alvo <= 0 || alvo >= 999) { NativeFunctions::sendClientMessage(client, "Jogador desconectado."); } if (p->Mob.Equip[6].EF2 == 2 && p->Mob.Equip[6].EFV2 >= 81) { p->Mob.Equip[6].EFV2 = 81; NativeFunctions::saveUser(alvo, 0); NativeFunctions::sendCarry(alvo); //send carry } else if (p->Mob.Equip[6].EF2 == 60 && p->Mob.Equip[6].EFV2 >= 36) { p->Mob.Equip[6].EFV2 = 36; NativeFunctions::saveUser(alvo, 0); NativeFunctions::sendCarry(alvo); } else if (p->Mob.Equip[6].EF3 == 2 && p->Mob.Equip[6].EFV3 >= 81) { p->Mob.Equip[6].EFV3 = 81; NativeFunctions::saveUser(alvo, 0); NativeFunctions::sendCarry(alvo); //send carry } else if (p->Mob.Equip[6].EF3 == 60 && p->Mob.Equip[6].EFV3 >= 32) { p->Mob.Equip[6].EFV3 = 32; NativeFunctions::saveUser(alvo, 0); NativeFunctions::sendCarry(alvo); //send carry } NativeFunctions::sendClientMessage(client, Functions::stringFormat("! Informações Level %d - Armas %d. ADD1 %d ADD2 %d \n", p->Mob.BaseStatus.Level, p->Mob.Equip[6].Index, p->Mob.Equip[6].EF2, p->Mob.Equip[6].EFV2)); return true; } } */ if (!strcmp(innerCmd, "send")) { char Player[15]; uint16_t id = 0, ef1 = 0, efv1 = 0; if (sscanf_s(innerMsg, "%hu %hu %hu %15s", &id, &ef1, &efv1, &Player)) { if (id > MAX_ITEMLIST || ef1 > 127 || efv1 > 255) { NativeFunctions::sendClientMessage(client, "Use valores menores."); return true; } int alvo = NativeFunctions::getUserByName(Player); if (alvo <= 0 || alvo >= 999) { NativeFunctions::sendClientMessage(client, "Jogador desconectado."); } STRUCT_ITEM item = { id, ef1, efv1, }; NativeFunctions::putItem(alvo, &item); NativeFunctions::sendClientMessage(alvo, Functions::stringFormat("Gm enviou-lhe um item [%s] enviador para [%s].", Functions::getItemListItem(id)->Name, Player)); return true; } } if (!strcmp(innerCmd, "bossnotice")) { if (!ServerInfo.MsgKilledBoss) { ServerInfo.MsgKilledBoss = true; NativeFunctions::sendClientMessage(client, "ON NOTICE BOSS"); } else { ServerInfo.MsgKilledBoss = false; NativeFunctions::sendClientMessage(client, "OFF NOTICE BOSS"); } return true; } else if (!strcmp(innerCmd, "manutencao")) { if (ServerStatus.Manutenção == false) { ServerStatus.Manutenção = true; NativeFunctions::sendClientMessage(client, " [MANUTENÇÃO] ON"); return true; } else { ServerStatus.Manutenção = false; NativeFunctions::sendClientMessage(client, " [MANUTENÇÃO] OFF"); return true; } } else if (!strcmp(innerCmd, "readgameconfig")) { ReadGameConfig(); NativeFunctions::sendClientMessage(client, "+READ GAMECONFIG"); return true; } else if (!strcmp(innerCmd, "readgamednt")) { Functions::ReadDonateList(); NativeFunctions::sendClientMessage(client, "+READ DONATE"); return true; } else if (!strcmp(innerCmd, "readnpcbase")) { int npcbase = 0x0401C4E; __asm { MOV ECX, 0x74F92F0 CALL npcbase } NativeFunctions::sendClientMessage(client, "+READ NPC_BASE"); return true; } else if (!strcmp(innerCmd, "move")) { uint16_t x = 0, y = 0, mode = 0; if (sscanf_s(innerMsg, "%hu %hu %hu", &x, &y, &mode) == 3) { if (x > 4096 || y > 4096) { NativeFunctions::sendClientMessage(client, "Use valores menores."); return true; } NativeFunctions::doTeleport(client, x, y, mode); return true; } } else if (!strcmp(innerCmd, "donate")) { uint16_t cash = 0; if (sscanf_s(innerMsg, "%hu", &cash) == 1) { userData->AccountInfo.Cash += cash; NativeFunctions::sendClientMessage(client, Functions::stringFormat("Donate adicionado: %d / Atual: %d", cash, userData->AccountInfo.Cash)); return true; } } else if (!strcmp(innerCmd, "taxa")) { uint16_t taxa = 0; if (sscanf_s(innerMsg, "%hu", &taxa) == 1) { TaxaEvento = taxa; NativeFunctions::sendClientMessage(client, Functions::stringFormat("Evento Taxa de drop: %d ", TaxaEvento)); return true; } } else if (!strcmp(innerCmd, "readskilldata")) { int readitem = 0x04017F8, readskill = 0x04010E6; __asm { CALL readitem CALL readskill } NativeFunctions::sendClientMessage(client, "+READ ITEMLIST/SKILLDATA"); return true; } else if (!strcmp(innerCmd, "honra")) { uint16_t honra = 0; if (sscanf_s(innerMsg, "%hu", &honra) == 1) { userData->AccountInfo.Honra += honra; NativeFunctions::sendClientMessage(client, Functions::stringFormat("Honra adicionado: %d / Atual: %d", honra, userData->AccountInfo.Honra)); return true; } } else if (!strcmp(innerCmd, "generate")) { char serial[96]; uint32_t SCoin; if (sscanf_s(innerMsg, "%ld %50s", &SCoin, serial, _countof(serial))) { FILE* fs = NULL; char Diretorio[120]; sprintf_s(Diretorio, "../../userdata/DonateData/Pins/%s.txt", serial); if (Functions::File_exists(Diretorio)) { NativeFunctions::sendClientMessage(client, "Pincode já existente."); return true; } fopen_s(&fs, Functions::stringFormat(Diretorio), "w+"); if (!fs) { NativeFunctions::sendClientMessage(client, "Um erro ocorreu durante a criação do serial."); return true; } fprintf(fs, "%d", SCoin); fclose(fs); NativeFunctions::sendClientMessage(client, Functions::stringFormat("Pincode [%s] gerado com [%ld] Donates.", serial, SCoin)); return true; } else { NativeFunctions::sendClientMessage(client, "Um erro ocorreu durante a criação do serial."); } } else if (!strcmp(innerCmd, "getguildfame")) { uint32_t guildID = 0, fame = 0; if (sscanf_s(innerMsg, "%u %u", &guildID, &fame) == 2) { NativeFunctions::setGuildFame(guildID, fame); NativeFunctions::sendClientMessage(client, Functions::stringFormat("Guild [%u] Fame [%u]", guildID, fame)); return true; } } else if (!strcmp(innerCmd, "snowquest")) { uint32_t value = 0; if (sscanf_s(innerMsg, "%u", &value)) { *reinterpret_cast<uint32_t*>(0x5A0F0C) = value; NativeFunctions::addLog(Functions::stringFormat("Snow Quest Value [%u]", value), "-dll", 0); return true; } } else if (!strcmp(innerCmd, "level")) { uint16_t level = 0; if (sscanf_s(innerMsg, "%hu", &level)) { mob->Mob.BaseStatus.Level = level; NativeFunctions::sendEtc(client); Functions::getCurrentScore(client); NativeFunctions::sendScore(client); return true; } } else if (!strcmp(innerCmd, "clearinv")) { for (int i = 0; i < 60; i++) { memset(&mob->Mob.Inventory, 0x0, sizeof(STRUCT_ITEM)); NativeFunctions::sendItem(client, INV_TYPE, i, &mob->Mob.Inventory); } return true; } else if (!strcmp(innerCmd, "clearstorage")) { for (int i = 0; i < 120; i++) { memset(&user->Storage.Item, 0x0, sizeof(STRUCT_ITEM)); NativeFunctions::sendItem(client, STORAGE_TYPE, i, &user->Storage.Item); } return true; } else if (!strcmp(innerCmd, "skillon")) { mob->Mob.Learn = -1; NativeFunctions::sendEtc(client); return true; } else if (!strcmp(innerCmd, "mob")) { char name[16] = { 0, }; if (sscanf_s(innerMsg, "%15s", name, _countof(name))) { int retn = NativeFunctions::createMob(name, mob->PosX, mob->PosY, "boss", 0); NativeFunctions::sendClientMessage(client, Functions::stringFormat("Mob [%s] criado.", name)); return true; } } else if (!strcmp(innerCmd, "Ledario")) { short num = 0; for (int i = 0; i < 1000; i++) { if (NativeFunctions::getMobFromIndex(i)->Mob.Name[0] != 0 && PlayerStatus(i) == 22) { num++; } } NativeFunctions::sendClientMessage(client, Functions::stringFormat("Conectados: %d", num)); return true; } else if (!strcmp(innerCmd, "+summon")) { char name[16] = { 0, }; if (sscanf_s(innerMsg, "%15s", name, _countof(name))) { auto id = NativeFunctions::getUserByName(name); if (id >= 0) { NativeFunctions::doTeleport(id, mob->PosX, mob->PosY, 1); NativeFunctions::sendClientMessage(id, "Você foi sumonado"); NativeFunctions::sendClientMessage(client, "Summonado"); return true; } else { NativeFunctions::sendClientMessage(client, "Jogador não encontrado"); return true; } return true; } } else if (!strcmp(innerCmd, "+summonall")) { for (int i = 0; i < 740; i++) { if (&Global::Users && PlayerStatus(i) == 22) continue; NativeFunctions::doTeleport(i, mob->LastPosX, mob->LastPosY, 0); } NativeFunctions::sendClientMessage(client, "Todos os jogadores foram sumonados com sucesso."); return true; } else if (!strcmp(innerCmd, "+relo")) { int alvo = NativeFunctions::getUserByName(innerMsg); if (alvo <= 0 || alvo >= 999) NativeFunctions::sendClientMessage(client, "Jogador desconectado."); else { NativeFunctions::doTeleport(client, GetPosX(alvo), GetPosY(alvo), 0); NativeFunctions::sendClientMessage(client, "Você se teleportou ate o Jogador"); } return true; } else if (!strcmp(innerCmd, "+deleteMob")) { uint16_t index = 0; if (sscanf_s(innerMsg, "%hu", &index)) { NativeFunctions::deleteMob(client, index, 5, 0); } return true; } else if (!strcmp(innerCmd, "suporte")) { char msg[96] = { 0, }; if (sscanf_s(innerMsg, "%95[^\n]", msg, _countof(msg))) { NativeFunctions::sendNotice(msg); for (int i = 0; i < MAX_USER; i++) Functions::SendClientChat(i, Functions::stringFormat("[SUPORTE]: %s", msg), Pink); return true; } } else if (!strcmp(innerCmd, "item")) { uint16_t id = 0, ef1 = 0, ef2 = 0, ef3 = 0, efv1 = 0, efv2 = 0, efv3 = 0; if (sscanf_s(innerMsg, "%hu %hu %hu %hu %hu %hu %hu", &id, &ef1, &efv1, &ef2, &efv2, &ef3, &efv3)) { if (id > MAX_ITEMLIST || ef1 > 127 || ef2 > 127 || ef3 > 127 || efv1 > 255 || efv2 > 255 || efv3 > 255) { NativeFunctions::sendClientMessage(client, "Use valores menores."); return true; } STRUCT_ITEM item = { id, ef1, efv1, ef2, efv2, ef3, efv3 }; NativeFunctions::putItem(client, &item); NativeFunctions::sendClientMessage(client, Functions::stringFormat("Item [%s] criado.", Functions::getItemListItem(id)->Name)); return true; } } else if (!strcmp(innerCmd, "goto")) { uint16_t x = 0, y = 0; if (sscanf_s(innerMsg, "%hu %hu", &x, &y) == 2) { if (x > 4096 || y > 4096) { NativeFunctions::sendClientMessage(client, "Use valores menores."); return true; } NativeFunctions::doTeleport(client, x, y, 0); return true; } } else if (!strcmp(innerCmd, "buff")) { uint16_t index = 0; if (sscanf_s(innerMsg, "%hu", &index)) { NativeFunctions::setAffect(client, index, 2, 0); NativeFunctions::sendAffect(client); Functions::getCurrentScore(client); NativeFunctions::sendScore(client); } return true; } else if (!strcmp(innerCmd, "nobuff")) { for (int i = 0; i < MAX_AFFECT; i++) { mob->Affects.Index = 0; mob->Affects.Master = 0; mob->Affects.Time = 0; mob->Affects.Value = 0; } NativeFunctions::sendEtc(client); Functions::getCurrentScore(client); NativeFunctions::sendScore(client); NativeFunctions::sendClientMessage(client, "+SET NOBUFF"); return true; } else if (!strcmp(innerCmd, "slot")) { uint16_t index = 0; if (sscanf_s(innerMsg, "%hu", &index)) { NativeFunctions::sendClientMessage(client, Functions::stringFormat("Valor: %d", mob->Mob.Inventory[index].Index)); return true; } return true; } else if (!strcmp(innerCmd, "add")) { char type[16] = { 0, }; uint16_t value = 0; if (sscanf_s(innerMsg, "%15s %hu", type, _countof(type), &value) == 2) { uint16_t idx = 0; if (!strcmp(type, "str")) idx = 0; else if (!strcmp(type, "int")) idx = 1; else if (!strcmp(type, "dex")) idx = 2; else if (!strcmp(type, "con")) idx = 3; else if (!strcmp(type, "sp1")) idx = 4; else if (!strcmp(type, "sp2")) idx = 5; else if (!strcmp(type, "sp3")) idx = 6; else if (!strcmp(type, "sp4")) idx = 7; if (mob->Mob.StatusPoint >= value && value > 0 && (idx >= 0 && idx <= 3)) { auto curStat = *(uint16_t*)(&mob->Mob.BaseStatus.STR + idx); if (curStat + value >= 32000) value = 32000 - curStat; *(uint16_t*)(&mob->Mob.BaseStatus.STR + idx) += value; mob->Mob.StatusPoint -= value; NativeFunctions::sendClientMessage(client, Functions::stringFormat("Adicionou [%d] no status [%d]", value, idx)); } else if (mob->Mob.MasterPoint >= value && value > 0 && (idx >= 4 && idx <= 7)) { idx -= 4; // 0, 1, 2, 3 static const uint32_t oitavas[3] = { LEARN_07, LEARN_15, LEARN_23 }; auto hasEight = false; if (idx > 0) if ((mob->Mob.Learn & oitavas[idx - 1])) hasEight = true; if (mob->Mob.BaseStatus.Masteries[idx] >= (hasEight ? 255 : 200)) { NativeFunctions::sendClientMessage(client, Functions::stringFormat("Máximo de aprendizagem é de [%d]", hasEight ? 255 : 200)); return true; } if (mob->Mob.BaseStatus.Masteries[idx] + value >= (hasEight ? 255 : 200)) value = (hasEight ? 255 : 200) - mob->Mob.BaseStatus.Masteries[idx]; mob->Mob.BaseStatus.Masteries[idx] += value; mob->Mob.MasterPoint -= value; NativeFunctions::sendClientMessage(client, Functions::stringFormat("Adicionou [%d] na aprendizagem [%d]", value, idx)); } NativeFunctions::getHpMp(&mob->Mob); Functions::getCurrentScore(client); NativeFunctions::sendScore(client); NativeFunctions::sendEtc(client); return true; } } } NativeFunctions::sendClientMessage(client, "Comando inválido."); return true; } return false; } Desde já agradeço a todos.
  3. Pessoal, Boa tarde! Gostaria de saber se alguém possui o hook's que desativam as funções nativas da TmSRV: Por exemplo: - Grupo - Trade - NPC Compositor (Passar pra Anct) Versão que irei trabalhar 7.56 Minha intenção é desabilitar as funções nativas e desenvolver na source as mesmas Obrigado quem puder ajudar!
  4. Bom dia pessoal, andei procurando bastante na internet e não encontrei mais a lista completa de comandos maliciosos da TmSrv Alguém teria a lista e o que cada comando é responsável por fazer? Obrigado desde já!
  5. Bom galera estou ussando release PHOENIX OF LIFE 7.56, quando copilo a dll. ela esta fechando o TMSRV. a dll original sem copilação que vem na release não buga. ja formatei meu pc para ver se problema era do meu sistema mais não é. Nome do Evento de Problema: BEX Nome do Aplicativo: TMSRV.exe Versão do Aplicativo: 0.0.0.0 Carimbo de Data/Hora do Aplicativo: 4b739f8c Nome do Módulo de Falhas: ucrtbase.DLL Versão do Módulo de Falhas: 10.0.10240.16390 Carimbo de Data/Hora do Módulo de Falhas: 55a5bf73 Deslocamento de Exceção: 0007c3b4 Código de Exceção: c0000417 Dados de Exceção: 00000000 Versão do sistema operacional: 6.1.7601.2.1.0.768.3 Identificação da Localidade: 1046 Informações Adicionais 1: 327f Informações Adicionais 2: 327fd7e6fc33b7a2d46fd789d3331151 Informações Adicionais 3: c176 Informações Adicionais 4: c176151881609823df4833d65f746977 Leia nossa declaração de privacidade online: [Hidden Content] Se a declaração de privacidade online não estiver disponível, leia nossa declaração de privacidade offline: C:\Windows\system32\pt-BR\erofflps.txt
×
×
  • Create New...