Перейти к содержанию
Asterios

VOS мобы двоящиеся


Рекомендуемые сообщения

Ревизия: 31079М

Моб: https://asterios.tm/index.php?cmd=bd#mob.drop.21524

Из него появляется: https://asterios.tm/index.php?cmd=bd#mob.drop.21525

 

Проблема в том, что очень редко появляется моб с ИД 21525. Судя по кол-ву убийств, шанс появления около 8%.

Когда на оффе/ПТС там около 90% шанс появления. И что странно, второй моб сразу в таргете, чего быть не должно.

моб с ИД 21525 не должен заменять 21524 моба, они оба должны быть.


Скрины статов мобов и кол-ва убийств:

Скрытый текст

 

 

dcb8e3de238fcd.jpg

 

 

p.s. С этим изменением было бы быстрее там качаться.

Изменено пользователем Steelgar
Ссылка на комментарий
Поделиться на другие сайты

20.09.2018 в 22:00, Steelgar сказал:

Когда на оффе/ПТС там около 90% шанс появления.

где доказательства? и нужны точные цифры

Ссылка на комментарий
Поделиться на другие сайты

Откуда можно взять их? Какому источнику верят? HF на оффе уже сто лет нету...

Я там просто много часов на руоффе провел, это сразу бросается в глаза

Изменено пользователем Steelgar
Ссылка на комментарий
Поделиться на другие сайты

https://youtu.be/pnRY8bifaQc

 

 Вроде офф

Изменено пользователем Steelgar
Ссылка на комментарий
Поделиться на другие сайты

Нашел кусок кода из PTS сервера из файла ai.obj

Вот данные по описанию моба 21524:

Скрытый текст

npc_begin    warrior    21524    [brilliant_blade]    category={}    level=61    exp=146308200    ex_crt_effect=0    unique=0    s_npc_prop_hp_rate=1    race=divine    sex=male    skill_list={@s_npc_prop_race_divine;@s_npc_prop_hp_lv_p0;@s_npc_prop_mp_lv_p0;@s_npc_prop_pa_lv_p3;@s_npc_prop_ma_lv_p3;@s_npc_prop_pd_lv_n3;@s_npc_prop_md_lv_n3;@s_npc_prop_armor_type_n;@s_npc_prop_weapon_type_sword;@s_npc_critical_power;@s_npc_critical_chance}    slot_chest=[]    slot_rhand=[dagger_of_magicflame]    slot_lhand=[]    collision_radius={13;13}    collision_height={26;26}    hit_time_factor=0.52    hit_time_factor_skill=-1    ground_high={165;0;0}    ground_low={50;0;0}    str=40    int=21    dex=30    wit=20    con=43    men=20    org_hp=1985.55926    org_hp_regen=7.5    org_mp=1066.8    org_mp_regen=2.7    base_attack_type=sword    base_attack_range=40    base_damage_range={0;0;80;120}    base_rand_dam=30    base_physical_attack=501.08068    base_critical=4    physical_hit_modify=4.75    base_attack_speed=253    base_reuse_delay=0    base_magic_attack=342.17315    base_defend=252.49346    base_magic_defend=168.112997103103    base_attribute_attack={none;0}    base_attribute_defend={20;20;20;20;53;-13;0}    physical_avoid_modify=0    shield_defense_rate=0    shield_defense=0    safe_height=100    soulshot_count=0    spiritshot_count=0    clan={@saint_clan}    ignore_clan_list={}    clan_help_range=300    undying=0    can_be_attacked=1    corpse_time=7    no_sleep_mode=0    agro_range=300    passable_door=0    can_move=1    flying=0    has_summoner=0    targetable=1    show_name_tag=1    npc_ai={[brilliant_blade];{[MoveAroundSocial]=90};{[MoveAroundSocial1]=74};{[MoveAroundSocial2]=90};{[OtherSelf]=@brilliant_blade_1};{[OtherSelfAI]=[brilliant_blade_1]};{[IsMainForm]=1};{[SoulShot]=200};{[SoulShotRate]=5};{[SpiritShot]=100};{[SpiritShotRate]=10};{[LongRangeGuardRate]=10};{[PhysicalSpecial]=@s_npc_super_strike6};{[SelfBuff]=@s_npc_ultimate_evasion2};{[TeleportEffect]=@s_av_teleport}}    event_flag={0}    unsowing=0    acquire_exp_rate=33.6581388    acquire_sp=11024    acquire_rp=0    corpse_make_list={{[rp_blue_wolve's_leather_mail];1;1;2.7858};{[hose_of_shrnoen_fabric];1;1;35.2032};{[scrl_of_ench_am_b];1;1;2.4585}}    additional_make_list={}    additional_make_multi_list={{{{[adena];12990;26340;100}};100};{{{[shrnoen's_leather_shirts_low];1;1;3.6406};{[shrnoen's_leather_shirts_fabric];1;1;26.8656};{[avadon_leather_mail_low];1;1;2.2343};{[avadon_leather_mail_lining];1;1;20.6395};{[shrnoen's_leather_gaiters_low];1;1;5.8287};{[shrnoen's_leather_gaiters_texture];1;1;40.7913}};9.9134};{{{[iron_ore];1;1;18.124};{[coal];1;1;18.124};{[charcoal];1;1;18.124};{[animal_bone];1;3;8.0551};{[animal_skin];1;1;24.1653};{[rp_blue_wolve's_tunic];1;1;0.0752};{[general_61_b];1;1;0.3021};{[special_61_b];1;1;0.0755};{[rare_61_b];1;1;0.0076};{[unique_61_b];1;1;0.0015};{[silver_arrow];20;60;12.9457}};100}}    ex_item_drop_list={{{{[herb_of_hp_a];1;1;55};{[greater_herb_of_hp_a];1;1;38};{[full_herb_of_hp_a];1;1;7}};42};{{{[herb_of_mp_a];1;1;7};{[greater_herb_of_mp_a];1;1;81};{[full_herb_of_mp_a];1;1;12}};11};{{{[herb_of_pa];1;1;20};{[herb_of_pa_speed];1;1;20};{[herb_of_crt_rate];1;1;20};{[vampiric_rage_herb];1;1;20};{[death_whisper_herb];1;1;20}};25};{{{[herb_of_ma];1;1;50};{[herb_of_ma_speed];1;1;50}};10};{{{[figher_herb];1;1;33};{[magician_herb];1;1;33};{[recovery_herb];1;1;34}};1};{{{[herb_of_move_speed];1;1;94};{[big_head_herb];1;1;3};{[vitality_herb1];1;1;3}};11}}    npc_end

 

Так вот в файле ai.obj класс  моба (brilliant_blade) наследует класс saint_ninja, в котором как раз прописан шанс 80% (выделил в коде), когда моба кто то атакует, кто именно появляется прописан в описании моба выше OtherSelf =@brilliant_anguish_1

Админы легко могут сами проверить взяв файлы с PTS  сервера. Кстати не один такой моб 21524, а 21531 (появляется из него 21658), 21539 (появляется из него 21540)

 

Класс brilliant_blade:

Скрытый текст

class brilliant_blade : saint_ninja {
handler:
    EventHandler MY_DYING(always_list, code_info, i4, i9, last_attacker, lparty, member, random1_list, target) {
        always_list = AllocCodeInfoList();
        random1_list = AllocCodeInfoList();
        target = last_attacker;

        if (HaveMemo(target, @darkness_falls_upon_the_dusk) == 1 && GetMemoState(target, @darkness_falls_upon_the_dusk) == 1 * 10 + 1) {
            random1_list.SetInfo(0, target);
        }

        if (HaveMemo(target, @darkness_falls_upon_the_dusk) == 1 && GetMemoState(target, @darkness_falls_upon_the_dusk) == 1 * 10 + 1) {
            random1_list.SetInfo(0, target);
        }

        if (IsNull(lparty) == 0) {
            for (i9 = 0; i9 < lparty.member_count; ++i9) {
                target = GetMemberOfParty(lparty, i9);

                if (HaveMemo(target, @darkness_falls_upon_the_dusk) == 1 && GetMemoState(target, @darkness_falls_upon_the_dusk) == 1 * 10 + 1) {
                    random1_list.SetInfo(0, target);
                }
            }
        }

        target = last_attacker;

        if (HaveMemo(target, @temptation_of_power) == 1 && GetMemoState(target, @temptation_of_power) == 1 * 10 + 1) {
            random1_list.SetInfo(1, target);
        }

        if (HaveMemo(target, @temptation_of_power) == 1 && GetMemoState(target, @temptation_of_power) == 1 * 10 + 1) {
            random1_list.SetInfo(1, target);
        }

        if (IsNull(lparty) == 0) {
            for (i9 = 0; i9 < lparty.member_count; ++i9) {
                target = GetMemberOfParty(lparty, i9);

                if (HaveMemo(target, @temptation_of_power) == 1 && GetMemoState(target, @temptation_of_power) == 1 * 10 + 1) {
                    random1_list.SetInfo(1, target);
                }
            }
        }

        while (IsNull(code_info = always_list.Next()) == 0) {
            code_info.code;
        }

        code_info = random1_list.RandomSelectOne();

        if (IsNull(code_info) == 0) {
            select (code_info.code) {
            case 0:
                SetCurrentQuestID(@darkness_falls_upon_the_dusk);
                target = code_info.RandomSelectOne();

                if (IsNull(target) == 0 && DistFromMe(target) <= 1500) {
                    i4 = Rand(1000);

                    if (i4 < 692) {
                        if (OwnItemCount(target, @q_blood_of_kel_mahum) + 1 >= 300) {
                            if (OwnItemCount(target, @q_blood_of_kel_mahum) < 300) {
                                GiveItem1(target, @q_blood_of_kel_mahum, 300 - OwnItemCount(target, @q_blood_of_kel_mahum));
                                SoundEffect(target, "ItemSound.quest_middle");
                                SetFlagJournal(target, @darkness_falls_upon_the_dusk, 2);
                                ShowQuestMark(target, @darkness_falls_upon_the_dusk);
                                SetMemoState(target, @darkness_falls_upon_the_dusk, 1 * 10 + 2);
                            }
                        } else {
                            GiveItem1(target, @q_blood_of_kel_mahum, 1);
                            SoundEffect(target, "ItemSound.quest_itemget");
                        }
                    }
                }

                break;
            case 1:
                SetCurrentQuestID(@temptation_of_power);
                target = code_info.RandomSelectOne();

                if (IsNull(target) == 0 && DistFromMe(target) <= 1500) {
                    i4 = Rand(1000);

                    if (i4 < 714) {
                        if (OwnItemCount(target, @q_gem_of_submission) + 1 >= 300) {
                            if (OwnItemCount(target, @q_gem_of_submission) < 300) {
                                GiveItem1(target, @q_gem_of_submission, 300 - OwnItemCount(target, @q_gem_of_submission));
                                SoundEffect(target, "ItemSound.quest_middle");
                                SetFlagJournal(target, @temptation_of_power, 2);
                                ShowQuestMark(target, @temptation_of_power);
                                SetMemoState(target, @temptation_of_power, 1 * 10 + 2);
                            }
                        } else {
                            GiveItem1(target, @q_gem_of_submission, 1);
                            SoundEffect(target, "ItemSound.quest_itemget");
                        }
                    }
                }

                break;
            }
        }

        super;
    }
}
 

 

класс saint_ninja :

Скрытый текст

 

class saint_ninja : warrior_physicalspecial {
parameter:
    int PhysicalSpecial = @s_npc_strike1;
    int SelfBuff = @s_self_might1;
    int IsMainForm = 1;
    int TeleportEffect = @s_self_might1;
    int OtherSelf = @orc;
    string OtherSelfAI = "saint_ninja";
    
handler:
    EventHandler CREATED() {
        myself.i_ai0 = 0;

        if (Skill_GetConsumeMP(SelfBuff) < myself.sm.mp && Skill_GetConsumeHP(SelfBuff) < myself.sm.hp && Skill_InReuseDelay(SelfBuff) == 0) {
            AddUseSkillDesire(myself.sm, SelfBuff, @ST_HEAL, @AMT_MOVE_TO_TARGET, 1000000);
        }

        if (IsMainForm == 0) {
            AddTimerEx(2000, 60000 * 5);
        }

        AddTimerEx(2001, 60000);
        super;
    }

    EventHandler ATTACKED(attacker, damage) {
        if (Rand(100) < 80 && IsMainForm == 1 && myself.i_ai0 == 0) {
            CreateOnePrivateEx(OtherSelf, OtherSelfAI, 0, 0, FloatToInt(myself.sm.x) + Rand(20), FloatToInt(myself.sm.y) + Rand(20), FloatToInt(myself.sm.z), 32768, 1000, GetIndexFromCreature(attacker), 1);
            myself.i_ai0 = 1;
        }

        super;
    }

    EventHandler TIMER_FIRED_EX(timer_id) {
        if (timer_id == 2000) {
            if (myself.p_state != PSTATE_ATTACK) {
                Despawn();
                return;
            } else {
                AddTimerEx(2000, 60000 * 5);
            }
        }

        if (timer_id == 2001) {
            if (myself.p_state != PSTATE_ATTACK) {
                InstantRandomTeleportInMyTerritory();

                if (Skill_GetConsumeMP(TeleportEffect) < myself.sm.mp && Skill_GetConsumeHP(TeleportEffect) < myself.sm.hp && Skill_InReuseDelay(TeleportEffect) == 0) {
                    AddUseSkillDesire(myself.sm, TeleportEffect, @ST_HEAL, @AMT_MOVE_TO_TARGET, 1000000);
                }
            }

            AddTimerEx(2001, 60000 * 5);
        }

        super;
    }

    EventHandler CLAN_ATTACKED(attacker, damage, i6, h0, f0) {
        if (IsInCombatMode(myself.sm) == 0 && DistFromMe(attacker) > 300 && myself.sm.alive == 1) {
            InstantTeleport(myself.sm, FloatToInt(attacker.x), FloatToInt(attacker.y), FloatToInt(attacker.z));

            if (Skill_GetConsumeMP(TeleportEffect) < myself.sm.mp && Skill_GetConsumeHP(TeleportEffect) < myself.sm.hp && Skill_InReuseDelay(TeleportEffect) == 0) {
                AddUseSkillDesire(myself.sm, TeleportEffect, @ST_HEAL, @AMT_MOVE_TO_TARGET, 1000000);
            }

            if (attacker.is_pc != 0 || IsInCategory(@summon_npc_group, attacker.class_id)) {
                f0 = 0;

                if (SetHateGroup >= 0) {
                    if (IsInCategory(SetHateGroup, attacker.occupation)) {
                        f0 = f0 + SetHateGroupRatio;
                    }
                }

                if (attacker.occupation == SetHateOccupation) {
                    f0 = f0 + SetHateOccupationRatio;
                }

                if (SetHateRace == attacker.race) {
                    f0 = f0 + SetHateRaceRatio;
                }

                f0 = 1.0 * damage / (myself.sm.level + 7) + f0 / 100 * 1.0 * damage / (myself.sm.level + 7);
                AddAttackDesire(attacker, @AMT_MOVE_TO_TARGET, f0 * 30);
            }
        } else {
            super;
        }
    }
}

 

 

Изменено пользователем Steelgar
Ссылка на комментарий
Поделиться на другие сайты

20.09.2018 в 22:00, Steelgar сказал:

И что странно, второй моб сразу в таргете, чего быть не должно.

 

Разве он автоматом не агрит? 

Ссылка на комментарий
Поделиться на другие сайты

У него есть особенность, что при появлении он телепортируется к игроку, если расстояние более 300 (событие CLAN_ATTACKED в классе saint_ninja) и он видит как атакуют его сородичей, т.е. если моб был убит 1 нюком и появился второй, он никуда не ТП.

Этот момент запечатлен на видео выше в 2:07, когда моб ТП к игроку.

 

"Разве он автоматом не агрит? "

Тут можно спорить, не 100% же должен менять цель.

Изменено пользователем Steelgar
Ссылка на комментарий
Поделиться на другие сайты

Спорить смысла нет, так как я не помню уже, как должно быть) Но насколько я помню, там если не 100/100 агров, то 99/100 точно - меня бесил этот аггр на топовом споте, первом.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...