Моддинг для начинающих. Вопросы и ответы

Автор Mathias Duke, 19 июня 2015, 18:49:29

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Mathias Duke

Круто, но я к сожалению последние дни что-то слишком ленив и неудачи в плане переводов Великой Войны с остатками Мемуаров и фейловые попытки в скрипты только усилили эту лень :-\ Надо будет хотя бы Наполеонику перепилить в норм качестве на днях, а то совсем без дела сижу.
Моя помойка с варгеймами тут - https://disk.yandex.ru/d/2vIbgFH3012ZGw
Мой стимчик
  •  

Pard

Цитата: Langraff от 19 июня 2015, 18:49:29не знаю дают ли какие-то баны за запрещенный контент или нет
За первый раз банят на неделю. Дальше - не знаю.
Game listPnP2PnP1BGG tops
  •  

hickname

Цитата: MifReal от 09 мая 2016, 19:07:24
Вопрос на засыпку... дайте синтаксис функции lock() . Понимаю что вопрос может быть глупым!
Вопрос действительно глупый. Синтаксис проще некуда: object.lock()
Цитата: MifReal от 09 мая 2016, 19:07:24
И есть возможность как-нибудь узнать свои координаты)? А то приходится расставлять снаппоинты чтоб координаты вытащить
Конечно есть!
getPosition() - получить координаты.
getRotation() - получить ориентацию объекта. Например карта может быть вверх ногами или вверх рубашкой, при этом координаты будут одинаковы.
Соответственно есть setPosition() и setRotation() - установить координаты и ориентацию.
  •  

MifReal

#303
Вобщем-то еще раз проверил.
в формулировку object.lock() получаем в ответ: attempt to index a nil value.

Есть переменная "ctile"
ctile = GetObjectFromGUID(t1B3B_guid)
ctile.lock()
Нет?
  •  

hickname

Да, все так.
У меня такую ошибка выскакивает, когда GUID неправильный. Ты как t1B3B_guid заполнял?
  •  

MifReal

#305
Guid правильный, т.к. он мне нужный тайл достает из мешка и кладет на  нужное место...

t1B3B_guid = '44b74a'
t1B3B = {}

function onload()
t1B3B = GetObjectFromGUID(t1B3B_guid)
ну а далее по тексту
  •  

hickname

Тогда не знаю. У меня работает:

piece={}
pieceGUID="500eff"
function onload()
piece=getObjectFromGUID(pieceGUID)
piece.lock()
end

Естественно это в глобал писать надо.
  •  

MifReal

Из опыта: в Global`е текст скрипта пропадает (становится невидимым) после 1074 строчки. С чем связана цифра - сказать тяжело, но вот так..
  •  

Mathias Duke

Вижу у вас тут уже всё налажено, а я тем временем забил на это дело и сел за очередной перевод :-\
Моя помойка с варгеймами тут - https://disk.yandex.ru/d/2vIbgFH3012ZGw
Мой стимчик
  •  

MifReal

#309
Langraff, нифига у меня не налажено))
Я накатал простейший кусок кода, а когда начал добавлять функции выяснил, что из-за прогрузки элементов поля (доставаемых из мешка итд) появляется куча проблем. Я задаю куда положить тайл, и как его повернуть, а они вращаются все одновременно и "мешают" друг другу, сдвигая, откидывая итд итп.... в результате гениальная изначально идея почти встала мертвым грузом. Залочить тайл я так и не смог... вращать тайлы приходится на разных высотах... Я пытаюсь найти функцию задачи промежутков времени между действиями или хотяб до "onload".
Вобщем бед оказалось очень много =(
http://файлообменник.рф/u88xesydc13z.html
Вот мой сейв на всякий случай. Не самая последняя версия скрипта, но хоть как-то рабочая (Доступны миссии в "База" М01 и обучающая М00)
Причем нашел еще один интересный для себя момент. Ориентация элементов на столе - {x=0,y=0,z=0} -это ни фига не то, как они лежат в мешке... это почему-то {x=0,y=+90,z=0}
  •  

hickname

Не качается сейв. The service is not available. Please try again later.
Почему он такой тяжелый кстати - 4 с лишним метра? Там же только текст.
Даже интересно, почему тайл не лочится...
  •  

MifReal

#311
http://файлообменник.рф/u88xesydc13z.html

Попробуем так =(...
Почему такой вес - хз... у меня скрипт уже занимает под 1200 строк... и это только его 1/30 часть...
Я всю жизнь любил Pascal  и Delphi...  достаточно не плохо их знал в начале 2000-х...
а вот С++ и С# как-то не пошли =(... наверное просто не было такой надобности острой...
Но в LUA с местным API оказалось просто неприличное количество подводных камней на пустом месте.... это пересечение и взаимодействие между объектами просто выбешивает... почему нельзя поместить объект уже повернутым на нужные углы, а надо его вытащить и только потом повернуть блин...

Меня вот эта штука смущает... я немного не понимаю что  понимается под callback
Takes an Object from this container (Loot Bag, Deck, and Infinite Bag), moves, and rotates it to the specified position and rotation. Returns a reference to the taken Object. Since executing the Lua scripts on the taken object and other initialization takes a few frames, any operations that need to be performed on this object immediately after it is taken from the container should be done in the callback function. The callback prevents needing to use a coroutine and yielding/waiting multiple frames. All of the parameters are optional and defers to default values if any of the lines are not included. If you want all of the default values, just pass in an empty table.
  •  

hickname

Если в двух словах - callback это функция, которая передается как аргумент другой функции. Чаще всего используется для асинхронного программирования. Сейчас не могу точнее сформулировать, попробую завтра объяснить.
  •  

tikitavy

Цитата: MifReal от 11 мая 2016, 20:16:33что  понимается под callback
Цитата: hickname от 11 мая 2016, 22:14:16Сейчас не могу точнее сформулировать, попробую завтра объяснить.
В сети хватает толковых объяснений: wiki, хабр

hickname

На хабре ничего толкового не написано. Вот в Википедии - то, что нужно.
  •  

tikitavy

Цитата: hickname от 12 мая 2016, 13:29:10Вот в Википедии - то, что нужно.
Хабр привёл как вариант объяснения, в гугле ссылок больше, конечно. Я и книги толковые встречал, но подсказать по памяти не готов.

MifReal

#316
Так понял почему не происходит лок и все остальное. Просто объект еще не загрузился!
Вопрос как сделать проверку на загрузку
Или как организовать аналог функции onload()  в качестве подпрограммы?
  •  

hickname

Цитата: MifReal от 13 мая 2016, 22:02:35
Так понял почему не происходит лок и все остальное. Просто объект еще не загрузился!
Вопрос как сделать проверку на загрузку
Или как организовать аналог функции onload()  в качестве подпрограммы?
Только задержка таймером в голову приходит.
  •  

MifReal

#318
Пока обошелся без таймера, путем лишнего нажатия кнопки мыши на дополнительную кнопку.

Если еще не готовы убить, то еще пару вопросов:
1) Функция SetState. 
Есть токен который был вытащен из бесконечного мешка.
--[[7 - ЗЕЛЕНАЯ--]]
params.position = {-6.5,3.2,5.285}
ctoken = d3dbag.takeObject(params)
ctoken.setColorTint{0,1,0}
ctoken.setState(2)
ctoken.setColorTint{0,1,0}
ctoken = {}
params = {}

Так вот на строке ctoken.setState (2) [у объекта 2 модели (в данном случае открытая и закрытая дверь, объединенных в State с параметрами [1] и [2]). В ответ на эту строку получаю "cannot access field set state of user data <LuaGetObjectScript>". В чем может быть ошибка? (Подозреваю опять же в прогрузке... =( ).

2) А как положить объект в мешок, просто задать координаты мешка?
  •  

hickname

1) Похоже, когда токен берется из мешка, с ним вообще ничего сделать нельзя в этой функции. Я пытался встроенную фишку из мешка достать и залочить - не работает... Только если другой кнопкой вызывать другую функцию. На форуме TTS создал тему, буду смотреть , что ответят...
2) Да, задаешь координаты мешка и объект туда убирается.
  •