package Shadowrun; import net.dv8tion.jda.core.EmbedBuilder; import net.dv8tion.jda.core.entities.ChannelType; import net.dv8tion.jda.core.entities.User; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.hooks.ListenerAdapter; import org.json.JSONArray; import org.json.JSONObject; import java.awt.*; import java.security.SecureRandom; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; public class dice extends ListenerAdapter { private String prefixSr; private String prefixZitat; private String prefixTest; public dice() { this.prefixSr = "!sr"; this.prefixTest = "!rollTest"; this.prefixZitat = "!zitat"; } @Override public void onMessageReceived(MessageReceivedEvent event) { if ((!event.getMessage().getContentRaw().startsWith(this.prefixSr) && !event.getMessage().getContentRaw().startsWith(this.prefixZitat) && !event.getMessage().getContentRaw().startsWith(this.prefixTest)) || event.getChannelType() != ChannelType.TEXT) { return; } User author = event.getAuthor(); if (!author.isBot()) { if (event.getMessage().getContentRaw().startsWith(this.prefixSr)) this.roll(event); if (event.getMessage().getContentRaw().startsWith(this.prefixTest)) this.rollTest(event); if (event.getMessage().getContentRaw().startsWith(this.prefixZitat)) this.zitat(event); } } /** * rolltest * * @param event JDA Event */ private void rollTest(MessageReceivedEvent event) { EmbedBuilder test = new EmbedBuilder(); test.setTitle("Das ist ein Test"); test.setColor(Color.red); test.setDescription("Text " + event.getMember().getAsMention()); int[] verteilung = new int[6]; int[] verteilung2 = new int[6]; int[] verteilung3 = new int[6]; int dice1, dice2, dice3; try { String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(" "); int rounds = Integer.parseInt(MsgParts_exl_Mention[1]); if(rounds <= 0) { event.getChannel().sendMessage("Nope").queue(); return; } for(int i = 0; i < rounds; i++) { dice1 = new Random().nextInt(6); dice2 = new SecureRandom().nextInt(6); //dice3 = new ThreadLocalRandom().current().nextInt(6); dice3 = ThreadLocalRandom.current().nextInt(0, 6); verteilung[dice1]++; verteilung2[dice2]++; verteilung3[dice3]++; } for(int i = 0; i < 6; i++) { float pro = verteilung[i]*100f/rounds; test.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro) + "%", true); } test.addBlankField(false); for(int i = 0; i < 6; i++) { float pro = verteilung2[i]*100f/rounds; test.addField(Integer.toString(i+1), Integer.toString(verteilung2[i]) + " - " + String.format("%.2f", pro) + "%", true); } test.addBlankField(false); for(int i = 0; i < 6; i++) { float pro = verteilung3[i]*100f/rounds; test.addField(Integer.toString(i+1), Integer.toString(verteilung3[i]) + " - " + String.format("%.2f", pro) + "%", true); } event.getChannel().sendMessage(test.build()).queue(); } catch (NumberFormatException e) { event.getChannel().sendMessage("Nope").queue(); } catch (Exception e) { System.out.println("problem: " + e.getMessage()); } finally { } } /** * rolltest * * @param event JDA Event */ private void roll(MessageReceivedEvent event) { EmbedBuilder outputBox = new EmbedBuilder(); int[] verteilung = new int[6]; int dice1; int numberOfDice = 1; int diceart = 6; StringBuilder result = new StringBuilder(""); int hits = 0; boolean glitches = false; boolean critGlitches = false; boolean edge = false; try { if(event.getMessage().getContentRaw().startsWith(this.prefixSr+"+")) { edge = true; } String[] MsgParts = event.getMessage().getContentRaw().split(" ", 2); if(MsgParts.length < 2) { event.getChannel().sendMessage(event.getMember().getAsMention() + " der " + this.prefixSr + " befehl benötigt einen Wert").queue(); return; } if(MsgParts[1].trim().matches(".*[^0-9].*")) { // es wurden andere zeichen als Zahlen gefunden if(MsgParts[1].trim().toLowerCase().replace(" ", "").matches("([0-9]*)[dw]([0-9].*)")) { // format besteh aus (Zahlen)d(Zahlen) oder (Zahlen)w(Zahlen) String[] diceInterpreter = MsgParts[1].trim().toLowerCase().replace(" ", "").split("[wd]"); try { diceart = Integer.parseInt(diceInterpreter[1]); numberOfDice = Integer.parseInt(diceInterpreter[0]); } catch (NumberFormatException e) { event.getChannel().sendMessage(event.getMember().getAsMention() + " Irgent was dummes ist passiert beim Verstehen von " + MsgParts[1].trim().toLowerCase()).queue(); return; } } else { event.getChannel().sendMessage(event.getMember().getAsMention() + " ich verstehe nicht was du von mir willst mit " + MsgParts[1].trim()).queue(); return; } } else { try { numberOfDice = Integer.parseInt(MsgParts[1].trim().replace(" ", "")); } catch (NumberFormatException e) { event.getChannel().sendMessage(event.getMember().getAsMention() + " Irgent was dummes ist passiert beim Verstehen von " + MsgParts[1].trim()).queue(); return; } } /* if(MsgParts[1].trim().toLowerCase().replace(" ", "").matches("^([0-9]*\\+)?[0-9]*([dw][0-9]*)?(\\+[0-9]*)?")) { // format besteh aus (Zahlen)+(Zahlen)d(Zahlen) oder (Zahlen)d(Zahlen)+(Zahlen) String[] diceInterpreter = MsgParts[1].trim().toLowerCase().replace(" ", "").split("\\+"); try { diceart = Integer.parseInt(diceInterpreter[1]); numberOdDice = Integer.parseInt(diceInterpreter[0]); } catch (NumberFormatException e) { event.getChannel().sendMessage(event.getMember().getAsMention() + " Irgent was dummes ist passiert beim Verstehen von " + MsgParts[1].trim().toLowerCase()).queue(); return; } }*/ if(numberOfDice <= 0) { event.getChannel().sendMessage(event.getMember().getAsMention() + " es darf kein Negativen Wurf geben").queue(); return; } int bonusEdegeDice = 0; for(int i = 0; i < numberOfDice+bonusEdegeDice; i++) { dice1 = new Random().nextInt(diceart); if(edge && dice1 == 5) bonusEdegeDice++; if(dice1 >= 4) { hits++; } verteilung[dice1]++; result.append(dice1+1); result.append(" "); } if (verteilung[0] >= (numberOfDice+bonusEdegeDice)/2 && verteilung[0] > 0) { glitches = true; } if(hits == 0) { outputBox.setColor(Color.red); if(glitches == true) { outputBox.setDescription("**Kritischer Patzer** :,("); } else { outputBox.setDescription("**nicht geschafft**"); } } else if(glitches == true) { outputBox.setColor(Color.yellow); outputBox.setDescription("**Patzer** :("); } else { outputBox.setColor(Color.green); if(hits == 1) { outputBox.setDescription("**" + String.valueOf(hits) + " Erfolg**"); } else if(hits < 4) { outputBox.setDescription("**" + String.valueOf(hits) + " Erfolge**"); } else if(hits < 6) { outputBox.setDescription("**" + String.valueOf(hits) + " Erfolge**, das ist schon ordentlich"); } else if(hits < 10) { outputBox.setDescription("**" + String.valueOf(hits) + " Erfolge**, WOW sowas mal nachmachen"); } else { outputBox.setDescription("**" + String.valueOf(hits) + " Erfolge**, bist du Wahnsinnig?"); } } outputBox.setTitle(event.getMember().getEffectiveName() + " dein Wurf " + MsgParts[1] + " ergibt:"); outputBox.addField("Erfolge", String.valueOf(hits), true); outputBox.addField("Misserfolge", String.valueOf(verteilung[0]), true); outputBox.addField("Ergbenise", result.toString(), false); for(int i = 0; i < diceart; i++) { float pro = verteilung[i]*100f/numberOfDice; //outputBox.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro) + "%", true); } event.getChannel().sendMessage(outputBox.build()).queue(); } catch (NumberFormatException e) { event.getChannel().sendMessage("Nope").queue(); } catch (Exception e) { System.out.println("problem: " + e.getMessage()); } finally { } } private void zitat(MessageReceivedEvent event) { String[] quotes = new String[7]; quotes[0] = "*quiek quiek quiek*"; quotes[1] = "" + "(\\\\_____/)\n" + "( ͡ ͡° ͜ ʖ ͡ ͡°) *snuff snuff*\n" + "\\\\╭☞ \\\\╭☞\n" + ""; quotes[2] = "(づ。◕‿‿◕。)づ"; quotes[3] = "zzzZZZZZzzZZ"; quotes[4] = "piiiep"; quotes[5] = "grrrrr"; //quotes[6] = "ʕᵔᴥᵔʔ =*Auto translator*=> In meiner psychophysischen Konstituton manifestiert sich eine absolute Dominanz positiver Effekte für die Individualität Deiner Person. "; int dice = new Random().nextInt(600); event.getChannel().sendMessage(quotes[dice%6]).queue(); } }