Sc2ALLin ganhou no último dia 31 de Janeiro 2021
Sc2ALLin teve o conteúdo mais curtida!
Sobre Sc2ALLin
Sobre Mim
-
Discord
Sc2ALLin
Titulo do usuário
-
TItulo de usuário
Programador? Não, mexedor.
Últimos Visitantes
4.890 visualizações
Sc2ALLin's Achievements
-
Sc2ALLin começou a seguir Dúvidas , RE-UP Cliente 7.59 e Correção Wait a Moment
-
Holla, há um tempo atrás o caro seitbnao tinha postado uns arquivos que eram do supreme destiny se não me falha a memoria. Alguém teria como fazer o RE-UP do cliente que foi postado junto com esses arquivos? Desde já agradeço...
-
Rapaz, esse ai é very old...Umas das primeiras correções feitas para a 7.56 na epoca.
-
A maior parte dos caras hoje em dia aposta muito no visual, é painel para tudo... e a parte mais engraçada é que esses painéis funcionam. Aí, quando você vai ver uma função básica do servidor, tipo a água, está toda cagada.
-
Só lhe digo uma coisa, fuja dessas versões mirabolantes... É tenha em mente que as coisas realmente boa não são baratas, é como você pergunto quanto em media custa um desbugo podemos coloca ai entre 30 é 60 mil dependendo da versão.
-
Sc2ALLin começou a seguir [RE-UP] AgatePatch 7.556 e Descompilação StartQuiz TMSrv 7.56
-
//Adress: 0x401AD7 int QuizQuestion[75]; int QuizTimer[75]; void CQuiz::StartQuiz(int Room) { int Random = rand() % 4 + 4 * (Room % 25); QuizQuestion[Room] = Random; QuizTimer[Room] = 4; MSG_LongMessagePanel stMessage{}; memset(&stMessage, 0, sizeof(stMessage)); stMessage.Header.Type = MSG_LongMessagePanel_Opcode; // 0x7B1 stMessage.Header.Size = sizeof(MSG_LongMessagePanel); //stMessage.Parm1 = 0; //stMessage.Parm2 = 0; snprintf(stMessage.Line[0], sizeof(stMessage.Line[0]), " << No. %d >>", Room + 1); strcpy_s(stMessage.Line[1], sizeof(stMessage.Line[1]), g_pQuiz[Random].Line[0]); strcpy_s(stMessage.Line[2], sizeof(stMessage.Line[2]), g_pQuiz[Random].Line[1]); strcpy_s(stMessage.Line[3], sizeof(stMessage.Line[3]), g_pQuiz[Random].Line[2]); for (int i = 1; i < MAX_USER; ++i) { if (pUser[i].UnknowByte_2480 == Room) { pUser[i].UnknowByte_2504 = 1; if (Room % 25 == 24) { if (Room > 25) SendClientMessage(i, g_pMessageStringTable[_NN_Quiz_Cleared]); else SendClientMessage(i, g_pMessageStringTable[_NN_Quiz2_Cleared]); SendClientSignalParm(i, ESCENE_FIELD, 929, 14); } else { pUser[i].cSock.AddMessage((char*)&stMessage, sizeof(stMessage)); SendClientSignalParm(i, ESCENE_FIELD, 929, 14); } } } }
-
Bom, funcionar em qual sentido? ligar o Server? ou quando você liga dá algum tipo de erro?
-
Sc2ALLin começou a seguir Donwload TMRSV.map 6.13 + Explicação , Descompilação QuizProcess TMSrv 7.56 e TMSrv.map 7.56
-
//Adress: 0x401A7D int g_pCubePosition[25][8] = { //Legenda // X Y: Posição Incial // OX OY: Posição do portal de Concordancia com a pergunta // XX XY: Posição do portal de Discordancia com a pergunta // Exp: Exp Acrecensata ou Decrementa // X Y OX OY XX XY Exp NULL {1677, 4076, 1686, 4078, 1686, 4070, 1000, 0}, {1700, 4076, 1708, 4078, 1708, 4070, 1500, 0}, {1720, 4076, 1730, 4078, 1730, 4070, 2000, 0}, {1744, 4076, 1752, 4078, 1752, 4070, 2500, 0}, {1764, 4076, 1774, 4078, 1774, 4070, 3000, 0}, {1768, 4056, 1772, 4046, 1764, 4046, 10000, 0}, {1768, 4032, 1772, 4024, 1764, 4024, 3500, 0}, {1768, 4012, 1772, 4002, 1764, 4002, 4000, 0}, {1768, 3992, 1772, 3980, 1764, 3980, 4500, 0}, {1752, 3988, 1740, 3982, 1740, 3990, 5000, 0}, {1728, 3988, 1718, 3982, 1718, 3990, 5500, 0}, {1708, 3988, 1696, 3982, 1696, 3990, 15000, 0}, {1684, 3988, 1674, 3982, 1674, 3990, 6000, 0}, {1680, 4004, 1676, 4014, 1684, 4014, 6500, 0}, {1680, 4028, 1675, 4036, 1684, 4036, 7000, 0}, {1680, 4048, 1676, 4058, 1684, 4058, 7500, 0}, {1696, 4052, 1708, 4056, 1708, 4048, 8000, 0}, {1720, 4052, 1730, 4056, 1730, 4048, 8500, 0}, {1744, 4052, 1752, 4056, 1752, 4048, 9000, 0}, {1748, 4032, 1750, 4024, 1742, 4024, 20000, 0}, {1748, 4012, 1749, 4002, 1742, 4002, 10000, 0}, {1728, 4008, 1718, 4004, 1718, 4012, 1200, 0}, {1708, 4008, 1696, 4004, 1696, 4012, 1500, 0}, {1703, 4028, 1698, 4036, 1706, 4036, 30000, 0}, {1720, 4032, 3333, 3333, 3333, 3333, 20000, 0}, }; void CQuiz::QuizProcess(int Room) { int Value = 0; int Random = rand() % 100; if (Room % 25 == 23) { if (Random < 50) Value = 1; else if (Random < 60) Value = 2; else if (Random < 90) Value = 3; else Value = 4; } else if (Random < 40) { Value = 1; } else if (Random < 70) { Value = 2; } else if (Random < 90) { Value = 3; } else { Value = 4; } for (int i = 1; i < MAX_USER; ++i) { if (pUser[i].UnknowByte_2480 == Room && pUser[i].UnknowByte_2504) { pUser[i].UnknowByte_2504 = 0; int RoomStage = Room / 25; if (Room % 25 == 24) // Última sala? Recall Direto { DoRecall(i); continue; } int TargetX = pMob[i].TargetX; int TargetY = pMob[i].TargetY; int RoomIndex = Room % 25; int CubePosX = 0; int CubePosY = 0; int ChosenRoom = 0; if (g_pQuiz[QuizQuestion[Room]].Response == 1) // Checa se resposta é "sim" ou "não" { if (RoomStage) { if (RoomStage == 1) { CubePosX = g_pCubePosition[RoomIndex][2] + 128; CubePosY = g_pCubePosition[RoomIndex][3] - 128; } else { if (RoomStage == 2) CubePosX = g_pCubePosition[RoomIndex][2] + 256; else CubePosX = g_pCubePosition[RoomIndex][2]; CubePosY = g_pCubePosition[RoomIndex][3]; } } else { CubePosX = g_pCubePosition[RoomIndex][2]; CubePosY = g_pCubePosition[RoomIndex][3]; } } else if (RoomStage) { if (RoomStage == 1) { CubePosX = g_pCubePosition[RoomIndex][4] + 128; CubePosY = g_pCubePosition[RoomIndex][5] - 128; } else { if (RoomStage == 2) CubePosX = g_pCubePosition[RoomIndex][4] + 256; else CubePosX = g_pCubePosition[RoomIndex][4]; CubePosY = g_pCubePosition[RoomIndex][5]; } } else { CubePosX = g_pCubePosition[RoomIndex][4]; CubePosY = g_pCubePosition[RoomIndex][5]; } // Verifica se o jogador está no portal correto if (TargetX >= CubePosX && TargetX < CubePosX + 4 && TargetY >= CubePosY && TargetY < CubePosY + 4) { ChosenRoom = Value; if (Value == 4) ChosenRoom = 1; } else { ChosenRoom = -Value; if (Value == 4) { SendClientMessage(i, g_pMessageStringTable[_NN_Incorrect_kicked]); DoRecall(i); continue; } } if (ChosenRoom > 0) // Resposta correta { int ExpIncrese = 0; if (RoomStage) { if (RoomStage == 1) ExpIncrese = 4000 * ChosenRoom; else if (RoomStage == 2) ExpIncrese = 7600 * ChosenRoom; } else { ExpIncrese = 2000 * ChosenRoom; } pMob[i].MOB.Exp += ExpIncrese; if (pMob[i].CheckGetLevel()) { SendClientMessage(i, g_pMessageStringTable[_NN_Level_Up]); SendScore(i); } SendEtc(i); snprintf(Buffer, sizeof(Buffer), g_pMessageStringTable[_DD_Correct_answer], ChosenRoom, ExpIncrese); SendClientMessage(i, Buffer); } else // Resposta incorreta { int ExpDecrese = 0; if (RoomStage) { if (RoomStage == 1) ExpDecrese = 4000 * ChosenRoom; else if (RoomStage == 2) ExpDecrese = 7600 * ChosenRoom; } else { ExpDecrese = 2000 * ChosenRoom; } if (ExpDecrese > 0 && pMob[i].MOB.Exp < 0xEE6B2800) pMob[i].MOB.Exp += ExpDecrese; if (ExpDecrese < 0 && pMob[i].MOB.Exp > -ExpDecrese) pMob[i].MOB.Exp += ExpDecrese; snprintf(Buffer, 0x80u, g_pMessageStringTable[_DD_Incorrect_answer], ChosenRoom, ExpDecrese); SendClientMessage(i, Buffer); SendEtc(i); } int NextRoom = ChosenRoom + (Room % 25); int NextRoomIndex = Room % 25; for (int k = 0; k < 4 && NextRoom != NextRoomIndex; ++k) { if (NextRoom > NextRoomIndex) ++NextRoomIndex; if (NextRoom < NextRoomIndex) --NextRoomIndex; if (NextRoomIndex >= 25) { NextRoom = 48 - NextRoom; NextRoomIndex = 23; } } if (NextRoomIndex > 24) { SendClientMessage(i, g_pMessageStringTable[_NN_Incorrect_kicked]); DoRecall(i); } else { int InitCubePosX = g_pCubePosition[NextRoomIndex][0]; int InitCubePosY = g_pCubePosition[NextRoomIndex][1]; if (RoomStage == 1) { InitCubePosX += 128; InitCubePosY -= 128; } else if (RoomStage == 2) { InitCubePosX += 256; } DoTeleport(i, InitCubePosX, InitCubePosY, 1); int GetCubePosition = GetCubeTeleportPosition(pMob[i].TargetX, pMob[i].TargetY); if (GetCubePosition % 25 == 24) GenerateMob(GetCubePosition + 195, 0, 0); } } } if (Room % 25 != 24) GenerateMob(Room + 195, 0, 0); }
-
Muito??? Seria muito se fosse pdb pô...
-
Bom, elas boa parte delas são variáveis de inicialização. É eu não postei porque acho que além de min ninguém mais mexe no 7.56...
-
Olá, alguém teria o tmsrv.map do 7.56 para dá, vender, leiloar, compartilhar??
-
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
-
Descompilação BASE_ReadItemListFile TMSrv 7.56
Sc2ALLin respondeu ao tópico de Sc2ALLin em Descompilação
Atualizei o tópico com a strutct. -
Rapaz, é uma mistura de Boots de Lojinhas fakes com jogadores comprados.
-
//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; } }
-
//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); } }