Иконка ресурса

Бот для арифметической викторины в чате

Версия(и) Minecraft
1.7.10
Кусок мода, автоматически пишет в чат ответы на арифметическую викторину
Scala:
package hohserg.math

import cpw.mods.fml.common.eventhandler.SubscribeEvent
import cpw.mods.fml.common.gameevent.TickEvent
import javax.script.ScriptEngineManager
import net.minecraft.client.Minecraft
import net.minecraftforge.client.event.ClientChatReceivedEvent

/**
*    @author hohserg
*/

class ChatHandler {

  def getExpr(text: String): Option[String] = {
    Some(text)
      .filter(_.startsWith("[ChatGame] Задача: "))
      .filter(i => i.contains("+") || i.contains("*") || i.contains(" - "))
      .map(i => i.substring("[ChatGame] Задача: ".length, i.indexOf('.')))
  }

  def printToChat(result: Any): Unit =
    Minecraft.getMinecraft.thePlayer.sendChatMessage(result.toString)

  @SubscribeEvent
  def onChatMsg(e: ClientChatReceivedEvent): Unit = {
    println(e.message.getUnformattedText)
    getExpr(e.message.getUnformattedText)
      .map { expr =>
        val mgr = new ScriptEngineManager(null)
        val engine = mgr.getEngineByName("JavaScript")
        engine.eval(expr)
      }
      .foreach { r =>
        val rand = Minecraft.getMinecraft.theWorld.rand
        delay = rand.nextInt(2003) + 2501
        taskStart = System.currentTimeMillis()
        task = Some(() => printToChat(r))
      }
  }

  var taskStart: Long = 0
  var delay: Long = 0
  var task: Option[() => Unit] = None

  @SubscribeEvent
  def onTick(e: TickEvent.PlayerTickEvent): Unit = {
    val current = System.currentTimeMillis()
    task.foreach { t =>
      if (taskStart + delay <= current) {
        t()
        task = None
        taskStart = 0
        delay = 0
      }
    }
  }

}
Автор
hohserg1
Просмотры
158
Первый выпуск
Обновление
Оценка
5.00 звёзд 1 оценок

Другие ресурсы пользователя hohserg1

Последние рецензии

не знаю зачем это надо и кто вообще в эти викторины играет, но на всякий случай поставлю 5)
H
hohserg1
Типо на некоторых серверах за правильные ответы дают внутриигровые плюшки. Этот кусок кода позволяет делать получать плюшки не прилагая усилий
Сверху