Desperado 2 Опубликовано 3 февраля, 2017 (изменено) Всем привет ! Проблема: После того как создал персонажа и нажал начать игру , проходит время ( сек так 10 ) И только потом заходит в МИР. Как убрать этот лимит ? И Сразу хочу узнать , кто сумеет изменить время на открытие окна чата для Всех НПС На проекте? На сколько я помню файл называется FloodProtector . Мне нужно сделать задержку в 1-2 сек на открытие диалогов всех нпс (включая ГМ,Донат, ит.п шопы) *От меня +++ Изменено 3 февраля, 2017 пользователем Desperado Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nammi 147 Опубликовано 3 февраля, 2017 хочу узнать , кто сумеет изменить время на открытие окна чата для Всех НПС На проекте? На сколько я помню файл называется FloodProtector . Мне нужно сделать задержку в 1-2 сек на открытие диалогов всех нпс (включая ГМ,Донат, ит.п шопы) А зачем оно надо? o_O Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 3 февраля, 2017 FloodProtector от спама, т.е. ты говоришь с нпс и потом только начинается отсчет (к примеру 2 сек), когда ты нее можешь еще раз открыть диалог с нпс. А если хочешь чтоб ты нажал мышкой по нпс и диалог открылся через 2 сек, то тебе надо лезть в исходник. Поправку надо делать как раз там, где задействован FloodProtector для диалогов нпс. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desperado 2 Опубликовано 4 февраля, 2017 (изменено) Знающие люди , подскажите пожалуйста. Festival sweeper работает не правильно . ( заспойля моба и убив его , остальные вокруг пропадают и спойл идет только с первого (1) моба.)[spoiler= Не работающий ( ядро крякнутое gvb 25,01,2017)] package ru.catssoftware.gameserver.handler.skillhandlers; import ru.catssoftware.gameserver.handler.ISkillHandler;import ru.catssoftware.gameserver.model.*;import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;import ru.catssoftware.gameserver.model.itemcontainer.PcInventory;import ru.catssoftware.gameserver.network.SystemMessageId;import ru.catssoftware.gameserver.network.serverpackets.*;import ru.catssoftware.gameserver.templates.skills.L2SkillType;public class Sweepimplements ISkillHandler{public Sweep(){}public transient void useSkill(L2Character l2character, L2Skill l2skill, L2Character al2character[]){if(!(l2character instanceof L2PcInstance))return;L2PcInstance l2pcinstance = (L2PcInstance)l2character;InventoryUpdate inventoryupdate = new InventoryUpdate();boolean flag = false;L2Character al2character1[] = al2character;int i = al2character1.length;for(int j = 0; j < i; j++){L2Character l2character1 = al2character1[j];if(!(l2character1 instanceof L2Attackable))continue;L2Attackable l2attackable = (L2Attackable)l2character1;ru.catssoftware.gameserver.model.L2Attackable.RewardItem arewarditem[] = null;boolean flag1 = false;synchronized(l2attackable){if(l2attackable.isSweepActive()){arewarditem = l2attackable.takeSweep();flag1 = true;}}if(flag1){if(arewarditem == null || arewarditem.length == 0)continue;ru.catssoftware.gameserver.model.L2Attackable.RewardItem arewarditem1[] = arewarditem;int k = arewarditem1.length;for(int l = 0; l < k; l++){ru.catssoftware.gameserver.model.L2Attackable.RewardItem rewarditem = arewarditem1[l];if(l2pcinstance.isInParty()){l2pcinstance.getParty().distributeItem(l2pcinstance, rewarditem, true, l2attackable);continue;}if(!l2pcinstance.getInventory().validateCapacityByItemId(rewarditem.getItemId()))continue;L2ItemInstance l2iteminstance = l2pcinstance.getInventory().addItem("Sweep", rewarditem.getItemId(), rewarditem.getCount(), l2pcinstance, l2attackable);if(inventoryupdate != null)inventoryupdate.addItem(l2iteminstance);flag = true;SystemMessage systemmessage = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2);systemmessage.addNumber(rewarditem.getCount());systemmessage.addItemName(l2iteminstance);l2pcinstance.sendPacket(systemmessage);}}l2attackable.endDecayTask();if(!flag)continue;if(inventoryupdate != null)l2pcinstance.sendPacket(inventoryupdate);elsel2pcinstance.sendPacket(new ItemList(l2pcinstance, false));}}public L2SkillType[] getSkillIds(){return SKILL_IDS;}private static final L2SkillType SKILL_IDS[];static{SKILL_IDS = (new L2SkillType[] {L2SkillType.SWEEP});}} [spoiler= Работающий ( Если не изменяет память 15reva от ловели )]package ru.catssoftware.gameserver.handler.skillhandlers;import java.util.Iterator;import java.util.List;import ru.catssoftware.gameserver.handler.ISkillHandler;import ru.catssoftware.gameserver.model.*;import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;import ru.catssoftware.gameserver.model.itemcontainer.PcInventory;import ru.catssoftware.gameserver.network.SystemMessageId;import ru.catssoftware.gameserver.network.serverpackets.*;import ru.catssoftware.gameserver.templates.skills.L2SkillType;public class Sweepimplements ISkillHandler{public Sweep(){}public transient void useSkill(L2Character l2character, L2Skill l2skill, L2Character al2character[]){if(!(l2character instanceof L2PcInstance))return;L2PcInstance l2pcinstance = (L2PcInstance)l2character;InventoryUpdate inventoryupdate = new InventoryUpdate();boolean flag = false;for(int i = 0; i < al2character.length; i++){if(!(al2character instanceof L2Attackable))continue;L2Attackable l2attackable = (L2Attackable)al2character;if(!l2attackable.isSpoil())continue;List list = l2attackable.takeSweep();if(list.isEmpty())continue;Iterator iterator = list.iterator();do{if(!iterator.hasNext())break;ru.catssoftware.gameserver.model.L2Attackable.RewardItem rewarditem = (ru.catssoftware.gameserver.model.L2Attackable.RewardItem)iterator.next();if(l2pcinstance.isInParty())l2pcinstance.getParty().distributeItem(l2pcinstance, rewarditem, true, l2attackable);elseif(l2pcinstance.getInventory().validateCapacityByItemId(rewarditem.getItemId())){L2ItemInstance l2iteminstance = l2pcinstance.getInventory().addItem("Sweep", rewarditem.getItemId(), rewarditem.getCount(), l2pcinstance, l2attackable);if(inventoryupdate != null)inventoryupdate.addItem(l2iteminstance);flag = true;SystemMessage systemmessage = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2);systemmessage.addNumber(rewarditem.getCount());systemmessage.addItemName(l2iteminstance);l2pcinstance.sendPacket(systemmessage);}} while(true);l2attackable.endDecayTask();if(!flag)continue;if(inventoryupdate != null)l2pcinstance.sendPacket(inventoryupdate);elsel2pcinstance.sendPacket(new ItemList(l2pcinstance, false));}}public L2SkillType[] getSkillIds(){return SKILL_IDS;}private static final L2SkillType SKILL_IDS[];static{SKILL_IDS = (new L2SkillType[] {L2SkillType.SWEEP});}} Изменено 4 февраля, 2017 пользователем Desperado Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desperado 2 Опубликовано 4 февраля, 2017 (изменено) FloodProtector от спама, т.е. ты говоришь с нпс и потом только начинается отсчет (к примеру 2 сек), когда ты нее можешь еще раз открыть диалог с нпс. А если хочешь чтоб ты нажал мышкой по нпс и диалог открылся через 2 сек, то тебе надо лезть в исходник. Поправку надо делать как раз там, где задействован FloodProtector для диалогов нпс. Какую изменить , что бы была задержка в 1/1.30 сек Для НПС окон USEITEM = new Protected("USEITEM", 0, 100); ROLLDICE = new Protected("ROLLDICE", 1, 4200); CASTSKILL = new Protected("CASTSKILL", 2, Config.SKILL_DELAY); FIREWORK = new Protected("FIREWORK", 3, 4200); GLOBAL_CHAT = new Protected("GLOBAL_CHAT", 4, Config.GLOBAL_CHAT_TIME * 1000); TRADE_CHAT = new Protected("TRADE_CHAT", 5, Config.TRADE_CHAT_TIME * 1000); ITEMPETSUMMON = new Protected("ITEMPETSUMMON", 6, 1600); HEROVOICE = new Protected("HEROVOICE", 7, Config.HERO_CHAT_TIME * 1000); SOCIAL = new Protected("SOCIAL", 8, 4200); SUBCLASS = new Protected("SUBCLASS", 9, 10000); DROPITEM = new Protected("DROPITEM", 10, 1000); CHAR_SELECT = new Protected("CHAR_SELECT", 11, 10000); BYPASSTOSERVER = new Protected("BYPASSTOSERVER", 12, 100); UNKNOWNPACKET = new Protected("UNKNOWNPACKET", 13, 1000); BOT_REPORT = new Protected("BOT_REPORT", 14, 15000); VOICE_CMD = new Protected("VOICE_CMD", 15, 10000); USER_CMD = new Protected("USER_CMD", 16, 5000); CL_PACKET = new Protected("CL_PACKET", 17, 30000); HTML_UPDATE = new Protected("HTML_UPDATE", 18, 5000); USE_POTION = new Protected("USE_POTION", 19, 100); ENCHANT = new Protected("ENCHANT", 20, Config.ENCHAT_TIME * 1000); $VALUES = (new Protected[] { Изменено 4 февраля, 2017 пользователем Desperado Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 4 февраля, 2017 Знающие люди , подскажите пожалуйста. Festival sweeper работает не правильно . ( заспойля моба и убив его , остальные вокруг пропадают и спойл идет только с первого (1) моба.) [spoiler= Не работающий ( ядро крякнутое gvb 25,01,2017)] package ru.catssoftware.gameserver.handler.skillhandlers; import ru.catssoftware.gameserver.handler.ISkillHandler; import ru.catssoftware.gameserver.model.*; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.itemcontainer.PcInventory; import ru.catssoftware.gameserver.network.SystemMessageId; import ru.catssoftware.gameserver.network.serverpackets.*; import ru.catssoftware.gameserver.templates.skills.L2SkillType; public class Sweep implements ISkillHandler { public Sweep() { } public transient void useSkill(L2Character l2character, L2Skill l2skill, L2Character al2character[]) { if(!(l2character instanceof L2PcInstance)) return; L2PcInstance l2pcinstance = (L2PcInstance)l2character; InventoryUpdate inventoryupdate = new InventoryUpdate(); boolean flag = false; L2Character al2character1[] = al2character; int i = al2character1.length; for(int j = 0; j < i; j++) { L2Character l2character1 = al2character1[j]; if(!(l2character1 instanceof L2Attackable)) continue; L2Attackable l2attackable = (L2Attackable)l2character1; ru.catssoftware.gameserver.model.L2Attackable.RewardItem arewarditem[] = null; boolean flag1 = false; synchronized(l2attackable) { if(l2attackable.isSweepActive()) { arewarditem = l2attackable.takeSweep(); flag1 = true; } } if(flag1) { if(arewarditem == null || arewarditem.length == 0) continue; ru.catssoftware.gameserver.model.L2Attackable.RewardItem arewarditem1[] = arewarditem; int k = arewarditem1.length; for(int l = 0; l < k; l++) { ru.catssoftware.gameserver.model.L2Attackable.RewardItem rewarditem = arewarditem1[l]; if(l2pcinstance.isInParty()) { l2pcinstance.getParty().distributeItem(l2pcinstance, rewarditem, true, l2attackable); continue; } if(!l2pcinstance.getInventory().validateCapacityByItemId(rewarditem.getItemId())) continue; L2ItemInstance l2iteminstance = l2pcinstance.getInventory().addItem("Sweep", rewarditem.getItemId(), rewarditem.getCount(), l2pcinstance, l2attackable); if(inventoryupdate != null) inventoryupdate.addItem(l2iteminstance); flag = true; SystemMessage systemmessage = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2); systemmessage.addNumber(rewarditem.getCount()); systemmessage.addItemName(l2iteminstance); l2pcinstance.sendPacket(systemmessage); } } l2attackable.endDecayTask(); if(!flag) continue; if(inventoryupdate != null) l2pcinstance.sendPacket(inventoryupdate); else l2pcinstance.sendPacket(new ItemList(l2pcinstance, false)); } } public L2SkillType[] getSkillIds() { return SKILL_IDS; } private static final L2SkillType SKILL_IDS[]; static { SKILL_IDS = (new L2SkillType[] { L2SkillType.SWEEP }); } } [spoiler= Работающий ( Если не изменяет память 15reva от ловели )]package ru.catssoftware.gameserver.handler.skillhandlers; import java.util.Iterator; import java.util.List; import ru.catssoftware.gameserver.handler.ISkillHandler; import ru.catssoftware.gameserver.model.*; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.itemcontainer.PcInventory; import ru.catssoftware.gameserver.network.SystemMessageId; import ru.catssoftware.gameserver.network.serverpackets.*; import ru.catssoftware.gameserver.templates.skills.L2SkillType; public class Sweep implements ISkillHandler { public Sweep() { } public transient void useSkill(L2Character l2character, L2Skill l2skill, L2Character al2character[]) { if(!(l2character instanceof L2PcInstance)) return; L2PcInstance l2pcinstance = (L2PcInstance)l2character; InventoryUpdate inventoryupdate = new InventoryUpdate(); boolean flag = false; for(int i = 0; i < al2character.length; i++) { if(!(al2character instanceof L2Attackable)) continue; L2Attackable l2attackable = (L2Attackable)al2character; if(!l2attackable.isSpoil()) continue; List list = l2attackable.takeSweep(); if(list.isEmpty()) continue; Iterator iterator = list.iterator(); do { if(!iterator.hasNext()) break; ru.catssoftware.gameserver.model.L2Attackable.RewardItem rewarditem = (ru.catssoftware.gameserver.model.L2Attackable.RewardItem)iterator.next(); if(l2pcinstance.isInParty()) l2pcinstance.getParty().distributeItem(l2pcinstance, rewarditem, true, l2attackable); else if(l2pcinstance.getInventory().validateCapacityByItemId(rewarditem.getItemId())) { L2ItemInstance l2iteminstance = l2pcinstance.getInventory().addItem("Sweep", rewarditem.getItemId(), rewarditem.getCount(), l2pcinstance, l2attackable); if(inventoryupdate != null) inventoryupdate.addItem(l2iteminstance); flag = true; SystemMessage systemmessage = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2); systemmessage.addNumber(rewarditem.getCount()); systemmessage.addItemName(l2iteminstance); l2pcinstance.sendPacket(systemmessage); } } while(true); l2attackable.endDecayTask(); if(!flag) continue; if(inventoryupdate != null) l2pcinstance.sendPacket(inventoryupdate); else l2pcinstance.sendPacket(new ItemList(l2pcinstance, false)); } } public L2SkillType[] getSkillIds() { return SKILL_IDS; } private static final L2SkillType SKILL_IDS[]; static { SKILL_IDS = (new L2SkillType[] { L2SkillType.SWEEP }); } } Так замени на тот, что работает и всё. Если вылезут ошибки, подправь (их там не много должно быть) и всё. Какую изменить , что бы была задержка в 1/1.30 сек Для НПС окон USEITEM = new Protected("USEITEM", 0, 100); ROLLDICE = new Protected("ROLLDICE", 1, 4200); CASTSKILL = new Protected("CASTSKILL", 2, Config.SKILL_DELAY); FIREWORK = new Protected("FIREWORK", 3, 4200); GLOBAL_CHAT = new Protected("GLOBAL_CHAT", 4, Config.GLOBAL_CHAT_TIME * 1000); TRADE_CHAT = new Protected("TRADE_CHAT", 5, Config.TRADE_CHAT_TIME * 1000); ITEMPETSUMMON = new Protected("ITEMPETSUMMON", 6, 1600); HEROVOICE = new Protected("HEROVOICE", 7, Config.HERO_CHAT_TIME * 1000); SOCIAL = new Protected("SOCIAL", 8, 4200); SUBCLASS = new Protected("SUBCLASS", 9, 10000); DROPITEM = new Protected("DROPITEM", 10, 1000); CHAR_SELECT = new Protected("CHAR_SELECT", 11, 10000); BYPASSTOSERVER = new Protected("BYPASSTOSERVER", 12, 100); UNKNOWNPACKET = new Protected("UNKNOWNPACKET", 13, 1000); BOT_REPORT = new Protected("BOT_REPORT", 14, 15000); VOICE_CMD = new Protected("VOICE_CMD", 15, 10000); USER_CMD = new Protected("USER_CMD", 16, 5000); CL_PACKET = new Protected("CL_PACKET", 17, 30000); HTML_UPDATE = new Protected("HTML_UPDATE", 18, 5000); USE_POTION = new Protected("USE_POTION", 19, 100); ENCHANT = new Protected("ENCHANT", 20, Config.ENCHAT_TIME * 1000); $VALUES = (new Protected[] { Это антиспам. Он не дает задержку! Принцип работы: Открыл диалоговое окно (HTML) -> пошло время от протект -> если время не закончилось и ты еще раз нажмешь на диалоговое окно - ничего нее случится. А Вы просите задержку. Это надо в коре внедрять (там же, где и протект на диалог стоит). 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desperado 2 Опубликовано 26 апреля, 2017 Так замени на тот, что работает и всё. Если вылезут ошибки, подправь (их там не много должно быть) и всё. Это антиспам. Он не дает задержку! Принцип работы: Открыл диалоговое окно (HTML) -> пошло время от протект -> если время не закончилось и ты еще раз нажмешь на диалоговое окно - ничего нее случится. А Вы просите задержку. Это надо в коре внедрять (там же, где и протект на диалог стоит). Так в какой строке делать антиспам на нпс? Что бы через две секунды открылось повторное окно с нпс Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 26 апреля, 2017 Так в какой строке делать антиспам на нпс? Что бы через две секунды открылось повторное окно с нпс Вы опять всё путаете. Антиспам ставиться тут: BYPASSTOSERVER = new Protected("BYPASSTOSERVER", 12, 100); Если игрок будет открывать окна с npc чаще чем в 100 мсек, то окно просто не откроется (либо вас кикнет или забанит, в зависимости как настроены конфиги). А что бы была просто задержка между разговором npc, то надо прописывать следующий код: Ниже представлен пример реализации (задержка между передвижениями) L2PcInstance.java private long _lastMovePacket = 0; public long getLastMovePacket() { return _lastMovePacket; } public void setLastMovePacket() { _lastMovePacket = System.currentTimeMillis(); } MoveBackwardToLocation.java (В вашем случае это будет класс, отвечающий за открытие HTML окон) if ((System.currentTimeMillis() - activeChar.getLastMovePacket()) < Config.LAST_MOVE_PACKET) { activeChar.sendPacket(ActionFailed.STATIC_PACKET); return; } activeChar.setLastMovePacket(); Естественно, что бы задержка была сразу (даже при 1 разговоре), то надо будет задавать нужное значение изначально. Если что, можете посмотреть другие примеры такой реализации (например обратный отсчет на олимпиаде и т.п.) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desperado 2 Опубликовано 26 апреля, 2017 Вы опять всё путаете. Антиспам ставиться тут: BYPASSTOSERVER = new Protected("BYPASSTOSERVER", 12, 100); Если игрок будет открывать окна с npc чаще чем в 100 мсек, то окно просто не откроется (либо вас кикнет или забанит, в зависимости как настроены конфиги). А что бы была просто задержка между разговором npc, то надо прописывать следующий код: Ниже представлен пример реализации (задержка между передвижениями) L2PcInstance.java private long _lastMovePacket = 0; public long getLastMovePacket() { return _lastMovePacket; } public void setLastMovePacket() { _lastMovePacket = System.currentTimeMillis(); } MoveBackwardToLocation.java (В вашем случае это будет класс, отвечающий за открытие HTML окон) if ((System.currentTimeMillis() - activeChar.getLastMovePacket()) < Config.LAST_MOVE_PACKET) { activeChar.sendPacket(ActionFailed.STATIC_PACKET); return; } activeChar.setLastMovePacket(); Естественно, что бы задержка была сразу (даже при 1 разговоре), то надо будет задавать нужное значение изначально. Если что, можете посмотреть другие примеры такой реализации (например обратный отсчет на олимпиаде и т.п.) Понимаю , что не по теме ... но помоги с ошибками , что я делаю не так??? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 26 апреля, 2017 Понимаю , что не по теме ... но помоги с ошибками , что я делаю не так??? 1) https://help.javarush.ru/questions/24833/%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B 2+) Не найден метод\переменная (тут наверное всё ясно) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desperado 2 Опубликовано 27 апреля, 2017 1) https://help.javarush.ru/questions/24833/%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B 2+) Не найден метод\переменная (тут наверное всё ясно) Помоги за сотку этот файл обратно в класс скомпилярить . ))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 27 апреля, 2017 Помоги за сотку этот файл обратно в класс скомпилярить . ))) только с исходниками (открытым кодом) работаю. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 27 апреля, 2017 от 300р работа с ядром или декомпилом admin.la2wod.ru - skype 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты