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

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

Discussion in 'Запросы на разработку плагинов' started by mr_neo, Nov 30, 2013.

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

    mr_neo Участник

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


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

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

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

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

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

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

    Trophy Points:
    78
    тоже интересно
     
  5. ptnk

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

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

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

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Прикинь, то же самое писал на заказ:)
     
  7. FRESCO

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

    Trophy Points:
    78
    Ссылку можно?
     
    zuma2 and Attelis like this.
  8. ptnk

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

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

    mr_neo Участник

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

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

    Trophy Points:
    173
    Нет, не могу,
     
  11. AlexGL

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

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

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

    Trophy Points:
    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
    Code:
    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 Старожил Пользователь

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

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

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

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

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

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

Share This Page