- Хроники
- Chaotic Throne: High Five
- Исходники
- Присутствуют
- Сборка
- HF
Изменил логику баффера (ALT+B) добавил premium buff. и создал сервис PremiumbuffService. не открывает страницу сервиса. Пустой екран SCRIPT отправляет туда premium-buffer.html на правильном месте создал же
\gameserver\data\html-ru\community\services
\gameserver\data\html-ru\community\services
JavaScript:
package handler.bbs.custom.service;
import handler.bbs.ScriptBbsHandler;
import org.mmocore.gameserver.configuration.config.community.CBasicConfig;
import org.mmocore.gameserver.object.Player;
import java.util.StringTokenizer;
public class PremiumBuffService extends ScriptBbsHandler
{
@Override
public String[] getBypassCommands()
{
return new String[] {
"_bbspremiumbuffer",
"_bbspremiumservicebuy"
};
}
@Override
public void onBypassCommand(Player player, String bypass)
{
if(!PremiumBuffCBConfig.ENABLED)
{
player.sendMessage("Premium Buffer service is disabled.");
useCommand(player, "_bbshome");
return;
}
if(bypass.startsWith("_bbspremiumbuffer"))
{
showHtml(player);
return;
}
if(bypass.startsWith("_bbspremiumservicebuy"))
{
String raw = trimBypass(bypass);
StringTokenizer st = new StringTokenizer(raw, ":");
st.nextToken();
int days = 0;
String page = "services/premium-buffer";
if(st.hasMoreTokens())
{
days = Integer.parseInt(st.nextToken());
}
if(st.hasMoreTokens())
{
page = st.nextToken();
}
long price = PremiumBuffCBConfig.getPrice(days);
int premiumItemId = PremiumBuffCBConfig.getPremiumItemId(days);
if(days <= 0 || price <= 0 || premiumItemId <= 0)
{
player.sendMessage("Wrong premium buffer config.");
showPage(player, page);
return;
}
if(player.getInventory().getCountOf(PremiumBuffCBConfig.CURRENCY_ITEM_ID) < price)
{
player.sendMessage("Недостаточное количество предметов.");
showPage(player, page);
return;
}
if(!getPay(player, PremiumBuffCBConfig.CURRENCY_ITEM_ID, price, true))
{
player.sendMessage("Недостаточное количество предметов.");
showPage(player, page);
return;
}
player.getInventory().addItem(premiumItemId, 1L);
showThanksHtml(player);
return;
}
player.sendMessage("Error");
}
private String trimBypass(String bypass)
{
if(bypass.contains(";"))
{
return bypass.substring(0, bypass.indexOf(';'));
}
return bypass;
}
private void showHtml(Player player)
{
showPage(player, PremiumBuffCBConfig.HTML_FILE);
}
private void showPage(Player player, String page)
{
String fullPath = CBasicConfig.BBS_PATH + "/" + page + ".htm";
String html = getCache().getHtml(fullPath, player);
if(html == null || html.trim().isEmpty())
{
player.sendMessage("HTML not found: " + fullPath);
html = "<html><body><center>HTML NOT FOUND<br1>" + fullPath + "</center></body></html>";
separateAndSend(html, player);
return;
}
html = html.replace("%premium_status%", getRemainingText(player));
html = html.replace("%day3_price%", String.valueOf(PremiumBuffCBConfig.DAY3_PRICE));
html = html.replace("%day7_price%", String.valueOf(PremiumBuffCBConfig.DAY7_PRICE));
html = html.replace("%day21_price%", String.valueOf(PremiumBuffCBConfig.DAY21_PRICE));
html = html.replace("%day60_price%", String.valueOf(PremiumBuffCBConfig.DAY60_PRICE));
html = html.replace("%day3_item%", String.valueOf(PremiumBuffCBConfig.DAY3_ITEM_ID));
html = html.replace("%day7_item%", String.valueOf(PremiumBuffCBConfig.DAY7_ITEM_ID));
html = html.replace("%day21_item%", String.valueOf(PremiumBuffCBConfig.DAY21_ITEM_ID));
html = html.replace("%day60_item%", String.valueOf(PremiumBuffCBConfig.DAY60_ITEM_ID));
player.sendMessage("OPEN HTML: " + fullPath); // debug
separateAndSend(html, player); // ENG MUHIM JOY
}
private void showThanksHtml(Player player)
{
String fullPath = CBasicConfig.BBS_PATH + "/services/thanks.htm";
String html = getCache().getHtml(fullPath, player);
if(html == null || html.trim().isEmpty())
{
player.sendMessage("HTML not found: " + fullPath);
html = "<html><body><center>THANKS HTML NOT FOUND<br1>" + fullPath + "</center></body></html>";
separateAndSend(html, player);
return;
}
html = html.replace("%premium_status%", getRemainingText(player));
separateAndSend(html, player);
}
@Override
public void onInit()
{
super.onInit();
PremiumBuffCBConfig.load();
}
@Override
public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5)
{
}
public static boolean isActive(Player player)
{
return hasPremiumItem(player);
}
public static boolean hasPremiumItem(Player player)
{
return hasItem(player, PremiumBuffCBConfig.DAY3_ITEM_ID)
|| hasItem(player, PremiumBuffCBConfig.DAY7_ITEM_ID)
|| hasItem(player, PremiumBuffCBConfig.DAY21_ITEM_ID)
|| hasItem(player, PremiumBuffCBConfig.DAY60_ITEM_ID);
}
private static boolean hasItem(Player player, int itemId)
{
return itemId > 0 && player.getInventory().getCountOf(itemId) > 0;
}
public static String getRemainingText(Player player)
{
if(hasPremiumItem(player))
{
return "Active";
}
return "Inactive";
}
}
JavaScript:
package handler.bbs.custom.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Properties;
public class PremiumBuffCBConfig
{
private static final Logger log = LoggerFactory.getLogger(PremiumBuffCBConfig.class);
public static boolean ENABLED = true;
public static String HTML_FILE = "./gameserver/data/html-ru/community/services/premium-buffer.html";
public static int CURRENCY_ITEM_ID = 4037;
public static long DAY3_PRICE = 199L;
public static long DAY7_PRICE = 299L;
public static long DAY21_PRICE = 399L;
public static long DAY60_PRICE = 499L;
public static int DAY3_ITEM_ID = 4357;
public static int DAY7_ITEM_ID = 20604;
public static int DAY21_ITEM_ID = 20605;
public static int DAY60_ITEM_ID = 20606;
public static void load()
{
Properties p = new Properties();
File file = new File("./configuration/PremiumbuffCB.properties");
if(!file.exists())
{
file = new File("./gameserver/configuration/PremiumbuffCB.properties");
}
try(InputStreamReader reader = new InputStreamReader(
new FileInputStream(file),
StandardCharsets.UTF_8))
{
p.load(reader);
ENABLED = Boolean.parseBoolean(p.getProperty("Enabled", "true"));
HTML_FILE = p.getProperty("HtmlFile", "services/premium-buffer");
CURRENCY_ITEM_ID = Integer.parseInt(p.getProperty("CurrencyItemId", "57"));
DAY3_PRICE = Long.parseLong(p.getProperty("Day3Price", "1000000"));
DAY7_PRICE = Long.parseLong(p.getProperty("Day7Price", "2000000"));
DAY21_PRICE = Long.parseLong(p.getProperty("Day21Price", "5000000"));
DAY60_PRICE = Long.parseLong(p.getProperty("Day60Price", "10000000"));
DAY3_ITEM_ID = Integer.parseInt(p.getProperty("Day3ItemId", "4357"));
DAY7_ITEM_ID = Integer.parseInt(p.getProperty("Day7ItemId", "20604"));
DAY21_ITEM_ID = Integer.parseInt(p.getProperty("Day21ItemId", "20605"));
DAY60_ITEM_ID = Integer.parseInt(p.getProperty("Day60ItemId", "20606"));
log.info("PremiumBuffCBConfig loaded from: {}", file.getAbsolutePath());
}
catch(Exception e)
{
log.warn("PremiumBuffCBConfig load failed, using defaults. Checked path: {}", file.getAbsolutePath(), e);
}
}
public static long getPrice(int days)
{
switch(days)
{
case 3:
return DAY3_PRICE;
case 7:
return DAY7_PRICE;
case 21:
return DAY21_PRICE;
case 60:
return DAY60_PRICE;
default:
return 0L;
}
}
public static int getPremiumItemId(int days)
{
switch(days)
{
case 3:
return DAY3_ITEM_ID;
case 7:
return DAY7_ITEM_ID;
case 21:
return DAY21_ITEM_ID;
case 60:
return DAY60_ITEM_ID;
default:
return 0;
}
}
}















