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.
DISCORD :
utchiha_market
telegram :
https://t.me/utchiha_market
SELLIX STORE :
https://utchihamkt.mysellix.io/
Join our server for more products :
https://discord.gg/uthciha-market
https://campsite.bio/utchihaamkt
areadata 파일은 없지만 PVP zone 스크립트 폴더는 있습니다.
PVP 존 폴더의 arena zone 명령어로 arena 모드를 활성화 할 수 있습니다.
하지만 ID를 자동으로 보라색으로 바꾸는 명령이 무엇인지 알고 싶습니다.
The areadata file is not in my server pack
I can activate arena mode with the arena zone command in the PVP zone folder,
but I would like to know which command to use to automatically change the ID to purple.
Question
ceyhun
hello.
please help me how I can add server premium rate. if player donator , he gain 2x exp,sp,spoil,adena,drop.
Here sorc code server.
http://letitbit.net/download/8d54aafc0e/l2dreamlast.zip.html
click free.
L2DropData.java file from server.
package Alfa.game.model;
import java.util.Arrays;
import Alfa.Config;
import Alfa.game.model.base.ItemToDrop;
import Alfa.game.tables.ItemTable;
import Alfa.game.templates.L2Item;
import Alfa.util.Rnd;
public class L2DropData
{
private L2Item _item;
private int _mindrop;
private int _maxdrop;
private boolean _sweep;
private int _chance;
private short _groupId;
private int _groupChance;
private byte _minLevel;
private byte _maxLevel;
private String _questID = null;
private String[] _stateID = null;
public L2DropData()
{}
public L2DropData(int id, int min, int max, int chance, int minLevel)
{
_item = ItemTable.getInstance().getTemplate(id);
_mindrop = min;
_maxdrop = max;
_chance = chance;
_minLevel = (byte) minLevel;
}
public L2DropData(int id, int min, int max, int chance, int minLevel, int maxLevel)
{
_item = ItemTable.getInstance().getTemplate(id);
_mindrop = min;
_maxdrop = max;
_chance = chance;
_minLevel = (byte) minLevel;
_maxLevel = (byte) maxLevel;
}
public short getItemId()
{
return _item.getItemId();
}
public L2Item getItem()
{
return _item;
}
public void setItemId(short itemId)
{
_item = ItemTable.getInstance().getTemplate(itemId);
}
public void setGroupId(short gId)
{
_groupId = gId;
}
public short getGroupId()
{
return _groupId;
}
public void setGroupChance(int chance)
{
_groupChance = chance;
}
public int getGroupChance()
{
return _groupChance;
}
public int getMinDrop()
{
return _mindrop;
}
public int getMaxDrop()
{
return _maxdrop;
}
public boolean isSweep()
{
return _sweep;
}
public int getChance()
{
return _chance;
}
public void setMinDrop(int mindrop)
{
_mindrop = mindrop;
}
public void setMaxDrop(int maxdrop)
{
_maxdrop = maxdrop;
}
public void setSweep(boolean sweep)
{
_sweep = sweep;
}
public void setChance(int chance)
{
_chance = chance;
}
public String[] getStateIDs()
{
return _stateID;
}
public void addStates(String[] list)
{
_stateID = list;
}
public String getQuestID()
{
return _questID;
}
public void setQuestID(String questID)
{
_questID = questID;
}
public boolean isQuestDrop()
{
return _questID != null && _stateID != null;
}
public byte getMinLevel()
{
return _minLevel;
}
public byte getMaxLevel()
{
return _maxLevel;
}
@Override
public String toString()
{
String out = "ItemID: " + getItemId() + " Min: " + getMinDrop() + " Max: " + getMaxDrop() + " Chance: " + getChance() / 10000.0 + "%";
if(isQuestDrop())
out += " QuestID: " + getQuestID() + " StateID's: " + Arrays.toString(getStateIDs());
return out;
}
@Override
public boolean equals(Object o)
{
if(o instanceof L2DropData)
{
L2DropData drop = (L2DropData) o;
return drop.getItemId() == getItemId();
}
return false;
}
/**
* Подсчет шанса выпадения этой конкретной вещи
* Используется в эвентах и некоторых специальных механизмах
* @param player игрок (его бонус влияет на шанс)
* @param mod (просто множитель шанса)
* @param isRaid (это рейдовая вещ)
* @return информация о выпавшей вещи
*/
public ItemToDrop roll(L2Player player, double mod)
{
float rate = 0;
if(!_item.isHerb())
rate = Config.RATE_DROP_ITEMS * (player != null ? player.getRateItems() : 1);
float adenarate = Config.RATE_DROP_ADENA * (player != null ? player.getRateAdena() : 1);
// calc group chance
double calcChance = mod * _chance * (_item.isAdena() ? 1f : rate);
int dropmult = 1;
// Если шанс оказался больше 100%
if(calcChance > L2Drop.MAX_CHANCE)
if(calcChance % L2Drop.MAX_CHANCE == 0) // если кратен 100% то тупо умножаем количество
dropmult = (int) (calcChance / L2Drop.MAX_CHANCE);
else
{ // иначе балансируем
dropmult = (int) Math.ceil(calcChance / L2Drop.MAX_CHANCE); // множитель равен шанс / 100% округление вверх
calcChance = calcChance / dropmult; // шанс равен шанс / множитель
// в результате получаем увеличение количества и уменьшение шанса, при этом шанс не падает ниже 50%
}
if(Rnd.get(L2Drop.MAX_CHANCE) > calcChance)
return null;
ItemToDrop t = new ItemToDrop(_item.getItemId());
// если это адена то умножаем на рейт адены, иначе на множитель перебора шанса
float mult = _item.isAdena() ? adenarate : dropmult;
if(getMinDrop() >= getMaxDrop())
t.count = (int) (getMinDrop() * mult);
else
t.count = Rnd.get((int) (getMinDrop() * mult), (int) (getMaxDrop() * mult));
return t;
}
@Override
public int hashCode()
{
return _item.getItemId();
}
}
4 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.