Jump to content

Recommended Posts

Posted

can any1 help me.. i got 2 noob question :P

 

1. command for repeat script.

2. if possible or what command for character do bsoe when  a specified location.

 

 

thx.

1. repeat

while true do begin

2.bsoe when specified location 

if user.inrange(123, 456, 789, 500) then begin //coordinates of loc
engine.useitem(121); //bsoe id
delay(5000); // 5seconds delay, when teleporting to town to avoid stuck
end;
Posted

if user.inrange(82995, 148317, -3472)
engine.useitem(1538);
delay(5000);

end;

 

Dont work.. adrenalite made first lane in red color and tell me this  ("begin" expected but "if" found)

 

and about repeat macro.. also dont work.. or i dont know wher put the command.. for example

 

while true do begin

if user.inrange(82995, 148317, -3472)
engine.useitem(1538);
delay(5000);
end;

Posted

if user.inrange(82995, 148317, -3472)

engine.useitem(1538);

delay(5000);

end;

 

Dont work.. adrenalite made first lane in red color and tell me this  ("begin" expected but "if" found)

 

and about repeat macro.. also dont work.. or i dont know wher put the command.. for example

 

while true do begin

if user.inrange(82995, 148317, -3472)

engine.useitem(1538);

delay(5000);

end;

begin
while true do begin
if user.inrange(82995, 148317, -3472, 500) // 500 needed while you checking
engine.useitem(1538);
delay(5000);
end;
end.
Posted (edited)

Hello adr.bot if its easy i wanna one script for ayto buff in l2cartel  tnx for the other scripts !!!!!

more about that?

 

EDIT: i add example with rebuy from other thread, to avoid spam in my pm/skype for same example xd

var MP, Shot: TL2Item;
buff: TL2Buff;
function buffCheck: Boolean;
begin
    if (not User.Buffs.ByID(1062, buff) or (buff.endtime<300000)) then begin //1062 wich buff id checking
        Result:=true;
        Delay(1000);
        Engine.BypassToServer('_bbshome');    //buffer alt and b
        Delay(1000);
        Engine.BypassToServer('02');
        Delay(1000);
        Engine.BypassToServer('0b');
        Delay(1000);
        Engine.BypassToServer('0c');
        Delay(1000);
        Engine.BypassToServer('018');
        Delay(1000);
        Engine.BypassToServer('018');
        Delay(1000);
    end;
Result:=false;
end;

function BuyMP:boolean;
begin
if not Inventory.User.ByID(728, MP) or (MP.count<10) then begin //728 mp id ,10 or less then buy MP so probably change it for your count
result:=true;
        Delay(1000);
        Engine.BypassToServer('_bbshome'); // alt and b codes to buy mp
        Delay(1000);
        Engine.BypassToServer('02');
        Delay(1000);
        Engine.BypassToServer('0c');
        Delay(1000);
        Engine.BypassToServer('01f');
        Delay(1000);
        Engine.NpcExchange(728, 2);  //728 mp id, 2 is count how many buy it
        delay(1000);
        end;
        result:=false;
end;

function BuyShot:boolean;
begin
if not Inventory.User.ByID(1463, Shot) or (Shot.count<900) then begin //1463 is d grade shot id, change for your shot id, 900 or less then buy shots
result:=true;
        Delay(1000);
        Engine.BypassToServer('_bbshome');    //alt and b to shots
        Delay(1000);
        Engine.BypassToServer('02');
        Delay(1000);
        Engine.BypassToServer('0c');
        Delay(1000);
        Engine.BypassToServer('020');
        Delay(1000);
        Engine.NpcExchange(1463, 50);   //1463 id, 50 is count wich buy
        delay(1000);
        end;
        result:=false;
end;


function deadCheck: Boolean;
begin
Result := false;
    if User.Dead then begin
        Result := true;
        Print('Dead. Pressing to village.');
        Delay(1000);
        Engine.FaceControl(0,false);
        Engine.GoHome;
        Delay(10000);
    end;
end;

begin
while true do begin
delay(150);
                    //town coordinates     range                 //buff id wich check                        //shot id                              //mp id
    if user.inrange(-83064, 150600, -3104, 5000) and User.Buffs.ByID(1062, buffCheck) and Inventory.User.ByID(1463, BuyShot) and Inventory.User.ByID(728, BuyMP) then begin
        Print('Teleport.');
        delay(1000);
        Engine.BypassToServer('_bbshome'); //alt and b where teleport
        delay(1000);
        Engine.BypassToServer('02');
        delay(1000);
        Engine.BypassToServer('0a');
        delay(1000);
        Engine.BypassToServer('031');
        delay(1000);
        Engine.BypassToServer('0a');
        Delay(10000);
    end;                      
                             
    if user.inrange(-41555, 210012, -5064, 300) then begin  //coordinates after teleport
        Print('Moving');
        Engine.MoveTo(-41608, 210904, -5064);      //path to spot
        Engine.MoveTo(-41752, 210984, -5064);
        Engine.MoveTo(-42696, 210984, -5064);
        Print('ON!');
        Delay(500);
        Engine.FaceControl(0, true);  //turn on bot
        while not deadCheck do delay(1000); //while not dead, do nothing and wait.
    end;
end;
end.
Edited by adr.bot
Posted

Anybody knows how to target a certain class? Like healer or dominator?

if charlist.items(i).ClassID = 12 then begin //12 class id
  engine.settarget(charlist.items(i));
  end;
Posted

@adr, and how to bind a key for this script?

var action:tl2action;
    p1,p2:pointer;
begin
  while true do begin
    engine.waitaction([lakey], p1, p2);
    if cardinal(p1) = $11 then begin   //ctrl
    print('qqqqqq');
    end;
  end;
end.

or i bad understand question?

Posted

Did you even look in Adr interface?

Hint: Party settings tab.

I know it... but I dont like always in every players look adr interface...

 

I like when i open adrenaline it have already interface active accept auto invite...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



  • Posts

    • what pack you use  send me on discord for it
    • package custom.events.RandomZoneEvent; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ScheduledFuture; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.time.TimeUtil; import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.gameserver.managers.ZoneManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.quest.Event; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.model.zone.type.RandomZone; import org.l2jmobius.gameserver.util.Broadcast; /** * Random Zone Event - Activates one random PvP zone temporarily. No modifica la clase de la zona: usa flags PvP en runtime. * @author Juan */ public class RandomZoneEvent extends Event { private static final String CONFIG_FILE = "data/scripts/custom/events/RandomZoneEvent/config.xml"; private static int EVENT_DURATION_MINUTES = 15; private static boolean _isActive = false; private ScheduledFuture<?> _eventTask = null; private final List<ZoneType> _availableZones = new ArrayList<>(); private ZoneType _activeZone = null; public RandomZoneEvent() { loadConfig(); loadZones(); registerZoneListeners(); } /** * Registra listeners a TODAS LAS ZONAS random */ private void registerZoneListeners() { for (ZoneType zone : _availableZones) { addEnterZoneId(zone.getId()); addExitZoneId(zone.getId()); LOGGER.info("[RandomZoneEvent] Registered listener for zone: " + zone.getName()); } } private void loadConfig() { new IXmlReader() { @Override public void load() { parseDatapackFile(CONFIG_FILE); } @Override public void parseDocument(Document doc, File file) { forEach(doc, "event", eventNode -> { final StatSet att = new StatSet(parseAttributes(eventNode)); final String name = att.getString("name"); for (Node node = eventNode.getFirstChild(); node != null; node = node.getNextSibling()) { if ("schedule".equals(node.getNodeName())) { final StatSet attributes = new StatSet(parseAttributes(node)); final String pattern = attributes.getString("pattern"); final SchedulingPattern schedulingPattern = new SchedulingPattern(pattern); final StatSet params = new StatSet(); params.set("Name", name); params.set("SchedulingPattern", pattern); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer("Schedule_" + name, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Event " + name + " scheduled at " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } }); } }.load(); } private void loadZones() { for (ZoneType zone : ZoneManager.getInstance().getAllZones(RandomZone.class)) { if ((zone.getName() != null) && zone.getName().toLowerCase().startsWith("random_zone")) { _availableZones.add(zone); LOGGER.info("[RandomZoneEvent] Loaded zone: " + zone.getName() + " (id=" + zone.getId() + ")"); } } LOGGER.info("[RandomZoneEvent] Total random zones loaded: " + _availableZones.size()); } @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { if (event.startsWith("Schedule_")) { eventStart(null); final SchedulingPattern schedulingPattern = new SchedulingPattern(params.getString("SchedulingPattern")); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer(event, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Rescheduled for " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } @Override public boolean eventStart(Player eventMaker) { if (_isActive) { if (eventMaker != null) { eventMaker.sendMessage("RandomZoneEvent already active."); } return false; } if (_availableZones.isEmpty()) { Broadcast.toAllOnlinePlayers("[RandomZoneEvent] No zones configured."); return false; } _isActive = true; Broadcast.toAllOnlinePlayers("⚔️ Random Zone Event has started!"); _eventTask = ThreadPool.schedule(this::activateRandomZone, 5_000); return true; } private void activateRandomZone() { _activeZone = _availableZones.get(new Random().nextInt(_availableZones.size())); _activeZone.setEnabled(true); Broadcast.toAllOnlinePlayers("🔥 Random Zone Event: " + _activeZone.getName() + " is now PvP for " + EVENT_DURATION_MINUTES + " minutes!"); _eventTask = ThreadPool.schedule(this::eventStop, EVENT_DURATION_MINUTES * 60 * 1000L); } @Override public boolean eventStop() { if (!_isActive) { return false; } _isActive = false; if (_eventTask != null) { _eventTask.cancel(true); _eventTask = null; } if (_activeZone != null) { _activeZone.setEnabled(false); Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended. " + _activeZone.getName() + " is back to normal."); _activeZone = null; } else { Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended."); } return true; } @Override public void onEnterZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, true); if (creature.isPlayer()) { creature.sendMessage("Esta zona está en modo PvP temporalmente."); } } } @Override public void onExitZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, false); if (creature.isPlayer()) { creature.sendMessage("Abandonaste la zona PvP temporal."); } } } @Override public boolean eventBypass(Player player, String bypass) { return true; } @Override public String onEvent(String event, Npc npc, Player player) { return super.onEvent(event, npc, player); } @Override public String onFirstTalk(Npc npc, Player player) { return null; } public static void main(String[] args) { new RandomZoneEvent(); } } i have this but its not working
    • ZonePvPSpawnBossRadio=0 ZonePvPSpawnBossBarakiel=0 at the Customs.ini in L2Server folder. Im prety sure this is it because i had the same problem with you in cruma 1 floor for example and i couldn't fix it but i fixed it finally by changing these 2 lines
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock