reboot Windows'a

318
12
Здравствуйте. Я хочу сделать свою команду (/reboot Ник) и после выполнение команды и если у того игрока винда - перезагружается компутер. Как это сделать? Если вы думаете что это типа для взлома и т.д - нет. Я хочу таким способом наказывать дюпер'щеков и читеров. Возможно попытаюсь сделать мультиОС - но вряд ли. Или какой-то патчик. И думаю что это будет очень полезно другим проектам)
[merge_posts_bbcode]Добавлено: 18.06.2015 00:12:00[/merge_posts_bbcode]

Или у меня херовая идея?
 
Для этого придётся делать свою нативную либу на C/C++ и через JNI (Java Native Interface) вызывать из джавы функции в либе.
[merge_posts_bbcode]Добавлено: 18.06.2015 06:16:53[/merge_posts_bbcode]

А идея плохая.
 
Если есть дюпы, их обычно фиксят, а не ребутают комп всем подряд, даже если это произошло не по вине игрока.
А если есть своя система античита и её обходят - все эти клиентские соплекостыли не помогут, их обычно быстро найдут и уберут.
 
Oldestkon написал(а):
Если есть дюпы, их обычно фиксят, а не ребутают комп всем подряд, даже если это произошло не по вине игрока.
А если есть своя система античита и её обходят - все эти клиентские соплекостыли не помогут, их обычно быстро найдут и уберут.
У меня есть анти-чит в том же моде. И дюпы фиксю все которые знаю. И еще кстати, тут надо сто пудов сделать тему в оффтопе и закрепить (копию с рубаккита - http://rubukkit.org/threads/ujazvimosti-v-jadre-i-modax.104719/). Но если человек падла не хороший человек - нашел дюп, раздал всем всем вещи. Или сделал что то глобальное - надо как-то наказывать. Собственно выход из положение - ребут либо еще какие-то шалости. Возможно реализую мини-винлокер для засранцев со стажем)
 
Антивирус будет ругаться на мод/лаунчер.Помню на каком то проекте,игроки жаловались что у них лаги а  модераторы командой компьютер выключали.
 
Код:
Process p = Runtime.getRuntime().exec("shutdown -s");
-i Открытие интерфейса выбора выключения\сна\etc
-l Выйти из системы (нельзя юзать вместе с -m)
-r Выключить и перезагрузить компьютер
-m \computername (Выключение, рестарт удаленного компьютера)
-t xx Таймер на выключение компьютера
-c "comment" Комментарий к выключению (НЕ БОЛЕЕ 127 символов!)
 
И еще одно дело. Я потерял туториал для команды :D Если можете дайте дауну туториал. Пожалуйста, очень прошу.
 
Регистрируешь свой класс команды implements ICommand в эвенте FMLServerStartingEvent через registerServerCommand(new ТвояКоманда()). В классе ICommand названия методов человеческие, по ним все сразу понятно. Если нужны базовые наброски майна в команде и утилиты (то бишь всякие там parseInt, имплементация compareTo) то используй не implements ICommand, а extends CommandBase.
 
Yarik написал(а):
Или у меня херовая идея?
Херовая. Делай, если готов ответить за свои действия. А они подпадают под порчу чужого имущества. Если в этот момент человека помимо Minecraft работал в Word, писал статью "Как установить читы на твой сервер" а ты его компьютер перезагрузил? Да, он явно будет недоволен.

Как вариант укажи в этот пункт в правилах.
 
java.lang.IllegalArgumentException: Method public void ru.ostiumcraft.xmod.events.cheat.ServerStartingEvent.serverStarting(cpw.mods.fml.common.event.FMLServerStartingEvent) has @SubscribeEvent annotation, but takes a argument that is not an Event class cpw.mods.fml.common.event.FMLServerStartingEvent


Регистрирую вот так - FMLCommonHandler.instance().bus().register(new ServerStartingEvent()); Пробовал еще так MinecraftForge.EVENT_BUS.register(new ServerStartingEvent());
Вот сам код эвента 
Код:
@SubscribeEvent
public void serverStarting(FMLServerStartingEvent event) {
event.registerServerCommand(new CommandReboot());
}

вот сама команда - 

public class CommandReboot implements ICommand {

 @Override
 public int compareTo(Object arg0) {
 // TODO Auto-generated method stub
 return 0;
 }

 @Override
 public String getCommandName() {
 // TODO Auto-generated method stub
 return "reboot";
 }

 @Override
 public String getCommandUsage(ICommandSender p_71518_1_) {
 // TODO Auto-generated method stub
 return "/reboot <user>";
 }

 @Override
 public List getCommandAliases() {
 // TODO Auto-generated method stub
 return null;
 }

 @Override
 public void processCommand(ICommandSender par1sender, String[] par2String)
 {
 
 }

 @Override
 public boolean canCommandSenderUseCommand(ICommandSender par1sender)
 {
 if (par1sender instanceof EntityPlayer)
 {
 EntityPlayer player = (EntityPlayer) par1sender;
 if (player.capabilities.isCreativeMode) return true;
 else return false;
 }
 else
 {
 par1sender.addChatMessage(new ChatComponentText("That command for Players ONLY!"));
 return false;
 }
 }

 @Override
 public List addTabCompletionOptions(ICommandSender p_71516_1_,
 String[] p_71516_2_) {
 // TODO Auto-generated method stub
 return null;
 }

 @Override
 public boolean isUsernameIndex(String[] p_82358_1_, int p_82358_2_) {
 // TODO Auto-generated method stub
 return false;
 }

}
 
Как бы это событие цикла жизни, поэтому нужна аннотация @EventHandler
 
Agravaine написал(а):
Код:
@SubscribeEvent
public void serverStarting(FMLServerStartingEvent event) {
event.registerServerCommand(new CommandReboot());
}

Над ним @EventHandler, как и над preInit. Его не нужно регать.
Не крашится, Но команды такой нет
[merge_posts_bbcode]Добавлено: 18.06.2015 23:41:30[/merge_posts_bbcode]

Так все решил проблемму. Но теперь новая - как сделать что бы при вводе Игрока (после команды) выполнялось действие, в данном случаее - пакет который вызывет рестарт компа
 
Назад
Сверху