tchegito / zildo

The Land of Alembrume
GNU Lesser General Public License v3.0
4 stars 1 forks source link

[2.54] NPE in runTileAction #162

Closed tchegito closed 5 years ago

tchegito commented 5 years ago

Happened at date '2018-09-22' \n

version=v2.54 map=voleursg3 (22x20) sprites=[Perso=Zildo Coords:(293.0, 49.70016 0.0) info=ZILDO mvt=VIDE pv=3 weapon=[ROCK_BAG,0] name=Modei lasthit=null, 294.0, 59.70016 (80 - bank 0), 691.0, 540.0 (83 - bank 0), 691.0, 540.0 (SHADOW), 691.0, 540.0 (102 - bank 0), Entity id=5 x=44.0 y=88.0 nSpr=25 visible=true, Entity id=6 x=56.0 y=88.0 nSpr=26 visible=true, Entity id=7 x=84.0 y=88.0 nSpr=25 visible=true, Entity id=8 x=124.0 y=88.0 nSpr=25 visible=true, Entity id=9 x=136.0 y=88.0 nSpr=26 visible=true, Entity id=10 x=164.0 y=88.0 nSpr=25 visible=true, Entity id=11 x=124.0 y=144.0 nSpr=25 visible=true, Entity id=12 x=136.0 y=144.0 nSpr=26 visible=true, Entity id=13 x=164.0 y=144.0 nSpr=25 visible=true, Entity id=14 x=212.0 y=160.0 nSpr=25 visible=true, Entity id=15 x=224.0 y=160.0 nSpr=26 visible=true, Entity id=16 x=236.0 y=160.0 nSpr=25 visible=true, Entity id=17 x=284.0 y=168.0 nSpr=25 visible=true, Entity id=18 x=296.0 y=168.0 nSpr=26 visible=true, Entity id=19 x=308.0 y=168.0 nSpr=25 visible=true, Entity id=20 x=44.0 y=224.0 nSpr=25 visible=true, Entity id=21 x=56.0 y=224.0 nSpr=26 visible=true, Entity id=22 x=84.0 y=224.0 nSpr=25 visible=true, Entity id=23 x=172.0 y=256.0 nSpr=25 visible=true, Entity id=24 x=172.0 y=272.0 nSpr=27 visible=true, Entity id=25 x=172.0 y=280.0 nSpr=25 visible=true, fireb1 144.0, 302.0 (JAR), fireb2 224.0, 302.0 (JAR), fireb3 320.0, 131.0 (JAR), fireb4 320.0, 211.0 (JAR), 144.0, 114.0 (BIG_FIRE_BALL), 224.0, 114.0 (BIG_FIRE_BALL), 296.0, 43.0 (SHADOW_MINUS), 296.0, 45.0 (GOLDCOIN1), 178.0, 131.0 (BIG_FIRE_BALL), 178.0, 211.0 (BIG_FIRE_BALL), 288.94116, 115.91406 (TINY_ROCK), 301.52698, 116.26708 (TINY_ROCK), 300.98196, 126.87275 (TINY_ROCK), 289.58557, 126.70639 (TINY_ROCK)] persos=[Perso=Zildo Coords:(293.0, 49.70016 0.0) info=ZILDO mvt=VIDE pv=3 weapon=[ROCK_BAG,0] name=Modei lasthit=null] variables={nettleCount=-1, Carlo=[[MOON, 1], 800, 1], allowedDynamite=yes, Dizzie=[[DYNAMITE, 1], 15, 20], moneyStolen=225.0, BilelIgorVillage=[[EMPTY_BAG, 1], 100, 2], [[BLUEDROP, 1], 15, -1], [[DYNAMITE, 1], 100, 2]} scripts=0 scripts running {[} quests=[flut_ask, flut, chateau_ask, enlevebuissons, enlevebuissons_win, gardelaitier, gardelaitier_win, ritou_bar, enlevement, hector_1, start_defi1, stop_defi1, start_visit1, suite_visit1_weapon, maltus_foret, maltus_foret_zildo_defeat, foretg_button_trig, foretg_apres_grotte, bosquet_kill_gards, bosquet_free_way, polaky_greg, zildo_polaky_killguards, zildo_polaky, foret_back, start_visit2, trig_echange, tonneau_polakyg, fuite_tony1, vert_seen, attaque_voleurs, beanCaveFlames, meanwhile_voleurs, prisonext(40, 40), trip_polaky, polaky3(2, 7), bosquetbosquetm2, bosquetm77KEY, bosquetmbosquetm22, polaky4(27, 19), polaky4(31, 19), polakyg3polakyg42, voleursg1(18, 4)] lastdialog=Thieves Camp �Greeny�: Same. Good night. �Blue�: Yeah, and I'm going to hit the sack. �Mordack�: Alright, I'm going to take the trap off the road. �Mordack�: Fair enough. I just don't want people to think that we are murderers. �Greeny�: Don't worry, we'll pick him up in a few days, once he's realized that our Camp is not a friendly place to be. �Mordack�: You're probably right. �Greeny�: Well we couldn't let him snoop around the Camp at night! We've got a reputation to keep, don't we? �Blue�: In the Cave of the Flames? Ha...Ya, he is definitely going to have a rough time! �Mordack�: It's going to be tough for the kid, isn't it? �Mordack�: Hey guys... Cave of the Flames Meanwhile, at the surface... Thieves Camp �Blue�: Now go, run and hide! �Blue�: Thanks, lad. We'll make good use of your money, don't worry! �Blue�: You had better let us keep it! Oh...wait one more minute...your pockets are full too! �Blue�: Be careful, that's a sharp Sword...you could hurt yourself with it, ya know... �Blue�: Hey, at least you're not empty handed! Look at that! �Mordack�: It's dangerous out here, ya know. You don't have any common sense, do you? �Blue�: Hey kid, what are you doing wandering around without your Mama? �Mordack�: Attack! Lugdunia Forest �Modei�: Hold on! java.lang.NullPointerException: Attempt to read from field 'java.util.List zildo.fwk.script.xml.element.ContextualActionElement.actions' on a null object reference at zildo.server.state.ScriptManagement.runTileAction(ScriptManagement.java:493) at zildo.monde.sprites.persos.PersoPlayer.useItem(PersoPlayer.java:1125) at zildo.monde.sprites.persos.PersoPlayer.pickGoodies(PersoPlayer.java:1107) at zildo.monde.collision.SpriteCollision.checkCollision(SpriteCollision.java:222) at zildo.server.SpriteManagement.collideSprite(SpriteManagement.java:754) at zildo.server.MapManagement.collide(MapManagement.java:358) at zildo.server.MapManagement.collide(MapManagement.java:234) at zildo.monde.sprites.elements.Element.tryMove(Element.java:714) at zildo.server.PlayerManagement.adjustMovement(PlayerManagement.java:332) at zildo.server.PlayerManagement.handleRegularMoving(PlayerManagement.java:304) at zildo.server.PlayerManagement.manageKeyboard(PlayerManagement.java:155) at zildo.server.EngineZildo.renderFrame(EngineZildo.java:173) at zildo.client.stage.SinglePlayer.updateGame(SinglePlayer.java:172) at zildo.client.Client.mainLoop(Client.java:194) at com.alembrum.OpenGLRenderer.onDrawFrame(OpenGLRenderer.java:110) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1649) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1354)

tchegito commented 5 years ago

It seems player just picked a gold coin, and engine is unable to find tileAction named "getMoney". Although, it's standard element in common.xml

He just have thrown the jar, because there's still tiny rocks on the map, and gold coin is still visible. But there's no explication why AdventureElement#tileActions could not contain 'getMoney'.

tchegito commented 5 years ago

As ScriptManagement is a static variable from EngineZildo, maybe Android's GC nullifies that one when task manager switches back to Alembrume ?

tchegito commented 5 years ago

Probably same cause that #164 : thread issue. Maybe the script parser instance couldn't be injected into ExecutorService and so the tileAction isn't loaded. Now that threads are removed for loading, we shouldn't expect to see that again.