ФРПГ На форум Мой ПДА
Меню зоны
Вход в зону
Турист



СТАЛКЕР!
Я всегда рад видеть
еще одну живую душу!
Но я нез наю кто ты?



---

Список Сталкеров
У Костра




Stalker Shadow Chernobyl
Дата: 30/07/2018
War Groups
Дата: 08/01/2017
Call of Misery
Дата: 08/01/2017
S.T.A.L.K.E.R. Unpacker 1...
Дата: 11/07/2014
Вариант Омега
Дата: 14/11/2013
Shadows of Oblivion 3: Re...
Дата: 14/11/2013
Звездочет (Дозор Зоны)
Постов: 3676 | Репутации: 1098
Квартет (Дозор Зоны)
Постов: 2937 | Репутации: 5239
Джагер (Дозор ZONE)
Постов: 2690 | Репутации: 3965
Miami_Killer (Глава группировки)
Постов: 2127 | Репутации: 973
gromgold (Создатель Зоны)
Постов: 2028 | Репутации: 10085
Street (Житель)
Постов: 1958 | Репутации: 503
Пакет (Дозор Зоны)
Постов: 1731 | Репутации: 872
ST1TCH (Дозор Зоны)
Постов: 1404 | Репутации: 487

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » База по Модостроению » Скриптинг Lua » Скриптеры никогда не делайте так
Скриптеры никогда не делайте так
gromgoldДата: Четверг, 11/05/2017, 13:43:12 | Сообщение # 1
Глава ЧН [Гл.Администратор]
Группа: Создатель Зоны
Сообщений: 2028
Статус:
Хочу поделиться советом, как избежать ошибки, приводящей к вылету (на которую сам часто напарывался).

Надо проверить наличие предмета, и что-то сделать.

Допустим, надо выяснить какой броник надет на ГГ и изменить какие-то параметры.

честно пишем:

local outfit_in_slot=db.actor:item_in_slot(7)

if outfit_in_slot~=nil and outfit_in_slot:section_name()=="чегототам" then

полагая, что LUA проверит первое условие, и , если ГГ голый не будет проверять второе. Однако LUA честно проверит оба условия, а потом сделает вывод true или false. Вот, а теперь представим, что ГГ голый.

Первое условие nil

Второе условие можно интерпретировать так nil:section() -т.е попытку применить функцию объекта к пустоте. Краш!!! Попытка смешать французское с нижегородским в данном случае приводит к печальным результатам! А как?

local outfit_in_slot=db.actor:item_in_slot(7)

if outfit_in_slot~=nil then --если голый валим отсюда, а не узнаём покрой пиджака

if outfit_in_slot:section_name()=="чегототам" then

....................

end

end

Материал взят с сайта gsc-mod.ucoz.ru
 
Форум » База по Модостроению » Скриптинг Lua » Скриптеры никогда не делайте так
  • Страница 1 из 1
  • 1
Поиск: