tazerman2 Posted December 11, 2018 Posted December 11, 2018 hello all i need little help with spawn guard my problem is i try make guard spawn like distance radius from center flag but some time's guard is stay in one location or guard no have big distance guard -> guard. so i need make some like this and i need little help my code is this public Npc addSpawn(int npcId, int x, int y, int z, int heading, int RadiusGuard, int RadiusFlag) { try { final NpcTemplate template = NpcTable.getInstance().getTemplate(npcId); if (template == null) return null; final L2Spawn spawn = new L2Spawn(template); //Distance position final int offset = (100 + RadiusGuard + RadiusFlag); final int minRadius = (RadiusFlag + 30); int newX = Rnd.get(minRadius * 2, offset * 2); // x int newY = Rnd.get(newX, offset * 2); // distance newY = (int) Math.sqrt(newY * newY - newX * newX); // y if (newX > offset + minRadius) newX = x + newX - offset; else newX = x - newX + minRadius; if (newY > offset + minRadius) newY = y + newY - offset; else newY = y - newY + minRadius; spawn.setLoc(newX, newY, z + 20, heading); spawn.setRespawnState(true); spawn.setRespawnDelay(35); final Npc npc = spawn.doSpawn(false); //better from Rnd code return npc; } catch (Exception e1) { LOG.warning("Could not spawn Faction Guard Id " + npcId); return null; } }
1 melron Posted December 11, 2018 Posted December 11, 2018 (edited) i followed @Nightw0lf's post while i ignored the moving part and modified @Kara`'s code since acis got similar code. so here you are... https://pastebin.com/vgeMcJX7 Edited December 11, 2018 by melron 2
0 Kara Posted December 11, 2018 Posted December 11, 2018 You want a random location around the flag? int centerX = npc.getX(); int centerY = npc.getY(); double x, y, q, r; q = Rnd.get() * 2 * Math.PI; r = Math.sqrt(Rnd.get()); x = _rad * r * Math.cos(q) + centerX; y = _rad * r * Math.sin(q) + centerY; return new int[] { (int) x, (int) y, GeoEngine.getInstance().getHeight((int) x, (int) y, _z1) };
0 Nightw0lf Posted December 11, 2018 Posted December 11, 2018 you could spawn them into the center and make them walk to outside of circle 2 per 60degree for 100 distance (archers) 2 per 40 degree for 200 distance (fighters) it should be more fun (you could add 3-4 waves
0 tazerman2 Posted December 11, 2018 Author Posted December 11, 2018 5 hours ago, Kara` said: You want a random location around the flag? int centerX = npc.getX(); int centerY = npc.getY(); double x, y, q, r; q = Rnd.get() * 2 * Math.PI; r = Math.sqrt(Rnd.get()); x = _rad * r * Math.cos(q) + centerX; y = _rad * r * Math.sin(q) + centerY; return new int[] { (int) x, (int) y, GeoEngine.getInstance().getHeight((int) x, (int) y, _z1) }; i dont know how can make a code like this is hard for me.. any else can help make spawn like distance radius
0 tazerman2 Posted December 11, 2018 Author Posted December 11, 2018 (edited) again melron give a best help thank you very very much +1 from me now topic can locked Edited December 11, 2018 by tazerman2
Question
tazerman2
hello all i need little help with spawn guard
my problem is i try make guard spawn like distance radius
from center flag but some time's guard is stay in one location
or guard no have big distance guard -> guard.
so i need make some like this and i need little help
my code is this
public Npc addSpawn(int npcId, int x, int y, int z, int heading, int RadiusGuard, int RadiusFlag) { try { final NpcTemplate template = NpcTable.getInstance().getTemplate(npcId); if (template == null) return null; final L2Spawn spawn = new L2Spawn(template); //Distance position final int offset = (100 + RadiusGuard + RadiusFlag); final int minRadius = (RadiusFlag + 30); int newX = Rnd.get(minRadius * 2, offset * 2); // x int newY = Rnd.get(newX, offset * 2); // distance newY = (int) Math.sqrt(newY * newY - newX * newX); // y if (newX > offset + minRadius) newX = x + newX - offset; else newX = x - newX + minRadius; if (newY > offset + minRadius) newY = y + newY - offset; else newY = y - newY + minRadius; spawn.setLoc(newX, newY, z + 20, heading); spawn.setRespawnState(true); spawn.setRespawnDelay(35); final Npc npc = spawn.doSpawn(false); //better from Rnd code return npc; } catch (Exception e1) { LOG.warning("Could not spawn Faction Guard Id " + npcId); return null; } }
5 answers to this question
Recommended Posts