Alex-San
1. Это НЕ моя конструкция, а из азбуки Сталкера (lua_help.script).
2. Если у ТЕБЯ не работает - это не означает что конструкция не работает вообще.
3. Читать и пременять функции нужно все же с умом, а не методом тыка.
И в каком мануале по LUA ты нашел прямое указание на функцию 'money()'? Если это некий пример, то и относиться к нему нужно как примеру, который не обязательно имеется в Сталкере.
Тем более применительно к игре ... это элемент массива 'userdata' объекта.
4.
db.actor:give_money(iMoney) --/ 'просто' дать денег актору
- iMoney - для любого программера ясно: параметр кол-ва денег (хоть отрицательное значение - тогда будет 'забрать').
- куда уж яснее и проще пояснить "КАК СКРИПТОМ ПРИБАВИТЬ ГГ ДЕНЕГ?" ???
Нужно не кричать, а ДУМАТЬ ... головой!
P.S.
Читая 'lua_help.script' нужно обращать внимание в 1-ю очередь к какому классу объекта применим метод/функция.
И если желаемой функции нет в 'namespace' (название тоже о чем то говорит!) - то пробовать ее 'напрямую' без объекта - глупо.
Меня сбило с толку твоя "local iMoney = db.actor:money() ", на кой фиг она вообще там нужна? В give_money, просто число передаётся и всё, зачем из неё обьекто делать?
Вот по запаре и вписал money() вместо give_money(сумма_прописью).
добавлено спустя 2 минут
#BeeRsek : win win тут искал: http://stalkerin.gameru.net ?
а точнее тут
_http://stalkerin.gameru.net/wiki/index.php/Заглавная_страница
добавлено спустя 1 минуту
на там нету( я смотрел
отредактировал(а) Alex-San: 14-07-2010 19:49 GMT3 час.
Alex-San
М-да ... с чтением и пониманием явно сложности.
Твое 'отнимание': db.actor:money() = db.actor:money() - какаянить_сумма
можно сделать по разному.
1.
local iMoney = db.actor:money()
db.actor:give_money(-iMoney) --/ отнять все
2. db.actor:give_money(-какаянить_сумма)
Привел ВСЕ возможные 'кирпичики' для того, чтобы САМОМУ выбрать каким вариантом делать.
Мои посты НЕ только для тебя предназначены и если тебе 'ни к черту', то кому-то может быть и полезным ... win win
Флудить нехорошо! :ary() Нарываешься на :ban: Один флудит, остальные ... рады расстараться, засоряя топик и посты набивая :-(
#Darien Fx :
Кстати, никогда не понимал смысла двоетичий '::', которые в оф. справке чуть ли не в каждом примере.
Ты знаешь, как человека далёкого от языков линейки С, меня это тоже напрягает, но это просто доступ к методу класса с использованием скрытого параметра SELF.
Короче, если сильно интересует то спрашивай, а если не очень - то плюнь.
Gun12
Однако ... если вспомнить опять таки свойства таблицы и ее наполнение то:
1. Собственно файл скрипта/модуль - суть таблица(!)
2. При инициализации скрипта/модуля - идет последовательное чтение строк ... которые заносятся в таблицу (модуле[...] = ...).
3. Локальные переменные/функции заносятся в субтаблицы в качестве значений.
4. Глобальные переменные/функции заносятся в качестве ключей.
При попытке занести неявно объявленное module[i+1] = var будет занесено нИловое значения ключа!
При следующей распарсиваемой строе последнее поле в таблице будет с nil значением и будет перезаписано!
В обшем что-то типа этого ... :-)
А с var ::= Name - это точнее объявление/присвоение, а не инициализация, хотя трактовки различны бывают.
Gun12
Это да, я в курсе. Просто мне непонятно, **5004c54314580bda8be6**r ::= prefixexp '[' exp ']'[/code]
Можно было бы вполне написать:
[code]var = table[key][/code]
Но оф. тутор не для новичков в программировании ведь, надо всё усложнить :-).А вот такие конструкции, когда начинал, честно говоря сразу пропускал:
[code]stat ::= for Name '=' exp ',' exp [',' exp] do block end[/code]
Где то валялся на компе кусок из книги Иерусалимского, вот там, насколько я помню, так же (:-)) гораздо лучше всё объясняется.
Думаю о таких вещах заморачиваться в топике не стОит, это уже углубление в понимание.
Наоборот, считаю в этом топике как раз нужно развивать подобные темы, что бы хоть как то отделять посты "как сделать бессмертие" от "как сделать непися". :-)
отредактировал(а) Darien Fx: 14-07-2010 22:45 GMT3 час.
Darien Fx
Тутор позволяет однозначно трактовать все многообразие ...
**5004c54314580bda8be6**f exp1 then block {elseif exp1 then block} [else block] end[/code]
- exp1 - условие
- block - некий блок кода
- {...} - допустимость наличия множества повторений для '...'
- [...] - допустимость однократного повторения для '...'
Т.е. прописаны все обязательные элементы для цикла и оговоривается допустимость наличия неограниченного кол-ва элементов {elseif exp1 then block} и допустимость единственного [else block] . С таким конструктором можешь делать хоть простейший цикл, хоть на сотню проверок. Gun12
Думаю о таких вещах заморачиваться в топике не стОит, это уже углубление в понимание.
Хотя понимание подобных конструкций позволяет именно полностью использовать все доступные варианты написания кодов.
Но ... объять в одном топике "как сделать бессмертие"/"как сделать непися" с трактовками туторов -невозможно. Это уже скорее оптимизация кодов, чем черновое кодирование.
Gun12: Если начать с малого, то понимание прийдёт само собой...
:-cool)
Именно так. Можно добавить:
"Ежели не начинать - то понимание может и не прийти" (примеров тоже немало :-G).
Artos
В принципе Вы правы. var - переменная, Name - имя. Darien Fx сорри, ввёл в заблуждение.
Но как я уже говорил, записи и определения из С для меня достаточно противоречивы и непонятны.
Дайте мне код на Lua - другое дело. А так получаются "догадалки".
Например сейчас изучаю wxLua. Практически все доступные примеры написаны на С.
Путём проб и ошибок нахожу решения. Оказывается всё очень просто, но тяжело даётся "перевод" с непонятного мне С на Lua.
В общем больше не буду мешать - работайте.
добавлено спустя 6 минут
Artos
Мы не можем упустить (как Вы сказали) "нами не предусмотренное", если не будем делать хотя бы предусмотренное.
А делая предусмотренное поймём не только непредусмотренное, но и весь смысл заложенный в трактовку записей официального тутора.
Кстати, именно это и заставило меня переписать офф. тутор по-своему.
Перевод (для тех кто не понял).
Если начать с малого, то понимание прийдёт само собой (хотя и не ко всем :-))
отредактировал(а) Gun12: 14-07-2010 22:41 GMT3 час. Не стань номинантом премии Дарвина.
Кстати, а реально ли присобачить ещё один скриптовый язык? Не обязательно к Сталкеру (с его то движком), а вообще - к любому проекту на, например, С++? И выполнять опр. действия с того языка, с которого это удобнее.
Darien Fx
А смысл? Lua считается самым простым и быстрым из языков ООП.
Недаром его применяют практически во всех современных играх (и не только).
А присобачить реально, но человеку (или команде) реально разбирающемся в ассемблере.
Artos
По следам Вашего сообщения ниже.
Повторяю уже в стомильЁнный раз. Люди, ну скачайте себе редактор с функцией "Поиск в файлах"
Когда возникнет вопрос, просто наберите интересующее слово в этом поиске и - О, ЧУДО! - Вы найдёте ответ САМИ!
отредактировал(а) Gun12: 14-07-2010 23:38 GMT3 час. Не стань номинантом премии Дарвина.
Как обычно долго парился с элементарной функцие relocate_money(бабло, обьект). Всё никак не мог понять, откуда взять обьект непися с которым я общаюсь. Конечно можно было и принудительно указать, но это как то не то.
Так вот оказывается! Если юзаешь функцию из диалога то можно при её задании указать два операнда (в dialogs.srcipt к примеру они названы - first_speaker и second_speaker). Причём! когда функция вызывается из диалога через action, она указывается безо всяких параметров!
Отсюда вопрос. Как интересно я должен был об этом догадатся?
И вытекающий отсюда вопрос. А там может ещё что то можно из диалога передать?
Alex-San
Ты очень сильно удивляешь.
Перед тобою кладезь оригинальных кодов от разрабов с кучей примеров!
Качай тоннами рабочие моды и смотри как сделали другие модмейкеры!
Или ты только на школьные знания и метод тыка опираешься?
При вызове из диалога /AddPrecondition() доступны аргументы:
function Precondition( oSpeaker1, oSpeaker2, sDlgId, idParent, idPhase )
При вызове из диалога /AddAction() доступны аргументы:
function Action( oSpeaker1, oSpeaker2, sDlgId, idPhase )
Где:
- oSpeaker1 - инициатор диалога (гейм-объект)
- oSpeaker2 - с кем болтает инициатор (гейм-объект)
- sDlgId - строка "идентификатор диалога" (т.е.назв**5001c54314580bda8be6**oActor:give_money(iAmount - iCanMoney) --/ добавляем ГГ остаток денег
end
else
oActor:give_money(iAmount) --/ добавляем деньги ГГ
end
elseif sType == "out" then --/ ГГ отдает деньги
if oVictim and oVictim:id() ~= oActor:id() then
oActor:transfer_money(iAmount, oVictim) --/ ГГ передает деньги НПС
else
oActor:give_money(-iAmount) --/ забираем деньги у ГГ
end
end
game_stats.money_quest_update(iAmount,sType) --/#?# а если не квестовая передача?
news_manager.relocate_money(oActor, sType, iAmount)
end
end
[/code]
Народ! у меня такой баг вышел при создании торгаша:
1) создал торговца
2) прописал ему чем он будет торговать
Баг таков что когда приходишь в бар (именно там я его смастачил) то у него половина того чем торгаш торгует, на полу (под ногами) валяется! А половина (в основном комбезы) у нпс!
У этого типа карман дырявый чтоли!?!?:-)
Byurrer, вроде гулаг и старттеррейн одно и тоже.
----------------------
Гулаг = лагерь
Смарттеррейн = лагерь на языке ПЫСа
В этом я уверен.
Я делал смарты.
----------------------
Через конфиги, скрипты и алл спавн. СДК не нужен вообще.
Для мобов легче
отредактировал(а) SkyLoader: 15-07-2010 10:38 GMT3 час.
Вот такой теоретический вопрос: как я понимаю гулаг в игре это лагерь сталкеров, а вот что такое смарттерейн? И может ли гулаг существовать без смрттерейна?
И еще: никак не могу точно понять что такой переход в онлайн и офлайн, как я понял это к примеру если объект существует должен появиться в определенном месте при каких либо условиях которые еще не настали то он в офлайне, а если в настали и он появился то в онлайне, так? Подскажите пожалуйста!
добавлено спустя 23 минут
SkyLoader вроде нет это разные а мож и одно и тоже, посмотрим что скажут знающие люди! А ты пробовал это сам делать? А то я пробовал по статьям нифига не вышло и спросить не у кого!
добавлено спустя 9 минут
SkyLoader а как ты делал через SDK или через блокнот? И для кого ты делал для мобов или НПС?
SkyLoader я в PM тебе написал прочти!!!
отредактировал(а) Byurrer: 15-07-2010 10:21 GMT3 час. project S.I.P
При экспорте оружия в Актор Едиторе вылетает, такая ошибка:
Expression : assertion failed
Function : i:\xray-svn\xrcore\_stl_extensions.h
File : i:\xray-svn\xrcore\_stl_extensions.h
Line : 43
Description : _Pos
stack trace:
Byurrer смарт террэйн это более динамичная версия гулага, онлайн/офлайн это состояния нпс/мутантов, в оффлайне они как призраки бродят по зоне, а в онлайне попадают под логику.
Last Day Mod Team work |==>>>ПОСЛЕДНИЙ ДЕНЬ
Кто понял с первого раза,
Тот ловит музу,
Когда каждая фраза
Ломает все сразу.
Byurrer, вроде гулаг и старттеррейн одно и тоже.
----------------------
Гулаг = лагерь
Смарттеррейн = лагерь на языке ПЫСа
В этом я уверен.
Я делал смарты.
----------------------
Через конфиги, скрипты и алл спавн. СДК не нужен вообще.
Для мобов легче
Секция Смарттеррейн = базовые установки гулага (количество неписей секция репавна и.т.д)
Гулаг. скрипт = расширенные параметры гулага (загрузка работ для неписей состояние работ предустановки )
Гулаг. лтх = логика работ (схемы поведения или цепочки схем условия переключения с одной схемы на другую и.т.д)
Как я понял онлайн это приобретение определенной логики и все? AAAAKKK как я понял без смарттерейна не может существовать гулаг, или можно под уже созданный смарттерейн запихать гулаг?
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.