Please maybe someone help me change script for Raid Boss Gordon (who walked around Godard, and have agression only with characters who have cursed weapon)
He must attack all players, not only who have cursed weapon.
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Heya!
I was looking for someone who can provide me with any solution for FPS increase on Interlude Client.
I was interested in a working Clear Cache button and/or any patch that will increase the FPS of each player.
Playing on Interlude for many years now, I can understand that a crowded place will drop your FPS by a lot which is making the game unplayable and unenjoyable. For example, Baium Epic Boss always had issues (not only) with FPS drops sometimes players are playing with pixels (images).
If anyone has the expertise and knowledge about those things I would like him to contact me via Discord xthedarknessfear so we can discuss further because I obviously have some questions about Client Modification and how it's done.
Will not answer anything here, hit me up on disc and let's discuss it!
P.S: I'm also looking for a custom simple interface (small edits). If you can do both, you are my guy!
Cheers!
Question
Tassadar
Good evening peoples
Please maybe someone help me change script for Raid Boss Gordon (who walked around Godard, and have agression only with characters who have cursed weapon)
He must attack all players, not only who have cursed weapon.
package ai.individual;
import java.util.Collection;
import net.sf.l2j.gameserver.ai.CtrlIntention;
import net.sf.l2j.gameserver.datatables.SpawnTable;
import net.sf.l2j.gameserver.model.L2Attackable;
import net.sf.l2j.gameserver.model.L2CharPosition;
import net.sf.l2j.gameserver.model.L2Spawn;
import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import ai.group_template.L2AttackableAIScript;
public class Gordon extends L2AttackableAIScript
{
private static final int GORDON = 29095;
private static int _npcMoveX = 0;
private static int _npcMoveY = 0;
private static int _isWalkTo = 0;
private static int _npcBlock = 0;
private static int X = 0;
private static int Y = 0;
private static int Z = 0;
private static final int[][] WALKS = {
{141569, -45908, -2387},{142494, -45456, -2397},{142922, -44561, -2395},
{143672, -44130, -2398},{144557, -43378, -2325},{145839, -43267, -2301},
{147044, -43601, -2307},{148140, -43206, -2303},{148815, -43434, -2328},
{149862, -44151, -2558},{151037, -44197, -2708},{152555, -42756, -2836},
{154808, -39546, -3236},{155333, -39962, -3272},{156531, -41240, -3470},
{156863, -43232, -3707},{156783, -44198, -3764},{158169, -45163, -3541},
{158952, -45479, -3473},{160039, -46514, -3634},{160244, -47429, -3656},
{159155, -48109, -3665},{159558, -51027, -3523},{159396, -53362, -3244},
{160872, -56556, -2789},{160857, -59072, -2613},{160410, -59888, -2647},
{158770, -60173, -2673},{156368, -59557, -2638},{155188, -59868, -2642},
{154118, -60591, -2731},{153571, -61567, -2821},{153457, -62819, -2886},
{152939, -63778, -3003},{151816, -64209, -3120},{147655, -64826, -3433},
{145422, -64576, -3369},{144097, -64320, -3404},{140780, -61618, -3096},
{139688, -61450, -3062},{138267, -61743, -3056},{138613, -58491, -3465},
{138139, -57252, -3517},{139555, -56044, -3310},{139107, -54537, -3240},
{139279, -53781, -3091},{139810, -52687, -2866},{139657, -52041, -2793},
{139215, -51355, -2698},{139334, -50514, -2594},{139817, -49715, -2449},
{139824, -48976, -2263},{140130, -47578, -2213},{140483, -46339, -2382},
{141569, -45908, -2387}};
private static boolean _isAttacked = false;
private static boolean _isSpawned = false;
public Gordon (int id, String name, String descr)
{
super(id,name,descr);
int[] mobs = {GORDON};
registerMobs(mobs);
// wait 2 minutes after Start AI
startQuestTimer("check_ai", 120000, null, null, true);
_isSpawned = false;
_isAttacked = false;
_isWalkTo = 1;
_npcMoveX = 0;
_npcMoveY = 0;
_npcBlock = 0;
}
public L2NpcInstance findTemplate(int npcId)
{
L2NpcInstance npc = null;
for (L2Spawn spawn : SpawnTable.getInstance().getSpawnTable().values())
{
if (spawn != null && spawn.getNpcid() == npcId)
{
npc = spawn.getLastSpawn();
break;
}
}
return npc;
}
public String onAdvEvent (String event, L2NpcInstance npc, L2PcInstance player)
{
X = WALKS[_isWalkTo-1][0];
Y = WALKS[_isWalkTo-1][1];
Z = WALKS[_isWalkTo-1][2];
if (event == "time_isAttacked")
{
_isAttacked = false;
if (npc.getNpcId() == GORDON)
{
npc.setWalking();
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(X, Y, Z, 0));
}
}
else if (event == "check_ai")
{
cancelQuestTimer("check_ai", null, null);
if (_isSpawned == false)
{
L2NpcInstance gordon_ai = findTemplate(GORDON);
if (gordon_ai != null)
{
_isSpawned = true;
startQuestTimer("Start", 1000, gordon_ai, null, true);
return super.onAdvEvent(event, npc, player);
}
}
}
else if (event == "Start")
{
if (npc != null && _isSpawned == true)
{
// check if player have Cursed Weapon and in radius
if (npc.getNpcId() == GORDON)
{
Collection<L2PcInstance> chars = npc.getKnownList().getKnownPlayers().values();
if (chars != null && chars.size() > 0)
{
for (L2PcInstance pc : chars)
{
if (pc.isCursedWeaponEquiped() && pc.isInsideRadius(npc,5000,false,false))
{
npc.setRunning();
((L2Attackable)npc).addDamageHate(pc,0,9999);
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, pc);
_isAttacked = true;
cancelQuestTimer("time_isAttacked",null, null);
startQuestTimer("time_isAttacked",180000, npc, null);
return super.onAdvEvent(event, npc, player);
}
}
}
}
// end check
if (_isAttacked == true)
return super.onAdvEvent(event, npc, player);
if (npc.getNpcId() == GORDON && (npc.getX()-50) <= X && (npc.getX()+50) >= X && (npc.getY()-50) <= Y && (npc.getY()+50) >= Y)
{
_isWalkTo++;
if (_isWalkTo > 55)
_isWalkTo = 1;
X = WALKS[_isWalkTo-1][0];
Y = WALKS[_isWalkTo-1][1];
Z = WALKS[_isWalkTo-1][2];
npc.setWalking();
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO,new L2CharPosition(X, Y, Z, 0));
}
// Test for unblock Npc
if (npc.getX() != _npcMoveX && npc.getY() != _npcMoveY)
{
_npcMoveX = npc.getX();
_npcMoveY = npc.getY();
_npcBlock = 0;
}
else if (npc.getNpcId() == GORDON)
{
_npcBlock++;
if (_npcBlock > 2)
{
return super.onAdvEvent(event, npc, player);
}
if (_npcBlock > 0)
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO,new L2CharPosition(X, Y, Z, 0));
}
// End Test unblock Npc
}
}
return super.onAdvEvent(event, npc, player);
}
public String onSpawn (L2NpcInstance npc)
{
if (npc.getNpcId() == GORDON && _npcBlock == 0)
{
_isSpawned = true;
_isWalkTo = 1;
startQuestTimer("Start", 1000, npc, null, true);
}
return super.onSpawn(npc);
}
public String onAttack (L2NpcInstance npc, L2PcInstance player, int damage, boolean isPet)
{
if (npc.getNpcId() == GORDON)
{
_isAttacked = true;
cancelQuestTimer("time_isAttacked", null, null);
startQuestTimer("time_isAttacked", 180000, npc, null);
if (player != null)
{
npc.setRunning();
((L2Attackable)npc).addDamageHate(player, 0, 100);
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player);
}
}
return super.onAttack(npc, player, damage, isPet);
}
public String onKill (L2NpcInstance npc, L2PcInstance killer, boolean isPet)
{
if (npc.getNpcId() == GORDON)
{
cancelQuestTimer("Start", null, null);
cancelQuestTimer("time_isAttacked", null, null);
_isSpawned = false;
}
return super.onKill(npc,killer,isPet);
}
public static void main(String[] args)
{
new Gordon(-1,"gordon","ai");
}
}
Link to comment
Share on other sites
7 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.