В коде есть принципиальная ошибка, а именно использование функции has, когда нужно get. У словарей функция has проверяет наличие КЛЮЧА, а не его ЗНАЧЕНИЕ. То есть даже если б в словаре swordsman у ключа has_fire_resist стояло значение false, то условие if unit.has("has_fire_resist"): всё равно бы выполнилось и на консоль бы вывелось значение 10. А чтобы проверить значение у ключа в словаре используется функция get. Вот как это выглядит: extends Node2D var swordsman = { "name": "Swordsman", "weapon": "sword", "hp": 28, "has_fire_resist": true } func _ready(): print(calculate_damage_to_swordsman(swordsman, 20)) func calculate_damage_to_swordsman(unit, base_damage): if unit.get("has_fire_resist") == true: return base_damage/2.0 else: return base_damage
@frontend-pashtet2 жыл бұрын
Да, косяк есть. Хорошо, что ты заметил. И спасибо за развернутый комментарий. Закреплю его. Надеюсь, поможет кому-нибудь.
@GroledPlay3 жыл бұрын
Читал документацию и смотрел большие гайды по гдскрипт, этот материал укрепил мои знания, спасибо. Примеры на играх это приятно, движек же игровой)
@frontend-pashtet3 жыл бұрын
Это так приятно слышать. Я очень рад. Спасибо, что написал. Удачи в освоении Godot.
@NobodyHere5393 жыл бұрын
Рекомендую пройти в документацию и там всё прочитать, а на этом у меня всё
@PcPrincipal-w2c2 жыл бұрын
Ляяяя тернарный оператор рабочий получился кайф , спасибо человеку в коментариях за пример. И автору за курс👍, хоть у меня и бомбило пару раз когда понять немог
@ytroMdnAkciR Жыл бұрын
Ещё из курсов по питону помню, что при ретурнах можно не использовать else, ибо сам ретурн завершает работу функции
@neoddis_official2 жыл бұрын
сделай видео урок по audiostreamplayer и если выйдет расскажи все о нем, к примеру расскажи как сделать так чтобы музыка играла не прирываясь в 2 сценах но если мы открываем 3 сцену то она заканчивалась и в 3 сцене начиналась другая песня
@Опятьработа-л3т2 ай бұрын
СПАСИБО ДЯДЯ
@T3mak2 жыл бұрын
*Курс пройден* *Return Спасибо*
@frontend-pashtet2 жыл бұрын
Ахах) Остроумно:) Успехов в изучении движка.
@Andryuha_-ne7vt2 жыл бұрын
Сделал так же, только в библиотеку добавил значение "armor", которая так же как "hp" имеет числовой тип данных и при запуске весь урон уходит в "armor", а "hp" целое. Как перевести урон на "hp"?
@frontend-pashtet2 жыл бұрын
Если сидишь в дискорде, то заходи. Там можно код посмотреть будет и обсудить. Тут в комментах сложно discord.gg/mswNVD2M98
@zhelezzyaka_YT3 жыл бұрын
func calculate_fire_damage(unit, base_damage): if unit.get("has_fire_resist", true): return base_damage / 2.0 return base_damage лишняя строчка - строчка с else? без неё всё так же работает var base_damage = 20 var damage_to_swordman = (base_damage if swordman.get("has_fire_resist", false) else base_damage/2) print(damage_to_swordman) как-то так в виде тернарного оператора вышло
@frontend-pashtet3 жыл бұрын
Да, верно. else был лишним. Молодец! Один момент. Второй аргумент в unit.get("has_fire_resist", true) возвращает значение по умолчанию. Тут скорей подойдет false. Типа если не найдено сопротивление огню, то сопротивление огню отсутствует т.е. равно false. Если возвращать true, то if будет выполняться всегда, вне зависимости наличия сопротивления (кроме случаев, когда в словаре явно указан false) Молодец, что освоил тернарный оператор. Мне кажется, там местами перепутаны base_damage и base_damage/2. Но воспользовался ты им верно синтаксически. И теперь у тебя одна строчка вместо 4х. Это круто!
@n1ksen233 ай бұрын
@@frontend-pashtet я также нашёл решение через base_damage = base_damage / 2.0 в if и без else, return base_damage
@moler27012 жыл бұрын
А язык подойдёт для начала.....я просто не один язык не знаю и собираюсь начать с GDScript.?????
@frontend-pashtet2 жыл бұрын
GDScript относительно простой язык просто потому что, в нем почти ничего нет. Это плюс для начинающего. Но недостатком является, что он по сути привязан к Godot Engine, и для начинающих не очевидно: 1) что является частью GDScript, 2) а что является частью движка. Попробуй держать эту мысль в голове и начни просто с изучения языка без привязки к играм. Можешь начать с вот этой страницы документации. docs.godotengine.org/ru/stable/tutorials/scripting/gdscript/gdscript_basics.html После этого уже можно осваивать возможности движка с помощью GDScript. P.S. если опыта программирования нет вообще, то GDScript это хорошее начало. Я бы не стал браться за C# только потому что на нем можно найти работу и он в других движках востребован. Знание одного языка достаточно просто транслируются в знание другого. Если будут вопросы, можешь писать в дискорде.
@minimalstory3 жыл бұрын
пили дальше)
@kamillayesa3 жыл бұрын
Где же это видео было во время моей учебы? Оно бы неплохо помогло бы с разработкой индивидуального проекта в колледже
@frontend-pashtet3 жыл бұрын
Спасибо за комментарий. Мне важно понимать, каким получился материал. И такие комментарии очень ценны. Надеюсь, оно еще кому-нибудь поможет.
@nomuraut84462 жыл бұрын
Что за колледж?
@kromvelua4410 Жыл бұрын
Идентификатор "swordsman" не обьявлен в текущей области. Как решить это?
@frontend-pashtet Жыл бұрын
Необходимо объявить переменную с этим именем. Через var swordsman
@kromvelua4410 Жыл бұрын
@@frontend-pashtet так она у меня есть, объект то записывается в переменную, я все делал как на видео, а потом попробовал сделать как в клиенте тут, и его код сработал , а мой абсолютно идентичный не робит....
@kromvelua4410 Жыл бұрын
@@frontend-pashtet Можем в ДС это все обсудить, у меня есть ещё вопросы.
@frontend-pashtet Жыл бұрын
@@kromvelua4410 можем. Залетай на сервер. Там могут и другие участники помочь со сложностями разобраться discord.gg/sbHnmUphMC
@ИльичьЛенин-й5ш3 жыл бұрын
я правильно понял , если "has_fire_resist": будет ложь , то урон все равно будет урезан , тут важно наличие строчки "has_fire_resist" в словаре ?
@frontend-pashtet3 жыл бұрын
Да, ты правильно все понял. В видео ошибка. Там должно быть unit.get("has_fire_resist"). Если ключа не будет, то вернется null и все будет работать как надо. Можно еще написать unit.get("has_fire_resist", false). Второй аргумент это значение, которое вернется, если ключ не найден. Но null нас тут тоже устраивает, Молодец! Отлично заметил.
@sket97912 жыл бұрын
Он не обьктно ориентированный, верно?
@sket97912 жыл бұрын
Переменная, сразу классом становится, точнее структурой
@frontend-pashtet2 жыл бұрын
Думаю, можно сказать, что объектноориентированный. Классы есть, наследование есть. Не такой набор ООП как в матёрых языках, но это и норм. Это ведь простой язык. Хорошо, что его не перегрузили фичами. Кстати, вчера вышло новое видео про ООП в годо. Как раз можешь глянуть по этой теме.
@T3mak2 жыл бұрын
@@frontend-pashtet а инкапсуляция и полиморфизм имеются?)
@frontend-pashtet2 жыл бұрын
@@T3mak имеются, но модификаторов доступа и интерфейсов, например, нет. Вот я делал видео про ООП элементы Наследование скриптов / ООП в Godot Engine kzbin.info/www/bejne/gHmck4Fsd9Bjrac
@T3mak2 жыл бұрын
@@frontend-pashtet и хорошо, что нет. Самые мутные темы, в C# можно голову сломать, пока поймёшь, где, как, когда и зачем использовать (хотя в крупных проектах это полезно, конечно). А видео сейчас гляну 👌🏻
@Lavokast Жыл бұрын
Курс хороший но я бы дал базовый набор команд как перемещения вывод картинок и тд
@foxvicrot345711 ай бұрын
что значит возвращение? Где можно узнать об этом подробнее, чтобы не запутаться
@iliiakozhan51632 жыл бұрын
func FONK -> void return дикий фооооонк!
@scorpyon79882 жыл бұрын
А функцию в функции нельзя делать?
@frontend-pashtet2 жыл бұрын
Функцию внутри функции объявить (создать) нельзя, но использовать в других функциях можно. Надеюсь, ответил.