瘋天堂私服發佈網站廣告欄位!
害怕天堂私服倒閉嗎?快使用天堂分析師!
天堂私服抽獎扭蛋物品及機率測試器
天堂私服稱號顏色製造器
瘋天堂私服發佈網站教您註冊推文收藏私服!
天堂私服血量魔力計算器
瘋天堂私服發布網站廣告贊助及爆料私服客服
教您如何不用註冊也可以推文天堂私服!
天堂私服270怪物查詢掉落資料庫
天堂私服盟徽製造器
test0428
2005-02-21 18:31

天堂設定仿地上撿元素石設定的java寫法!

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

完成!!!



上一篇文章:天堂內建自動練功使用教學!
下一篇文章:天堂開箱公告(須配合打寶公告)的java寫法!

分享文章:分享到微博! 分享到臉書! 分享到噗浪! 分享到維特! 分享到Google+! 分享到LINE!