IPB

Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

>

Скрипты

 
 Орион
сообщение 13.07.2009, 11:34
Сообщение #201


Навий черны у ношьти
***************

Группа: Забанен
Сообщений: 2210
Регистрация: 11.03.2009
Из: Лиманск
Пользователь №: 10251




FAQ

Lua в X-Ray

Список всех функций, переменных, классов и т.п. что используются в Сталкере находится по адресу:
Код
gamedata/scripts/lua_help.script

Для получения файла надо распаковать игру. Можно скачать, в принципе (IMG:style_emoticons/default/smile.gif) Тут =>>Ссылко<<=
Уроки

Пример создания непися скриптами ЛУА. Автор: меченый(стрелок)
Скриптинг на инсайде



Сообщение отредактировал RayTwitty - 09.06.2018, 20:23
Перейти в начало страницы
 
 
 
Ответов
 aka_sektor
сообщение 05.12.2017, 20:48
Сообщение #202


Мастер Игры
************

Группа: Участник
Сообщений: 1335
Регистрация: 04.04.2013
Из: Беларусь
Пользователь №: 16432



Цитата(RayTwitty @ 05.12.2017, 20:15) *
ставить колбек

Да, там ниже это и предложили: http://www.amk-team.ru/forum/topic/8806-co...;comment=350365

Вот только с колбеком on_item_take есть косяк, описанный в этом посте: http://www.amk-team.ru/forum/topic/6185-sk...comment=1122162

Цитата(RayTwitty @ 05.12.2017, 20:15) *
надо делать на net_spawn

Можешь показать?

Вообще, предложили дописать проверку актера на nil, вот так:
Код
function sad_predateli_pda()
if db.actor ~= nil and db.actor:object("sad_mudak_pda") ~= nil and not db.actor:has_info("sad_predateli_info") then
db.actor:give_info_portion("sad_predateli_info")
end
end


UPD:
Проверил - больше не вылетает.

Сообщение отредактировал aka_sektor - 05.12.2017, 21:05
Перейти в начало страницы
 
 
 RayTwitty
сообщение 27.05.2018, 17:00
Сообщение #203


Кандидат Игровых Наук
******************

Группа: Участник
Сообщений: 3056
Регистрация: 24.09.2010
Пользователь №: 14086



Запамятовал, ключом таблицы в Lua может быть только строка или целое число?))

upd:
Цитата
Тип table (таблица) реализует ассоциативные массивы, это значит, что массив может быть проиндексирован не только числами, но и любым Lua значением, кроме nil и NaN. (Not a Number специальное значение для представления неопределенных и непредставимых числовых результатов, таких как 0/0.) Таблицы могут быть гетерогенными (разнородными); т.е. могут содержать значения всех типов (кроме nil). Любой ключ со значением nil не считается частью таблицы. И наоборот, любой ключ, не являющийся частью таблицы, имеет ассоциированное значение nil.

Действительно работает))
Код
local t1 = { [1] = "one" }

local t2 = { [t1] = "two" }

print(t2[t1]) --> "two"

Хотя на практике я не встречал, чтобы в качестве ключей использовалось что-то отличное от числа или строки.

Сообщение отредактировал RayTwitty - 27.05.2018, 17:30
Перейти в начало страницы
 
 
 TIGER_VLAD
сообщение 27.05.2018, 17:59
Сообщение #204


Игрок
***

Группа: Участник
Сообщений: 49
Регистрация: 26.07.2015
Пользователь №: 22186



Цитата(RayTwitty @ 27.05.2018, 17:00) *
Запамятовал, ключом таблицы в Lua может быть только строка или целое число?))

upd:
Цитата
Тип table (таблица) реализует ассоциативные массивы, это значит, что массив может быть проиндексирован не только числами, но и любым Lua значением, кроме nil и NaN. (Not a Number специальное значение для представления неопределенных и непредставимых числовых результатов, таких как 0/0.) Таблицы могут быть гетерогенными (разнородными); т.е. могут содержать значения всех типов (кроме nil). Любой ключ со значением nil не считается частью таблицы. И наоборот, любой ключ, не являющийся частью таблицы, имеет ассоциированное значение nil.

Действительно работает))
Код
local t1 = { [1] = "one" }

local t2 = { [t1] = "two" }

print(t2[t1]) --> "two"

Хотя на практике я не встречал, чтобы в качестве ключей использовалось что-то отличное от числа или строки.


А еще для строковых ключей квадратные скобки можно не указывать:
local my_t = {green="зеленый", yellow="желтый", red="красный"}
Перейти в начало страницы
 
 
 kiperenok
сообщение 09.06.2018, 19:56
Сообщение #205


Игровой Эксперт
***************

Группа: Участник
Сообщений: 2377
Регистрация: 14.02.2009
Из: Украина, Луганск
Пользователь №: 9848



Объясните пожалуйста синтаксис второй строчки кода, что делает двоеточие ? Вообще интересует синтаксис двоеточия в Lua.

local visualMonitor = require( "com.ponywolf.visualMonitor" ) -- к локальной переменной visualMonitor подключить файл visualMonitor
local visMon = visualMonitor:new()
Перейти в начало страницы
 
 
 RayTwitty
сообщение 09.06.2018, 20:14
Сообщение #206


Кандидат Игровых Наук
******************

Группа: Участник
Сообщений: 3056
Регистрация: 24.09.2010
Пользователь №: 14086



Цитата(kiperenok @ 09.06.2018, 19:56) *
Объясните пожалуйста синтаксис второй строчки кода, что делает двоеточие ?

Обращение к полю. Погугли операторы и метатаблицы Lua.

Вот неплохое руководство по Lua: https://yadi.sk/d/4EUvTWhzdnAve
Перейти в начало страницы
 
 
 kiperenok
сообщение 09.06.2018, 20:22
Сообщение #207


Игровой Эксперт
***************

Группа: Участник
Сообщений: 2377
Регистрация: 14.02.2009
Из: Украина, Луганск
Пользователь №: 9848



Цитата(RayTwitty @ 09.06.2018, 20:14) *
Цитата(kiperenok @ 09.06.2018, 19:56) *
Объясните пожалуйста синтаксис второй строчки кода, что делает двоеточие ?

Обращение к полю. Погугли операторы и метатаблицы Lua.

Вот неплохое руководство по Lua: https://yadi.sk/d/4EUvTWhzdnAve

А так это просто книга Роберта Иерусалимски - просто интерактиваная. Спасибо что скинул ссылку. Че то бегло пробежался по метатаблицам и такого не увидел (IMG:style_emoticons/default/sad.gif)
Перейти в начало страницы
 
 
 abramcumner
сообщение 09.06.2018, 20:27
Сообщение #208


Доктор Игровых Наук
*******************

Группа: Участник
Сообщений: 3511
Регистрация: 27.04.2011
Из: Россия
Пользователь №: 14366



Цитата(kiperenok @ 09.06.2018, 20:22) *
Че то бегло пробежался по метатаблицам и такого не увидел (IMG:style_emoticons/default/sad.gif)

А в операторах нет оператора двоеточие и в метатаблицах нет (IMG:style_emoticons/default/smile.gif)
Двоеточие это синтаксический сахар для сокращения записи.
Запись
local visMon = visualMonitor:new()
эквивалентна
local visMon = visualMonitor.new(visualMonitor)

То есть объект перед двоеточием передается первым параметром в функцию.
А при объявлении функции через двоеточие в функцию добавляется первый аргумент self.

https://www.lua.org/manual/5.3/manual.html#3.4.11
Цитата
The colon syntax is used for defining methods, that is, functions that have an implicit extra parameter self. Thus, the statement
function t.a.b.c:f (params) body end
is syntactic sugar for
t.a.b.c.f = function (self, params) body end


Сообщение отредактировал abramcumner - 09.06.2018, 20:27
Перейти в начало страницы
 
 
 kiperenok
сообщение 19.06.2018, 14:07
Сообщение #209


Игровой Эксперт
***************

Группа: Участник
Сообщений: 2377
Регистрация: 14.02.2009
Из: Украина, Луганск
Пользователь №: 9848



abramcumner помоги со следующим: (IMG:style_emoticons/default/rolleyes.gif)

function instance:touch(event)
self.xScale, self.yScale = 0.95, 0.95
end


Как я это понял - self это первый скрытый параметр у функции, тогда получается у функции touch первым аргументом идет instance, а вторым event.
Тогда self.xScale равносильно instance.xScale ?
Перейти в начало страницы
 
 
 Neo][
сообщение 19.06.2018, 14:33
Сообщение #210


The One
****************

Группа: Участник
Сообщений: 2703
Регистрация: 05.12.2005
Из: Наша Раша
Пользователь №: 2566



kiperenok, по вопросу - в зависимости от того, как вызываешь touch и да, и нет (IMG:style_emoticons/default/smile.gif)
Если вызываешь, как instance:touch(ev) или instance.touch(instance, ev) то да, если же как instance.touch(other_table, ev) то нет.

Я думаю эта ссыль отвечает на все вопросы )

Сообщение отредактировал Neo][ - 19.06.2018, 14:36
Перейти в начало страницы
 
 
 kiperenok
сообщение 19.06.2018, 15:36
Сообщение #211


Игровой Эксперт
***************

Группа: Участник
Сообщений: 2377
Регистрация: 14.02.2009
Из: Украина, Луганск
Пользователь №: 9848



Цитата(Neo][ @ 19.06.2018, 14:33) *
Я думаю эта ссыль отвечает на все вопросы )

Не в моем случае (IMG:style_emoticons/default/laugh.gif) Там все на английском.
Перейти в начало страницы
 
 
 abramcumner
сообщение 19.06.2018, 16:12
Сообщение #212


Доктор Игровых Наук
*******************

Группа: Участник
Сообщений: 3511
Регистрация: 27.04.2011
Из: Россия
Пользователь №: 14366



Цитата(kiperenok @ 19.06.2018, 14:07) *
Как я это понял - self это первый скрытый параметр у функции, тогда получается у функции touch первым аргументом идет instance, а вторым event.
Тогда self.xScale равносильно instance.xScale ?

Да, все правильно. Но это странный подход - разбирать код таким образом (IMG:style_emoticons/default/smile.gif)
Тебе абревиатура ООП о чем-нибудь говорит? Объекты там, классы.

Цитата
Не в моем случае laugh.gif Там все на английском.

RayTwitty давал ссылку на эту же книгу на русском (IMG:style_emoticons/default/smile.gif)
Перейти в начало страницы
 
 
 kiperenok
сообщение 19.06.2018, 19:23
Сообщение #213


Игровой Эксперт
***************

Группа: Участник
Сообщений: 2377
Регистрация: 14.02.2009
Из: Украина, Луганск
Пользователь №: 9848



Цитата(abramcumner @ 19.06.2018, 16:12) *
RayTwitty давал ссылку на эту же книгу на русском (IMG:style_emoticons/default/smile.gif)

Нашел в книге на русском эту главу, прочитал - вот теперь все понятно. Всем кто помог БОЛЬШОЕ спасибо ! (IMG:style_emoticons/default/wink.gif)
Перейти в начало страницы
 
 
 
 

 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 20.08.2018, 03:55