Папка со скриптами: scripts
Формат скриптов: *.script
Открыват: любым текстовым редактором(даже блокнотом) Вот что я сейчас помню из своего опыта:
------------------------------
IF THEN ELSE
Обыкновенное условие:
if db.actor then
end
Запомните:
Сколько условий столько должно быть и end . Переизбыток или не достаток приведёт к вылетам.
Обыкновенное отрицательное условия
if not db.actor then
end
Условия с использованием else
if db.actor then
-- Действие
else --Иначе или противодействие
-- Действие
end
if db.actor then
-- Действие
elseif условие then -- Иначе если
-- Действие
end -- в данном случае нужен только один end т.к. это считается одним условием
Есть ли у гг объект и другой объект
if db.actor:object(obj) and db.actor:object(obj1) then
end
Если ли у гг объект или другой объект
if db.actor:object(obj) or db.actor:object(obj1) then
end
Если у гг один объект и другой или третий
if db.actor:object(obj) and db.actor:object(obj1) or db.actor:object(obj2) then
end
, но тут уже надо опиратся на логику, чтобы не ошибится в условии
--------------------------------------
Комментирование
Чтобы отключить\закомментировать строку используют два символа -
Также есть и блок коменнтариев
Начинается с
--[[
заканчивается
]]
---------------------------------------
Return
Я часто видел в модах проверки на наличие предметов у гг вида
if db.actor:object(obj) ~= nil then
return true
else
return false
end
Но можно воспользоватся и такой вещью как return и это будет выглядить так:
return db.actor:object(obj)
Значительно меньше не правда-ли? return может служить и заменой if
следовательно в нём возможны и такие виды:
return not
return условие and условие
return условие or условие
без end !
Недостаток:
в функци return может вызыватся лишь один раз в отличии от банальных if then
-----------------------------------------------
Объявление переменных
Все кто знаком со скриптами сталкера знает такую вещь как db.actor
Как много букв, а можно ли это как-то укаратить? Ответ: утвердительный!
До
db.actor:character_community()
После
gg:character_community()
db.actor и gg , где же меньше букв? Но какая разница где больше букв?!
А разница в том, что чем больше символом тем больше вес скрипта и чтобы
хоть как-то укоротить скрипт применяют вот такие выходки.
Что такое gg ясно, но где содержится значение переменно?
Ответ: в local
local - это такая хрень которая объявляет переменные.
выходит так
local gg = db.actor
gg:character_community()
Запомните:
никогда не делайте переменные такого вида:
db.actor = gg
Т.к. следуя логике выходит что такая глобальная вещь как db.actor будет
равна gg . Казалось-бы что такого? А в том что я незнаю))) Но когда я
так сделал появился вылет.
Объявленные переменные можно и изменять, но уже не через local :
gg = db.storage
Можно из также и уничтожать благодоря функции nil
Запомните:
Чтобы уничтожить функцию можно применять и nil
Никогда nil функции и ещё использующиеся переменные.
nil - это просто как бы сказать....ну как бы как чёрная
дыра...уничтожает без выделения информации что эффективнее обнуления,
т.к. 0 - это хоть какая-то информация, а nil - это полное её отсутствие.
----------------------------
Функции
Виды функций:
Пример простой функции
function test()
-- скрипт
end
Пример функции с параметрами:
function tst( i, o)
-- скрипт
end
После функции должен быть end
Значение функций:
В них содержатся условия, скрипты, переменные и всё остальное...переменные можно также и вне функции распалогать.
------------------------------------------
Вызов функций
Если вы хотите вызвать функцию из другого скрипта:
kuperday.call_func()
Если вы хотите вызвать функцию из этого же скрипта где и функция вызова
call_func()
Интересный факт:
Если в скрипте нет нужной функции, то движок будет его искать в _g.script
Если он там есть, то всё ок, если нет - вылет.
----------------------------------------------------
Всё... если чего-то не написал или не дописал извиняйте.
Если что не понятно, в личку или асю.
Автор: kuperday