Changeset 28b2039b931422fb3ad1ca7d82bea700721e6142
- Timestamp:
- 12/08/07 14:37:49
(1 year ago)
- Author:
- Christopher Jung <bktheg@web.de>
- git-committer:
- Christopher Jung <bktheg@web.de> 1197121069 +0100
- git-parent:
[2d1909f5e2b47ba4dcaeb4fd0fb06671d95c8e0b]
- git-author:
- Christopher Jung <bktheg@web.de> 1197121069 +0100
- Message:
Umstellung ScriptParser? auf javax.script.* Teil 2
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r2d1909f |
r28b2039 |
|
| 33 | 33 | |
|---|
| 34 | 34 | import javax.imageio.ImageIO; |
|---|
| | 35 | import javax.script.Bindings; |
|---|
| | 36 | import javax.script.ScriptContext; |
|---|
| | 37 | import javax.script.ScriptEngine; |
|---|
| | 38 | import javax.script.ScriptException; |
|---|
| 35 | 39 | |
|---|
| 36 | 40 | import net.driftingsouls.ds2.server.bases.Base; |
|---|
| … | … | |
| 50 | 54 | import net.driftingsouls.ds2.server.framework.Loggable; |
|---|
| 51 | 55 | import net.driftingsouls.ds2.server.framework.caches.CacheManager; |
|---|
| 52 | | import net.driftingsouls.ds2.server.framework.db.Database; |
|---|
| 53 | | import net.driftingsouls.ds2.server.framework.db.SQLQuery; |
|---|
| 54 | | import net.driftingsouls.ds2.server.framework.db.SQLResultRow; |
|---|
| 55 | 56 | import net.driftingsouls.ds2.server.scripting.ScriptParser; |
|---|
| | 57 | import net.driftingsouls.ds2.server.scripting.entities.RunningQuest; |
|---|
| 56 | 58 | import net.driftingsouls.ds2.server.ships.Ship; |
|---|
| 57 | 59 | import net.driftingsouls.ds2.server.ships.ShipTypeData; |
|---|
| … | … | |
| 319 | 321 | private static String cmdQuest(Context context, String[] command) { |
|---|
| 320 | 322 | String output = ""; |
|---|
| 321 | | Database db = context.getDatabase(); |
|---|
| | 323 | org.hibernate.Session db = context.getDB(); |
|---|
| 322 | 324 | |
|---|
| 323 | 325 | String cmd = command[1]; |
|---|
| … | … | |
| 325 | 327 | int rqid = Integer.parseInt(command[2]); |
|---|
| 326 | 328 | |
|---|
| 327 | | ScriptParser scriptparser = context.get(ContextCommon.class).getScriptParser(ScriptParser.NameSpace.QUEST); |
|---|
| 328 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| 329 | | |
|---|
| 330 | | SQLResultRow runningquest = db.first("SELECT * FROM quests_running WHERE id="+rqid); |
|---|
| 331 | | |
|---|
| 332 | | if( runningquest.getString("uninstall").length() > 0 ) { |
|---|
| 333 | | scriptparser.setRegister("USER", runningquest.getInt("user")); |
|---|
| 334 | | scriptparser.setRegister("QUEST", "r"+rqid); |
|---|
| 335 | | |
|---|
| 336 | | scriptparser.eval( runningquest.getString("uninstall"), "0" ); |
|---|
| 337 | | } |
|---|
| 338 | | |
|---|
| 339 | | db.update("DELETE FROM quests_running WHERE id="+rqid); |
|---|
| | 329 | ScriptEngine scriptparser = context.get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| | 330 | final Bindings engineBindings = scriptparser.getContext().getBindings(ScriptContext.ENGINE_SCOPE); |
|---|
| | 331 | |
|---|
| | 332 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| | 333 | |
|---|
| | 334 | RunningQuest runningquest = (RunningQuest)db.get(RunningQuest.class, rqid); |
|---|
| | 335 | |
|---|
| | 336 | if( !runningquest.getUninstall().isEmpty() ) { |
|---|
| | 337 | engineBindings.put("USER", runningquest.getUser().getID()); |
|---|
| | 338 | engineBindings.put("QUEST", "r"+rqid); |
|---|
| | 339 | engineBindings.put("_PARAMETERS", "0"); |
|---|
| | 340 | |
|---|
| | 341 | try { |
|---|
| | 342 | scriptparser.eval( runningquest.getUninstall() ); |
|---|
| | 343 | } |
|---|
| | 344 | catch( ScriptException e ) { |
|---|
| | 345 | throw new RuntimeException(e); |
|---|
| | 346 | } |
|---|
| | 347 | } |
|---|
| | 348 | |
|---|
| | 349 | db.delete(runningquest); |
|---|
| 340 | 350 | } |
|---|
| 341 | 351 | else if( cmd.equals("list") ) { |
|---|
| 342 | 352 | output = "Laufende Quests:\n"; |
|---|
| 343 | | SQLQuery rquest = db.query("SELECT qr.id,qr.questid,qr.userid,q.name " + |
|---|
| 344 | | "FROM quests_running qr JOIN quests q ON qr.questid=q.id"); |
|---|
| 345 | | while( rquest.next() ) { |
|---|
| 346 | | output += "* "+rquest.getInt("id")+" - "+rquest.getString("name")+" ("+rquest.getInt("questid")+") - userid "+rquest.getInt("userid")+"\n"; |
|---|
| 347 | | } |
|---|
| 348 | | rquest.free(); |
|---|
| | 353 | List rquestList = db.createQuery("from RunningQuest rq inner join fetch rq.quest").list(); |
|---|
| | 354 | for( Iterator iter=rquestList.iterator(); iter.hasNext(); ) { |
|---|
| | 355 | RunningQuest rquest = (RunningQuest)iter.next(); |
|---|
| | 356 | |
|---|
| | 357 | output += "* "+rquest.getId()+" - "+rquest.getQuest().getName()+" ("+rquest.getQuest().getId()+") - userid "+rquest.getUser().getID()+"\n"; |
|---|
| | 358 | } |
|---|
| 349 | 359 | } |
|---|
| 350 | 360 | else { |
|---|
| r2a7339d |
r28b2039 |
|
| 22 | 22 | import java.util.Map; |
|---|
| 23 | 23 | |
|---|
| | 24 | import javax.script.ScriptEngine; |
|---|
| | 25 | import javax.script.ScriptEngineManager; |
|---|
| | 26 | |
|---|
| 24 | 27 | import net.driftingsouls.ds2.server.framework.Context; |
|---|
| 25 | 28 | import net.driftingsouls.ds2.server.framework.ContextInstance; |
|---|
| 26 | | import net.driftingsouls.ds2.server.scripting.ScriptParser; |
|---|
| 27 | 29 | import net.driftingsouls.ds2.server.scripting.ScriptParserContext; |
|---|
| 28 | 30 | |
|---|
| … | … | |
| 57 | 59 | } |
|---|
| 58 | 60 | |
|---|
| 59 | | private Map<ScriptParser.NameSpace,ScriptParser> scriptParsers = new HashMap<ScriptParser.NameSpace,ScriptParser>(); |
|---|
| | 61 | private Map<String,ScriptEngine> scriptParsers = new HashMap<String,ScriptEngine>(); |
|---|
| 60 | 62 | |
|---|
| 61 | 63 | /** |
|---|
| 62 | | * Gibt eine Instanz des ScriptParsers fuer den angegebenen Namespace zurueck |
|---|
| 63 | | * @param namespace Der Namespace des ScriptParsers |
|---|
| 64 | | * @return der ScriptParser |
|---|
| | 64 | * Gibt eine Instanz einer ScriptEngine zurueck |
|---|
| | 65 | * @param name Der Name der ScriptEngine |
|---|
| | 66 | * @return die ScriptEngine |
|---|
| 65 | 67 | */ |
|---|
| 66 | | public ScriptParser getScriptParser( ScriptParser.NameSpace namespace ) { |
|---|
| 67 | | if( !scriptParsers.containsKey(namespace) ) { |
|---|
| 68 | | ScriptParser parser = new ScriptParser(namespace); |
|---|
| | 68 | public ScriptEngine getScriptParser( String name ) { |
|---|
| | 69 | if( !scriptParsers.containsKey(name) ) { |
|---|
| | 70 | ScriptEngine parser = new ScriptEngineManager().getEngineByName(name); |
|---|
| 69 | 71 | parser.setContext(new ScriptParserContext()); |
|---|
| 70 | | scriptParsers.put(namespace, parser); |
|---|
| | 72 | scriptParsers.put(name, parser); |
|---|
| 71 | 73 | return parser; |
|---|
| 72 | 74 | } |
|---|
| 73 | | return scriptParsers.get(namespace); |
|---|
| | 75 | return scriptParsers.get(name); |
|---|
| 74 | 76 | } |
|---|
| 75 | 77 | } |
|---|
| r957f039 |
r28b2039 |
|
| 40 | 40 | import javax.persistence.Table; |
|---|
| 41 | 41 | import javax.persistence.Transient; |
|---|
| | 42 | import javax.script.ScriptEngine; |
|---|
| 42 | 43 | |
|---|
| 43 | 44 | import net.driftingsouls.ds2.server.ContextCommon; |
|---|
| … | … | |
| 1816 | 1817 | String onendhandler = this.onend; |
|---|
| 1817 | 1818 | if( (onendhandler != null) && (onendhandler.length() > 0) ) { |
|---|
| 1818 | | ScriptParser scriptparser = context.get(ContextCommon.class).getScriptParser(ScriptParser.NameSpace.QUEST); |
|---|
| | 1819 | ScriptEngine scriptparser = context.get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| 1819 | 1820 | if( context.getActiveUser() != null ) { |
|---|
| 1820 | 1821 | BasicUser activeuser = context.getActiveUser(); |
|---|
| 1821 | 1822 | if( !activeuser.hasFlag(User.FLAG_SCRIPT_DEBUGGING) ) { |
|---|
| 1822 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| | 1823 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| 1823 | 1824 | } |
|---|
| 1824 | 1825 | } |
|---|
| 1825 | 1826 | else { |
|---|
| 1826 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| 1827 | | } |
|---|
| 1828 | | |
|---|
| 1829 | | Quests.executeEvent( scriptparser, onendhandler, (context.getActiveUser() != null ? context.getActiveUser().getID() : 0), "" ); |
|---|
| | 1827 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| | 1828 | } |
|---|
| | 1829 | |
|---|
| | 1830 | User questUser = (User)context.getActiveUser(); |
|---|
| | 1831 | if( questUser == null ) { |
|---|
| | 1832 | questUser = (User)db.get(User.class, 0); |
|---|
| | 1833 | } |
|---|
| | 1834 | Quests.executeEvent( scriptparser, onendhandler, questUser, "", false ); |
|---|
| 1830 | 1835 | } |
|---|
| 1831 | 1836 | } |
|---|
| r2d1909f |
r28b2039 |
|
| 28 | 28 | import java.util.List; |
|---|
| 29 | 29 | import java.util.Map; |
|---|
| | 30 | |
|---|
| | 31 | import javax.script.Bindings; |
|---|
| | 32 | import javax.script.ScriptContext; |
|---|
| | 33 | import javax.script.ScriptEngine; |
|---|
| | 34 | import javax.script.ScriptException; |
|---|
| 30 | 35 | |
|---|
| 31 | 36 | import net.driftingsouls.ds2.server.ContextCommon; |
|---|
| … | … | |
| 153 | 158 | |
|---|
| 154 | 159 | if( !action.equals("communicate") && !action.equals("onmove") && !action.equals("onenter") && (ship.getLock() != null) && !ship.getLock().equals("") ) { |
|---|
| 155 | | ScriptParser scriptparser = getContext().get(ContextCommon.class).getScriptParser( ScriptParser.NameSpace.QUEST ); |
|---|
| 156 | | scriptparser.setShip(ship); |
|---|
| | 160 | ScriptEngine scriptparser = getContext().get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| | 161 | scriptparser.getContext().setAttribute("_SHIP", ship, ScriptContext.ENGINE_SCOPE); |
|---|
| | 162 | |
|---|
| 157 | 163 | if( !user.hasFlag( User.FLAG_SCRIPT_DEBUGGING ) ) { |
|---|
| 158 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| | 164 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| 159 | 165 | } |
|---|
| 160 | 166 | |
|---|
| … | … | |
| 747 | 753 | } |
|---|
| 748 | 754 | |
|---|
| 749 | | ScriptParser scriptparser = getContext().get(ContextCommon.class).getScriptParser( ScriptParser.NameSpace.QUEST ); |
|---|
| 750 | | scriptparser.setShip(ship); |
|---|
| | 755 | ScriptEngine scriptparser = getContext().get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| | 756 | final Bindings engineBindings = scriptparser.getContext().getBindings(ScriptContext.ENGINE_SCOPE); |
|---|
| | 757 | |
|---|
| | 758 | engineBindings.put("_SHIP", ship); |
|---|
| 751 | 759 | if( !user.hasFlag( User.FLAG_SCRIPT_DEBUGGING ) ) { |
|---|
| 752 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| | 760 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| 753 | 761 | } |
|---|
| 754 | 762 | |
|---|
| 755 | 763 | Quests.currentEventURL.set("&action=communicate&communicate="+communicate); |
|---|
| 756 | | |
|---|
| 757 | | if( (lock != null) && (lock.length > 2) ) { |
|---|
| 758 | | scriptparser.setRegister("LOCKEXEC", "1"); |
|---|
| 759 | | } |
|---|
| 760 | | |
|---|
| 761 | | scriptparser.setRegister("TARGETSHIP", Integer.toString(communicate)); |
|---|
| | 764 | |
|---|
| | 765 | engineBindings.put("TARGETSHIP", Integer.toString(communicate)); |
|---|
| 762 | 766 | |
|---|
| 763 | 767 | parameterString("execparameter"); |
|---|
| … | … | |
| 773 | 777 | return; |
|---|
| 774 | 778 | } |
|---|
| 775 | | Quests.executeEvent( scriptparser, targetship.getOnCommunicate(), user.getID(), execparameter ); |
|---|
| | 779 | Quests.executeEvent( scriptparser, targetship.getOnCommunicate(), user, execparameter, lock != null && lock.length > 2 ); |
|---|
| 776 | 780 | |
|---|
| 777 | 781 | redirect(); |
|---|
| … | … | |
| 796 | 800 | } |
|---|
| 797 | 801 | |
|---|
| 798 | | ScriptParser scriptparser = getContext().get(ContextCommon.class).getScriptParser( ScriptParser.NameSpace.QUEST ); |
|---|
| 799 | | scriptparser.setShip(ship); |
|---|
| | 802 | ScriptEngine scriptparser = getContext().get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| | 803 | scriptparser.getContext().setAttribute("_SHIP", ship, ScriptContext.ENGINE_SCOPE); |
|---|
| | 804 | |
|---|
| 800 | 805 | if( !user.hasFlag( User.FLAG_SCRIPT_DEBUGGING ) ) { |
|---|
| 801 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| | 806 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| 802 | 807 | } |
|---|
| 803 | 808 | |
|---|
| 804 | 809 | Quests.currentEventURL.set("&action=onmove"); |
|---|
| 805 | | |
|---|
| 806 | | if( lock.length > 2 ) { |
|---|
| 807 | | scriptparser.setRegister("LOCKEXEC", "1"); |
|---|
| 808 | | } |
|---|
| 809 | | |
|---|
| | 810 | |
|---|
| 810 | 811 | parameterString("execparameter"); |
|---|
| 811 | 812 | String execparameter = getString( "execparameter" ); |
|---|
| … | … | |
| 820 | 821 | } |
|---|
| 821 | 822 | |
|---|
| 822 | | Quests.executeEvent( scriptparser, ship.getOnMove(), user.getID(), execparameter ); |
|---|
| | 823 | Quests.executeEvent( scriptparser, ship.getOnMove(), user, execparameter, lock.length > 2 ); |
|---|
| 823 | 824 | |
|---|
| 824 | 825 | redirect(); |
|---|
| … | … | |
| 844 | 845 | } |
|---|
| 845 | 846 | |
|---|
| 846 | | ScriptParser scriptparser = getContext().get(ContextCommon.class).getScriptParser( ScriptParser.NameSpace.QUEST ); |
|---|
| 847 | | scriptparser.setShip(ship); |
|---|
| | 847 | ScriptEngine scriptparser = getContext().get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| | 848 | scriptparser.getContext().setAttribute("_SHIP", ship, ScriptContext.ENGINE_SCOPE); |
|---|
| | 849 | |
|---|
| 848 | 850 | if( !user.hasFlag( User.FLAG_SCRIPT_DEBUGGING ) ) { |
|---|
| 849 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| 850 | | } |
|---|
| 851 | | |
|---|
| 852 | | // TODO: migrate to libquests |
|---|
| | 851 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| | 852 | } |
|---|
| | 853 | |
|---|
| | 854 | // TODO: migrate to Quests.executeEvent |
|---|
| 853 | 855 | |
|---|
| 854 | 856 | if( lock.length < 3 ) { |
|---|
| … | … | |
| 896 | 898 | } |
|---|
| 897 | 899 | |
|---|
| | 900 | final Bindings engineBindings = scriptparser.getContext().getBindings(ScriptContext.ENGINE_SCOPE); |
|---|
| | 901 | |
|---|
| 898 | 902 | Script script = (Script)db.get(Script.class, Integer.valueOf(usescript)); |
|---|
| 899 | | scriptparser.setRegister("USER", Integer.toString(user.getID())); |
|---|
| | 903 | engineBindings.put("USER", Integer.toString(user.getID())); |
|---|
| 900 | 904 | if( !usequest.equals("") ) { |
|---|
| 901 | | scriptparser.setRegister("QUEST", "r"+runningdata.getId()); |
|---|
| 902 | | } |
|---|
| 903 | | scriptparser.setRegister("SCRIPT", usescript); |
|---|
| 904 | | scriptparser.setRegister("SECTOR", ship.getLocation().toString()); |
|---|
| | 905 | engineBindings.put("QUEST", "r"+runningdata.getId()); |
|---|
| | 906 | } |
|---|
| | 907 | engineBindings.put("SCRIPT", usescript); |
|---|
| | 908 | engineBindings.put("SECTOR", ship.getLocation().toString()); |
|---|
| 905 | 909 | if( (lock.length > 2) ) { |
|---|
| 906 | | scriptparser.setRegister("LOCKEXEC", "1"); |
|---|
| 907 | | } |
|---|
| 908 | | |
|---|
| 909 | | scriptparser.eval(script.getScript(), execparameter); |
|---|
| 910 | | |
|---|
| 911 | | usequest = scriptparser.getRegister("QUEST"); |
|---|
| | 910 | engineBindings.put("LOCKEXEC", "1"); |
|---|
| | 911 | } |
|---|
| | 912 | |
|---|
| | 913 | engineBindings.put("_PARAMETERS", execparameter); |
|---|
| | 914 | try { |
|---|
| | 915 | scriptparser.eval(script.getScript()); |
|---|
| | 916 | } |
|---|
| | 917 | catch( ScriptException e ) { |
|---|
| | 918 | throw new RuntimeException(e); |
|---|
| | 919 | } |
|---|
| | 920 | |
|---|
| | 921 | usequest = (String)engineBindings.get("QUEST"); |
|---|
| 912 | 922 | |
|---|
| 913 | 923 | if( !usequest.equals("") ) { |
|---|
| … | … | |
| 1179 | 1189 | db.refresh(ship); |
|---|
| 1180 | 1190 | |
|---|
| 1181 | | ScriptParser scriptparser = getContext().get(ContextCommon.class).getScriptParser( ScriptParser.NameSpace.QUEST ); |
|---|
| | 1191 | ScriptEngine scriptparser = getContext().get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| 1182 | 1192 | if( ship == null ) { |
|---|
| 1183 | | if( (scriptparser != null) && (scriptparser.getContext().getOutput().length() != 0) ) { |
|---|
| | 1193 | if( (scriptparser != null) && (scriptparser.getContext().getWriter().toString().length() != 0) ) { |
|---|
| 1184 | 1194 | t.setVar("ship.scriptparseroutput", |
|---|
| 1185 | | scriptparser.getContext().getOutput().replace("{{var.sessid}}", getString("sess")) ); |
|---|
| | 1195 | scriptparser.getContext().getWriter().toString().replace("{{var.sessid}}", getString("sess")) ); |
|---|
| 1186 | 1196 | } |
|---|
| 1187 | 1197 | else { |
|---|
| … | … | |
| 1194 | 1204 | |
|---|
| 1195 | 1205 | if( ship.getBattle() != null ) { |
|---|
| 1196 | | if( (scriptparser != null) && (scriptparser.getContext().getOutput().length() > 0) ) { |
|---|
| | 1206 | if( (scriptparser != null) && (scriptparser.getContext().getWriter().toString().length() > 0) ) { |
|---|
| 1197 | 1207 | t.setVar("ship.scriptparseroutput", |
|---|
| 1198 | | scriptparser.getContext().getOutput().replace("{{var.sessid}}", getString("sess")) ); |
|---|
| | 1208 | scriptparser.getContext().getWriter().toString().replace("{{var.sessid}}", getString("sess")) ); |
|---|
| 1199 | 1209 | } |
|---|
| 1200 | 1210 | |
|---|
| … | … | |
| 1562 | 1572 | */ |
|---|
| 1563 | 1573 | |
|---|
| 1564 | | if( (scriptparser != null) && (scriptparser.getContext().getOutput().length() > 0) ) { |
|---|
| | 1574 | if( (scriptparser != null) ) { |
|---|
| 1565 | 1575 | t.setVar("ship.scriptparseroutput", |
|---|
| 1566 | | scriptparser.getContext().getOutput().replace("{{var.sessid}}", getString("sess"))); |
|---|
| | 1576 | scriptparser.getContext().getWriter().toString().replace("{{var.sessid}}", getString("sess"))); |
|---|
| 1567 | 1577 | } |
|---|
| 1568 | 1578 | |
|---|
| r2d1909f |
r28b2039 |
|
| 25 | 25 | import java.util.Iterator; |
|---|
| 26 | 26 | import java.util.List; |
|---|
| | 27 | |
|---|
| | 28 | import javax.script.Bindings; |
|---|
| | 29 | import javax.script.ScriptContext; |
|---|
| | 30 | import javax.script.ScriptEngine; |
|---|
| | 31 | import javax.script.ScriptEngineManager; |
|---|
| | 32 | import javax.script.ScriptException; |
|---|
| 27 | 33 | |
|---|
| 28 | 34 | import net.driftingsouls.ds2.server.ContextCommon; |
|---|
| … | … | |
| 164 | 170 | } |
|---|
| 165 | 171 | |
|---|
| 166 | | ScriptParser scriptparser = new ScriptParser( ScriptParser.NameSpace.QUEST ); |
|---|
| | 172 | ScriptEngine scriptparser = new ScriptEngineManager().getEngineByName("DSQuestScript"); |
|---|
| 167 | 173 | if( !getUser().hasFlag( User.FLAG_SCRIPT_DEBUGGING ) ) { |
|---|
| 168 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| | 174 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| 169 | 175 | } |
|---|
| 170 | 176 | |
|---|
| … | … | |
| 180 | 186 | return; |
|---|
| 181 | 187 | } |
|---|
| 182 | | scriptparser.setRegister("USER", Integer.toString(getUser().getID())); |
|---|
| 183 | | scriptparser.setRegister("QUEST", "r"+questid); |
|---|
| 184 | | scriptparser.eval(":0\n!ENDQUEST\n!QUIT","0"); |
|---|
| | 188 | final Bindings engineBindings = scriptparser.getContext().getBindings(ScriptContext.ENGINE_SCOPE); |
|---|
| | 189 | |
|---|
| | 190 | engineBindings.put("USER", Integer.toString(getUser().getID())); |
|---|
| | 191 | engineBindings.put("QUEST", "r"+questid); |
|---|
| | 192 | engineBindings.put("_PARAMETERS", "0"); |
|---|
| | 193 | try { |
|---|
| | 194 | scriptparser.eval(":0\n!ENDQUEST\n!QUIT"); |
|---|
| | 195 | } |
|---|
| | 196 | catch( ScriptException e ) { |
|---|
| | 197 | throw new RuntimeException(e); |
|---|
| | 198 | } |
|---|
| 185 | 199 | |
|---|
| 186 | 200 | redirect(); |
|---|
| r2d1909f |
r28b2039 |
|
| 24 | 24 | import java.util.List; |
|---|
| 25 | 25 | |
|---|
| | 26 | import javax.script.Bindings; |
|---|
| | 27 | import javax.script.ScriptContext; |
|---|
| | 28 | import javax.script.ScriptEngine; |
|---|
| | 29 | |
|---|
| 26 | 30 | import net.driftingsouls.ds2.server.ContextCommon; |
|---|
| 27 | 31 | import net.driftingsouls.ds2.server.bases.Base; |
|---|
| … | … | |
| 36 | 40 | import net.driftingsouls.ds2.server.framework.Loggable; |
|---|
| 37 | 41 | import net.driftingsouls.ds2.server.framework.db.Database; |
|---|
| 38 | | import net.driftingsouls.ds2.server.framework.db.SQLQuery; |
|---|
| 39 | 42 | import net.driftingsouls.ds2.server.modules.AdminController; |
|---|
| 40 | | import net.driftingsouls.ds2.server.scripting.ScriptParser; |
|---|
| 41 | 43 | import net.driftingsouls.ds2.server.scripting.ScriptParserContext; |
|---|
| | 44 | import net.driftingsouls.ds2.server.scripting.entities.RunningQuest; |
|---|
| 42 | 45 | import net.driftingsouls.ds2.server.ships.Ship; |
|---|
| 43 | 46 | import net.driftingsouls.ds2.server.tasks.Taskmanager; |
|---|
| … | … | |
| 93 | 96 | } |
|---|
| 94 | 97 | |
|---|
| 95 | | ScriptParser scriptparser = context.get(ContextCommon.class).getScriptParser(ScriptParser.NameSpace.QUEST); |
|---|
| | 98 | ScriptEngine scriptparser = context.get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| 96 | 99 | |
|---|
| 97 | 100 | echo.append("Beende Quests....<br />\n"); |
|---|
| 98 | | SQLQuery rquest = database.query("SELECT * FROM quests_running WHERE userid=",userid); |
|---|
| 99 | | while( rquest.next() ) { |
|---|
| 100 | | scriptparser.cleanup(); |
|---|
| | 101 | List rquestList = db.createQuery("from RunningQuest where user= :user") |
|---|
| | 102 | .setEntity("user", user) |
|---|
| | 103 | .list(); |
|---|
| | 104 | for( Iterator iter=rquestList.iterator(); iter.hasNext(); ) { |
|---|
| | 105 | RunningQuest rquest = (RunningQuest)iter.next(); |
|---|
| | 106 | |
|---|
| 101 | 107 | try { |
|---|
| 102 | 108 | scriptparser.setContext( |
|---|
| 103 | | ScriptParserContext.fromStream(rquest.getBlob("execdata").getBinaryStream()) |
|---|
| | 109 | ScriptParserContext.fromStream(rquest.getExecData().getBinaryStream()) |
|---|
| 104 | 110 | ); |
|---|
| 105 | | scriptparser.setRegister("USER", userid); |
|---|
| 106 | | scriptparser.setRegister("QUEST", "r"+rquest.getInt("id")); |
|---|
| 107 | | scriptparser.eval(":0\n!ENDQUEST\n!QUIT","0"); |
|---|
| | 111 | final Bindings engineBindings = scriptparser.getContext().getBindings(ScriptContext.ENGINE_SCOPE); |
|---|
| | 112 | |
|---|
| | 113 | engineBindings.put("USER", userid); |
|---|
| | 114 | engineBindings.put("QUEST", "r"+rquest.getId()); |
|---|
| | 115 | engineBindings.put("_PARAMETERS", "0"); |
|---|
| | 116 | scriptparser.eval(":0\n!ENDQUEST\n!QUIT"); |
|---|
| 108 | 117 | } |
|---|
| 109 | 118 | catch( Exception e ) { |
|---|
| 110 | | echo.append("Fehler beim Beenden des Quests "+rquest.getInt("questid")+": "+e); |
|---|
| | 119 | echo.append("Fehler beim Beenden des Quests "+rquest.getQuest().getId()+": "+e); |
|---|
| 111 | 120 | LOG.error(e,e); |
|---|
| 112 | 121 | echo.append(Common.tableEnd()); |
|---|
| … | … | |
| 115 | 124 | } |
|---|
| 116 | 125 | } |
|---|
| 117 | | rquest.free(); |
|---|
| 118 | 126 | |
|---|
| 119 | 127 | echo.append("Loesche 'Abgeschlossen'-Status bei Quests<br />\n"); |
|---|
| 120 | | database.update("DELETE FROM quests_completed WHERE userid="+userid); |
|---|
| | 128 | db.createQuery("delete from CompletedQuest where user= :user") |
|---|
| | 129 | .setEntity("user", user) |
|---|
| | 130 | .executeUpdate(); |
|---|
| 121 | 131 | |
|---|
| 122 | 132 | if( user.getAlly() != null ) { |
|---|
| … | … | |
| 255 | 265 | |
|---|
| 256 | 266 | echo.append("Lösche PM's...\n"); |
|---|
| 257 | | database.update("DELETE FROM transmissionen WHERE empfaenger="+userid); |
|---|
| 258 | | echo.append(database.affectedRows()+" gelöscht<br />\n"); |
|---|
| 259 | | database.update("UPDATE transmissionen SET sender=0 WHERE sender="+userid); |
|---|
| | 267 | int affRows = db.createQuery("delete from PM where empfaenger = :user") |
|---|
| | 268 | .setEntity("user", user) |
|---|
| | 269 | .executeUpdate(); |
|---|
| | 270 | echo.append(affRows+" gelöscht<br />\n"); |
|---|
| | 271 | |
|---|
| | 272 | db.createQuery("update PM set sender=0 where sender = :user") |
|---|
| | 273 | .setEntity("user", user) |
|---|
| | 274 | .executeUpdate(); |
|---|
| 260 | 275 | |
|---|
| 261 | 276 | echo.append("Lösche PM-Ordner...<br />\n"); |
|---|
| … | … | |
| 271 | 286 | |
|---|
| 272 | 287 | echo.append("Lösche Kontobewegungen...<br />\n"); |
|---|
| 273 | | database.update("DELETE FROM user_moneytransfer WHERE `from`=",userid," OR `to`=",userid); |
|---|
| | 288 | db.createQuery("delete from UserMoneyTransfer where from= :user or to = :user") |
|---|
| | 289 | .setEntity("user", user) |
|---|
| | 290 | .executeUpdate(); |
|---|
| 274 | 291 | |
|---|
| 275 | 292 | echo.append("Lösche Userlogo...<br />\n"); |
|---|
| r2d1909f |
r28b2039 |
|
| 23 | 23 | import java.util.Set; |
|---|
| 24 | 24 | |
|---|
| | 25 | import javax.script.Bindings; |
|---|
| | 26 | import javax.script.ScriptContext; |
|---|
| | 27 | import javax.script.ScriptEngine; |
|---|
| | 28 | import javax.script.ScriptException; |
|---|
| | 29 | |
|---|
| 25 | 30 | import net.driftingsouls.ds2.server.ContextCommon; |
|---|
| 26 | 31 | import net.driftingsouls.ds2.server.cargo.Cargo; |
|---|
| … | … | |
| 36 | 41 | import net.driftingsouls.ds2.server.framework.db.SQLResultRow; |
|---|
| 37 | 42 | import net.driftingsouls.ds2.server.modules.AdminController; |
|---|
| 38 | | import net.driftingsouls.ds2.server.scripting.ScriptParser; |
|---|
| 39 | 43 | import net.driftingsouls.ds2.server.scripting.ScriptParserContext; |
|---|
| 40 | 44 | |
|---|
| … | … | |
| 79 | 83 | db.update("UPDATE quests_quick SET enabled=0 WHERE id="+id); |
|---|
| 80 | 84 | |
|---|
| 81 | | ScriptParser scriptparser = context.get(ContextCommon.class).getScriptParser( ScriptParser.NameSpace.QUEST ); |
|---|
| | 85 | ScriptEngine scriptparser = context.get(ContextCommon.class).getScriptParser("DSQuestScript"); |
|---|
| 82 | 86 | |
|---|
| 83 | 87 | SQLQuery rquest = db.query("SELECT * FROM quests_running WHERE id="+qquest.getInt("enabled")); |
|---|
| 84 | 88 | while( rquest.next() ) { |
|---|
| 85 | | scriptparser.cleanup(); |
|---|
| 86 | 89 | try { |
|---|
| 87 | 90 | Blob execdata = rquest.getBlob("execdata"); |
|---|
| … | … | |
| 93 | 96 | echo.append("WARNUNG: Konnte Questdaten nicht laden: Laufendes Quest "+rquest.getInt("id")+"<br />\n"); |
|---|
| 94 | 97 | } |
|---|
| 95 | | scriptparser.setRegister("USER", rquest.getInt("userid")); |
|---|
| 96 | | scriptparser.setRegister("QUEST", "r"+rquest.getInt("id")); |
|---|
| 97 | | scriptparser.eval(":0\n!ENDQUEST\n!QUIT","0"); |
|---|
| | 98 | |
|---|
| | 99 | final Bindings engineBindings = scriptparser.getContext().getBindings(ScriptContext.ENGINE_SCOPE); |
|---|
| | 100 | |
|---|
| | 101 | engineBindings.put("USER", rquest.getInt("userid")); |
|---|
| | 102 | engineBindings.put("QUEST", "r"+rquest.getInt("id")); |
|---|
| | 103 | engineBindings.put("_PARAMETERS", "0"); |
|---|
| | 104 | try { |
|---|
| | 105 | scriptparser.eval(":0\n!ENDQUEST\n!QUIT"); |
|---|
| | 106 | } |
|---|
| | 107 | catch( ScriptException e ) { |
|---|
| | 108 | throw new RuntimeException(e); |
|---|
| | 109 | } |
|---|
| 98 | 110 | echo.append("Beende Quest bei Spieler "+rquest.getInt("userid")+"<br />\n"); |
|---|
| 99 | 111 | } |
|---|
| r7375108 |
r28b2039 |
|
| 21 | 21 | import java.util.Iterator; |
|---|
| 22 | 22 | import java.util.List; |
|---|
| | 23 | |
|---|
| | 24 | import javax.script.Bindings; |
|---|
| | 25 | import javax.script.ScriptContext; |
|---|
| | 26 | import javax.script.ScriptEngine; |
|---|
| 23 | 27 | |
|---|
| 24 | 28 | import net.driftingsouls.ds2.server.ContextCommon; |
|---|
| … | … | |
| 106 | 110 | if( (ship.getOnMove() != null) && (ship.getOnMove().length() > 0) && |
|---|
| 107 | 111 | ((targetx != 0) && (targety != 0)) || ((act != 5) && (act >= 1) && (act <= 9)) ) { |
|---|
| 108 | | ScriptParser scriptparser = ContextMap.getContext().get(ContextCommon.class).getScriptParser( ScriptParser.NameSpace.QUEST ); |
|---|
| 109 | | scriptparser.setShip(ship); |
|---|
| 110 | | scriptparser.setLogFunction(ScriptParser.LOGGER_NULL); |
|---|
| 111 | | scriptparser.setRegister("DIRECTION",Integer.toString(act)); |
|---|
| 112 | | scriptparser.setRegister("MOVEMENTCOUNT",Integer.toString(count)); |
|---|
| 113 | | scriptparser.setRegister("TARGETX",Integer.toString(targetx)); |
|---|
| 114 | | scriptparser.setRegister("TARGETY",Integer.toString(targety)); |
|---|
| 115 | | scriptparser.setRegister("SECTOR", ship.getLocation().toString()); |
|---|
| | 112 | ScriptEngine scriptparser = ContextMap.getContext().get(ContextCommon.class).getScriptParser( "DSQuestScript" ); |
|---|
| | 113 | |
|---|
| | 114 | final Bindings engineBindings = scriptparser.getContext().getBindings(ScriptContext.ENGINE_SCOPE); |
|---|
| | 115 | |
|---|
| | 116 | engineBindings.put("_SHIP", ship); |
|---|
| | 117 | scriptparser.getContext().setErrorWriter(ScriptParser.LOGGER_NULL); |
|---|
| | 118 | engineBindings.put("DIRECTION",Integer.toString(act)); |
|---|
| | 119 | engineBindings.put("MOVEMENTCOUNT",Integer.toString(count)); |
|---|
| | 120 | engineBindings.put("TARGETX",Integer.toString(targetx)); |
|---|
| | 121 | engineBindings.put("TARGETY",Integer.toString(targety)); |
|---|
| | 122 | engineBindings.put("SECTOR", ship.getLocation().toString()); |
|---|
| 116 | 123 | |
|---|
| 117 | 124 | Quests.currentEventURL.set("&action=onmove"); |
|---|
| 118 | 125 | |
|---|
| 119 | | Quests.executeEvent( scriptparser, ship.getOnMove(), user.getID(), "0" ); |
|---|
| | 126 | Quests.executeEvent( scriptparser, ship.getOnMove(), user, "0", false ); |
|---|
| 120 | 127 | try { |
|---|
| 121 | | act = Integer.parseInt(scriptparser.getRegister("DIRECTION")); |
|---|
| 122 | | count = Integer.parseInt(scriptparser.getRegister("MOVEMENTCOUNT")); |
|---|
| 123 | | targetx = Integer.parseInt(scriptparser.getRegister("TARGETX")); |
|---|
| 124 | | targety = Integer.parseInt(scriptparser.getRegister("TARGETY")); |
|---|
| | 128 | act = Integer.parseInt((String)engineBindings.get("DIRECTION")); |
|---|
| | 129 | count = Integer.parseInt((String)engineBindings.get("MOVEMENTCOUNT")); |
|---|
| | 130 | targetx = Integer.parseInt((String)engineBindings.get("TARGETX")); |
|---|
| | 131 | targety = Integer.parseInt((String)engineBindings.get("TARGETY")); |
|---|
| 125 | 132 | } |
|---|
| 126 | 133 | catch( NumberFormatException e ) { |
|---|
| r2d1909f |
r28b2039 |
|
| 19 | 19 | package net.driftingsouls.ds2.server.scripting; |
|---|
| 20 | 20 | |
|---|
| | 21 | import java.io.IOException; |
|---|
| 21 | 22 | import java.sql.Blob; |
|---|
| 22 | 23 | import java.util.ArrayList; |
|---|
| … | … | |
| 27 | 28 | |
|---|
| 28 | 29 | import javax.script.ScriptContext; |
|---|
| | 30 | import javax.script.ScriptException; |
|---|
| 29 | 31 | |
|---|
| 30 | 32 | import net.driftingsouls.ds2.server.ContextCommon; |
|---|
| … | … | |
| 189 | 191 | String text = bbcodeparser.parse(dialogText); |
|---|
| 190 | 192 | |
|---|
| 191 | | ScriptParserContext context = scriptparser.getContext(); |
|---|
| 192 | | context.out( "<table class=\"noBorderX\"><tr><td class=\"noBorderX\" valign=\"top\">" ); |
|---|
| 193 | | context.out( "<img src=\""+Configuration.getSetting("URL")+"data/quests/"+dialogImage+"\" alt=\"\" />" ); |
|---|
| 194 | | context.out( "</td><td class=\"noBorderX\" valign=\"top\">" ); |
|---|
| 195 | | context.out( StringUtils.replace(text, "\n", "<br />")+"<br /><br />" ); |
|---|
| 196 | | |
|---|
| 197 | | for( QuestAnswer answer : dialogAnswers.values() ) { |
|---|
| 198 | | context.out( "<a class=\"forschinfo\" href=\""+answer.url+"\">"+answer.text+"</a><br />" ); |
|---|
| 199 | | } |
|---|
| 200 | | context.out( "</td></tr></table>" ); |
|---|
| | 193 | ScriptContext context = scriptparser.getContext(); |
|---|
| | 194 | try { |
|---|
| | 195 | context.getWriter().append( "<table class=\"noBorderX\"><tr><td class=\"noBorderX\" valign=\"top\">" ); |
|---|
| | 196 | context.getWriter().append( "<img src=\""+Configuration.getSetting("URL")+"data/quests/"+dialogImage+"\" alt=\"\" />" ); |
|---|
| | 197 | context.getWriter().append( "</td><td class=\"noBorderX\" valign=\"top\">" ); |
|---|
| | 198 | context.getWriter().append( StringUtils.replace(text, "\n", "<br />")+"<br /><br />" ); |
|---|
| | 199 | |
|---|
| | 200 | for( QuestAnswer answer : dialogAnswers.values() ) { |
|---|
| | 201 | context.getWriter().append( "<a class=\"forschinfo\" href=\""+answer.url+"\">"+answer.text+"</a><br />" ); |
|---|
| | 202 | } |
|---|
| | 203 | context.getWriter().append( "</td></tr></table>" ); |
|---|
| | 204 | } |
|---|
| | 205 | catch( IOException e ) { |
|---|
| | 206 | e.printStackTrace(); |
|---|
| | 207 | } |
|---|
| 201 | 208 | |
|---|
| 202 | 209 | return CONTINUE; |
|---|
| … | … | |
| 686 | 693 | // ggf. das Quest "deinstallieren" (handler entfernen) |
|---|
| 687 | 694 | if( runningdata.getString("uninstall").length() > 0 ) { |
|---|
| 688 | | ScriptParserContext context = scriptparser.getContext(); |
|---|
| | 695 | ScriptContext context = scriptparser.getContext(); |
|---|
| 689 | 696 | |
|---|
| 690 | 697 | scriptparser.setContext(new ScriptParserContext()); |
|---|
| 691 | | scriptparser.eval( runningdata.getString("uninstall"), "0" ); |
|---|
| | 698 | scriptparser.getContext().setAttribute("_PARAMETERS", "0", ScriptContext.ENGINE_SCOPE); |
|---|
| | 699 | try { |
|---|
| | 700 | scriptparser.eval( runningdata.getString("uninstall") ); |
|---|
| | 701 | } |
|---|
| | 702 | catch( ScriptException e ) { |
|---|
| | 703 | throw new RuntimeException(e); |
|---|
| | 704 | } |
|---|
| 692 | 705 | |
|---|
| 693 | 706 | |
|---|