то что написано в классе у нпс вообще ведь вроде в игре не используется и можно че хошь писать...
хотя я тож всегда одинаковое писал: что в классе, что в
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
function percent_deposit()
if deposit > 0 and deposit > 10000 and deposit < 50000 then --\это лишнее
deposit = deposit + deposit\100*(math.random(5,8)) --\ правельней будет такdeposit\(100*math.random(5,8))
elseif deposit > 50000 and deposit < 100000 then
deposit = deposit + deposit\100*(math.random(9,12)) --\аналогично предыдущему
elseif deposit > 100000 and deposit < 500000 then
deposit = deposit + deposit\100*(math.random(13,15))--\аналогично предыдущему
elseif deposit > 500000 then
deposit = deposit + deposit\100*(math.random(16,20))--\аналогично предыдущему
end
end
и как оправильно арифметические операции произоводить: что и когда надо в скобки заключать?
Так же, как и в школе на математике. В скобки заключается то, что нужно выполнить в первую очередь.
local deposit = 0 --\ не там поставил. Должна стоять перед первой функцией, где она используется впервые.
if deposit > 0 then --\ если на депозите че появилось то обнулим банк
bank = 0 --\зачем проделывать два раза одно и тоже? Пропиши bank = 0 в предыдущей проверке, а это удали.
добавлено спустя 2 минут
erlik Ты не прав. Именно класс и индефицирует профиль и характеристику нпс. А всё остальное шняга.
отредактировал(а) singapur22: 10-09-2009 16:39 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
Понял. По математике тройка была :-)
значит здесь так лучше:
local deposit = 0
function transfer_bank()
if bank > 0 then --\ если в банке че есть то
deposit = bank --\ сделаем трансфер в другую переменную
news_manager.send_tip(db.actor, "Меченый, на твой счет поступила сумма в "..tostring(deposit).." р.", 5, "trader", 10000)
bank = 0
end
end
а все мои локальные переменные (которые в теле файла объявлены) может вообще в самый верх файла вынести? Их положение внутри файла получается имеет значение?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
Да я вот пока не задумывался над этим...(ну так что с меня взять - все таки первый сложный скрипт пишу). Теперь буду учитывать это. Спасибо за поправки.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
А как сделать проверку наличия определённого предмета в первом слоте?
так:
function test()
local item_in_slot_1 = db.actor:item_in_slot(1)
local item_prot_pp = db.actor:object("test_pp")
if item_in_slot_1 == item_prot_pp then
this.test2()
end
end
singapur22
При такой записи на тесте выдается ошибка на символ "\" в этой строке
deposit = deposit + deposit\(100*math.random(5,8))
а луа чекер так вообще штук 20 ошибок показывает (но это он всегда так делает, хотя ошибка может быть всего одна )
Checking D:\Program files2\S.T.A.L.K.E.R\gamedata\test.script:
test.script (334): no viable alternative at "\"
test.script (336): no viable alternative at "\"
test.script (338): no viable alternative at "\"
test.script (340): no viable alternative at "\"
test.script (349): no viable alternative at "\"
test.script (351): no viable alternative at "\"
test.script (353): no viable alternative at "\"
test.script (349): mismatched input '100' expecting 'end'
test.script (350): no viable alternative at input 'dolg'
test.script (350): no viable alternative at input 'dolg'
test.script (350): no viable alternative at input 'dolg'
test.script (350): no viable alternative at input 'dolg'
test.script (351): mismatched input '100' expecting 'end'
test.script (352): no viable alternative at input 'dolg'
test.script (352): no viable alternative at input 'dolg'
test.script (352): no viable alternative at input 'dolg'
test.script (352): no viable alternative at input 'dolg'
test.script (353): mismatched input '100' expecting 'end'
test.script (354): no viable alternative at input 'deposit'
test.script (354): no viable alternative at input 'deposit'
test.script (355): no viable alternative at "\"
И еще - мне ведь надо, что бы сначала от суммы deposit находился 1% - то есть делим сумму на сто, а затем уже умножаем на рандомный процент от 5 до 8. Получаем сумму начисляемого процента, которую и прибавляем к основной сумме. А в такой записи по моему не так получается....
Что тут не так?
И еще : как в сталкере просмотреть стэк программных вызовов?
Запись в логе stack trace тебе ведь знакома (сегодня не могу от нее избавиться).
Эта строка в логе как я узнал указывает на то что надо смотреть стэк вызовов, где в порядке с последнего до первого будет список всех загруженных методов, один из которых и привел к исключению.
Но в логе после строки stack trace пишется тока указание на библиотеки игры
001B:007B105B XRLUA.DLL
001B:03381E7C xrGame.dll
И как это понимать? Это и есть тот самый стэк вызовов?
добавлено спустя 1 час 20 минут
Code Name - Stalker
Так и делается.
создаем к примеру локальную переменую item_slot и назначаем ей значение вещи в слоте 2
создаем вторую локальную переменную и назначаем ей значение айди конкретной вещи в инвентаре эктора, а дальше производим проверку на то что слот 2 не пуст и что в слоте находится нужная нам вещь
function test()
local item_slot = db.actor:item_in_slot(2)-- вещь в слоте два
local obj = db.actor:object("wpn_beretta") - объект в инвентаре эктора - беретта
if item_slot ~= nil then --\ если слот два не пуст
if item_slot == obj then --\ то если вещь в слоте равна беретте
действие
end
end
end
или как там
if item_slot == obj then --\ если вещь в слоте 2 равна объекту в инвентаре эктора - "беретта" то
действие
end
end
или так
if item_slot and item_slot:section() == "wpn_beretta" then --\ если вещь в слоте 2 есть и эта вещь равна секции ltx "беретта" то производим нужное действие
вот здесь скобочки забыл поставить.
и так с любым слотом.
добавлено спустя 22 минут
singapur22
Нашел ошибку - надо ведь вместо "\" использовать "/ " :-) вот блин надо же какую мелочь забыл...
отредактировал(а) erlik: 11-09-2009 08:27 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
крысобелка
1 .модели в папке meshes - формат ogf, редактируется программами 3D моделирования (Макс - 3DStudioMax, Майя - Maya, Милка - Milkshape 3D) . предварительно ogf конвертируется конвертером от bardak"а в формат с которым эти проги могут работать - object, bones, skls или skl. Для работы программ с моделями сталкера требуются доп. плагины.
2. фотошопом можно редактировать только текстуры.
требуется плагин для dds (это формат текстур сталкера).
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Я хочу попробывать себя в модостроении. У меня есть некоторый опыт конечно(изменение цены в ЧН и добавление в асартемент торговца ЧН) но я хочу попробывать нечто иное.
Начнём с малого: Как и где менять имена квестовых НПС; Группировок.
Диологи распрастраняются на всех НПС? (приветствие) Если да то мне их нужно тоже отредактировать чтоб ГГ приветствовали нормально. Затем: Где и Как изменить текст сообщений.
Пример: Военные режут нашего брата сталкера! изменить на Привет как дела?
Да и для общей информации киньте сайт СДК чтоб Вас не мучить.
Зарание Спасибо!!!
Как и где менять имена квестовых НПС; Группировок.
Имена квестовых персов - в файле stable_bio_name (text\rus)
напимер вот Бес
Имена группировок в string_table_general (text\rus)
Пример: Военные режут нашего брата сталкера! изменить на Привет как дела?
Это насколько я помню озвучка - а значит если хочешь заменить фразы из озвучки нужно делать свою озвучку, а потом заменять ту что в игре на свою. Нужна прога для конвертации звука в ogg формат.
Ну и почитать уроки по работе со звуком.
Конвертнуть звук можно и через SDK - зайди на эту страницу
_http://sdk.stalker-game.com/ru/index.php?title=X-Ray_SDK_0.4
там про SDK и ссылки на скачивание (не забудь скачать и патч для СДК)
(Вообще официальный SDK (полная версия - не русифицированная и не урезанная - другие не рекомендуют к использованию) находится тока на официальном сайте GSC - там же есть куча ссылок на разные проги и моды, также свой форум. )
Если же ты хочешь заменить просто текстовые фразы, то покопайся в файлах папки rus - там лежат все тексты игры, и просто подредактируй нужные тебе фразы.
Например открываем файл stable_dialogs там есть несколько стнадартных фраз типа Привет, Как ты, До встречи, меняем их на свои, и в игре будут уже твои фразы.
Более серьзный набор текстовых фраз содержится в файлах stable_dialogs_имя_уровня.
Там для каждого уровня свой набор текста из диалогов персонажей этого уровня. Тоже можно поменять. Но только если ты знаешь из какого диалога та или иная фраза. А иначе можешь так все наизменять, что потом получится путаница в квестовых диалогах.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
S.н.а.й.п.е.р.
Да, я и забыл что при переходе на другие локи этот вариант не совсем годится.
Надо сделать так.
Это из скрипта singapur22 - я в него внес активацию функции спавна на локе бар, у него было активация слота 2 при заходе на локу бар. А так будет активация спавна чуваков. Точно так же делаешь функции и для прочих лок.
То есть сначала функцию спавна с координатми и вертексами. а потом висываешь активацию своей функции в тело функции level_active().
А в самой level_active() уже пишешь имя уровня на котором должны появится твои чуваки.
Если в эту впишешь имя уровня темная долина - "l04_darkvalley", то тогда твои чуваки и заспавнятся по прописанным им координатам и вертексам, когда ты зайдешь на локу.
Для спавна на другой локе делаешь функцию level_active_2() - а в ней пишешь нужный уровень и новый поршень и пишешь активацию другой функции спавна (например - spawn_npc_2 () - с другим вертексами и координатами снятыми с нужного уровня и другим именем).
Имя новой функции level_active_2() - добавляешь в список function list_new_funcs()
Текст из его журнала.
Многие задаются вопросом, как запустить ту или иную функцию, при переходе на локацию. В принципе, тут ничего сложного нет. Достаточно прописать проверку, какая локация активна в данный момент, с установкой ключа на разовый вызов, чтобы функция не вызывалась постоянно, пока актор находится на прописанной локации.
Итак, создадим постоянную проверку активной локи. В файле bind_stalker.script находим функцию actor_binder:update(delta). В конце функции (перед последним end) прописываем путь к проверочной функции. Например:
new_funcs.list_new_funcs()
Теперь создаём новый скрипт-файл new_funcs.script.
В новом файле создаём функцию списка новых функций:
function list_new_funcs()
this.level_active()
end
Для тех кто не понял, зачем она нужна, поясняю. Так как одной функцией, любые разработки не ограничиваются, мы создали специальную функцию, из которой будет производиться, вызов вновь созданых функций, которые требуют постоянную работу. В данном случае, прописан постоянный вызов функции level_active() из этого же файла. Чтобы добавить в список новую функцию, достаточно вписать в теле функции list_new_funcs() строку this.имя функции()
Теперь создаём нашу проверочную функцию, активной локи:
function level_active()
if not has_alife_info('level_active') and level.name() == "l05_bar" then имя_файла.spawn_npc ()
db.actor:give_info_portion('level_active')
elseif has_alife_info('level_active') and level.name() ~= "l05_bar" then
db.actor:disable_info_portion ('level_active')
end
end
В данном случае, запускаемым эффектом прописана активация слота номер 2 (автомат). Тоесть, при переходе на локацию Бар, актор будет появляться с автоматом в руках, не зависимо от того, с каким слотом он был до перехода.
В качестве ключа, в нашем случае использован инфопоршен 'level_active'. Поэтому нужно зарегистрировать его в файле info_portions.xml
отредактировал(а) erlik: 11-09-2009 13:39 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.