Перейти к содержимому

Asummonster

Пользователи
  • Публикации

    420
  • Зарегистрирован

  • Посещение

  • Победитель дней

    12

Сообщения, опубликованные пользователем Asummonster


  1. Ага, а Вика предлагает другое число - 18000. Ну ок. Как они там считали, не понятно. Мы получили реальное значение из кода майна, считай, вызовами из ОС.

     

    Ну теперь смотри. У меня 30 лвл и я хочу снять в банк 50%  Ты с меня спишешь 15 уровней.

    Потом я чарю колбасу на вкусность. У меня остается 1 лвл. Прихожу в банк, забираю свои 15 лвл. Но по факту опыта я верну намного меньше.

     

    Как поступишь?

    Хм, вот это я не продумал... Я храню уровни,а надо их переводить в именно в сферки. Реализую.

    Ага, а Вика предлагает другое число - 18000. Ну ок. Как они там считали, не понятно. Мы получили реальное значение из кода майна, считай, вызовами из ОС.

     

    Кстати, вот 18000 опыта: 5f78626c1a.jpg


  2. ну ешкин кот, у тебя же циклы есть в луа и схрон в файл, шлепни 60 уровней или 100.=)

     

     

    Level: 1 ; EXP: 17
    Level: 2 ; EXP: 17
    Level: 3 ; EXP: 17
    Level: 4 ; EXP: 17
    Level: 5 ; EXP: 17
    Level: 6 ; EXP: 17
    Level: 7 ; EXP: 17
    Level: 8 ; EXP: 17
    Level: 9 ; EXP: 17
    Level: 10 ; EXP: 17
    Level: 11 ; EXP: 17
    Level: 12 ; EXP: 17
    Level: 13 ; EXP: 17
    Level: 14 ; EXP: 17
    Level: 15 ; EXP: 17
    Level: 16 ; EXP: 17
    Level: 17 ; EXP: 20
    Level: 18 ; EXP: 23
    Level: 19 ; EXP: 26
    Level: 20 ; EXP: 29
    Level: 21 ; EXP: 32
    Level: 22 ; EXP: 35
    Level: 23 ; EXP: 38
    Level: 24 ; EXP: 41
    Level: 25 ; EXP: 44
    Level: 26 ; EXP: 47
    Level: 27 ; EXP: 50
    Level: 28 ; EXP: 53
    Level: 29 ; EXP: 56
    Level: 30 ; EXP: 59
    Level: 31 ; EXP: 62
    Level: 32 ; EXP: 69
    Level: 33 ; EXP: 76
    Level: 34 ; EXP: 83
    Level: 35 ; EXP: 90
    Level: 36 ; EXP: 97
    Level: 37 ; EXP: 104
    Level: 38 ; EXP: 111
    Level: 39 ; EXP: 118
    Level: 40 ; EXP: 125
    Level: 41 ; EXP: 132
    Level: 42 ; EXP: 139
    Level: 43 ; EXP: 146
    Level: 44 ; EXP: 153
    Level: 45 ; EXP: 160
    Level: 46 ; EXP: 167
    Level: 47 ; EXP: 174
    Level: 48 ; EXP: 181
    Level: 49 ; EXP: 188
    Level: 50 ; EXP: 195
    Level: 51 ; EXP: 202
    Level: 52 ; EXP: 209
    Level: 53 ; EXP: 216
    Level: 54 ; EXP: 223
    Level: 55 ; EXP: 230
    Level: 56 ; EXP: 237
    Level: 57 ; EXP: 244
    Level: 58 ; EXP: 251
    Level: 59 ; EXP: 258
    Level: 60 ; EXP: 265
    Level: 61 ; EXP: 272
    Level: 62 ; EXP: 279
    Level: 63 ; EXP: 286
    Level: 64 ; EXP: 293
    Level: 65 ; EXP: 300
    Level: 66 ; EXP: 307
    Level: 67 ; EXP: 314
    Level: 68 ; EXP: 321
    Level: 69 ; EXP: 328
    Level: 70 ; EXP: 335
    Level: 71 ; EXP: 342
    Level: 72 ; EXP: 349
    Level: 73 ; EXP: 356
    Level: 74 ; EXP: 363
    Level: 75 ; EXP: 370
    Level: 76 ; EXP: 377
    Level: 77 ; EXP: 384
    Level: 78 ; EXP: 391
    Level: 79 ; EXP: 398
    Level: 80 ; EXP: 405
    Level: 81 ; EXP: 412
    Level: 82 ; EXP: 419
    Level: 83 ; EXP: 426
    Level: 84 ; EXP: 433
    Level: 85 ; EXP: 440
    Level: 86 ; EXP: 447
    Level: 87 ; EXP: 454
    Level: 88 ; EXP: 461
    Level: 89 ; EXP: 468
    Level: 90 ; EXP: 475
    Level: 91 ; EXP: 482
    Level: 92 ; EXP: 489
    Level: 93 ; EXP: 496
    Level: 94 ; EXP: 503
    Level: 95 ; EXP: 510
    Level: 96 ; EXP: 517
    Level: 97 ; EXP: 524
    Level: 98 ; EXP: 531
    Level: 99 ; EXP: 538
    Level: 100 ; EXP: 545
    

     

     

    • Нравится 1

  3. Даааа, чувствую, поорем тут :D

     

    ГУИ, ерунда. Ты опыт получил?  Учитываешь дискретность и его вес на разных уровнях? Как списываешь и добавляешь опыт? Где хранишь пока его?

    Опыт получил радаром, храню в своей БД, учитываю разное количество опыта разным уровням,выдаю его через КБ, отнимаю тоже через КБ


  4. : Column

    | но не Collum!

    Поставь функции в [inline] теги, поправь форматирование.

     


    А по поводу либы — надо будет затестить как-нибудь. Но мне проще хранить данные в памяти программы или на харде :P

    Зайду с компа - поправлю. А то писать хоть что-то на виндус планшете - и врагу не пожелаешь


  5. Всем привет!В этой теме я хочу рассказать о своей программе для управления неким подобием базы данных.
    Структура хранения файлов такова: 
    Папка с логинами и паролями
    Папка с папками под именем логина, в которой может быть 256 пользователей, у которых может быть 256 баз данных, в которых может быть 256 "колонок" с определёнными данными в них.
    Библиотека требует библиотеку OpenNet.
    Пройдёмся по методам.
    1 метод - аутентификация. - auth(login, password)
    Сейчас доступен только 1 аккаунт - test, с паролем test
    Зачем он создан? Потому, что чёртов модем не хочет отправлять более 11 пакетов.
    Как оно работает?
    В таблицу на сервере, в значение с вашим ip добавляются логин и пароль. 
    2 метод - создание базы данных (А с ней и пользователя, если он не найден!НЕ ПУТАТЬ С ЛОГИНОМ!) -createDataBase (DataBaseUser, DataBaseName)
    3 метод - создание "колонки" в базе данных - createCollum(DataBaseUser, DataBaseName, CollumName)
    4 метод - запись данных в "колонку" - writeData(DataBaseUser, DataBaseName, CollumName, data)
    5 метод - чтение данных из "колонки" - readData(DataBaseUser, DataBaseName, CollumName)
    6 метод -получает пользователей - getUsers() возвращает сериализированную таблицу, стринг, или нилл
    7 метод - получает базы данных пользователя - getUserDatabases(DataBaseUsers)возвращает сериализированную таблицу, стринг, или нилл
    И 8 метод получает колонки пользователя базы данных в базе данных. - getCollums(DataBaseUser, DataBaseName)возвращает сериализированную таблицу, стринг, или нилл.
    Код: в открытой бете, можно проверить на сервере.
    Код библы:

     

    on=require("opennet")
    myIP=on.getIP()
    serverIP="myDataBase"
    function send(...)
    	return {on.sendrec(serverIP, ...)}
    end
    db={}
    function db.auth(login, password)
    	return table.unpack(send("auth", login, password))
    end
    function db.createDataBase(databaseUser, databaseName)
    	data=send("createDataBase", databaseUser, databaseName)
    	return table.unpack(data)
    end
    function db.createCollum(databaseUser, databaseName, collumName)
    	return table.unpack(send("createCollum", databaseUser, databaseName, collumName))
    end
    function db.writeData(databaseUser, databaseName, collumName, data)
    	return table.unpack(send("writeData", databaseUser, databaseName, collumName, data))
    end
    function db.readData(databaseUser, databaseName, collumName)
    	return table.unpack(send("readData", databaseUser, databaseName, collumName))
    end
    function db.getUsers()
    	return table.unpack(send("getUsers"))
    end
    function db.getUserDatabases(databaseUser)
    	return table.unpack(send("getUserDatabases", databaseUser))
    end
    function db.getCollums(databaseUser, databaseName)
    	return table.unpack(send("getCollons", databaseUser, databaseName))
    end
    return db
    

     


    Приложение для работы с базой:

     

    db=require("mydb")
    event=require("event")
    gpu=require("component").gpu
    serlib=require("serialization")
    ser=serlib.serialize
    unser=serlib.unserialize
    function getDataBaseData()
        gpu.setForeground(0xffffff)
        print("Введите имя пользователя БД")
        dbu=io.read()
        gpu.setForeground(0xffffff)
        print("Введите имя БД")
        dbn=io.read() 
        db.dbn, db.dbu = dbn, dbu
        gpu.setForeground(0xffffff)
    end
    read=io.read
    function io.read(...)
        gpu.setForeground(0xff0000)
        return read(...)
    end
    function doAuth()
        gpu.setForeground(0xffffff)
        print("Введите логин")
        login=tostring(io.read())
        gpu.setForeground(0xffffff)
        print("Введите пароль")
        pass=tostring(io.read())
        result, description = db.auth(login, pass)
        if result==true then
            print(description)
        elseif result==false then 
            error(description)
        end
    end
    function printUsage()
        gpu.setForeground(0x00ff00)
        print("==============================================================")
        print("---------------------------AdminDB----------------------------")
        print("==============================================================")
        print("D - Создать БД                      W - Изменить данные")
        print("C - Добавить колонку                U - Список пользователей")
        print("B - Список БД                       V - Список колонок")
        print("R - Прочитать данные из колонки     N - Создать новый аккаунт)")
        print("==============================================================")
        print("--------------------------------------------------------------")
        print("==============================================================")
    end
    doAuth()
    printUsage()
    while true do
    _,_,_,k=event.pull("key_down")
    k=require("keyboard").keys[k]
    if k=="d" then
        getDataBaseData()
        gpu.setForeground(0xffffff)
        print(db.createDataBase(db.dbu, db.dbn))
    elseif k=="c" then
        getDataBaseData()
        gpu.setForeground(0xffffff)
        print("Введите имя колонки")
        cn=io.read()
        gpu.setForeground(0xffffff)
        print(db.createCollum(db.dbu, db.dbn, cn))
    elseif k=="b" then
        gpu.setForeground(0xffffff)
        print("Введите имя пользователя базы данных:")
        dbu=io.read()
        gpu.setForeground(0xffffff)
        _, tablebases=db.getUserDatabases(dbu)
        if unser(tablebases) then
    tablebases=unser(tablebases)
        for i=1, #tablebases do 
            print(tablebases[i])
        end
        else 
            print(tablebases)
        end
    elseif k=="w" then
        gpu.setForeground(0xffffff)
       print("Введите имя колонки")
      cn=io.read()
        gpu.setForeground(0xffffff)
      print("Введите текст")
      text=io.read()
      getDataBaseData()
        gpu.setForeground(0xffffff)
      print(db.writeData(db.dbu, db.dbn, cn, text))
     
    elseif k=="u" then
        gpu.setForeground(0xffffff)
        local _, users=db.getUsers()
    if unser(users) then
    users=unser(users)
    for i=1, #users do
    print(users[i])
    end
    else print(users)
    end
    elseif k=="v" then
        getDataBaseData()
        _, collons=db.getCollums(db.dbu, db.dbn)
        if unser(collons) then
    collons=unser(collons)
          for i=1, #collons do
    print(collons[i])
          end
        else 
    print(db.getCollums(db.dbu, db.dbn))
    end
    elseif k=="r" then
    gpu.setForeground(0xffffff)
    print("Введите колонку:")
    cn=io.read()
    getDataBaseData()
    _, data = db.readData(db.dbu, db.dbn, cn)
    print(data)
    end
    printUsage()
    end
    

     


    Надеюсь, это кому-нибудь понадобится!


  6. Не-е-е. Так не пойдет. У тебя сколько блоков, столько записей в таблице. Включая пустоты. Я хочу перенести область размерами 100х100х60. Сколько ж мне жестких дисков понадобится. Давай уплотнять. Скажем, одна запись - прямоугольная область, заполненная однотипными блоками.

    То есть, ты хочешь такую-же штуку, как и у крутого в его конвентtре?


  7. Asummonster, меня интересует именно упаковка данных. Ты какой способ используешь?

    И еще. У тебя как бы особый статус. Пустит ли тебя Алекс на сервер? Я не против, но надо уточнить.

    Я использую table.insert(<table>, {x, y, z, world.getBlockId(x, y, z), world.getMetadata(x, y, z)})

    А в файл записываю с помощью serialization


  8. А  как же без нее, конечно, и ид и мета нужны.

    Хорошо.

    Итак, вот программа:

     

    debug=require("component").debug.getWorld()
    serlib=require("serialization")
    ser=serlib.serialize
    unser=serlib.unserialize
    args={...}
    function scan(xstart, ystart, zstart, xstop, ystop, zstop)
    	tableTMP={}
    	for y=ystart, ystop do
    		for x=xstart, xstop do
    			for z=zstart, zstop do
    				tmp={x-xstop, y-ystop, z-zstop, debug.getBlockId(x, y, z), debug.getMetadata(x, y, z)}
    				table.insert(tableTMP, tmp)
    				print(x-xstop, y-ystop, z-zstop)
    			end
    		end
    	end
    	return tableTMP
    end
    function saveFile()
    	file=io.open(args[8], "w")
    	file:write(ser(scan(args[2], args[3], args[4], args[5], args[6], args[7])))
    	file:flush()
    	file:close()
    end
    function place(filename, X, Y, Z)
    	home=unser(io.lines(filename)())
    	for i=1, #home do
    		x, y, z, id, meta = home[i][1]+X, home[i][2]+Y, home[i][3]+Z, home[i][4], home[i][5]
    		debug.setBlock(x, y, z, id, meta)
    		print(x, y, z, id)
    	end
    end
    if args[1]==nil then print("Использование: save <xstart> <ystart> <zstart> <xstop> <ystop> <zstop> <filename>\nplace <filename> <x> <y> <z>")
    elseif args[1]=="save" then saveFile()
    elseif args[1]=="place" then place(args[2], args[3], args[4], args[5])
    end
    
    

     

     

    Ключевой момент: все первые значения координат должны быть меньше других.То есть xstart=-150 xstop=-120; xstart=20, xstop=96. 

×
×
  • Создать...