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

Sc2ALLin

Ruby Member
  • Total de Posts

    2.144
  • 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.546 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. 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.
  2. Função Atualizada, adicionado o SetAffectMob.
  3. 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; } } }
  4. 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 };
  5. Oi boa tarde td bem . como q faço para mandar as mensagem ??

  6. Pô, complicado... se tiver umas boas provas mano... já posta aqui, pra coloca ele na blacklist.
  7. Já dizia o Coringa, Se você é bom numa coisa, nunca faça de graça.
  8. //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; }
  9. oxe cuidado com oque? até onde eu sei, ele é o melhor.
  10. //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; }
  11. Bom, eu tenho um penca de conteúdo guardado da antiga CB. Ai acabei encontrando esse pdf aqui de 2017. Então para quem deseja aprender, ta ai. Link: https://mega.nz/file/L10jzJaQ#TjMW7u9xR1DSEs8UXAGRk297hUMWbn1D7UNHIlMJ5f4
  12. Bom, se alguem deseja tentar fazer as envoks fora do grupo usando as descopilações do Gui vou dá uma mãozinha, aquii está onde é necessario mexer. MSG Atack GetEmptyMobGrid CMob::StandingByProcessor CMob::BattleProcessor StandingByProcessor GetAttackArea ProcessAffect MobAttackOne SendSummonParty GenerateSummon GenerateMob MountProcess Lembrando também, que as envoks não ficam mais no partylsit. Elas tem uma variavel só elas, então não confundam.
×
×
  • 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.