Config
先找
/** AltSettings control */
再找
public static int ELEMENTAL_STONE_AMOUNT;
下面加入
public static int DISTORTED_THE_ORIGINAL_STONE; //扭曲的原石
底下找
ELEMENTAL_STONE_AMOUNT = Integer.parseInt(altSettings.getProperty( //元素石數量設定
"ElementalStoneAmount", "300"));
下面加入
DISTORTED_THE_ORIGINAL_STONE = Integer.parseInt(altSettings.getProperty( //元素石數量設定
"Distortedtheoriginalstone", "300"));
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
l1j.server.server.
GameServer
宣告
import l1j.server.server.model.DistortedoriginalstoneGenerator;
找
// 設定精靈石的產生
if (Config.ELEMENTAL_STONE_AMOUNT > 0) {
ElementalStoneGenerator elementalStoneGenerator = ElementalStoneGenerator.getInstance();
GeneralThreadPool.getInstance().execute(elementalStoneGenerator);
}
下面加入
// 設定扭曲原石的產生 if (Config.DISTORTED_THE_ORIGINAL_STONE > 0) { DistortedoriginalstoneGenerator distortedoriginalstoneGenerator = DistortedoriginalstoneGenerator.getInstance(); GeneralThreadPool.getInstance().execute(distortedoriginalstoneGenerator); }
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
在
l1j.server.server.model
加入一隻檔案
檔名
DistortedoriginalstoneGenerator.java
內容複製
/**
* License
* THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
* CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE").
* THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW.
* ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR
* COPYRIGHT LAW IS PROHIBITED.
*
* BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
* AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE
* MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED
* HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
*
*/
package l1j.server.server.model;
import java.util.ArrayList;
import l1j.server.server.utils.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import l1j.server.Config;
import l1j.server.server.datatables.ItemTable;
import l1j.server.server.model.Instance.L1ItemInstance;
import l1j.server.server.model.map.L1Map;
import l1j.server.server.model.map.L1WorldMap;
import l1j.server.server.types.Point;
public class DistortedoriginalstoneGenerator implements Runnable {
private static Logger _log = Logger.getLogger(DistortedoriginalstoneGenerator.class
.getName());
private static final int ELVEN_FOREST_MAPID = 5167; //惡魔王之領土-扭曲時空
private static final int MAX_COUNT = Config.DISTORTED_THE_ORIGINAL_STONE; // 設置個数
private static final int INTERVAL = 3; // 設置間隔 秒
private static final int SLEEP_TIME = 300; // 設置終了後、再設置までのスリープ時間 秒
private static final int FIRST_X = 32615;
private static final int FIRST_Y = 32809;
private static final int LAST_X = 32670;
private static final int LAST_Y = 32847;
private static final int ELEMENTAL_STONE_ID = 60197; // 扭曲的古代原石
private ArrayList<L1GroundInventory> _itemList = new ArrayList<L1GroundInventory>(
MAX_COUNT);
private static DistortedoriginalstoneGenerator _instance = null;
private DistortedoriginalstoneGenerator() {
}
public static DistortedoriginalstoneGenerator getInstance() {
if (_instance == null) {
_instance = new DistortedoriginalstoneGenerator();
}
return _instance;
}
private final L1Object _dummy = new L1Object();
/**
* 指定された位置に石を置けるかを返す。
*/
private boolean canPut(L1Location loc) {
_dummy.setMap(loc.getMap());
_dummy.setX(loc.getX());
_dummy.setY(loc.getY());
// 可視範囲のプレイヤーチェック
if (L1World.getInstance().getVisiblePlayer(_dummy).size() > 0) {
return false;
}
return true;
}
/**
* 次の設置ポイントを決める。
*/
private Point nextPoint() {
int newX = Random.nextInt(LAST_X - FIRST_X) + FIRST_X;
int newY = Random.nextInt(LAST_Y - FIRST_Y) + FIRST_Y;
return new Point(newX, newY);
}
/**
* 拾われた石をリストから削除する。
*/
private void removeItemsPickedUp() {
for (int i = 0; i < _itemList.size(); i++) {
L1GroundInventory gInventory = _itemList.get(i);
if (!gInventory.checkItem(ELEMENTAL_STONE_ID)) {
_itemList.remove(i);
i--;
}
}
}
/**
* 指定された位置へ石を置く。
*/
private void putElementalStone(L1Location loc) {
L1GroundInventory gInventory = L1World.getInstance().getInventory(loc);
L1ItemInstance item = ItemTable.getInstance().createItem(
ELEMENTAL_STONE_ID);
item.setEnchantLevel(0);
item.setCount(1);
gInventory.storeItem(item);
_itemList.add(gInventory);
}
@Override
public void run() {
try {
L1Map map = L1WorldMap.getInstance().getMap(
(short) ELVEN_FOREST_MAPID);
while (true) {
removeItemsPickedUp();
while (_itemList.size() < MAX_COUNT) { // 減っている場合セット
L1Location loc = new L1Location(nextPoint(), map);
if (!canPut(loc)) {
// XXX 設置範囲内全てにPCが居た場合無限ループになるが…
continue;
}
putElementalStone(loc);
Thread.sleep(INTERVAL * 1000); // 一定時間毎に設置
}
Thread.sleep(SLEEP_TIME * 1000); // maxまで設置終了後一定時間は再設置しない
}
} catch (Throwable e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
}
}
}
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
模擬器 找資料夾 config
找
altsettings.properties
加入
#惡魔王之領土-扭曲時空[MAP = 5167] 扭曲的古代原石 的數量
Distortedtheoriginalstone = 100
完成!!!