Перейти к содержанию
Авторизация  
Karimdjanov95

АвтоДроп аденок с интервалом после поднятия

Рекомендуемые сообщения

Доброе утро, уважаемые пользователи форума!

Написал скрипт на авто дроп аденок в мирной территории каждые 10 секунд.

int driftx;
int drifty;
driftx = Rnd.get(-140, 140);
drifty = Rnd.get(-140, 140);
				
L2ItemInstance ditem = ItemTable.getInstance().createItem("ITEMAUTODROP", Config.ITEMDROPID, Config.ITEMDROPCOUNT, null);
ditem.dropMe(null, Config.ITEMDROPCORDX + driftx, Config.ITEMDROPCORDY + drifty, Config.ITEMDROPCORDZ); 
ThreadPoolManager.getInstance().scheduleGeneral(new AdenaTask(), Config.ITEMDROPTIME);

Можно ли сделать так, что бы некст дроп с интервалом в 10 секунд появился после поднятия предыдущего?

Если пару часов никто дроп не поднимает, там такая куча аденок накапливается :), буду очень благодарен за помощь )

Изменено пользователем Karimdjanov95

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тю,ну сделайте таск, который будет удалять предыдущую адену

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, Karimdjanov95 сказал:

Доброе утро, уважаемые пользователи форума!

Написал скрипт на авто дроп аденок в мирной территории каждые 10 секунд.


int driftx;
int drifty;
driftx = Rnd.get(-140, 140);
drifty = Rnd.get(-140, 140);
				
L2ItemInstance ditem = ItemTable.getInstance().createItem("ITEMAUTODROP", Config.ITEMDROPID, Config.ITEMDROPCOUNT, null);
ditem.dropMe(null, Config.ITEMDROPCORDX + driftx, Config.ITEMDROPCORDY + drifty, Config.ITEMDROPCORDZ); 
ThreadPoolManager.getInstance().scheduleGeneral(new AdenaTask(), Config.ITEMDROPTIME);

Можно ли сделать так, что бы некст дроп с интервалом в 10 секунд появился после поднятия предыдущего?

Если пару часов никто дроп не поднимает, там такая куча аденок накапливается :), буду очень благодарен за помощь )

можно запускать таск если наш дроп подняли, или он автоматически удалился.
Это ваш случай

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.11.2018 в 05:10, Karimdjanov95 сказал:

Доброе утро, уважаемые пользователи форума!

Написал скрипт на авто дроп аденок в мирной территории каждые 10 секунд.


int driftx;
int drifty;
driftx = Rnd.get(-140, 140);
drifty = Rnd.get(-140, 140);
				
L2ItemInstance ditem = ItemTable.getInstance().createItem("ITEMAUTODROP", Config.ITEMDROPID, Config.ITEMDROPCOUNT, null);
ditem.dropMe(null, Config.ITEMDROPCORDX + driftx, Config.ITEMDROPCORDY + drifty, Config.ITEMDROPCORDZ); 
ThreadPoolManager.getInstance().scheduleGeneral(new AdenaTask(), Config.ITEMDROPTIME);

Можно ли сделать так, что бы некст дроп с интервалом в 10 секунд появился после поднятия предыдущего?

Если пару часов никто дроп не поднимает, там такая куча аденок накапливается :), буду очень благодарен за помощь )

Смотрите, пример с люцеры. Вам нужно передать данные в метод pickupMe, если this object_id == нашему дропу object_id при поднятии, запускаем ваш AdenaTask.
 

Изменено пользователем gvb
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

В 19.11.2018 в 12:50, gvb сказал:

Смотрите, пример с люцеры. Вам нужно передать данные в метод pickupMe, если this object_id == нашему дропу object_id при поднятии, запускаем ваш AdenaTask.
 

Уже 2й день пытаюсь, но не вкуриваю ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

листенеры на подбор предметов в сборке есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, Demoncool сказал:

Самое простое решение запускать таск с удалением объекта

Ну так, я хочу, что бы дроп лежал до того, пока его не подобрали, а после того, как подберут, через 10 секунд, упал следующий

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделайте проверку на поднятую аденку в вашем радиусе,  если есть то убиваем таск, если подняли то запускаем

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До сих пор не смог решить проблемку.

Вот весь скрипт, хелпаните пожалуйста.

package ru.catssoftware.gameserver;

import ru.catssoftware.Config;
import ru.catssoftware.tools.random.Rnd;
import ru.catssoftware.gameserver.datatables.ItemTable;
import ru.catssoftware.gameserver.model.L2ItemInstance;

public class AutoDropItem
{
	class AdenaTask implements Runnable
	{
		public void run()
		{
			if (Config.ITEMDROPMOD) {
				int driftx;
				int drifty;
				driftx = Rnd.get(-140, 140);
				drifty = Rnd.get(-140, 140);
				
				L2ItemInstance ditem = ItemTable.getInstance().createItem("ITEMAUTODROP", Config.ITEMDROPID, Config.ITEMDROPCOUNT, null);
				ditem.dropMe(null, Config.ITEMDROPCORDX + driftx, Config.ITEMDROPCORDY + drifty, Config.ITEMDROPCORDZ); 
				// ditem.dropMe(null, 147704 + driftx, -55335 + drifty, -2735); 
				ThreadPoolManager.getInstance().scheduleGeneral(new AdenaTask(), Config.ITEMDROPTIME);
			}
		}
	}
	
	private AutoDropItem()
	{
		ThreadPoolManager.getInstance().scheduleGeneral(new AdenaTask(), Config.ITEMDROPTIME);
	}
}

Проверку поставить не могу :(

Изменено пользователем Karimdjanov95

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Karimdjanov95 сказал:

До сих пор не смог решить проблемку.

Вот весь скрипт, хелпаните пожалуйста.


package ru.catssoftware.gameserver;

import ru.catssoftware.Config;
import ru.catssoftware.tools.random.Rnd;
import ru.catssoftware.gameserver.datatables.ItemTable;
import ru.catssoftware.gameserver.model.L2ItemInstance;

public class AutoDropItem
{
	class AdenaTask implements Runnable
	{
		public void run()
		{
			if (Config.ITEMDROPMOD) {
				int driftx;
				int drifty;
				driftx = Rnd.get(-140, 140);
				drifty = Rnd.get(-140, 140);
				
				L2ItemInstance ditem = ItemTable.getInstance().createItem("ITEMAUTODROP", Config.ITEMDROPID, Config.ITEMDROPCOUNT, null);
				ditem.dropMe(null, Config.ITEMDROPCORDX + driftx, Config.ITEMDROPCORDY + drifty, Config.ITEMDROPCORDZ); 
				// ditem.dropMe(null, 147704 + driftx, -55335 + drifty, -2735); 
				ThreadPoolManager.getInstance().scheduleGeneral(new AdenaTask(), Config.ITEMDROPTIME);
			}
		}
	}
	
	private AutoDropItem()
	{
		ThreadPoolManager.getInstance().scheduleGeneral(new AdenaTask(), Config.ITEMDROPTIME);
	}
}

Проверку поставить не могу :(

какую проверку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, Demoncool сказал:

какую проверку?

Проверку на pickupMe,  чтобы таск срабатывал, после поднятия первого дропа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 30.12.2018 в 05:17, Karimdjanov95 сказал:

Актуально! 

Тебе решение уже написали, если не доходит, заплати и тебе сделают

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я не знаю что тут сложного вобще?

вот, чисто ради интересу буквально за 10 минут набросал рабочий вариант, правда для овероподобных сборок, но все же :)

package managers;

import l2p.commons.threading.RunnableImpl;
import l2p.gameserver.ThreadPoolManager;
import l2p.gameserver.listener.actor.player.OnPickupItemListener;
import l2p.gameserver.model.Location;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.actor.listener.PlayerListenerList;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.scripts.ScriptFile;
import l2p.gameserver.utils.ItemUtils;

/**
 * @author Gaikotsu
 */
public class AutoDropManager implements ScriptFile
{
	private static boolean _enabled = true;

	private static final int _itemId = 57;
	private static final long _itemCount = 1000L;

	private static final long _dropDelay = 10_000L;

	private static final Location _dropLoc = new Location(83473, 149223, -3300); // Giran

	private static final PickupItemListener _listener = new PickupItemListener();

	private static int _objId = 0;

	@Override
	public void onLoad()
	{
		if (!_enabled)
			return;

		PlayerListenerList.addGlobal(_listener);
		dropItem();
	}

	@Override
	public void onReload()
	{}

	@Override
	public void onShutdown()
	{}

	private static void dropItem()
	{
		ItemInstance item = ItemUtils.createItem(_itemId);
		item.setCount(_itemCount);
		item.dropMe(null, Location.coordsRandomize(_dropLoc, 50, 150));
		_objId = item.getObjectId();
	}

	private static class PickupItemListener implements OnPickupItemListener
	{
		@Override
		public void onPickupItem(Player player, ItemInstance item)
		{
			if (item.getObjectId() != _objId)
				return;

			ThreadPoolManager.getInstance().schedule(new RunnableImpl()
			{
				@Override
				public void runImpl() throws Exception
				{
					dropItem();
				}
			}, _dropDelay);
		}
	}
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...