Ir para conteúdo
🥳 [EVENTO ESPECIAL] 20 Anos de WebCheats - Conte sua história. ×
Venda da WebCheats - Uma Nova Era para a Comunidade ×

Sc2ALLin

Ruby Member
  • Total de Posts

    2.262
  • Registro em

  • Última visita

  • Dias Ganhos

    1
  • WCoins

    485

Sc2ALLin ganhou no último dia 31 de Janeiro 2021

Sc2ALLin teve o conteúdo mais curtida!

Sobre Mim

  • Discord
    sc2allin

Últimos Visitantes

4.798 visualizações

Sc2ALLin's Achievements

Experiente

Experiente (8/15)

  • Participativo! Rara
  • Suporte Excelente Rara
  • Querido Rara
  • Usuário Notório Rara
  • Notado Rara

Emblemas Recentes

3,3k

Reputação

  1. Bom, estava dando uma geral no projeto aqui... Então decidde arruma-lo da forma mais original possivel. Ai estou usando isso que achei na net para me orientar. Lembrando que esse arquivo é da TMSRV do 6.13, então se alguém tiver uma mais atual é quiser compartilhar Explicação TMSRV.map Donwload TMSRV.map Creditos: Rodrigo Mendonça
  2. Rapaz, é uma mistura de Boots de Lojinhas fakes com jogadores comprados.
  3. //Adress: 0x401393 struct STRUCT_STATICEFFECT { short sEffect; short sValue; }; struct STRUCT_ITEMLIST { char Name[64]; short nIndexMesh; short nIndexTexture; short nIndexVisualEffect; short nReqLvl; short nReqStr; short nReqInt; short nReqDex; short nReqCon; STRUCT_STATICEFFECT stEffect[12]; int nPrice; short nUnique; short nPos; short nExtra; short nGrade; }; int BASE_ReadItemListFile(char* filename, int Build) { FILE* Stream = nullptr; errno_t err = 0; if (!Build || (err = fopen_s(&Stream, "extraitem.bin", "wb"), Stream)) { char FileName[256]{}; snprintf(FileName, sizeof(FileName), "%s", filename); FILE* fp = nullptr; err = fopen_s(&fp, FileName, "rb"); if (!fp) { snprintf(FileName, sizeof(FileName), "../../TMSRV/Run/%s", filename); err = fopen_s(&fp, FileName, "rb"); } if (fp) { while (1) { int Index = -1; char Name[256]{}; memset(Name, 0, sizeof(Name)); char Str2[12][256]{}; memset(Str2, 0, sizeof(Str2)); int Str1[12]{}; memset(Str1, 0, sizeof(Str1)); int str2 = 48; int str1 = 3072; char Text[1024]{}; if (!fgets((char*)Text, 1024, fp)) break; for (int i = 0; i < 1024; ++i) { if (Text[i] == ',') Text[i] = ' '; if (!Text[i]) break; } char v19[256]{}; v19[0] = 0; char v18[256]{}; v18[0] = 0; int nUnique = 0; int nPrice = 0; int nPos = 0; int nGrade = 0; int nExtra = 0; sscanf_s(Text, "%d %s %s %s %d %d %d %d %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d %s %d", //33 &Index, Name, sizeof(Name), v19, sizeof(v19), v18, sizeof(v18), &nUnique, &nPrice, &nPos, &nExtra, &nGrade, Str2[0], sizeof(Str2[0]), &Str1[0], Str2[1], sizeof(Str2[1]), &Str1[1], Str2[2], sizeof(Str2[2]), &Str1[2], Str2[3], sizeof(Str2[3]), &Str1[3], Str2[4], sizeof(Str2[4]), &Str1[4], Str2[5], sizeof(Str2[5]), &Str1[5], Str2[6], sizeof(Str2[6]), &Str1[6], Str2[7], sizeof(Str2[7]), &Str1[7], Str2[8], sizeof(Str2[8]), &Str1[8], Str2[9], sizeof(Str2[9]), &Str1[9], Str2[10], sizeof(Str2[10]), &Str1[10], Str2[11], sizeof(Str2[11]), &Str1[11]); if (Index != -1) { if (Index < MAX_ITEMLIST) { int len = strlen(Name); if (len >= 63) { MessageBox(NULL, "too long Item Name", Name, MB_OK); Name[63] = 0; Name[52] = 0; } strcpy_s(g_pItemList[Index].Name, 0x40u, Name); int nIndexMesh = 0; int nIndexTexture = 0; int nReqLvl = 0; int nReqStr = 0; int nReqInt = 0; int nReqDex = 0; int nReqCon = 0; if (v19[0] == '.') v19[0] = ' '; if (v18[0] == '.') v18[0] = ' '; sscanf_s(v19, "%d.%d", &nIndexMesh, &nIndexTexture); sscanf_s(v18, "%d.%d.%d.%d.%d", &nReqLvl, &nReqStr, &nReqInt, &nReqDex, &nReqCon); g_pItemList[Index].nIndexMesh = nIndexMesh; g_pItemList[Index].nIndexTexture = nIndexTexture; g_pItemList[Index].nReqLvl = nReqLvl; g_pItemList[Index].nReqStr = nReqStr; g_pItemList[Index].nReqInt = nReqInt; g_pItemList[Index].nReqDex = nReqDex; g_pItemList[Index].nReqCon = nReqCon; g_pItemList[Index].nUnique = nUnique; g_pItemList[Index].nPrice = nPrice; g_pItemList[Index].nPos = nPos; g_pItemList[Index].nGrade = nGrade; g_pItemList[Index].nExtra = nExtra; g_pItemList[Index].nIndexVisualEffect = 0; for (int j = 0; j < 12; ++j) { if (Str2[j][0]) { int k = 0; for (k = 0; k < 127; ++k) { int v4 = strcmp(EffectNameTable[k], Str2[j]); if (!v4) break; } if (j == 127) { MessageBoxA(0, Text, "Unregisterd effect", 0); } else { g_pItemList[Index].stEffect[j].sEffect = k; g_pItemList[Index].stEffect[j].sValue = Str1[j]; } } } if (Build) { fwrite(&Index, 2, 1, Stream); fwrite(&g_pItemList[Index], sizeof(STRUCT_ITEMLIST), 1, Stream); } } else { MessageBoxA(0, Text, "check MAX_ITEMLIST", 0); } } } fclose(fp); if (Build) fclose(Stream); return true; } else { if (Stream) fclose(Stream); return false; } } else { MessageBoxA(0, "Can't write extraitem.bin", "ERROR", 0x1000u); return false; } }
  4. //Adress: 0x401A87 void DoWar(int Index, int Target) { if (Index > 0 && Target >= 0 && Index < MaxGuild && Target < MaxGuild) { if (Index != Target) { char IndexGuildName[12]{}; char TargetGuildName[12]{}; GetGuildName(Index, IndexGuildName); GetGuildName(Target, TargetGuildName); int IndexGuildWar = g_pGuildWar[Index]; if (IndexGuildWar >= MaxGuild) IndexGuildWar = 0; int TargetGuildWar = g_pGuildWar[Target]; if (TargetGuildWar >= MaxGuild) TargetGuildWar = 0; if (Target) { if (IndexGuildWar || TargetGuildWar == Index) { if (IndexGuildWar || TargetGuildWar != Index) { snprintf(Buffer, 0x80u, "err,dowar my:%d ta:%d ct:%d et:%d", Index, Target, IndexGuildWar, TargetGuildWar); Log(Buffer, "-system", 0); } else { snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_War_Started], IndexGuildName, TargetGuildName); SendNotice(Buffer); g_pGuildWar[Index] = Target; for (int i = 0; i < MAX_USER; ++i) { if (pUser[i].Mode == USER_PLAY && (pMob[i].MOB.Guild == Index || pMob[i].MOB.Guild == Target)) { SendWarInfo(i, g_pGuildZone[4].ChargeClan); } } } } else { snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_War_Declared], IndexGuildName, TargetGuildName); SendGuildNotice(Index, Buffer); SendGuildNotice(Target, Buffer); g_pGuildWar[Index] = Target; } } else if (IndexGuildWar > 0 && IndexGuildWar < MaxGuild) { GetGuildName(IndexGuildWar, TargetGuildName); if (g_pGuildWar[IndexGuildWar] == Index) { snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_War_Canceled], IndexGuildName, TargetGuildName); g_pGuildWar[IndexGuildWar] = 0; g_pGuildWar[Index] = 0; for (int j = 0; j < MAX_USER; ++j) { if (pUser[j].Mode == USER_PLAY && (pMob[j].MOB.Guild == Index || pMob[j].MOB.Guild == IndexGuildWar)) { SendWarInfo(j, g_pGuildZone[4].ChargeClan); } } } else { snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_War_declare_canceled], IndexGuildName, TargetGuildName); g_pGuildWar[Index] = 0; } SendGuildNotice(Index, Buffer); SendGuildNotice(IndexGuildWar, Buffer); } } } else { snprintf(Buffer, 0x80u, "err,dowar my:%d ta:%d", Index, Target); Log(Buffer, "-system", 0); } }
  5. //Adress: 0x401B95 void DoAlly(int Index, int Target) { if (Index > 0 && Target >= 0 && Index < MaxGuild && Target < MaxGuild) { if (Index != Target) { char TargetGuildName[12]{}; char IndexGuildName[12]{}; GetGuildName(Index, IndexGuildName); GetGuildName(Target, TargetGuildName); int IndexGuildAlly = g_pGuildAlly[Index]; if (IndexGuildAlly >= MaxGuild) IndexGuildAlly = 0; if (Target) { if (!IndexGuildAlly) { snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_Ally_Declared], IndexGuildName, TargetGuildName); SendGuildNotice(Index, Buffer); SendGuildNotice(Target, Buffer); g_pGuildAlly[Index] = Target; } } else { int Ally = g_pGuildAlly[Index]; if (Ally && Ally < MaxGuild) { GetGuildName(Ally, TargetGuildName); snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_Ally_Canceled], IndexGuildName, TargetGuildName); SendGuildNotice(Index, Buffer); SendGuildNotice(Ally, Buffer); g_pGuildAlly[Index] = 0; g_pGuildAlly[Ally] = 0; } } for (int i = 0; i < MAX_USER; ++i) { if (pUser[i].Mode == USER_PLAY && pMob[i].MOB.Guild == Index) SendWarInfo(i, g_pGuildZone[4].ChargeClan); } } } else { snprintf(Buffer, 0x80u, "err,doally my:%d ta:%d", Index, Target); Log(Buffer, "-system", 0); } }
  6. //Adress: 0x4019D3 void SetCityTower() { GuildLeader = 0; int ClanControl[5] = { 0 }; for (int i = 0; i < 5; ++i) { GuildZoneLeader[i] = 0; int TowerIndex = pItem[i + 1742].ITEM.sIndex; int ChargeCount = g_pGuildZone[i].ChargeCount; int ChargeGuild = g_pGuildZone[i].ChargeGuild; int ChargeClan = g_pGuildZone[i].ChargeClan; GuildZoneLeader[i] = ChargeGuild; ClanControl[i] = ChargeClan; if (ChargeCount >= 4) ChargeCount = 4; else if (ChargeCount < 0) ChargeCount = 0; int ItemIndex = i + 67; pItem[ItemIndex].ITEM.sIndex = ChargeCount + 3145; pItem[ItemIndex].ITEM.stEffect[0].cEffect = 56; pItem[ItemIndex].ITEM.stEffect[0].cValue = ChargeGuild / 256; pItem[ItemIndex].ITEM.stEffect[1].cEffect = 57; pItem[ItemIndex].ITEM.stEffect[1].cValue = ChargeGuild; pItem[ItemIndex].ITEM.stEffect[2].cEffect = 0; pItem[ItemIndex].ITEM.stEffect[2].cValue = 0; if (TowerIndex != pItem[ItemIndex].ITEM.sIndex) { int ItemPosX = pItem[ItemIndex].PosX; int ItemPosY = pItem[ItemIndex].PosY; MSG_CreateItem stCreateItem{}; memset(&stCreateItem, 0, sizeof(MSG_CreateItem)); stCreateItem.Header.Type = MSG_CreateItem_Opcode; stCreateItem.Header.Size = sizeof(MSG_CreateItem); stCreateItem.ItemID = ItemIndex + 15000; memcpy(&stCreateItem.Item, &pItem[ItemIndex].ITEM, sizeof(STRUCT_ITEM)); stCreateItem.GridX = ItemPosX; stCreateItem.GridY = ItemPosY; stCreateItem.Rotate = pItem[ItemIndex].Rotate; stCreateItem.State = pItem[ItemIndex].State; stCreateItem.Height = pItem[ItemIndex].Height; GridMulticast(ItemPosX, ItemPosY, (MSG_STANDARD*)&stCreateItem, 0); } } if (ClanControl[0] == ClanControl[1] && ClanControl[1] == ClanControl[2] && ClanControl[2] == ClanControl[3] && ClanControl[3] == ClanControl[4]) { GuildLeader = ClanControl[0]; } }
  7. Rapaz, isso ai eu não sei não..
  8. Na questão da font, você pode criar um .txt dentro da pasta do cliente com o nome "font" é dentro dela o nome da fonte que você quer. ou se você usa a tmProjetc você pode mudar direto no projeto... Só proucurar por"Tahoma" é mudar o nome para o da font da sua preferencia.
  9. Só jogar na sua hookpatch do seu cliente patch. strcpy((char*)0x5F9320, "Meu Servidor");
  10. BOm, isso ta com cara de ser cliver... Tem que verificar se o cliver do cliente é compativel com o do servidor. Por exemplo, se o cliver do cliente estiver 1052, e o do servidor estiver 1051. Vai dá diferença.
  11. Eita, tu viu onde? tem video? to tentando descobrir como funciona essas funções... essa do Lotto eu já descobri, é um sistema de Bet onde você faz a aposta no Time A ou Time B ou tu aposta no empate.. Ai tem a a odds que multiplica o valor caso você acerte o placar.
  12. Bom, não tem misterio, a versão 7.556 é uma versão oficial do jogo vazada. Então ela tem todos os sistemas introduzidos, o problema mesmo é descobrir como eles funcionam. Ai, eu uso logica, uso cliente, uso tudo para tentar descobrir. Tem outros sistemas também... esses aqui por exemplo.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.