Архив сообщества
2011 — 2019
Аватар 12xilluks или Albert Xill

Мелкие вопросы по теме

Автор: 12xilluks или Albert Xill · 15.02.2013, 16:24 · 352 сообщений

Сообщений в теме: 352

Recei#27
tuzhit принцесса (11 May 2013 - 08:29) писал:

Сделай area с названием gun1_on. В коде стрельбы из оружия(лол) нужно сделать проверку, что-то вроде if area=gun1_on, то оружие будет стрелять, соответственно, если оружие не будет находится в такой зоне, то вести огонь оно не сможет. С кодом оружия незнаком, но думаю, что у оружия в руках нет координат, поэтому при стрельбе нужно присваивать пушке координаты персонажа и проверять, находятся ли они в необходимой зоне gun1_on.

И я бы делал скрытые стены так. Есть тайл пола. На тайл пола я ставлю стену, идет проверка на наличие стен вокруг, их нет => стена ставится с окаймлением(такие полоски с винтами по бокам). Ставлю еще стену справа, идет проверка, теперь она проверяет эту стену и соседние на наличие стен рядом. Если рядом с какой-то стеной есть другая стена, то с этих сторон окаймление убирается. Еще правее ставлю скрытую стену, она появляется открытой, механизм проверки стен не включается. Потом я закрываю стену и тут механизм проверяет эту стену и соседние на наличие стен рядом, исходя из результатов дорисовываются или отрисовываются окаймления на нужных стенках.

Именно эти варианты предложил Эдитор и даже кодец написал, но это не работает, так, как надо. Точнее совсем. Скрытые стены вообще странные и проверку запихнуть туда не возможно.

Скопировать ссылку
tizit#28

Беги код тг с гитхаба. Там ищи code/game/smoothwall.dm. В этом файле находится код, который отвечает за направление соединения стен, насколько я понимаю.

И там есть прок relativewall, он запиливается в код создания стены. Этот прок собственно и есть суть smoothwall.dm. Его вызов соединяет стены.

https://codeload.git...tion/zip/master

Скопировать ссылку
ACCount#29

И да, relativewall к стене прикрутить не забудь. Хотя...

1. Копипастим фальшстены и их спрайты /tg/

2. Копипастим smoothwalls /tg/

3. Вставляем костыли там, где не компилируется

Скопировать ссылку
Recei#30
ACCount (11 May 2013 - 13:47) писал:

И да, relativewall к стене прикрутить не забудь. Хотя...

  1. Копипастим фальшстены и их спрайты /tg/

  2. Копипастим smoothwalls /tg/

  3. Вставляем костыли там, где не компилируется

Был бы рад для начала извлечь скрытые стены из кода ферна. Закопипастить новые легко, а вот извлечь старые проблема.

Скопировать ссылку
tizit#31
OdSt_97 (11 May 2013 - 13:54) писал:

Был бы рад для начала извлечь скрытые стены из кода ферна. Закопипастить новые легко, а вот извлечь старые проблема.

Ищи в коде falsewall или вроде того.

Скопировать ссылку
Recei#32
tuzhit принцесса (12 May 2013 - 00:34) писал:

Ищи в коде falsewall или вроде того.

Для начала убедись, что скрытые стены ферна раскиданы по трем файлам. Я пробовал удалять из каждого, это вызывало около 6 тысяч ошибок.

Скопировать ссылку
tizit#33
OdSt_97 (12 May 2013 - 01:18) писал:

Для начала убедись, что скрытые стены ферна раскиданы по трем файлам. Я пробовал удалять из каждого, это вызывало около 6 тысяч ошибок.

Где взять код ферна?

Скопировать ссылку
ACCount#36

Вот тебе творческая копипасточка проверки зоны из кода чертежей:

/obj/item/weapon/gun/energy/supercool/proc/can_fire()

    var/turf/T = get_turf_loc(usr)

    var/area/A = T.loc

    A = A.master

    if (A.name == "Space") return 1

    else return 0

Скопировать ссылку
12xilluks или Albert Xill#37
Leonido33 (28 April 2013 - 12:14) писал:

flags = FPRINT | TABLEPASS | CONDUCT - куда эти слоты, что, как и зачем.

Первый позволяет оставлять на предмете отпечатки пальцев, второй - позволяет при броске пролетать над столом, а третий - проводить электричество.

Скопировать ссылку
Lagius#38
12xilluks или Albert Xill (15 February 2013 - 12:32) писал:

В прямом смысле - нет. Они реализуются через т.н. "списки".

Я думаю, это не совсем корректно.

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

Скорее всего при каких-то обстоятельствах list в коде представляет собой бинарное дерево или хэш таблицу (list_var["key"] = value), в остальных же представляет собой либо список, либо массив (в терминах си). На одной чаше весов у нас  быстрая вставка множеств обьектов в середину (список), на другой - малый размер занимаемой памяти (примерно в три раза меньше, в случае двусвязного списка), практически мгновенная скорость доступа по индексу (в отличие от О(n) для списка), элементарность конструкции (без адресной арифметики массив не реализовать, а вот список на бьонде наваять можно).

В итоге список нужен лишь для очень редкого количества случаев, тогда как массив гораздо более необходимая и базовая вещь. Поэтому я ставлю на то, что list в бьонде это и есть массив (в подавляющем большинстве случаев, когда это не бинарное дерево/хэштаблица).

Скопировать ссылку
Dollar#39

https://github.com/SS13/black

Это актуальный код?

Кажется, нет.

Но всё же объясните это:

Цитата

var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation", "[35-s_tone]")  as text

if (!new_tone)

new_tone = 35

s_tone = max(min(round(text2num(new_tone)), 220), 1)

s_tone =  -s_tone + 35

Как я понял, вводится новый тон кожи, переводится в численный тип, round (не понял что за функция), потом проверка на граничные значения, а потом ПОЧЕМУ-ТО вычитается из 35.

Объясняю хардкорно два возникших вопроса.

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

Следовательно:

Если код актуальный, то каким хером это работало тогда?

В обратном случае, где посмотреть актуальный код, и не имеется ли там такой же херни?

Если я действительно нашёл ошибку, то ЧСВ моё будет увеличиваться в геометрической прогрессии, а потом напишу покровосрывающий пост в багрепорты.

Скопировать ссылку
ZLOFENIX#40

Eye damage: 9001% bleeding

Блак в привате, репа старая.

Round - ну ты хотя бы в ангельский можешь? Округление до целых это.

Минимум - не дает выбрать больше 220, самым уебанским способом.

Максимум - не дает выбрать меньше 1, опять же уебанско.

Последняя строка вообще беекод, мне не понять в данном случае.

А еще мне не понять где тут ошибка и каком баге вообще речь.

Относительно кода - все правильно, относительно того что тут происходит - хз.

Скопировать ссылку
Gvardota#41
Dollar (19 May 2013 - 16:34) писал:

Это актуальный код?

Кажется, нет.

Но всё же объясните это:

Как я понял, вводится новый тон кожи, переводится в численный тип, round (не понял что за функция), потом проверка на граничные значения, а потом ПОЧЕМУ-ТО вычитается из 35.

Объясняю хардкорно два возникших вопроса.

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

Следовательно:

Если код актуальный, то каким хером это работало тогда?

В обратном случае, где посмотреть актуальный код, и не имеется ли там такой же херни?

Если я действительно нашёл ошибку, то ЧСВ моё будет увеличиваться в геометрической прогрессии, а потом напишу покровосрывающий пост в багрепорты.

round() - округление до целого.

Минус перед s_tone выглядит странно. Кажется, я понимаю логику, которая за этим стоит, и она ущербная.

Суть в том, что у new_tone значение 1 отвечает за светлую кожу, 220 - за черную. С точки зрения RGB это чушь, чем больше число, тем светлее должна быть кожа. Какой из этого можно сделать вывод? Такой, что new_tone в вычислении цвета кожи используется со знаком минус. Что мы, собственно, и наблюдаем. Создается переменная s_tone, которая содержит число, которое нужно вычесть из цвета. То есть код определения составляющих цвета наверняка выглядит как-то вроде:

r = 220 + s_tone

g = 210 + s_tone

b = 150 + s_tone

Ну и коэффициенты какие-нибудь, чтобы за 1..255 не выйти.

Скопировать ссылку
Dollar#42
ZLOFENIX (20 May 2013 - 01:58) писал:

А еще мне не понять где тут ошибка и каком баге вообще речь.

Относительно кода - все правильно, относительно того что тут происходит - хз.

Об этом:

Изображение

Gvardota (20 May 2013 - 02:11) писал:

if (s_tone >= 0)

       preview_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)

else

       preview_icon.Blend(rgb(-s_tone,  -s_tone,  -s_tone), ICON_SUBTRACT)

Единственное, что нашёл, связанное с RGB.

Запустил всё это у себя - скинтон отлично работает.

Там же есть и ксеносы, которым можно менять скинтон, но на спрайтовой модельке этих изменений не видно. Также как на блеке сейчас.

Короче, я просто хотел залезть в код и посмотреть, от чего такой баг.

ZLOFENIX (20 May 2013 - 01:58) писал:

Блак в привате

ДАЙ!

Скопировать ссылку
DemodiX#45

Решил обмазаться буонд-кодом, смотрю я в него, вроде понятен, но вот структура полного имени чего-либо, к примеру, Инженерного Шкафчика с замком

/obj/structure/closet/secure_closet/engineering_personal

не понятна, по древу папок не сопоставляется, по нахождению спрайта так же. И что это?

Так выглядит местонахождение файла:

"\code\game\objects\structures\crates_lockers\closets\secure".

А так местоположение в спрайта:

"\icons\obj\closet.dmi".

Скопировать ссылку
Volad09#46
DemodiX (22 June 2013 - 13:34) писал:

Решил обмазаться буонд-кодом, смотрю я в него, вроде понятен, но вот структура полного имени чего-либо, к примеру, Инженерного Шкафчика с замком

не понятна, по древу папок не сопоставляется, по нахождению спрайта так же. И что это?

Так выглядит местонахождение файла:

.

А так местоположение в спрайта:

.

Меня это тоже отпугивает

Скопировать ссылку
longbow#47
DemodiX (22 June 2013 - 13:34) писал:

Решил обмазаться буонд-кодом, смотрю я в него, вроде понятен, но вот структура полного имени чего-либо, к примеру, Инженерного Шкафчика с замком

не понятна, по древу папок не сопоставляется, по нахождению спрайта так же. И что это?

Так выглядит местонахождение файла:

.

А так местоположение в спрайта:

.

Это иерархия классов. Использую комбинацию Ctrl+F, F3.

Скопировать ссылку
12xilluks или Albert Xill#48
DemodiX (22 June 2013 - 13:34) писал:

Решил обмазаться буонд-кодом, смотрю я в него, вроде понятен, но вот структура полного имени чего-либо, к примеру, Инженерного Шкафчика с замком

не понятна, по древу папок не сопоставляется, по нахождению спрайта так же. И что это?

Так выглядит местонахождение файла:

.

А так местоположение в спрайта:

.

Иерархия объекта в Бьенде (с наследованием характеристик и прочими фичами) и его расположение в дриммейкере. В данном случае, этот путь говорит, что личный шкафчик инженера относится к запираемым на замок шкафчикам, которые в свою очередь относятся к просто шкафчикам, а те к структурам, которые являются "обж". То есть не полнотайловыми объектами в бъенде.

Скопировать ссылку

Обратно в Кодинг