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

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

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

code ss13

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

PlIn#251
Ебучий битбакет без поиска по коду, скачаю - посмотрю.
0
Изображение
Скопировать ссылку
Guap6512#252
Kinrany (08 January 2015 - 06:28) писал: писал:
Для остальных ботов при тэйблкрафтинге горелка вообще не нужна.

Что делает qdel()?
Это аналог del для мусоросборщика.
0
Изображение
Скопировать ссылку
LethalGhost#253
Проверка горелки:
remove_fuel(сколько нужно топлива:число, кто использует:моб)
Вернет 1 если операция прошла успешно, иначе 0.
Сообщения о недостатке топлива, выключеном состоянии и тд сам отправляет мобу.
0
Скопировать ссылку
LethalGhost#255
Kinrany (10 January 2015 - 04:39) писал: писал:
Вопрос в том, как это запихнуть в table_recipe, где всё листами описывается.
В каком файле это описано?
0
Скопировать ссылку
LethalGhost#257
Kinrany (10 January 2015 - 05:03) писал: писал:
game/objects/structures/tables_racks.dm
Ох, у меня нету билда станции под рукой, а на гитхубе в этом файле table_recipe нету.
В целом делается это так:

- Добавь в table_recipe переменную weld_need (например).
- В нее записывай, сколько топлива нужно столу для создания.
Дальше два варианта:
1)
- В том месте, где стол должен спаунится делаем проверку:
if  (recipe.weld_need != 0)
{
var obj/item/weapon/welder/W = usr.не_активная_рука();
// не_активная_рука, так как предполагается, что активной он "делает стол".
// По хорошему надо дописать проверку обеих рук.
if (!istype(W)) return;
if (!W.remove_fuel(recipe.weld_need, usr)) то return;
}
2)
- Вместо стола спаунить "несваренный стол", в который передавать weld_need
- Для несваренного стола, в proc attack_by, сделать проверку из варианта 1, но брать usr.активная_рука().
- Заспаунить нужный стол.
Сообщение отредактировал LethalGhost: 10 January 2015 - 06:45
0
Скопировать ссылку
ucnaHez#258
LethalGhost (10 January 2015 - 06:43) писал: писал:
Ох, у меня нету билда станции под рукой, а на гитхубе в этом файле table_recipe нету.
В целом делается это так:

- Добавь в table_recipe переменную weld_need (например).
- В нее записывай, сколько топлива нужно столу для создания.
Дальше два варианта:
1)
- В том месте, где стол должен спаунится делаем проверку:
if  (recipe.weld_need != 0)
{
var obj/item/weapon/welder/W = usr.не_активная_рука();
// не_активная_рука, так как предполагается, что активной он "делает стол".
// По хорошему надо дописать проверку обеих рук.
if (!istype(W)) return;
if (!W.remove_fuel(recipe.weld_need, usr)) то return;
}
2)
- Вместо стола спаунить "несваренный стол", в который передавать weld_need
- Для несваренного стола, в proc attack_by, сделать проверку из варианта 1, но брать usr.активная_рука().
- Заспаунить нужный стол.

Я, конечно, часто удивлялся, зачем этот таблекрфат на ТГ, и так и не понял.
Но по предыдущим постам я понял, что он позволяет крафтить на столе бота - бибская там. А не крафтить стол.
0
Изображение
"[usr] весь такой кодер."
Скопировать ссылку
Kinrany#259
ucnaHez (10 January 2015 - 07:04) писал: писал:
Я, конечно, часто удивлялся, зачем этот таблекрфат на ТГ, и так и не понял.
Но по предыдущим постам я понял, что он позволяет крафтить на столе бота - бибская там. А не крафтить стол.
Вот это. Позволяет крафтить разные штуки, закидывая компоненты на стол и перетаскивая на себя.
0
Скопировать ссылку
PlIn#260
Переписать check_tools, чтобы вычитал топливо из горелки.
0
Изображение
Скопировать ссылку
Exo_Revan#261
Есть ли возможность закодить слепого моба, который реагирует на речь, шаги и движение рядом с ним?
0
The Rodger8games (13 December 2015 - 11:12) писал: писал:
В пизду вас всех,в пизду этот сайт, в пизду ВСЕ!ПОЧЕМУ СУКА,Я БЛЯТЬ СДЕЛАЛ ВАМ ВОПРОС,А ВЫ МНЕ ПЛАШКУ ПОСТАВИЛИ,СУКИ!
OOC: Anton Jenkins: А он атаковал меня, пока ты в РП
Tertiumdatur: Мы все ошиблись, когда открыли для себя сску.
Скопировать ссылку
intercross#262
Exo_Revan (12 March 2015 - 21:37) писал: писал:
Есть ли возможность закодить слепого моба, который реагирует на речь, шаги и движение рядом с ним?
Сделать слепым - можно. Реагировать на речь - можно. Шаги и движения это уже нужно пилить отдельно.
0
Игровая конференция в ТСе: wetskrells.net
Мы вам рады.

Мокрые скреллки (WIP)
Скопировать ссылку
Exo_Revan#263
intercross (12 March 2015 - 21:40) писал: писал:

Сделать слепым - можно. Реагировать на речь - можно. Шаги и движения это уже нужно пилить отдельно.
Спасибо. Я тут прочел День триффидов и решил освоить код и дать ботаникам еще одну грифозную фичу.
0
The Rodger8games (13 December 2015 - 11:12) писал: писал:
В пизду вас всех,в пизду этот сайт, в пизду ВСЕ!ПОЧЕМУ СУКА,Я БЛЯТЬ СДЕЛАЛ ВАМ ВОПРОС,А ВЫ МНЕ ПЛАШКУ ПОСТАВИЛИ,СУКИ!
OOC: Anton Jenkins: А он атаковал меня, пока ты в РП
Tertiumdatur: Мы все ошиблись, когда открыли для себя сску.
Скопировать ссылку
intercross#264
Exo_Revan (12 March 2015 - 21:44) писал: писал:
Спасибо. Я тут прочел День триффидов и решил освоить код и дать ботаникам еще одну грифозную фичу.
Если только осваиваешь - то это довольно сложная задумка, которая требует знание архитектуры кода сс13, кратко, знания того, как пользоваться тысячами уже сделанных вещей. Всякие полезные методы и переменные.
0
Игровая конференция в ТСе: wetskrells.net
Мы вам рады.

Мокрые скреллки (WIP)
Скопировать ссылку
Exo_Revan#265
intercross (12 March 2015 - 23:14) писал: писал:

Если только осваиваешь - то это довольно сложная задумка, которая требует знание архитектуры кода сс13, кратко, знания того, как пользоваться тысячами уже сделанных вещей. Всякие полезные методы и переменные.

Мне кажется, можно просто найти в билде код ходячих грибов и перепилить им несколько параметров.
Олсо, можно вместо слепоты ограничить им ЛоС, или даже не ограничивать, а предположить, что они ну очень хорошо слышат.
Хотя лучше все же ослепить.
0
The Rodger8games (13 December 2015 - 11:12) писал: писал:
В пизду вас всех,в пизду этот сайт, в пизду ВСЕ!ПОЧЕМУ СУКА,Я БЛЯТЬ СДЕЛАЛ ВАМ ВОПРОС,А ВЫ МНЕ ПЛАШКУ ПОСТАВИЛИ,СУКИ!
OOC: Anton Jenkins: А он атаковал меня, пока ты в РП
Tertiumdatur: Мы все ошиблись, когда открыли для себя сску.
Скопировать ссылку
intercross#267
kostenoj (16 March 2015 - 04:32) писал: писал:
Скиньте пожалуйста строки кода от термита с тг билда хочу похожее в-во сделать везде ковырялся не нашёл
/code/modules/reagents/Chemisty-Reagents.dm:643
0
Игровая конференция в ТСе: wetskrells.net
Мы вам рады.

Мокрые скреллки (WIP)
Скопировать ссылку
alkoz#268
Мн енужна небольшая помощь. Возможно, я плохо понимаю архитектуру огнестрела в коде, а может, я просто где-то опечатался, но в любом случае, получается говно. Говнокод вкину, когда домой доберусь, пока что просто абстрактное описание проблемы.

Что я сделал:
  • Закодил новый револьвер, наследник обычного револьвера (от которого все револьверы наследуются). У него свой калибр, цилиндр, и имя с описанием.
    /obj/item/weapon/gun/projectile/revolver/chaplain_mini
       desc = "A tiny revolver gun The Church equips every priest with as last-resort self-preservation measure. It has tiny stamp of Norgo's Armory - the most  famous manufacturer of consecrated weaponry."
       name = "Absolutor"
       icon = 'code/WorkInProgress/alkoz/religion.dmi'
       w_class = 1.0
       mag_type = /obj/item/ammo_magazine/internal/cylinder/c635///obj/item/ammo_magazine/internal/cylinder/rev38
  • Написал цилиндр, который отличается от цилиндра-предка только (новым) типом кейсингов и калибром.
    /obj/item/ammo_magazine/internal/cylinder/c635
    	name = "detective revolver cylinder"
    	ammo_type = /obj/item/ammo_casing/c635
    	caliber = "6.35mm"
    	cylinders = 6
    	max_ammo = 6
  • Закодил новый аммо кейсинг, который отличается от кейсингов оригинального револьвера только калибром. И прожектайлами. Приписал в качестве прожектайлов детективские резиновые пули.
    /obj/item/ammo_casing/c635
       desc = "A 6.35mm rubber bullet casing."
       caliber = "6.38mm"
       projectile_type = /obj/item/projectile/bullet/weakbullet
  • Затем написал  коробку (ammo_box) с теми же кейсгами и калибром. Обозвал спидлоудером.
    /obj/item/ammo_magazine/box/c635
       name = "speed loader (6.35mm)"
       desc = "A box of 6.35mm ammo."
       icon_state = "38"
       caliber = "6.35mm"
       ammo_type = /obj/item/ammo_casing/c635
       max_ammo = 6
       multiple_sprites = 1
Что я получил:
  • Револьвер, который может выпустить барабан патронов, но не может быть перезаряжен с помощью спидлоудера. Его так же можно разрядить и без стрельбы, как и любое другое оружие. Выпадают требуемые кейсинги.
    СпойлерИзображение

  • Спидлоудер, из которого можно вытрясти кейсинги, но нельзя засунуть их обратно.
    СпойлерИзображение
  • Поебавшись с дебагом, я вяснил, что attackby револьвера срабатывает, воспринимает спидлоудер как тип "короба с патронами", но дальше этого ничего не происходит (а по коду, там цикл в котором каждая пулька из бокса закидывается в барабан револьвера).
    СпойлерИзображение
    /obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob, var/show_msg = 1)
    if(istype(A, mag_type) && !magazine)
    user.drop_item()
    magazine = A
    magazine.loc = src
    user << "You load a new magazine into \the [src]!"
    chamber_round()
    A.update_icon()
    update_icon()
    return 1
    
    world << "Weapon is touched"
    else if(istype(magazine, /obj/item/ammo_magazine/internal))
    var/num_loaded = 0
    if(istype(A, /obj/item/ammo_magazine))
    world << "Is touched by ammo"
    var/obj/item/ammo_magazine/AM = A
    for(var/obj/item/ammo_casing/AC in AM.stored_ammo)
    if(magazine.give_round(AC))
    world << "Casing is loaded"
    AM.stored_ammo -= AC
    num_loaded++
    else break
    AM.update_icon()
    [...]
Где я мог напортачить?
1
Изображение
Спойлер
Скопировать ссылку
intercross#269
Проверь, есть ли в лоудере вообще патроны. Вообще они должны были добавиться ещё в ammo_magazine, но проверь. Единственное место, где может быть проблема это AM.stored_ammo, который, вероятно, пуст.
0
Игровая конференция в ТСе: wetskrells.net
Мы вам рады.

Мокрые скреллки (WIP)
Скопировать ссылку
ucnaHez#270
А мне еще предстоит увлекательное погружение в устройство оружий. Весело будет.

И алькоз, расставь табуляции.
0
Изображение
"[usr] весь такой кодер."
Скопировать ссылку
alkoz#271
intercross (20 March 2015 - 08:55) писал: писал:
Проверь, есть ли в лоудере вообще патроны. Вообще они должны были добавиться ещё в ammo_magazine, но проверь. Единственное место, где может быть проблема это AM.stored_ammo, который, вероятно, пуст.
Цитата
Спидлоудер, из которого можно вытрясти кейсинги, но нельзя засунуть их обратно.
Нет, они там определенно есть. их даже можно вытащить ручками. Но засунуть обратно их не получится.

ucnaHez (20 March 2015 - 09:21) писал: писал:
И алькоз, расставь табуляции.

В следующий раз буду скриншотить код. Табуляция сломана.
0
Изображение
Спойлер
Скопировать ссылку
intercross#272
alkoz (20 March 2015 - 10:13) писал: писал:
В следующий раз буду скриншотить код. Табуляция сломана.
Лучше сейчас сделай скриншот. Меня интересует attackby у револьвера и ammo_box, который в ammunition.dm
Или можешь сказать, на каком билде ты это делаешь.
0
Игровая конференция в ТСе: wetskrells.net
Мы вам рады.

Мокрые скреллки (WIP)
Скопировать ссылку
alkoz#273
intercross (20 March 2015 - 10:46) писал: писал:
Лучше сейчас сделай скриншот. Меня интересует attackby у револьвера и ammo_box, который в ammunition.dm
Или можешь сказать, на каком билде ты это делаешь.

Конкретно эта проблема возникла в гуаповском рибее.

Вот аттакбай у пушек:
Изображение

Вот аттакбай для ammo_magazine, который судя по всему, наследует ammo_box

Изображение
0
Изображение
Спойлер
Скопировать ссылку
intercross#274
Окей, другое дело. А теперь поставь проверки в метод give_round в mag_internal.dm и, думаю, ты сразу же найдёшь причину, ведь в том месте, где ты указал, код мог остановиться лишь по двум причинам: список пуст или give_round возвращает ноль.
0
Игровая конференция в ТСе: wetskrells.net
Мы вам рады.

Мокрые скреллки (WIP)
Скопировать ссылку
alkoz#275
Бля, я реально опечатался. Я прописал для цилиндра и кейсинга разные калибры. Поэтому в give_round проверка по калибрам фейлилась. Господи, я криворук.

Спасибо за помощь. Сам я бы никогда не нашел бы эту опечатку, разве что случайно.
1
Изображение
Спойлер
Скопировать ссылку

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