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

Как Сделать Обявление

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

Люди мб кто знает как сделать так чтобы при бане человека или саждение в тюрьму это выводилось в обявление в чате и причина и на сколько времени и ник

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


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

Помню такая функция в конфигах была.

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


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

А основа какая? вообще всё просто, ищите пакет,делайте проверку, добавляете аннонс) Для новичков даже ничего сложного нет, тут главное что бы работала голова, как вариант заведите тетрадь расписывайте алгоритмами её)

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


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

А основа какая? вообще всё просто, ищите пакет,делайте проверку, добавляете аннонс) Для новичков даже ничего сложного нет, тут главное что бы работала голова, как вариант заведите тетрадь расписывайте алгоритмами её)

Фирсты

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


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

Фирсты

 

Точно не знаю что у них за основа, но думаю вам сюда => BanManager.java

 

public boolean banChar(L2PcInstance admin, String target)

{

if (admin == null || target == null)

return false;

 

L2PcInstance player = L2World.getInstance().getPlayer(target);

if (player != null)

{

if (!player.banChar())

return false;

}

else

{

if (!banPlayer(target, true))

return false;

}

/* Logging */

if (Config.BAN_CHAR_LOG)

_logBan.info("Gm " + admin.getName()+ " заблокировал персонажа [" + target + "].");

/* Announce */

if (Config.ANNOUNCE_BAN_CHAR)

announce(String.format(Message.getMessage(null, Message.MessageId.ANNOUNCE_CHAR_BLOCKED),target));

/* Admin notify */

admin.sendMessage(String.format(Message.getMessage(admin, Message.MessageId.MSG_CHAR_SUCCESS_BAN),target));

return true;

}

 

Изменено пользователем Project-World

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


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

Я думал в хандлере ))

На самом деле вариантов миллион.

Изменено пользователем Project-World

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


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

package l2ft.gameserver.handler.admincommands.impl;

 

import java.util.Collection;

import java.util.StringTokenizer;

 

import l2ft.gameserver.Announcements;

import l2ft.gameserver.Config;

import l2ft.gameserver.handler.admincommands.IAdminCommandHandler;

import l2ft.gameserver.instancemanager.ReflectionManager;

import l2ft.gameserver.model.Player;

import l2ft.gameserver.model.World;

import l2ft.gameserver.model.items.ManufactureItem;

import l2ft.gameserver.model.items.TradeItem;

import l2ft.gameserver.network.authcomm.AuthServerCommunication;

import l2ft.gameserver.network.authcomm.gspackets.ChangeAccessLevel;

import l2ft.gameserver.network.l2.GameClient;

import l2ft.gameserver.network.l2.components.ChatType;

import l2ft.gameserver.network.l2.components.CustomMessage;

import l2ft.gameserver.network.l2.s2c.NpcHtmlMessage;

import l2ft.gameserver.scripts.Functions;

import l2ft.gameserver.utils.AdminFunctions;

import l2ft.gameserver.utils.AutoBan;

import l2ft.gameserver.utils.Location;

import l2ft.gameserver.utils.Log;

 

public class AdminBan implements IAdminCommandHandler

{

private static enum Commands

{

admin_ban,

admin_unban,

admin_cban,

admin_chatban,

admin_chatunban,

admin_accban,

admin_accunban,

admin_trade_ban,

admin_trade_unban,

admin_jail,

admin_unjail,

admin_permaban

}

 

@Override

public boolean useAdminCommand(Enum comm, String[] wordList, String fullString, Player activeChar)

{

Commands command = (Commands) comm;

 

StringTokenizer st = new StringTokenizer(fullString);

 

if(activeChar.getPlayerAccess().CanTradeBanUnban)

switch(command)

{

case admin_trade_ban:

return tradeBan(st, activeChar);

case admin_trade_unban:

return tradeUnban(st, activeChar);

}

 

if(activeChar.getPlayerAccess().CanBan)

switch(command)

{

case admin_ban:

ban(st, activeChar);

break;

case admin_accban:

{

st.nextToken();

 

int level = 0;

int banExpire = 0;

 

String account = st.nextToken();

 

if(st.hasMoreTokens())

banExpire = (int) (System.currentTimeMillis() / 1000L) + Integer.parseInt(st.nextToken()) * 60;

else

level = -100;

 

AuthServerCommunication.getInstance().sendPacket(new ChangeAccessLevel(account, level, banExpire));

GameClient client = AuthServerCommunication.getInstance().getAuthedClient(account);

if(client != null)

{

Player player = client.getActiveChar();

if(player != null)

{

player.kick();

activeChar.sendMessage("Player " + player.getName() + " kicked.");

}

}

break;

}

case admin_accunban:

{

st.nextToken();

String account = st.nextToken();

AuthServerCommunication.getInstance().sendPacket(new ChangeAccessLevel(account, 0, 0));

break;

}

case admin_trade_ban:

return tradeBan(st, activeChar);

case admin_trade_unban:

return tradeUnban(st, activeChar);

case admin_chatban:

try

{

st.nextToken();

String player = st.nextToken();

String period = st.nextToken();

String bmsg = "admin_chatban " + player + " " + period + " ";

String msg = fullString.substring(bmsg.length(), fullString.length());

 

if(AutoBan.ChatBan(player, Integer.parseInt(period), msg, activeChar.getName()))

{

activeChar.sendMessage("You ban chat for " + player + ".");

Announcements.getInstance().announceToAll("Игроку " + player + " было запрещено общение на " + Integer.parseInt(period) + " минут(ы). Заблокировал: "+activeChar.getName());

}

else

activeChar.sendMessage("Can't find char " + player + ".");

}

catch(Exception e)

{

activeChar.sendMessage("Command syntax: //chatban char_name period reason");

}

break;

case admin_chatunban:

try

{

st.nextToken();

String player = st.nextToken();

 

if(AutoBan.ChatUnBan(player, activeChar.getName()))

activeChar.sendMessage("You unban chat for " + player + ".");

else

activeChar.sendMessage("Can't find char " + player + ".");

}

catch(Exception e)

{

activeChar.sendMessage("Command syntax: //chatunban char_name");

}

break;

case admin_jail:

try

{

st.nextToken();

String player = st.nextToken();

String period = st.nextToken();

String reason = st.nextToken();

 

Player target = World.getPlayer(player);

 

if(target != null)

{

target.setVar("jailedFrom", target.getX() + ";" + target.getY() + ";" + target.getZ() + ";" + target.getReflectionId(), -1);

target.setVar("jailed", period, -1);

target.startUnjailTask(target, Integer.parseInt(period));

target.teleToLocation(Location.findPointToStay(target, AdminFunctions.JAIL_SPAWN, 50, 200), ReflectionManager.JAIL);

if(activeChar.isInStoreMode())

activeChar.setPrivateStoreType(Player.STORE_PRIVATE_NONE);

target.sitDown(null);

target.block();

target.setNoChannel(-1);

target.sendMessage("You moved to jail, time to escape - " + period + " minutes, reason - " + reason + " .");

activeChar.sendMessage("You jailed " + player + ".");

}

else

activeChar.sendMessage("Can't find char " + player + ".");

}

catch(Exception e)

{

activeChar.sendMessage("Command syntax: //jail char_name period reason");

}

break;

case admin_unjail:

try

{

st.nextToken();

String player = st.nextToken();

 

Player target = World.getPlayer(player);

 

if(target != null && target.getVar("jailed") != null)

{

String[] re = target.getVar("jailedFrom").split(";");

target.teleToLocation(Integer.parseInt(re[0]), Integer.parseInt(re[1]), Integer.parseInt(re[2]));

target.setReflection(re.length > 3 ? Integer.parseInt(re[3]) : 0);

target.stopUnjailTask();

target.unsetVar("jailedFrom");

target.unsetVar("jailed");

target.unblock();

target.standUp();

activeChar.sendMessage("You unjailed " + player + ".");

}

else

activeChar.sendMessage("Can't find char " + player + ".");

}

catch(Exception e)

{

activeChar.sendMessage("Command syntax: //unjail char_name");

}

break;

case admin_cban:

activeChar.sendPacket(new NpcHtmlMessage(5).setFile("admin/cban.htm"));

break;

case admin_permaban:

if(activeChar.getTarget() == null || !activeChar.getTarget().isPlayer())

{

Functions.sendDebugMessage(activeChar, "Target should be set and be a player instance");

return false;

}

Player banned = activeChar.getTarget().getPlayer();

String banaccount = banned.getAccountName();

AuthServerCommunication.getInstance().sendPacket(new ChangeAccessLevel(banaccount, -100, 0));

if(banned.isInOfflineMode())

banned.setOfflineMode(false);

banned.kick();

Functions.sendDebugMessage(activeChar, "Player account " + banaccount + " is banned, player " + banned.getName() + " kicked.");

break;

}

 

return true;

}

 

private boolean tradeBan(StringTokenizer st, Player activeChar)

{

if(activeChar.getTarget() == null || !activeChar.getTarget().isPlayer())

return false;

st.nextToken();

Player targ = (Player) activeChar.getTarget();

long days = -1;

long time = -1;

if(st.hasMoreTokens())

{

days = Long.parseLong(st.nextToken());

time = days * 24 * 60 * 60 * 1000L + System.currentTimeMillis();

}

targ.setVar("tradeBan", String.valueOf(time), -1);

String msg = activeChar.getName() + " заблокировал торговлю персонажу " + targ.getName() + (days == -1 ? " на бессрочный период." : " на " + days + " дней.");

 

Log.add(targ.getName() + ":" + days + tradeToString(targ, targ.getPrivateStoreType()), "tradeBan", activeChar);

 

if(targ.isInOfflineMode())

{

targ.setOfflineMode(false);

targ.kick();

}

else if(targ.isInStoreMode())

{

targ.setPrivateStoreType(Player.STORE_PRIVATE_NONE);

targ.standUp();

targ.broadcastCharInfo();

targ.getBuyList().clear();

}

 

if(Config.BANCHAT_ANNOUNCE_FOR_ALL_WORLD)

Announcements.getInstance().announceToAll(msg);

else

Announcements.shout(activeChar, msg, ChatType.CRITICAL_ANNOUNCE);

return true;

}

 

@SuppressWarnings("unchecked")

private static String tradeToString(Player targ, int trade)

{

String ret;

Collection list;

switch(trade)

{

case Player.STORE_PRIVATE_BUY:

list = targ.getBuyList();

if(list == null || list.isEmpty())

return "";

ret = ":buy:";

for(TradeItem i : (Collection) list)

ret += i.getItemId() + ";" + i.getCount() + ";" + i.getOwnersPrice() + ":";

return ret;

case Player.STORE_PRIVATE_SELL:

case Player.STORE_PRIVATE_SELL_PACKAGE:

list = targ.getSellList();

if(list == null || list.isEmpty())

return "";

ret = ":sell:";

for(TradeItem i : (Collection) list)

ret += i.getItemId() + ";" + i.getCount() + ";" + i.getOwnersPrice() + ":";

return ret;

case Player.STORE_PRIVATE_MANUFACTURE:

list = targ.getCreateList();

if(list == null || list.isEmpty())

return "";

ret = ":mf:";

for(ManufactureItem i : (Collection) list)

ret += i.getRecipeId() + ";" + i.getCost() + ":";

return ret;

default:

return "";

}

}

 

private boolean tradeUnban(StringTokenizer st, Player activeChar)

{

if(activeChar.getTarget() == null || !activeChar.getTarget().isPlayer())

return false;

Player targ = (Player) activeChar.getTarget();

 

targ.unsetVar("tradeBan");

 

if(Config.BANCHAT_ANNOUNCE_FOR_ALL_WORLD)

Announcements.getInstance().announceToAll(activeChar + " разблокировал торговлю персонажу " + targ + ".");

else

Announcements.shout(activeChar, activeChar + " разблокировал торговлю персонажу " + targ + ".", ChatType.CRITICAL_ANNOUNCE);

 

Log.add(activeChar + " разблокировал торговлю персонажу " + targ + ".", "tradeBan", activeChar);

return true;

}

 

private boolean ban(StringTokenizer st, Player activeChar)

{

try

{

st.nextToken();

 

String player = st.nextToken();

 

int time = 0;

String msg = "";

 

if(st.hasMoreTokens())

time = Integer.parseInt(st.nextToken());

 

if(st.hasMoreTokens())

{

msg = "admin_ban " + player + " " + time + " ";

while(st.hasMoreTokens())

msg += st.nextToken() + " ";

msg.trim();

}

 

Player plyr = World.getPlayer(player);

if(plyr != null)

{

plyr.sendMessage(new CustomMessage("admincommandhandlers.YoureBannedByGM", plyr));

plyr.setAccessLevel(-100);

AutoBan.Banned(plyr, time, msg, activeChar.getName());

plyr.kick();

activeChar.sendMessage("You banned " + plyr.getName());

}

else if(AutoBan.Banned(player, -100, time, msg, activeChar.getName()))

activeChar.sendMessage("You banned " + player);

else

activeChar.sendMessage("Can't find char: " + player);

}

catch(Exception e)

{

activeChar.sendMessage("Command syntax: //ban char_name days reason");

}

return true;

}

 

@Override

public Enum[] getAdminCommandEnum()

{

return Commands.values();

}

}

 

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


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

мб кто сделает дам спасибку) мб и на пиво дам когда деньгу закину

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


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

У вас уже даже пример перед носом лежит;

if(AutoBan.ChatBan(player, Integer.parseInt(period), msg, activeChar.getName()))

{

activeChar.sendMessage("You ban chat for " + player + ".");

Announcements.getInstance().announceToAll("Игроку " + player + " было запрещено общение на " + Integer.parseInt(period) + " минут(ы). Заблокировал: "+activeChar.getName());

}

 

 

Попробуйте сделать сами, куда никуда интересней )

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


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

У вас уже даже пример перед носом лежит;

if(AutoBan.ChatBan(player, Integer.parseInt(period), msg, activeChar.getName()))

{

activeChar.sendMessage("You ban chat for " + player + ".");

Announcements.getInstance().announceToAll("Игроку " + player + " было запрещено общение на " + Integer.parseInt(period) + " минут(ы). Заблокировал: "+activeChar.getName());

}

 

 

Попробуйте сделать сами, куда никуда интересней )

да только вот оно не выписывает это анонсом а выписывает мелким шрифтом и не в чате а в другом окне над чатом где урон пишет

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


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

Скажи что именно написать и за что

не мне ненадо

чтобы оно писало причину само в игре есть такая функция как reson(причина)

Примерно должно выглядить так

Игрок (ник) получил бан чата на (время) по причине (причина)

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


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

да только вот оно не выписывает это анонсом а выписывает мелким шрифтом и не в чате а в другом окне над чатом где урон пишет

 

Настройте чат со стороны клиента и будет вам счастье.

Или вы хотите чтобы прям посреди экрана выбивал текст?

Изменено пользователем Project-World

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


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

Настройте чат со стороны клиента и будет вам счастье.

Или вы хотите чтобы прям посреди экрана выбивал текст?

Он перепутал

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


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

если это в клиенте меняется тогда там менять)

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


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

target.sendMessage("You moved to jail, time to escape - " + period + " minutes, reason - " + reason + " .");

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


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

 

Должно быть норм)

Изменено пользователем Saick
  • Upvote 1

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


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

У вас не достаточно прав для загрузки данного прикрепленного файла.(

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


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

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

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

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

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

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

Войти

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

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

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

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

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