Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Запросы на разработку плагинов", создана пользователем mr_neo, 30 ноя 2013.

  1. Автор темы
    mr_neo

    mr_neo Участник

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


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

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

    Кто ответит буду благодарен
     
  2. Хостинг MineCraft
    <
  3. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Напиши, занимает минут 10
     
  4. FRESCO

    FRESCO Активный участник Пользователь

    Баллы:
    78
    тоже интересно
     
  5. ptnk

    ptnk Старожил Пользователь

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

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Прикинь, то же самое писал на заказ:)
     
    ПриветОтМиднайта нравится это.
  7. FRESCO

    FRESCO Активный участник Пользователь

    Баллы:
    78
    Ссылку можно?
     
    zuma2 и Attelis нравится это.
  8. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Почему бы тебе самому не научится искать?
     
  9. Автор темы
    mr_neo

    mr_neo Участник

    Баллы:
    33
    Имя в Minecraft:
    mr_neo
    можешь дать плыз ссылку очень надо я проект редактирую плыз дай
     
    ПриветОтМиднайта нравится это.
  10. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Нет, не могу,
     
    Stalkerdeni971, Hephest, Larin и ещё 1-му нравится это.
  11. AlexGL

    AlexGL Старожил Пользователь

    Баллы:
    123
    Skype:
    alexandr_vertipolokh
    Имя в Minecraft:
    _ALEVER
    Сначала запятыми закупись.
     
  12. MYXOMOPX

    MYXOMOPX Активный участник Пользователь

    Баллы:
    78
    Skype:
    MYXOMOPX
    Имя в Minecraft:
    MYXOMOPX
    Написал на варскрипте.
    Установка:
    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.bukkit.inventory.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)
     
  13. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Вот вы любите нетривиальные задачи. Вместо одного легкого плагина теперь нужно скачать ядро для исполнения, чтобы побольше нагрузки было.
     
    Jampire и Mik1313 нравится это.
  14. WCRAFT

    WCRAFT Старожил Пользователь

    Баллы:
    173
    Skype:
    worldplaytv
    Имя в Minecraft:
    World
    Прикольная идея, а сколько примерно стоит написание такого плагина?
     
  15. ptnk

    ptnk Старожил Пользователь

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

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

Поделиться этой страницей