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

nemo

Пользователи
  • Публикаций

    15
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Репутация

0

Информация о nemo

  • Звание
    Только пришел
  1. Как я понял в самом клиенте HF есть блокировка чата когда много повторений одинаковых слов. Так как на сервере вообще все блокировки выключены и чат все равно блокируется. И стоит перезагрузить клиент то чат сразу работает нормально. Возможно как то отключить эту блокировку? Я слышал что в NWindow.dll что то меняли на с4 и it но что не извесно. Сообщения в клиенте:
  2. Здравствуйте. Подскажите как в овероподобной сборке сделать чтоб определенный нпц спавнился в нужное время? То есть например после его убийства через два дня в 17.00. Или скрипт какой есть? Может в конфиг вывести как например у эпик рб? Не знаю где копать и ни как не найду откуда взять пример.
  3. Я сделал вот так вот. Теперь аукцион работает 100% нормально за любой итем который прописан в конфиге ALT_ITEM_AUCTION_BID_ITEM_ID. И забирает ставки и и отдает деньги в нужной валюте что выставлена в конфигах. Но в клиенте как на выше выложенном скрине так и осталась адена. Не то что иконка адены. А именно количество пишет аден сколько в инвентаре. А не тех итемов за которые он работает.
  4. Если ковырять клиент может кто нибудь помочь?
  5. Здравствуйте. Хочу сделать аукцион за другие итемы вместо аден. В принципе все сделал аукцион работает нормально. Но вот ни как не найду где поменять что бы там где выделено красным на скрине отображался нужный мне итем вместо адены. Уже перекопал все ядро так и не нашел. Если кто нибудь сталкивался то подскажите пожалуйста где копать? Спасибо.
  6. Все. Всем спасибо разобрался сам.
  7. Здравствуйте. Подскажите где в исходниках основанных на First Team найти формулу попадания blow скилов? В интернете нашел вот такую формулу- prelim_chance = dex_bonus * (base_weapon_crit / 10) * crit_loc_bonus * crit_height_bonus * ((land_chance_bonus + 100) / 100) * fatal_blow_rate_multiplier *skill_res_multiplier Но ни чего такого похожего у себя не нашел. Может она как то по другому в First Team рассчитывает? Или по другому написана? Подскажите кто сталкивался, где смотреть? Спасибо.
  8. Спасибо сейчас попробую. Кстати я посмотрел в других сборках First Team Lasteam MmoCore Overworld Revolt Shark Так вот там этот файл и код абсолютно одинаковые как у меня.
  9. А где взять его? Что то пока не нашел. Если есть у вас то можете выложить?
  10. Здравствуйте проблема с квестом взросление дракончика. фея Mimyu дает мне 4шт Лист Феи и я иду бить дракончиком деревья. После некоторого времени дерево должно у меня забрать Лист Феи но этого не происходит. Били 2 часа дерево и нечего не произошло и не один раз пробовали, и другие деревья но результат тот же. Помогите разобраться пожалуйста. Сборка grind-team Вот здесь как я понял сравнивает количество ударов по дереву - if(attaked_times > Min_Fairy_Tree_Attaks) Вот тут Min_Fairy_Tree_Attaks = 110; ставил меньше число но нечего не помогло. вот скрипт. _421_LittleWingAdventures.java package quests; import java.util.ArrayList; import java.util.List; import core.commons.dao.JdbcEntityState; import core.commons.threading.RunnableImpl; import core.commons.util.Rnd; import core.gameserver.ThreadPoolManager; import core.gameserver.ai.CtrlEvent; import core.gameserver.data.xml.holder.NpcHolder; import core.gameserver.model.Playable; import core.gameserver.model.Player; import core.gameserver.model.Summon; import core.gameserver.model.World; import core.gameserver.model.SimpleSpawner; import core.gameserver.model.instances.NpcInstance; import core.gameserver.model.items.ItemInstance; import core.gameserver.model.quest.Quest; import core.gameserver.model.quest.QuestState; import core.gameserver.network.l2.s2c.InventoryUpdate; import core.gameserver.scripts.Functions; import core.gameserver.scripts.ScriptFile; import core.gameserver.tables.PetDataTable; import core.gameserver.tables.PetDataTable.L2Pet; import core.gameserver.templates.npc.NpcTemplate; import core.gameserver.utils.Location; /* * Author DRiN, Last Updated: 2008/04/13 */ public class _421_LittleWingAdventures extends Quest implements ScriptFile { // NPCs private static int Cronos = 30610; private static int Mimyu = 30747; // Mobs private static int Fairy_Tree_of_Wind = 27185; private static int Fairy_Tree_of_Star = 27186; private static int Fairy_Tree_of_Twilight = 27187; private static int Fairy_Tree_of_Abyss = 27188; private static int Soul_of_Tree_Guardian = 27189; // Items private static int Dragonflute_of_Wind = L2Pet.HATCHLING_WIND.getControlItemId(); private static int Dragonflute_of_Star = L2Pet.HATCHLING_STAR.getControlItemId(); private static int Dragonflute_of_Twilight = L2Pet.HATCHLING_TWILIGHT.getControlItemId(); private static int Dragon_Bugle_of_Wind = L2Pet.STRIDER_WIND.getControlItemId(); private static int Dragon_Bugle_of_Star = L2Pet.STRIDER_STAR.getControlItemId(); private static int Dragon_Bugle_of_Twilight = L2Pet.STRIDER_TWILIGHT.getControlItemId(); // Quest Items private static int Fairy_Leaf = 4325; private static int Min_Fairy_Tree_Attaks = 110; public _421_LittleWingAdventures() { super(false); addStartNpc(Cronos); addTalkId(Mimyu); addKillId(Fairy_Tree_of_Wind); addKillId(Fairy_Tree_of_Star); addKillId(Fairy_Tree_of_Twilight); addKillId(Fairy_Tree_of_Abyss); addAttackId(Fairy_Tree_of_Wind); addAttackId(Fairy_Tree_of_Star); addAttackId(Fairy_Tree_of_Twilight); addAttackId(Fairy_Tree_of_Abyss); addQuestItem(Fairy_Leaf); } private static ItemInstance GetDragonflute(QuestState st) { List<ItemInstance> Dragonflutes = new ArrayList<ItemInstance>(); for(ItemInstance item : st.getPlayer().getInventory().getItems()) if(item != null && (item.getItemId() == Dragonflute_of_Wind || item.getItemId() == Dragonflute_of_Star || item.getItemId() == Dragonflute_of_Twilight)) Dragonflutes.add(item); if(Dragonflutes.isEmpty()) return null; if(Dragonflutes.size() == 1) return Dragonflutes.get(0); if(st.getState() == CREATED) return null; int dragonflute_id = st.getInt("dragonflute"); for(ItemInstance item : Dragonflutes) if(item.getObjectId() == dragonflute_id) return item; return null; } private static boolean HatchlingSummoned(QuestState st, boolean CheckObjID) { Summon _pet = st.getPlayer().getPet(); if(_pet == null) return false; if(CheckObjID) { int dragonflute_id = st.getInt("dragonflute"); if(dragonflute_id == 0) return false; if(_pet.getControlItemObjId() != dragonflute_id) return false; } ItemInstance dragonflute = GetDragonflute(st); if(dragonflute == null) return false; if(PetDataTable.getControlItemId(_pet.getNpcId()) != dragonflute.getItemId()) return false; return true; } private static boolean CheckTree(QuestState st, int Fairy_Tree_id) { return st.getInt(String.valueOf(Fairy_Tree_id)) == 1000000; } @Override public String onEvent(String event, QuestState st, NpcInstance npc) { int _state = st.getState(); ItemInstance dragonflute = GetDragonflute(st); int dragonflute_id = st.getInt("dragonflute"); int cond = st.getCond(); if(event.equalsIgnoreCase("30610_05.htm") && _state == CREATED) { st.setState(STARTED); st.setCond(1); st.playSound(SOUND_ACCEPT); } else if((event.equalsIgnoreCase("30747_03.htm") || event.equalsIgnoreCase("30747_04.htm")) && _state == STARTED && cond == 1) { if(dragonflute == null) return "noquest"; if(dragonflute.getObjectId() != dragonflute_id) { if(Rnd.chance(10)) { st.takeItems(dragonflute.getItemId(), 1); st.playSound(SOUND_FINISH); st.exitCurrentQuest(true); } return "30747_00.htm"; } if(!HatchlingSummoned(st, false)) return event.equalsIgnoreCase("30747_04.htm") ? "30747_04a.htm" : "30747_02.htm"; if(event.equalsIgnoreCase("30747_04.htm")) { st.setCond(2); st.takeItems(Fairy_Leaf, -1); st.giveItems(Fairy_Leaf, 4); st.playSound(SOUND_MIDDLE); } } return event; } @Override public String onTalk(NpcInstance npc, QuestState st) { int _state = st.getState(); int npcId = npc.getNpcId(); int cond = st.getCond(); ItemInstance dragonflute = GetDragonflute(st); int dragonflute_id = st.getInt("dragonflute"); if(_state == CREATED) { if(npcId != Cronos) return "noquest"; if(st.getPlayer().getLevel() < 45) { st.exitCurrentQuest(true); return "30610_01.htm"; } if(dragonflute == null) { st.exitCurrentQuest(true); return "30610_02.htm"; } if(dragonflute.getEnchantLevel() < 55) { st.exitCurrentQuest(true); return "30610_03.htm"; } st.setCond(0); st.set("dragonflute", String.valueOf(dragonflute.getObjectId())); return "30610_04.htm"; } if(_state != STARTED) return "noquest"; if(npcId == Cronos) { if(dragonflute == null) return "30610_02.htm"; return dragonflute.getObjectId() == dragonflute_id ? "30610_07.htm" : "30610_06.htm"; } if(npcId == Mimyu) { if(st.getQuestItemsCount(Dragon_Bugle_of_Wind) + st.getQuestItemsCount(Dragon_Bugle_of_Star) + st.getQuestItemsCount(Dragon_Bugle_of_Twilight) > 0) return "30747_00b.htm"; if(dragonflute == null) return "noquest"; if(cond == 1) return "30747_01.htm"; if(cond == 2) { if(!HatchlingSummoned(st, false)) return "30747_09.htm"; if(st.getQuestItemsCount(Fairy_Leaf) == 0) { st.playSound(SOUND_FINISH); st.exitCurrentQuest(true); return "30747_11.htm"; } return "30747_10.htm"; } if(cond == 3) { if(dragonflute.getObjectId() != dragonflute_id) return "30747_00a.htm"; if(st.getQuestItemsCount(Fairy_Leaf) > 0) { st.playSound(SOUND_FINISH); st.exitCurrentQuest(true); return "30747_11.htm"; } if(!(CheckTree(st, Fairy_Tree_of_Wind) && CheckTree(st, Fairy_Tree_of_Star) && CheckTree(st, Fairy_Tree_of_Twilight) && CheckTree(st, Fairy_Tree_of_Abyss))) { st.playSound(SOUND_FINISH); st.exitCurrentQuest(true); return "30747_11.htm"; } if(st.getInt("welldone") == 0) { if(!HatchlingSummoned(st, false)) return "30747_09.htm"; st.set("welldone", "1"); return "30747_12.htm"; } if(HatchlingSummoned(st, false) || st.getPlayer().getPet() != null) return "30747_13a.htm"; dragonflute.setItemId(Dragon_Bugle_of_Wind + dragonflute.getItemId() - Dragonflute_of_Wind); dragonflute.setJdbcState(JdbcEntityState.UPDATED); dragonflute.update(); st.getPlayer().sendPacket(new InventoryUpdate().addModifiedItem(dragonflute)); st.playSound(SOUND_FINISH); st.exitCurrentQuest(true); return "30747_13.htm"; } } return "noquest"; } /* * благодаря ai.Quest421FairyTree вызовется только при атаке от L2PetInstance */ @Override public String onAttack(NpcInstance npc, QuestState st) { if(st.getState() != STARTED || st.getCond() != 2 || !HatchlingSummoned(st, true) || st.getQuestItemsCount(Fairy_Leaf) == 0) return null; String npcID = String.valueOf(npc.getNpcId()); Integer attaked_times = st.getInt(npcID); if(CheckTree(st, npc.getNpcId())) return null; if(attaked_times > Min_Fairy_Tree_Attaks) { st.set(npcID, "1000000"); Functions.npcSay(npc, "Give me the leaf!"); st.takeItems(Fairy_Leaf, 1); if(CheckTree(st, Fairy_Tree_of_Wind) && CheckTree(st, Fairy_Tree_of_Star) && CheckTree(st, Fairy_Tree_of_Twilight) && CheckTree(st, Fairy_Tree_of_Abyss)) { st.setCond(3); st.playSound(SOUND_MIDDLE); } else st.playSound(SOUND_ITEMGET); } else st.set(npcID, String.valueOf(attaked_times + 1)); return null; } @Override public String onKill(NpcInstance npc, QuestState st) { ThreadPoolManager.getInstance().schedule(new GuardiansSpawner(npc, st, Rnd.get(15, 20)), 1000); return null; } @Override public void onLoad() { } @Override public void onReload() { } @Override public void onShutdown() { } public class GuardiansSpawner extends RunnableImpl { private SimpleSpawner _spawn = null; private String agressor; private String agressors_pet = null; private List<String> agressors_party = null; private int tiks = 0; public GuardiansSpawner(NpcInstance npc, QuestState st, int _count) { NpcTemplate template = NpcHolder.getInstance().getTemplate(Soul_of_Tree_Guardian); if(template == null) return; try { _spawn = new SimpleSpawner(template); } catch(Exception e) { e.printStackTrace(); } for(int i = 0; i < _count; i++) { _spawn.setLoc(Location.findPointToStay(npc, 50, 200)); _spawn.setHeading(Rnd.get(0, 0xFFFF)); _spawn.setAmount(1); _spawn.doSpawn(true); agressor = st.getPlayer().getName(); if(st.getPlayer().getPet() != null) agressors_pet = st.getPlayer().getPet().getName(); if(st.getPlayer().getParty() != null) { agressors_party = new ArrayList<String>(); for(Player _member : st.getPlayer().getParty().getPartyMembers()) if(!_member.equals(st.getPlayer())) agressors_party.add(_member.getName()); } } _spawn.stopRespawn(); updateAgression(); } private void AddAgression(Playable player, int aggro) { if(player == null) return; for(NpcInstance mob : _spawn.getAllSpawned()) { mob.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, player, aggro); } } private void updateAgression() { Player _player = World.getPlayer(agressor); if(_player != null) { if(agressors_pet != null && _player.getPet() != null && _player.getPet().getName().equalsIgnoreCase(agressors_pet)) AddAgression(_player.getPet(), 10); AddAgression(_player, 2); } if(agressors_party != null) for(String _agressor : agressors_party) AddAgression(World.getPlayer(_agressor), 1); } @Override public void runImpl() throws Exception { if(_spawn == null) return; tiks++; if(tiks < 600) { updateAgression(); ThreadPoolManager.getInstance().schedule(this, 1000); return; } _spawn.deleteAll(); } } }
  11. Здравствуйте. возможно я не в тот раздел пишу, заранее прошу прощения. В игре максимум можно передать,бросить,сделать ставку 99 999 999 999 аден или других итемов. Как можно увеличить это количество чтоб например было 999 999 999 999 ? Спасибо.
  12. Здравствуйте. Подскажите пожалуйста возможно ли сделать так чтоб когда на персонажа наложен Blessing of Noblesse и он в трансформе например анаким . Трансформация не снималась при смерти ? Сборка grind-team , на форуме этой сборки вопрос поднимался но ответа не было. Подскажите где копать? Спасибо заранее.
×
×
  • Создать...