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

Lgmrszd

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

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

  • Посещение

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

    1

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


  1. Что было:

    Дом с четырьмя прогерами, которые пишут програмки.

    Один МайонезСалат с роботом и планшетом.

    Что происходило:

    И игроки с дома прогеров, и Салат тырили панельки. Известно, что Асум иногда возвращал награбленное.

    Что произошло вчера:

    Салат грабнул дом прогеров с помощью Ктулху и оплошностью двоих (моя кривая прога и незаделанные ходы к МЭ Троянчика).

    Что подумал Алекс:

    Ура, Салат юзает Роботов! На одного прогера больше.

    Что имеем:

    Один прогер то и делает, что ворует.

    Оставшиеся четыре (которые хоть и воровали, но также и прогали спокойно проги для дверей, очков и проч.) разбрелись, из-за чего форум ещё не скоро увидет проги Asummonster или LeshaInc.

    Вывод: на одного грифера больше, на четырёх прогеров меньше.

    Зато грифер использует робота! Этожетаккруто! Он теперь не вор, а суперпуперпрогер!

    • Нравится 5

  2. мило мило... я своим роботом пролез за роботом минеубунту и украл все диски фиендера.

    быдлокдеры получили своё сполна))

    правда моего vextosa офнули в их доме, м.б удастя достать

    Что-то не припоминаю. -_-

    По крайней мере, сейчас пролезть чужим роботом не удастся.

    ------------

    Прочитал чат. Таки да, будем дорабатывать.


  3. Забрезжит вайп на горизонте, включу вам креативы, принты, халявный хамелиум, иридиум по цене коблы, черепах из дерева и прочее, печатайте там хоть упечатайтесь.

     

    Забрезжит вайп на горизонте

     

    Вайп

     

    ВАЙП

     

    Аааааааа!!! Всё удалится!


  4. Лава тебе не нравится? :) Потом добавлю эффекты радиации,когда я смогу подключить командный блок к компу :smile14:

    1. Зачем подключать ком.блок, если дебаг карта может выполнять его команды?

    2. Чтобы подключить ком.блок через адаптер, нужно разрешить это действие в конфиге OpenComputers

    • Нравится 1

  5. Велосипедостроение - это неизлечимая болезнь.  ;)

    Мы потеряли много хороших парней на велосипедах...

    Да я же начал писать до того, как ты выложил библиотеку.

    И потом, как мне ещё, школьнику, проверить свои знания в тригонометрии? (А у меня ничего не вышло).

     

    И да, вот такой код:

    local vec3=require("vec3")
    local a = vec3(3,1,1)
    print(a)
    local c = a:rotated_z(math.pi)
    print(c)
    local a = vec3(3,0,0)
    print(a)
    local c = a:rotated_z(math.pi)
    print(c)
    
    

    Выведет следующее:

    (3,1,1)

    (-3,-1,1)

    (3,0,0)

    (-3,3.6739403974421e-16,0)

     

    Это надо исправить


  6. А причем тут логируется,команды и прочее... 

    WG местами дырявый... крайне тяжелый (в плане нагрузки на сервер) при большом количестве приватов, ему на замену пришел MachineGuard, с ним чуть проще... С некоторыми флагами раньше (сейчас не знаю) можно было некисло дюпать... Обходится WG чаще всего на раз... 

     

    В результате взяли GP, он легкий, простой в управлении, НЕ требует обязательно WE (как это делают WG и MG) и работать с ним удобно..

    Это вопросы не ко мне.

    А для меня без разницы, WG или GP. Главное, чтобы дроны были :D


  7. Что-то подобное у меня в Recursive Miner за роботом следит.

     

    У тебя под спойлером кусок кода продублировался в конце.

     

    Кстати, в API которые я видел в OpenComputers немного по другому обычно делалось.

    Там вначале объявлялась таблица (moving) и реквайры,

    а потом все переменные и функции делались полями этой таблицы сразу.

     

    Примерно так:

    function moving.getX()
      return x
    end
    function moving.getY()
      return y
    end
    

    А последней строкой библиотеки шло:

    return moving
    

    Интересно, есть ли какие-то значительные различия в этих двух методах создания библиотеки.

    Так было сделано по совету NEO, так как сначала я делал так, как в исходниках других библиотек, но библиотека не подгружалась.


  8. Так уж вышло, что Сябро первый выложил на форум библиотеку для робота, а я свою написал ещё неделю назад (скрипач Морф - свидетель)

    Так вот, данное поделие служит для управления роботом и получением его координат.

    Сам код на pastebin кидать не буду, ибо он слишком прост.

     

     

    local moving={}
    local robot=require('robot')
    local x=0
    local y=0
    local z=0
    local direct='N'
    function getX()
      return x
    end
    function getY()
      return y
    end
    function getZ()
      return z
    end
    function getDirection()
    return direct
    end
    function getCoordinates()
      return x,y,z,direct
    end
    
    function smartTurnLeft()
      robot.turnLeft()
      if direct=='N' then
        direct='W'
      elseif direct=='W' then
        direct='S'
      elseif direct=='S' then
        direct='E'
      elseif direct=='E' then
        direct='N'
      end
    end
    
    function smartTurnRight()
      robot.turnRight()
      if direct=='N' then
        direct='E'
      elseif direct=='E' then
        direct='S'
      elseif direct=='S' then
        direct='W'
      elseif direct=='W' then
        direct='N'
      end
    end
    
    function smartTurnAround()
      robot.turnAround()
      if direct=='N' then
        direct='S'
      elseif direct=='W' then
        direct='E'
      elseif direct=='S' then
        direct='N'
      elseif direct=='E' then
        direct='W'
      end
    end
    
    function turnNorth()
      if direct=='S' then
        robot.turnAround()
      elseif direct=='W' then
        robot.turnRight()
      elseif direct=='E' then
        robot.turnLeft()
      end
      direct='N'
    end
    
    function turnWest()
      if direct=='E' then
        robot.turnAround()
      elseif direct=='S' thenect='N'
    end
    
    function turnWest()
    if direct=='E' then
    robot.turnAround()
    elseif direct=='S' then
    robot.turnRight()
    elseif direct=='N' then
    robot.turnLeft()
    end
    direct='W'
    end
    
    function turnSouth()
    if direct=='N' then
    robot.turnAround()
    elseif direct=='E' then
    robot.turnRight()
    elseif direct=='W' then
    robot.turnLeft()
    end
    direct='S'
    end
    
    function turnEast()
    if direct=='W' then
    robot.turnAround()
    elseif direct=='N' then
    robot.turnRight()
    elseif direct=='S' then
    robot.turnLeft()
    end
    direct='E'
    end
    
    function goNorth()
    if direct=='N' then
    a=robot.forward()
    elseif direct=='S' then
    a=robot.back()
    elseif direct=='W' then
    smartTurnRight()
    a=robot.forward()
    elseif direct=='E' then
    smartTurnLeft()
    a=robot.forward()
    end
    if a then
    x=x+1
    end
    return a
    end
    
    function goSouth()
    if direct=='S' then
    a=robot.forward()
    elseif direct=='N' then
    a=robot.back()
    elseif direct=='E' then
    smartTurnRight()
    a=robot.forward()
    elseif direct=='W' then
    smartTurnLeft()
    a=robot.forward()
    end
    if a then
    x=x-1
    end
    return a
    end
    
    function goWest()
    if direct=='W' then
    a=robot.forward()
    elseif direct=='E' then
    a=robot.back()
    elseif direct=='S' then
    smartTurnRight()
    a=robot.forward()
    elseif direct=='N' then
    smartTurnLeft()
    a=robot.forward()
    end
    if a then
    z=z-1
    end
    return a
    end
    
    function goEast()
    if direct=='E' then
    a=robot.forward()
    elseif direct=='W' then
    a=robot.back()
    elseif direct=='N' then
    smartTurnRight()
    a=robot.forward()
    elseif direct=='S' then
    smartTurnLeft()
    a=robot.forward()
    end
    if a then
    z=z+1
    end
    return a
    end
    
    function goUp()
    if robot.up() then
    y=y+1
    end
    end
    
    function goDown()
    if robot.down() then
    y=y+1
    end
    end
    
    moving['getX']=getX
    moving['getY']=getY
    moving['getZ']=getZ
    moving['getDirection']=getDirection
    moving['smartTurnAround']=smartTurnAround
    moving['smartTurnLeft']=smartTurnLeft
    moving['smartTurnRight']=smartTurnRight
    moving['turnNorth']=turnNorth
    moving['turnEast']=turnEast
    moving['turnSouth']=turnSouth
    moving['turnWest']=turnWest
    moving['goNorth']=goNorth
    moving['goSouth']=goSouth
    moving['goEast']=goEast
    moving['goWest']=goWest
    moving['goUp']=goUp
    moving['goDown']=goDown
    moving['getCoordinates']=getCoordinates
    package.loaded['moving']=moving
    
    

     

     

    Для тех, кто ничего не понял, вот список функций (вместо {side} подставить North, South, West или East соответсвенно):

    getCoordinates():x,y,z,d

    Возвращает текущее положение робота и его направление (x,y,z - числа, d='N','S','W','E')

    go{side}():boolean

    Перемещает подопытного. Возвращает true в случае успеха. goUp() и goDown() делают то же самое, только... угадайте куда :) .

    smartTurnRight(), smartTurnLeft() и smartTurnAround() - ну тут всё понятно.

    turn{Side}() - поворачивают на север, юг... в общем, куда надо.

    getX(), getY(), getZ(), getDirection() - интересно, что же они возвращают... (подсказка - первые три - числа, четвёртая - строку)

    ---------------

    Новая версия!

    Изменения:

    Почти ничего, а именно: добавлены функции goX(), goY(), goZ().

    Cкачать можно на Яндекс.Диске.

    • Нравится 2

  9. AlexVBG, MorfSD, MineUbuntu, TuBuS

     

    [warn=ВАЖНО][/warn]

     

    Провел я анализ всего этого и выяснил:

     

    Итак. Если игрок выходит из игры в главное меню (короткий РАЗЛОГИН) , то перс остается в игре некоторое время. Это "защита от бегства"  при PvP. Сообщения в чате про выход нет. Кулдаун нужно померять. 

     

    Если же далее нажать ВЫХОД из игры, перс моментально покидает сервер, сообщение в чат и в консоль. Сессия удаляется.

    Вот и все. Никакого бага здесь нет.

     

    Если делать так как надо, то на сервере при PvP отключается афк режим и ставят плагин CombatLog и прочее, чтобы не было коротких разлогинов. У нас вопросами боя и комбо-режимами занимается плагин GP(плагин привата) Кстати, в режиме боя при ПвП если выйти резко из игры (типа Alt-F4) то игрок не покидает сервер бесследно, а умирает и вещи с него дропаются. AlexVBG на себе это прочувствовал на днях=)

     

    А так как ГивилP и еще кто-то прожужжали все уши, что автокик 10-15 мин при бездействии (не помню, сколько точно было) слишком маленький, то я поставил 30 мин. Поэтому вы чаще стали замечать, что вас что-то убило при разлогине, так как 30 мин даже простому мобу хватит вас крякнуть. Раньше вы этого просто не замечали, видимо.

    Странно, никого не бил, пвп не включался, просто вышел из игры (но клиент не закрывал, это так).

    И да, я так понимаю, о потерянном квантовом костюме можно уже забыть?


  10. Бага на сервере есть крайне неприятная. Когда разлогиниваешься есть шанс, что персонаж останется на месте не выходя из игры (ни мобы ни игрок не бьет в эти моменты, все чисто). Соответственно если решил отойти от майна будучи немного занят, то попадаешь в лотерею, и можешь все потерять. Сегодня вот потерял дохрена просто всего ценного, а все потому, что после разлогина персонаж так остался на месте и через некоторое время его убили мобы. И я далеко не первый кто с этой багой столкнулся, уже много людей теряли свои вещи таким образом. Хоть не выходи копать вообще если не можешь за один заход домой вернуться.

    Да-да-да. Было такое. Потерял всё нажитое честным трудом.

    • Нравится 1
×
×
  • Создать...