Ir para conteúdo
Faça parte da equipe! (2024) ×

Sc2ALLin

Ruby Member
  • Total de Posts

    2.146
  • Registro em

  • Última visita

  • Dias Ganhos

    1
  • WCoins

    358

Sc2ALLin ganhou no último dia 31 de Janeiro 2021

Sc2ALLin teve o conteúdo mais curtida!

Sobre Mim

  • Discord
    sc2allin

Últimos Visitantes

3.550 visualizações

Sc2ALLin's Achievements

Experiente

Experiente (8/15)

  • Querido Rara
  • Usuário Notório Rara
  • Notado Rara
  • Senhor do tempo Rara
  • Lenda viva! Rara

Emblemas Recentes

2,3k

Reputação

  1. @ Edit Adicionado a função "ClearPocessRanking".
  2. // TMSrv 7.56 004C1FC0 | TMSrv 7.57 00573A30 void ProcessRanking() { if (RankingTime > 0) { --RankingTime / 5; if (!(RankingTime % 5)) { int kRank1 = 0; int kRank2 = 0; for (int i = 1; i < MAX_USER; ++i) { if (pUser[i].Mode == USER_PLAY && pMob[i].MOB.CurrentScore.Hp > 0) { int TargetX = pMob[i].TargetX; int TargetY = pMob[i].TargetY; if (TargetX >= kRanking1X && TargetX <= kRanking2X && TargetY >= kRanking1X && TargetY <= kRanking2Y) { if (RankingProcess == 1) { if (i == Ranking1) ++kRank1; if (i == Ranking2) ++kRank2; } else { if (pMob[i].MOB.Guild == Ranking1) kRank1 += pMob[i].MOB.CurrentScore.Level; if (pMob[i].MOB.Guild == Ranking2) kRank2 += pMob[i].MOB.CurrentScore.Level; } } } } if (!kRank1 || !kRank2) RankingTime = 0; } if (RankingTime < 60) { SendDamage(142, 4007, 195, 4042); SendDamage(142, 4046, 195, 4082); SendEnvEffect(142, 4007, 168, 4018, 32, 0); SendEnvEffect(142, 4071, 168, 4082, 32, 0); SendEnvEffect(142, 4019, 168, 4030, 32, 0); SendEnvEffect(142, 4059, 168, 4070, 32, 0); SendEnvEffect(142, 4031, 168, 4042, 32, 0); SendEnvEffect(142, 4047, 168, 4058, 32, 0); SendEnvEffect(168, 4007, 195, 4018, 32, 0); SendEnvEffect(168, 4071, 195, 4082, 32, 0); SendEnvEffect(168, 4019, 195, 4030, 32, 0); SendEnvEffect(168, 4059, 195, 4070, 32, 0); SendEnvEffect(168, 4031, 195, 4042, 32, 0); SendEnvEffect(168, 4047, 195, 4058, 32, 0); } else if (RankingTime < 120) { SendDamage(142, 4007, 195, 4034); SendDamage(142, 4055, 195, 4082); SendEnvEffect(142, 4007, 168, 4018, 32, 0); SendEnvEffect(142, 4071, 168, 4082, 32, 0); SendEnvEffect(142, 4019, 168, 4030, 32, 0); SendEnvEffect(142, 4059, 168, 4070, 32, 0); SendEnvEffect(168, 4007, 195, 4018, 32, 0); SendEnvEffect(168, 4071, 195, 4082, 32, 0); SendEnvEffect(168, 4019, 195, 4030, 32, 0); SendEnvEffect(168, 4059, 195, 4070, 32, 0); } else if (RankingTime < 180) { SendDamage(142, 4007, 195, 4019); SendDamage(142, 4070, 195, 4082); SendEnvEffect(142, 4007, 168, 4018, 32, 0); SendEnvEffect(142, 4071, 168, 4082, 32, 0); SendEnvEffect(169, 4007, 195, 4018, 32, 0); SendEnvEffect(169, 4071, 195, 4082, 32, 0); } } if (RankingTime <= 0) { int nRank1 = 0; int nRank2 = 0; int mScore1 = 0; int mScore2 = 0; int TotalScore1 = 0; int TotalScore2 = 0; for (int j = 1; j < MAX_USER; ++j) { if (pUser[j].Mode == USER_PLAY && pMob[j].MOB.CurrentScore.Hp > 0) { int TargetX = pMob[j].TargetX; int TargetY = pMob[j].TargetY; if (TargetX >= kRanking1X && TargetX <= kRanking2X && TargetY >= kRanking1X && TargetY <= kRanking2Y) { if (RankingProcess == 1) { if (j == Ranking1) ++nRank1; if (j == Ranking2) ++nRank2; } else { if (pMob[j].MOB.Guild == Ranking1) nRank1 += pMob[j].MOB.CurrentScore.Level; if (pMob[j].MOB.Guild == Ranking2) nRank2 += pMob[j].MOB.CurrentScore.Level; } if (pMob[j].MOB.Equip[13].sIndex == 769) { if (j == Ranking1) mScore1 += pMob[j].MOB.Equip[13].stEffect[0].cValue; if (j == Ranking2) mScore2 += pMob[j].MOB.Equip[13].stEffect[0].cValue; } } } } nRanking1[NAME_LENGTH - 1] = 0; nRanking1[NAME_LENGTH - 2] = 0; nRanking2[NAME_LENGTH - 1] = 0; nRanking2[NAME_LENGTH - 2] = 0; TotalScore1 = nRank1 + mScore1; TotalScore2 = nRank2 + mScore2; for (int k = 1; k < MAX_USER; ++k) { if (pUser[k].Mode == USER_PLAY) { int isRank = false; if (RankingProcess == 1) { if (k == Ranking1 || k == Ranking2) isRank = true; } else { if (pMob[k].MOB.Guild == Ranking1 || pMob[k].MOB.Guild == Ranking2) isRank = false; } if (isRank) { if (TotalScore1 == TotalScore2) { SendClientSignalParm(k, ESCENE_FIELD, _MSG_StartTime, 0); snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_S_S_Draw], nRanking1, nRanking2, TotalScore1, TotalScore2); SendClientMessage(k, Buffer); } else { SendClientSignalParm(k, ESCENE_FIELD, _MSG_StartTime, 0); if (TotalScore1 > TotalScore2) snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_S_WinBy_S], nRanking1, nRanking2, TotalScore1, TotalScore2); else snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_S_WinBy_S], nRanking2, nRanking1, TotalScore1, TotalScore2); SendClientMessage(k, Buffer); } } } } MSG_MessageDBRecord stDBRecord; memset(&stDBRecord, 0, sizeof(MSG_MessageDBRecord)); stDBRecord.Type = _MSG_MessageDBRecord; stDBRecord.ID = 0; stDBRecord.Size = sizeof(MSG_MessageDBRecord); ClearPocessRanking(); } } // TMSrv 7.56 004C3A90 | TMSrv 7.57 00575300 void ClearPocessRanking() { RankingProcess = 0; RankingTime = 0; Ranking1 = 0; Ranking2 = 0; nRanking1[0] = 0; nRanking2[0] = 0; ClearAreaTeleport(kRanking1X, kRanking1Y, kRanking2X, kRanking2Y, 2572, 1752); }
  3. Rapaz, moderzinar o cliente do 7.54 no meu ponto de vista é meio complicado. Principalmente na questão de criação de novos itens pelo mais simples que sejam. E se você olha direitinho aqui mesmo na comunidade tem contéudos da versão.
  4. Função Atualizada, adicionado o SetAffectMob.
  5. void VeridAttack(int Index, int SkillType) { int CurHP = pMob[Index].MOB.CurrentScore.Hp / pMob[Index].MOB.BaseScore.MaxHp / 10; int TargetX = pMob[Index].TargetX; int TargetY = pMob[Index].TargetY; if (!CurHP) { if (pMob[Index].UnknowByte_1600) { if (pMob[Index].UnknowByte_1600 == 1 && pMob[Index].MOB.CurrentScore.Hp <= pMob[Index].MOB.BaseScore.MaxHp / 20) { SetAffectMob(Index, 11, 1, 120); pMob[Index].UnknowByte_1600 = 2; pMob[Index].UnknowByte_1688 = 120; return; } } else { SetAffectMob(Index, 9, 0, 300); pMob[Index].UnknowByte_1600 = 1; } } MSG_Attack Attack; memset(&Attack, 0, sizeof(MSG_Attack)); Attack.PosX = TargetX; Attack.PosY = TargetY; GetAttackTarget(TargetX, TargetY, 13, 10, &Attack, Index, 2); Attack.Motion = 0; Attack.SkillIndex = 0; int AttackArea = GetAttackArea(Index, SkillType, &Attack); if (AttackArea) { if (SkillType == 1) { if (pMob[Index].UnknowByte_1600) CurHP = rand() % 10; if (CurHP < 5) { Attack.SkillIndex = 114; for (int i = 0; i < MAX_TARGET; ++i) { if (Attack.Dam[i].TargetID < MAX_USER) SetAffectMob(Attack.Dam[i].TargetID, 1, 1, 16); } } else { Attack.SkillIndex = 113; for (int j = 0; j < MAX_TARGET; ++j) { if (Attack.Dam[j].TargetID && Attack.Dam[j].TargetID < MAX_USER) SetAffectMob(Attack.Dam[j].TargetID, 20, 1, 32); } } } else if (SkillType == 3) { Attack.SkillIndex = 115; } else { Attack.SkillIndex = 116; } Attack.ID = ESCENE_FIELD; Attack.AttackerID = Index; Attack.Tick = ServerConfig->CurrentTime; Attack.PosX = TargetX; Attack.PosY = TargetY; Attack.Size = sizeof(MSG_Attack); Attack.Type = _MSG_Attack; Attack.CurrentMp = -1; Attack.ReqMp = -1; GridMulticastRange(TargetX, TargetY, (MSG_STANDARD*)&Attack, 0); for (int k = 0; k < MAX_TARGET; ++k) { int Target = Attack.Dam[k].TargetID; if (pMob[Target].MOB.CurrentScore.Hp <= 0) { pMob[Target].MOB.CurrentScore.Hp = 0; MobKilled(Target, Index, 0, 0); } } } return; } void SetAffectMob(int conn, int Type, int Value, int Time) { for (int i = 1; i < MAX_SKILL; ++i) { if (pMob[conn].Affect[i].Type == Type && pMob[conn].Affect[i].Value == Value) { pMob[conn].Affect[i].Type = Type; pMob[conn].Affect[i].Value = Value; pMob[conn].Affect[i].Time = Time; pMob[conn].GetCurrentScore(conn); return; } } for (int j = 1; j < MAX_SKILL; ++j) { if (!pMob[conn].Affect[j].Type) { pMob[conn].Affect[j].Type = Type; pMob[conn].Affect[j].Value = Value; pMob[conn].Affect[j].Time = Time; pMob[conn].GetCurrentScore(conn); return; } } }
  6. int g_pMountBonus[30][6] = { // ATK,MG,PR, Imu, Spped, Abs { 10, 1, 0, 0, 4, 75 },//Porco { 10, 1, 0, 0, 4, 75 },//Javali { 50, 10, 0, 0, 6, 75 },//Lobo { 80, 15, 0, 0, 6, 75 },//Dragão_Menor { 100, 20, 0, 0, 6, 75 },//Urso { 150, 25, 0, 0, 6, 75 },//Dente_de_Sabre { 250, 50, 40, 0, 6, 75 },//Cavalo_s/Sela_N { 300, 60, 50, 0, 6, 75 },//Cavalo_Fantasm_N { 350, 65, 60, 0, 6, 75 },//Cavalo_Leve_N { 400, 70, 70, 0, 6, 75 },//Cavalo_Equip_N { 500, 85, 80, 0, 6, 73 },//Andaluz_N { 250, 50, 0, 16, 6, 75 },//Cavalo_s/Sela_B { 300, 60, 0, 20, 6, 75 },//Cavalo_Fantasm_B { 350, 65, 0, 24, 6, 75 },//Cavalo_Leve_B { 400, 70, 0, 28, 6, 75 },//Cavalo_Equip_B { 500, 85, 0, 32, 6, 73 },//Andaluz_B { 550, 90, 0, 0, 6, 73 },//Fenrir { 600, 90, 0, 0, 6, 66 },//Dragão { 550, 90, 0, 20, 6, 73 },//Fenrir Sombrio { 650, 100, 60, 28, 6, 65 },//Tigre_de_Fogo { 700, 110, 80, 32, 6, 65 },//Dragão_Vermelho { 570, 90, 20, 16, 6, 71 },//Unicórnio { 570, 90, 30, 8, 6, 71 },//Pegasus { 570, 90, 40, 12, 6, 69 },//Unisus { 590, 95, 30, 20, 6, 69 },//Grifo { 600, 95, 40, 16, 6, 65 },//Hipogrifo { 600, 95, 50, 16, 6, 65 },//Grifo_Sangrento { 600, 40, 60, 28, 6, 65 },//Svadilfari { 300, 95, 60, 28, 6, 65 },//Sleipnir { 150, 25, 0, 20, 6, 75 }//Pantera Negra }; int g_pMountTempBonus[20][6] = { // ATK, MG, PR, Imu, Spped, Abs { 35, 7, 0, 0, 6, 75 },//Shire(3dias) { 350, 55, 10, 28, 6, 74 },//Thoroughbred(3dias) { 450, 55, 0, 0, 6, 74 },//Klazedale(3dias) { 35, 7, 0, 0, 6, 75 },//Shire(15dias) { 450, 72, 10, 28, 6, 74 },//Thoroughbred(15dias) { 450, 72, 0, 0, 6, 74 },//Klazedale(15dias) { 120, 45, 0, 0, 6, 75 },//Shire(30dias) { 450, 72, 10, 28, 6, 74 },//Thoroughbred(30dias) { 450, 72, 0, 0, 6, 74 },//Klazedale(30dias) { 325, 35, 16, 28, 6, 65 },//Gullfaxi(30dias) { 350, 45, 10, 4, 6, 65 },//Tigre_de_Fogo { 250, 25, 0, 31, 6, 65 },//Dragão_Vermelho { 80, 15, 0, 31, 6, 75 },//Dragão_Menor { 950, 145, 60, 20, 6, 75 },//Dragão_Akelo { 950, 145, 60, 20, 6, 75 },//Dragão_Hekalo { 300, 60, 50, 0, 6, 75 },//Aranha_Infernal { 350, 65, 60, 0, 6, 75 },//Lobo_Ártico { 400, 70, 70, 0, 6, 75 },//Dragão_de_Osso { 500, 85, 80, 0, 6, 73 },//Tarântula { 0, 0, 0, 0, 0, 0 }//Corça };
  7. Oi boa tarde td bem . como q faço para mandar as mensagem ??

  8. Pô, complicado... se tiver umas boas provas mano... já posta aqui, pra coloca ele na blacklist.
  9. Já dizia o Coringa, Se você é bom numa coisa, nunca faça de graça.
  10. //0x4010BE; int GetTownTax(int Zone, int conn) { long long Tax = TownTax[Zone]; int Coin = (int)(Tax / 1000000000); int SilverBar = (int)(Tax / 1000000000); int TotalCoin = pMob[conn].MOB.Coin + Coin; if (TotalCoin >= 2000000000) { SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_get_more_than_2G]); return false; } STRUCT_ITEM Item; memset(&Item, 0, sizeof(STRUCT_ITEM)); Item.sIndex = 4011; if (SilverBar) { int EmptySlot = 0; for (int i = 0; i < MAX_CARRY - 4; ++i) { if (BASE_CanCarry(pMob[conn].MOB.Carry, i)) { if (!pMob[conn].MOB.Carry[i].sIndex) ++EmptySlot; } } if (SilverBar > EmptySlot) { SendClientMessage(conn, g_pMessageStringTable[_NN_You_Have_No_Space_To_Trade]); return false; } for (int j = 0; j < MAX_CARRY - 4; ++j) { if (!pMob[conn].MOB.Carry[j].sIndex) { if (BASE_CanCarry(pMob[conn].MOB.Carry, j)) { memcpy(&pMob[conn].MOB.Carry[j], &Item, sizeof(STRUCT_ITEM)); SendItem(conn, ITEM_PLACE_CARRY, j, &Item); snprintf(szLog, 0x80u, "etc, Town tax silver 10 send (%d)", Zone); Log(szLog, pUser[conn].AccountName, pUser[conn].IP); if (!--SilverBar) break; } } } } TownTax[Zone] = 0; snprintf(szLog, 0x80u, "etc, Town tax coin %d(%d)", Coin, Zone); Log(szLog, pUser[conn].AccountName, pUser[conn].IP); pMob[conn].MOB.Coin = TotalCoin; SendCoin(conn); DrawConfig(1); return true; }
  11. oxe cuidado com oque? até onde eu sei, ele é o melhor.
  12. //0057EB60 int GetMountBonus(int Index, int Damage) { if (Index >= 1000) return Damage; int MountHP = 0; int MountIndex = pMob[Index].MOB.Equip[14].sIndex; if (MountIndex >= 2360 && MountIndex < 2390 && pMob[Index].MOB.Equip[14].stEffect[0].sValue > 0) { int MountDam = g_pMountBonus[ MountIndex - 2360][0]; if (pMob[Index].MOB.Equip[14].stEffect[1].cEffect == 120) MountDam += 10; if (MountDam > 99) MountDam = 99; MountHP = Damage * MountDam / 100; if (MountHP > 0) { if (MountHP >= 5000) MountHP = 5000; ProcessAdultMount(Index, MountHP); } } else if (MountIndex >= 3980 && MountIndex < 4000) { MountHP = Damage * g_pMountBonus2[MountIndex - 2380][0] / 100; } int FinalDam = Damage - MountHP; if (Damage - MountHP <= 0) return true; return FinalDam; }
×
×
  • 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.