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

Sc2ALLin

Ruby Member
  • Total de Posts

    2.143
  • Registro em

  • Última visita

  • Dias Ganhos

    1
  • WCoins

    357

Sc2ALLin ganhou no último dia 31 de Janeiro 2021

Sc2ALLin teve o conteúdo mais curtida!

Sobre Mim

  • Discord
    sc2allin

Últimos Visitantes

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

  5. Pô, complicado... se tiver umas boas provas mano... já posta aqui, pra coloca ele na blacklist.
  6. Já dizia o Coringa, Se você é bom numa coisa, nunca faça de graça.
  7. //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; }
  8. oxe cuidado com oque? até onde eu sei, ele é o melhor.
  9. //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; }
  10. 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
  11. 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.
  12. Pô, pior que não. Acreadito que boa partes dos programador bons hoje em dia ou estão com seus servidores aberto ou até sairam da area do WYD. Só menceionei mesmo para tu tomar cuidado, porque utimamente ta bem complicado. Muita gente que não sabe programar, se meter a programador, outros que não sabem nem usar um if dando cursos de programação então fica atento ai, porque os malandros estão por ai...
×
×
  • 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.