Идея Плагин на активацию кода

  • Автор темы Автор темы mr_neo
  • Дата начала Дата начала

mr_neo

Участник
Баллы
33
Имя в Minecraft
mr_neo
Кто знает или имеет Плагин на активацию кода и получение за него вещи или префиксы :rolleyes:


Нашел на одном сервере такое вот копия команды

/d reedem (далее не помню):)

Кто ответит буду благодарен
 
тоже интересно
 
На dev.bukkit существуют подобные плагины, Даже у меня есть подобная разработка, при вводе кода в чат выполняется набор команд (а там хоть вещи давай, группу назначай для пользователя).
 
На dev.bukkit существуют подобные плагины, Даже у меня есть подобная разработка, при вводе кода в чат выполняется набор команд (а там хоть вещи давай, группу назначай для пользователя).
Прикинь, то же самое писал на заказ:)
 
На dev.bukkit существуют подобные плагины, Даже у меня есть подобная разработка, при вводе кода в чат выполняется набор команд (а там хоть вещи давай, группу назначай для пользователя).
Ссылку можно?
 
На dev.bukkit существуют подобные плагины, Даже у меня есть подобная разработка, при вводе кода в чат выполняется набор команд (а там хоть вещи давай, группу назначай для пользователя).

можешь дать плыз ссылку очень надо я проект редактирую плыз дай
 
Сначала запятыми закупись.
 
Написал на варскрипте.
Установка:
1)Установить VarScript
2)Установить Groovy
(Скачать, закинуть файл groovy-2.1.1/embeddable/groovy-all-2.1.1.jar в папку_с_сервером/lib)
3)Скачать модули: metaclasses, NBTTools и закинуть в plugins/VarScript/scripts/Groovy/modules
4)Закинуть этот модуль в plugins/VarScript/scripts/Groovy/modules/varkey.groovy
Код:
import org.bukkit.event.player.PlayerCommandPreprocessEvent
import java.util.ArrayList
import org.*********ventory.ItemStack
import org.apache.commons.lang.StringUtils


def metaclasses = program.require("metaclasses")
def nbttools = program.require("nbttools")
if(!metaclasses) return null
if(!nbttools) return null


String prefix = +"&3[&eVarKey&3]&r"
String etalon = "/varkey"
File file = new File("VarKey/tokens.nbtz")
file.getParentFile().mkdirs();
file.createNewFile();
if( !( nbt(file) ) ){
    nbt(file,nbt([:]))
}

def workers = [:]

workers.WIN = { player, params ->
    Server.broadcastMessage(prefix+(+" &6")+player.name+(+"&r used token with type WIN!"))
}

workers.GIVE = { player, params ->
    ArrayList pieces = params.split(" ")
    if(pieces.size() < 3){
        send(player,"&c  ### token params error ###")
        return false
    }
    def name = null
    int id = pieces.remove(0) as int
    int amount = pieces.remove(0) as int
    Short data = pieces.remove(0) as Short
    if(pieces) name = StringUtils.join(pieces," ") ;
    def item
    if(name != null){
        item = new ItemStack(id,amount,data)
        def meta = item.itemMeta
        meta.displayName = name
        item.itemMeta = meta
    }else{
        item = new ItemStack(id,amount,data)
    }
    player.give(item)
    return true;
}

workers.TP = { player, params ->
    ArrayList pieces = params.split(" ")
    if(pieces.size() < 4) return send(player,"&c  ### token params error ###")
    Double x = pieces.remove(0) as Double
    Double y = pieces.remove(0) as Double
    Double z = pieces.remove(0) as Double
    def world = StringUtils.join(pieces," ").w
    if(!world) return send(player,"&c  ### Wrong world")
    player >> new org.bukkit.Location(world,x,y,z)
    return true;
}

workers.KILL = { player, params ->
    if(player.gm as String == "CREATIVE"){
        player.gm = 0
        player.kill()
        player.gm = 1
    }else{
        player.kill()
    }
    return true;
}

workers.VS = { player, params ->
    def stack = [player:player,result:true]
    VarscriptRuntime.startScript(player, params, "VarScript", stack)
    return stack.result
}

workers.GROOVY = { player, params ->
    def stack = [player:player,result:true]
    VarscriptRuntime.startScript(player, params, "Groovy", stack)
    return stack.result
}


def send = { def p, def text ->
    p.sendRawMessage(prefix+" "+text)
    return null
}

writeToken = { String key, String type, String params ->
    if(!file.exists()){

    }
    nbt(file) {it[key] = [type:type,params:params]}
    return null
}

getTokenType = { String key ->
    return nbt(file) {it[key].get("type")}
}

getTokenParams = { String key ->
    return nbt(file) {it[key].get("params")}
}

getToken = { String key ->
    return nbt(file) {it[key]}
}

removeToken = { String key ->
    nbt(file,{it.remove(key)})
    return null
}

getTokens = { ->
    return nbt(file)
}

hasToken = { String key ->
    def tokens = nbt(file)
    return tokens.containsKey(key)
}

listen { PlayerCommandPreprocessEvent event ->
    String command = event.getMessage()
    def player = event.getPlayer()
    ArrayList words = command.split(" ")

    if(words.get(0) != etalon){
        return
    }
    event.cancelled = true

    def printHelp = { ->
        send(player,"  Help ----->")
        player.sendRawMessage(+"&e/varkey&r redeem &6{key}&r - redeem token")
        player.sendRawMessage(+"&e/varkey&r generate &6{type} [params]&r - generate token")
        player.sendRawMessage(+"&e/varkey&r remove &6{key}&r - remove token")
    }

    def printAbout = { ->
        send(player,"  About ----->")
        player.sendRawMessage(+"&aVarkey &rversion &a0.1")
        player.sendRawMessage(+"Powerful token generator")
        player.sendRawMessage(+"Author:&a MYXOMOPX")
    }

    def wrongOperation = {
        send(player,"Wrong command!")
    }

    def generate = { def wordz ->
        if(!player.hasPermission("varkey.generate")) return send(player,"You don't have permissions! ;(")
        def type = "WIN"

        if (wordz.size() != 0) type = wordz.remove(0).toUpperCase()
        if (!workers[type]) return send(player,+"&c ### token type error ###")
   
        def params = wordz ? wordz.inject{a,b -> a+" "+b} : ""


        def uuid = UUID.randomUUID() as String
        writeToken(uuid,type,params)
        send(player,"Token generated! UUID: "+uuid)
    }

    def redeem = { def wordz ->
        if(wordz.size() == 0){
            send(player,"Enter token! :|")
            return
        }

        def uuid = wordz.get(0)
        if(!hasToken(uuid)){
            send(player,"Token not exists. ^_^")
            return
        }
        def token = getToken(uuid)
        def result = true

        def worker = workers[token.type]
        if(worker == null) send(player,+"&c  ### token type error ###")
        else if(worker(player,token.params)){
            removeToken(uuid);
            send(player,"You redeemed token! :3");
        }
    }

    def remove = { def wordz ->
        if(!player.hasPermission("varkey.remove")) return send(player,"You don't have permissions! ;(")
        if(wordz.size() == 0){
            send(player,"Enter token! :|")
            return
        }

        def uuid = wordz.get(0)
        if(!hasToken(uuid)){
            send(player,"Token not exists. ^_^")
            return
        }
        removeToken(uuid)
    }



    words.remove(0)

    if(words.size() == 0){
        printHelp()
        return
    }
    String operation = (words.get(0)).toLowerCase()
    words.remove(0)
    switch(operation) {
        case "help": printHelp(); break;
        case "about": printAbout(); break;
        case "redeem": redeem(words.clone()); break;
        case "r": redeem(words.clone()); break;
        case "generate": generate(words); break;
        case "gen": generate(words); break;
        case "remove": remove(words); break;
        case "rem": remove(words); break;
        default: wrongOperation(); break;
    }

}
return [ name:"VarKey",version:[0,1],author:"MYXOMOPX" ]

Как использовать:
Для генерации токена, есть команда /varkey generate, которая генерирует токен и выводит его Вам.
Дальше нужно указать тип токена и параметры, например: /varkey generate GIVE 57 10 0 Named diamonds.
Тот кто введет этот токен получит 10 алмазных блоков с именем "Named diamonds".
Есть несколько типов токенов:
GIVE - дает игроку предмет. Параметры: id предмета, количество, дата, название (не обязательно)
WIN - просто напишет всем, что игрок использовал ключ. Параметров нет.
TP - телепортирует игрока. Параметры: координаты через пробел, название мира.
KILL - убьет игрока. Параметров нет
VS - исполнит код на VarScript'e. Параметры: код на варскрипте. (игрок записан в player)
GROOVY - исполнит код на Groovy. Параметры: код на груви. (игрок записан в player)
Активация токена: /varkey redeem {token}
Удаление токена: /varkey remove {token}
P.S. Все токены хранятся в VarKey/tokens.nbtz
Разархивировать этот архив в папку с сервером (1.7)
 
Вот вы любите нетривиальные задачи. Вместо одного легкого плагина теперь нужно скачать ядро для исполнения, чтобы побольше нагрузки было.
 
Прикольная идея, а сколько примерно стоит написание такого плагина?
 
Ну зачем изобретать велосипед?

Велосипеды пишутся потому, что они разрабатываются под конкретные нужды с дополнительным функционалом и плюшками. А в данном случае достаточно и паблика.

Давая ссылки людям - ты одобряешь их поведение: вместо поиска своими руками они теперь будут еще больше клянчить. Я понимаю, если плагин какой-то с изюминкой, которые попросту сложно найти, но такое найти самому - большого ума не надо.
 
Назад
Верх