Re: Lag Problems!!
Posted: Wed Oct 27, 2010 2:34 pm
Now there are 175 players and I dont have lag but after I while it will start, it is really weird really...
Rate Event doing this.
Can you post the script?ElessarMS wrote:Yes, I will remove it right now to check what's going on because when is lagging is kicking like 3 or 4 players with the overflow stuff :S
Code: Select all
package events.Rates; import java.util.Calendar; import com.l2jserver.Config;import com.l2jserver.gameserver.Announcements;import com.l2jserver.gameserver.model.actor.L2Npc;import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;import com.l2jserver.gameserver.model.quest.Quest; public class Rates extends Quest{ private static final boolean ANNOUNCE = true; // announce the rate changes or not. private static final int MULTIPLIER = 2; // rate multiplier, choose with caution! private static final int DURATION = 30; // in minutes. private static final int DELAY = 30; // Delay between server start/script load and event start in minutes. private static final Byte START_DAY = 0; // zero to disable. !!!Starts with SUNDAY as 1st day of week!!! Accepted values 1-7. private static final Byte START_HOUR = 0; // zero to disable. 24 hour system. Must be set if using START_DAY, //otherwise will start at midnight (unless that's what you want). private static final Byte START_MINUTE = 30; private static final int FREQUENCY = 120; // Time between event re-run in minutes, 0 to use daily/weekly system. public Rates(int questId, String name, String descr) { super(questId, name, descr); if (loadGlobalQuestVar("exprate") == "") { if (START_DAY > 0 || START_HOUR > 0) startQuestTimer("START", setStartTime(START_DAY, START_HOUR, START_MINUTE), null, null); else startQuestTimer("START", DELAY * 60000, null, null); } else // in case your server crashed before restoring rates... startQuestTimer("RESTORE", 60000, null, null); } private long setStartTime(Byte day, Byte hour, Byte minute) { Calendar starttime = Calendar.getInstance(); if (day > 0 && day < 8) starttime.set( Calendar.DAY_OF_WEEK, day ); else _log.info("Rates event: wrong day of week set. Skipped."); if (hour > 0 && hour < 24) starttime.set( Calendar.HOUR_OF_DAY, hour ); else _log.info("Rates event: wrong hour of day set. Skipped."); if (minute > 0 && minute < 60) starttime.set( Calendar.MINUTE, minute ); else if (minute > 60) starttime.set( Calendar.MINUTE, minute % 60 ); if ((starttime.getTimeInMillis() - Calendar.getInstance().getTimeInMillis()) > 0) return (starttime.getTimeInMillis() - Calendar.getInstance().getTimeInMillis()); else return 60000L; } public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { if (event.equalsIgnoreCase("START")) { saveGlobalQuestVar("exprate", String.valueOf(Config.RATE_XP)); Config.RATE_XP = MULTIPLIER * Config.RATE_XP; saveGlobalQuestVar("sprate", String.valueOf(Config.RATE_SP)); Config.RATE_SP = MULTIPLIER * Config.RATE_SP; saveGlobalQuestVar("droprate", String.valueOf(Config.RATE_DROP_ITEMS)); Config.RATE_DROP_ITEMS = MULTIPLIER * Config.RATE_DROP_ITEMS; saveGlobalQuestVar("adenarate", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(57))); Config.RATE_DROP_ITEMS_ID.put(57, (int) Config.RATE_DROP_ITEMS_ID.get(57) * MULTIPLIER); saveGlobalQuestVar("GArate", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9143))); Config.RATE_DROP_ITEMS_ID.put(9143, (int) Config.RATE_DROP_ITEMS_ID.get(9143) * MULTIPLIER); saveGlobalQuestVar("CFire", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9552))); Config.RATE_DROP_ITEMS_ID.put(9552, (int) Config.RATE_DROP_ITEMS_ID.get(9552) * MULTIPLIER); saveGlobalQuestVar("CWater", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9553))); Config.RATE_DROP_ITEMS_ID.put(9553, (int) Config.RATE_DROP_ITEMS_ID.get(9553) * MULTIPLIER); saveGlobalQuestVar("CEarth", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9554))); Config.RATE_DROP_ITEMS_ID.put(9554, (int) Config.RATE_DROP_ITEMS_ID.get(9554) * MULTIPLIER); saveGlobalQuestVar("CWind", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9555))); Config.RATE_DROP_ITEMS_ID.put(9555, (int) Config.RATE_DROP_ITEMS_ID.get(9555) * MULTIPLIER); saveGlobalQuestVar("CDark", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9556))); Config.RATE_DROP_ITEMS_ID.put(9556, (int) Config.RATE_DROP_ITEMS_ID.get(9556) * MULTIPLIER); saveGlobalQuestVar("CHoly", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9557))); Config.RATE_DROP_ITEMS_ID.put(9557, (int) Config.RATE_DROP_ITEMS_ID.get(9557) * MULTIPLIER); saveGlobalQuestVar("FireS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9546))); Config.RATE_DROP_ITEMS_ID.put(9546, (int) Config.RATE_DROP_ITEMS_ID.get(9546) * MULTIPLIER); saveGlobalQuestVar("WaterS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9547))); Config.RATE_DROP_ITEMS_ID.put(9547, (int) Config.RATE_DROP_ITEMS_ID.get(9547) * MULTIPLIER); saveGlobalQuestVar("EarthS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9548))); Config.RATE_DROP_ITEMS_ID.put(9548, (int) Config.RATE_DROP_ITEMS_ID.get(9548) * MULTIPLIER); saveGlobalQuestVar("WindS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9549))); Config.RATE_DROP_ITEMS_ID.put(9549, (int) Config.RATE_DROP_ITEMS_ID.get(9549) * MULTIPLIER); saveGlobalQuestVar("DarkS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9550))); Config.RATE_DROP_ITEMS_ID.put(9550, (int) Config.RATE_DROP_ITEMS_ID.get(9550) * MULTIPLIER); saveGlobalQuestVar("HolyS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9551))); Config.RATE_DROP_ITEMS_ID.put(9551, (int) Config.RATE_DROP_ITEMS_ID.get(9551) * MULTIPLIER); saveGlobalQuestVar("Masterys", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9627))); Config.RATE_DROP_ITEMS_ID.put(9627, (int) Config.RATE_DROP_ITEMS_ID.get(9627) * MULTIPLIER); saveGlobalQuestVar("BEAS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(6578))); Config.RATE_DROP_ITEMS_ID.put(6578, (int) Config.RATE_DROP_ITEMS_ID.get(6578) * MULTIPLIER); saveGlobalQuestVar("BEWS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(6577))); Config.RATE_DROP_ITEMS_ID.put(6577, (int) Config.RATE_DROP_ITEMS_ID.get(6577) * MULTIPLIER); if (ANNOUNCE) Announcements.getInstance().announceToAll("Crazy Rates Event!: The rates have been changed! For the next " + DURATION + " minutes the rates will be multiplied by "+ MULTIPLIER +"!"); startQuestTimer("RESTORE", DURATION * 60000, null, null); _log.info("Rate event: rates changed, vars set. Restoring rates in " + DURATION + "minutes."); } if (event.equalsIgnoreCase("RESTORE")) { Config.RATE_XP = Float.valueOf(loadGlobalQuestVar("exprate")); Config.RATE_SP = Float.valueOf(loadGlobalQuestVar("sprate")); Config.RATE_DROP_ITEMS = Float.valueOf(loadGlobalQuestVar("droprate")); Config.RATE_DROP_ITEMS_ID.put(57, Float.valueOf(loadGlobalQuestVar("adenarate"))); deleteAllGlobalQuestVars(); _log.info("Rate event: rates restored, vars deleted."); if (ANNOUNCE) Announcements.getInstance().announceToAll("The rates are restored. See you till the next Crazy event!"); if (START_DAY > 0 || START_HOUR > 0) startQuestTimer("START", setStartTime(START_DAY, START_HOUR, START_MINUTE), null, null); else if (FREQUENCY > 0) startQuestTimer("START", FREQUENCY * 60000, null, null); } return ""; } public static void main(String[] args) { new Rates(-1, "Rates", "events"); }}
Problems are not caused by this scripts, there is no database connection opened.ElessarMS wrote:Ofc, here it is:
I guess is bad coded as hell so.. dont mock at me guys >.<
Code: Select all
package events.Rates; import java.util.Calendar; import com.l2jserver.Config;import com.l2jserver.gameserver.Announcements;import com.l2jserver.gameserver.model.actor.L2Npc;import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;import com.l2jserver.gameserver.model.quest.Quest; public class Rates extends Quest{ private static final boolean ANNOUNCE = true; // announce the rate changes or not. private static final int MULTIPLIER = 2; // rate multiplier, choose with caution! private static final int DURATION = 30; // in minutes. private static final int DELAY = 30; // Delay between server start/script load and event start in minutes. private static final Byte START_DAY = 0; // zero to disable. !!!Starts with SUNDAY as 1st day of week!!! Accepted values 1-7. private static final Byte START_HOUR = 0; // zero to disable. 24 hour system. Must be set if using START_DAY, //otherwise will start at midnight (unless that's what you want). private static final Byte START_MINUTE = 30; private static final int FREQUENCY = 120; // Time between event re-run in minutes, 0 to use daily/weekly system. public Rates(int questId, String name, String descr) { super(questId, name, descr); if (loadGlobalQuestVar("exprate") == "") { if (START_DAY > 0 || START_HOUR > 0) startQuestTimer("START", setStartTime(START_DAY, START_HOUR, START_MINUTE), null, null); else startQuestTimer("START", DELAY * 60000, null, null); } else // in case your server crashed before restoring rates... startQuestTimer("RESTORE", 60000, null, null); } private long setStartTime(Byte day, Byte hour, Byte minute) { Calendar starttime = Calendar.getInstance(); if (day > 0 && day < 8) starttime.set( Calendar.DAY_OF_WEEK, day ); else _log.info("Rates event: wrong day of week set. Skipped."); if (hour > 0 && hour < 24) starttime.set( Calendar.HOUR_OF_DAY, hour ); else _log.info("Rates event: wrong hour of day set. Skipped."); if (minute > 0 && minute < 60) starttime.set( Calendar.MINUTE, minute ); else if (minute > 60) starttime.set( Calendar.MINUTE, minute % 60 ); if ((starttime.getTimeInMillis() - Calendar.getInstance().getTimeInMillis()) > 0) return (starttime.getTimeInMillis() - Calendar.getInstance().getTimeInMillis()); else return 60000L; } public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { if (event.equalsIgnoreCase("START")) { saveGlobalQuestVar("exprate", String.valueOf(Config.RATE_XP)); Config.RATE_XP = MULTIPLIER * Config.RATE_XP; saveGlobalQuestVar("sprate", String.valueOf(Config.RATE_SP)); Config.RATE_SP = MULTIPLIER * Config.RATE_SP; saveGlobalQuestVar("droprate", String.valueOf(Config.RATE_DROP_ITEMS)); Config.RATE_DROP_ITEMS = MULTIPLIER * Config.RATE_DROP_ITEMS; saveGlobalQuestVar("adenarate", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(57))); Config.RATE_DROP_ITEMS_ID.put(57, (int) Config.RATE_DROP_ITEMS_ID.get(57) * MULTIPLIER); saveGlobalQuestVar("GArate", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9143))); Config.RATE_DROP_ITEMS_ID.put(9143, (int) Config.RATE_DROP_ITEMS_ID.get(9143) * MULTIPLIER); saveGlobalQuestVar("CFire", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9552))); Config.RATE_DROP_ITEMS_ID.put(9552, (int) Config.RATE_DROP_ITEMS_ID.get(9552) * MULTIPLIER); saveGlobalQuestVar("CWater", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9553))); Config.RATE_DROP_ITEMS_ID.put(9553, (int) Config.RATE_DROP_ITEMS_ID.get(9553) * MULTIPLIER); saveGlobalQuestVar("CEarth", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9554))); Config.RATE_DROP_ITEMS_ID.put(9554, (int) Config.RATE_DROP_ITEMS_ID.get(9554) * MULTIPLIER); saveGlobalQuestVar("CWind", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9555))); Config.RATE_DROP_ITEMS_ID.put(9555, (int) Config.RATE_DROP_ITEMS_ID.get(9555) * MULTIPLIER); saveGlobalQuestVar("CDark", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9556))); Config.RATE_DROP_ITEMS_ID.put(9556, (int) Config.RATE_DROP_ITEMS_ID.get(9556) * MULTIPLIER); saveGlobalQuestVar("CHoly", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9557))); Config.RATE_DROP_ITEMS_ID.put(9557, (int) Config.RATE_DROP_ITEMS_ID.get(9557) * MULTIPLIER); saveGlobalQuestVar("FireS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9546))); Config.RATE_DROP_ITEMS_ID.put(9546, (int) Config.RATE_DROP_ITEMS_ID.get(9546) * MULTIPLIER); saveGlobalQuestVar("WaterS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9547))); Config.RATE_DROP_ITEMS_ID.put(9547, (int) Config.RATE_DROP_ITEMS_ID.get(9547) * MULTIPLIER); saveGlobalQuestVar("EarthS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9548))); Config.RATE_DROP_ITEMS_ID.put(9548, (int) Config.RATE_DROP_ITEMS_ID.get(9548) * MULTIPLIER); saveGlobalQuestVar("WindS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9549))); Config.RATE_DROP_ITEMS_ID.put(9549, (int) Config.RATE_DROP_ITEMS_ID.get(9549) * MULTIPLIER); saveGlobalQuestVar("DarkS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9550))); Config.RATE_DROP_ITEMS_ID.put(9550, (int) Config.RATE_DROP_ITEMS_ID.get(9550) * MULTIPLIER); saveGlobalQuestVar("HolyS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9551))); Config.RATE_DROP_ITEMS_ID.put(9551, (int) Config.RATE_DROP_ITEMS_ID.get(9551) * MULTIPLIER); saveGlobalQuestVar("Masterys", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(9627))); Config.RATE_DROP_ITEMS_ID.put(9627, (int) Config.RATE_DROP_ITEMS_ID.get(9627) * MULTIPLIER); saveGlobalQuestVar("BEAS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(6578))); Config.RATE_DROP_ITEMS_ID.put(6578, (int) Config.RATE_DROP_ITEMS_ID.get(6578) * MULTIPLIER); saveGlobalQuestVar("BEWS", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(6577))); Config.RATE_DROP_ITEMS_ID.put(6577, (int) Config.RATE_DROP_ITEMS_ID.get(6577) * MULTIPLIER); if (ANNOUNCE) Announcements.getInstance().announceToAll("Crazy Rates Event!: The rates have been changed! For the next " + DURATION + " minutes the rates will be multiplied by "+ MULTIPLIER +"!"); startQuestTimer("RESTORE", DURATION * 60000, null, null); _log.info("Rate event: rates changed, vars set. Restoring rates in " + DURATION + "minutes."); } if (event.equalsIgnoreCase("RESTORE")) { Config.RATE_XP = Float.valueOf(loadGlobalQuestVar("exprate")); Config.RATE_SP = Float.valueOf(loadGlobalQuestVar("sprate")); Config.RATE_DROP_ITEMS = Float.valueOf(loadGlobalQuestVar("droprate")); Config.RATE_DROP_ITEMS_ID.put(57, Float.valueOf(loadGlobalQuestVar("adenarate"))); deleteAllGlobalQuestVars(); _log.info("Rate event: rates restored, vars deleted."); if (ANNOUNCE) Announcements.getInstance().announceToAll("The rates are restored. See you till the next Crazy event!"); if (START_DAY > 0 || START_HOUR > 0) startQuestTimer("START", setStartTime(START_DAY, START_HOUR, START_MINUTE), null, null); else if (FREQUENCY > 0) startQuestTimer("START", FREQUENCY * 60000, null, null); } return ""; } public static void main(String[] args) { new Rates(-1, "Rates", "events"); }}
It's not caused by player at time. If player do something at buffer, connection stay opened, and when emulator reaches connection limits its going to close some connections automatically. (MySQL overflow)ElessarMS wrote:The thing is that this is a new version for freya because the Html were fucked up in rin4a's original buffer, so I don't know if Janiii fixed this script based in the new one for Freya version. Do you think the buffer is the problem? Because when the people get overflow they're not buffing themselves or close to the buffer (or this doesnt matter?).
Code: Select all
Index: script.py===================================================================--- script.py (revision 0)+++ script.py (working copy)@@ -713,6 +713,7 @@ ins.close() con.close() except : pass+ try : con.close() return rebuildMainHtml(st) if event == "delete" :@@ -722,7 +723,7 @@ try : rem.executeUpdate() rem.close()- con.close()+ conn.close() except : pass rem=conn.prepareStatement("DELETE FROM buffer_scheme_contents WHERE scheme_id=?") rem.setString(1, eventParam1)