Пользователей: 2
Гостей: 1287
Всего: 1289

» Подробно
» Сегодня

Привет, гость!









Автор Сообщение
Mehanik Yar
    
Посты: 469
Откуда: Уфа
Возраст:
20-06-2011 15:29 GMT3 час. #1493896   
Strchi я уже забыл зачем я вообще что-то менял в _g, но во всяком случае это никак не влияло на излома раньше. Удаление файла _g от ошибки не избавляет. Так что дело в другом. Конфиг излома я тоже пробовал менять, ставить от другого мода, например "восстановление старого сюжета"
Это тоже не помогает.

Раньше вообще вылета не было.


Struck
    
Посты: 1946
Откуда:
Возраст:
20-06-2011 15:37 GMT3 час. #1493899   
Mehanik Yar у тебя проблемы в твоем скрипте, возможно некорректен спавн, но помоему ты все таки с самим изломом перемудрил, короче код нужен


Снова в строю.

l
Mehanik Yar
    
Посты: 469
Откуда: Уфа
Возраст:
20-06-2011 16:03 GMT3 час. #1493915   
С использованием такой строки

abort("Statistic ERROR: cannot find monstr class for [%s]", npc and npc:name())

Получаем такой вылет.

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...\stalker - Зона поражения\gamedata\scripts\_g.script:1117: bad argument #2 to 'format' (string expected, got nil)

При закомментировании в 1117 строке получаем при убийстве излома такой вылет.


Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...alker - Зона поражения\gamedata\scripts\ranks.script:66: attempt to index local 'obj' (a nil value)


KontrolЛер
    
Посты: 367
Откуда:
Возраст: 33
20-06-2011 16:17 GMT3 час. #1493919   
Ребят подскажите,а как сделать так чтобы npc сам навязал задание гг и можно-ли это вообще?


singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-06-2011 17:01 GMT3 час. #1493946   
Mehanik Yar Поправлю чуток Artos'а. При проверке на валидность переменной npc нужно задать ещё дефолтовое значение, иначе при отрицательной валидности переменной npc, в функцию будет передаваться значение nil, что так же не допустимо в данной ситуации (код %s требует значение типа string). Посему к правке Artos'а добавь ещё ... or "no_npc". Тобишь:
abort("Statistic ERROR: cannot find monstr class for [%s]", npc and npc:name() or "no_npc")


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artos
    
Посты: 4176
Откуда:
Возраст: 65
20-06-2011 17:26 GMT3 час. #1493957   
Mehanik Yar
(что-то плохо доходит ... уберем лишнее)
1. Изменив строку 115: ... - ты получишь ... и вылетишь из игры с другим логом.

2. Смотри сами вызовы 'getNpcType(npc)'(а скорее addKillCount(npc)) из других скриптов (например: generic_object_binder:death_callback(victim, who) ) и ищи где ты теряешь нужный аргумент (npc).

Исправлять нужно причину, а не следствия! Залалатав в одном - все одно прорвет в другом.

P.S. Уж если ты пытаешься залатать ошибку путем удаления '_g.script' - тебе явно НЕ стОит заниматься скриптами вообще!
(если непонятно - то это примерно то же, если доктор лечит больного путем отрезания у него головы ...)

отредактировал(а) Artos: 20-06-2011 17:52 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Fagot_
    
Посты: 283
Откуда: СССР, Владивосток.
Возраст: 131
20-06-2011 17:32 GMT3 час. #1493965   
Привет всем! Подскажите,пожалуйста, как сделать самому спальный мешок в чистой ТЧ?


Я давно хотел вас спросить, как художник художника - вы рисовать умеете?..
Artos
    
Посты: 4176
Откуда:
Возраст: 65
20-06-2011 17:36 GMT3 час. #1493968   
Fagot_
Тут вообще-то топик "Вопросы и Ответы", а не заказы на написание статей-туторов.
Бери код/мод со спальным мешком и смотри как и что в нем делается..


Struck , а ты уверен, что Fagot_ хочет делать спальный мод? В вопросе только о создании предмета "спальный мешой", а ты ему такие "сложности" советуешь. ;-)

отредактировал(а) Artos: 20-06-2011 17:56 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Struck
    
Посты: 1946
Откуда:
Возраст:
20-06-2011 17:51 GMT3 час. #1493979   
Fagot_ посоветовал бы почитать туторы про создание окошек, это первое, второе - это взять DreamMod за основу, разобрав его и переписав "под себя" - получишь то что нужно. Фантазия безгранична, обычный сон - скучен.


Снова в строю.

l
Artos
    
Посты: 4176
Откуда:
Возраст: 65
20-06-2011 18:06 GMT3 час. #1493988   
singapur22
Что-то мы теряем бдительность ... :-)
И твой вариант (до) правки так же некорректен, т.е. npc and npc:name() or "no_npc" - некорректно с точки зрения соблюдения синтаксиса: a and b or c.
Тогда уж: (npc and npc:name()) or "no_npc" ( т.е. (a and b) or c )
или проще: tostring(npc and npc:name()) - что и забыл сделать в самом начале.

[х]

отредактировал(а) Artos: 20-06-2011 18:38 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-06-2011 18:22 GMT3 час. #1494001   
Artos Ну скобки собственно не требуют обязательного наличия, **5009618d69873ce82a42** return 1,2,3
end

local a,b,c = f and f() or 5,6,7[/code]
Код не верный, но принцып думаю ты понял.

отредактировал(а) singapur22: 20-06-2011 18:31 GMT3 час.

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artos
    
Посты: 4176
Откуда:
Возраст: 65
20-06-2011 18:42 GMT3 час. #1494012   
singapur22
Пробовал присваивать 'за раз', но ... ни в одной из различных ситуация ни разу не удавалось. :-(
Сколее всего компиллятор игры (иль его парсер) на подобное не расчитан.

Даже вроде как с корректным синтаксисом: local a,b,c = ( f and f() ) or ( 5,6,7 )
- мы все же не до конца знаем как компиллятор (его парсер) воспринимает подобные строки ... Но даже с заведомо правильным синтаксисом - за раз не проходит 'условное' присваивание.

P.S. Даже банальное:
local a,b,c = unpack( {1,2,3} ) or unpack( {5,6,7} ) - присваивает присваивает только 1-му ...

отредактировал(а) Artos: 20-06-2011 19:12 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-06-2011 18:52 GMT3 час. #1494017   
Artos Вот и я про то же. Чё только я не делал, ничерта не выходит. А жаль. Не однократно сталкивался с ситуацией, когда нужно было установить значения по условию, сразу нескольким переменным, по возврату функций. К сожалению приходилось расписывать по if-then-else-end :-(


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artos
    
Посты: 4176
Откуда:
Возраст: 65
20-06-2011 19:21 GMT3 час. #1494024   
singapur22
А вот так проходит:

function func()
  return {1,2,3} --/> на выходе таблица значений!
end

local a,b,c = unpack( ( func and func() ) or {5,6,7} )

printf("%s,%s,%s", a,b,c) --/> 1,2,3

- хотя это тоже уже 'усложненный' вариант и присваивание только из одной какой-то таблички ... nil-значения не подменяются по-членно 'дефолтными'.

отредактировал(а) Artos: 20-06-2011 20:14 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-06-2011 20:09 GMT3 час. #1494043   
Artos Хм. Возвращать вместо набора параметров, их список?! Ну я думал уже над этим, но както не решился его применить. Както не смог сообразить, что для распарсивания таблицы можно применить функцию unpack(tbl). :-)
Пожалуй, вариант. Спасибо за наводку.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Arist
    
Посты: 310
Откуда: Москва
Возраст:
21-06-2011 07:55 GMT3 час. #1494136   
Если нетрудно,объясните,как использовать коллбек.Вот статья на Инсайде.по созданию ремкомплектов.Почему-то сам скрипт на ремонт(неважно на что) не активируется.В самый низ в
bind_stalker.script я добавил:

function actor_binder:repair_outfit_start(obj, who)
if obj then
if obj:section() == "repair_kit_outfit" then
main_new.repair_outfit()
end
end
end

и,как и написано:
function actor_binder:reinit() и после строки
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем:
self.object:set_callback(callback.use_object, self.repair_outfit_start, self)
У SkyLoader в журнале есть скрипт на добавление звуков при использовании предмета.Выкинув звуки,поставил скрипт на ремонт(спавн) - работает.Там же Master пишет:

А чем тебе не понравился вариант с каллбэком на юз?

Так что там не хватает в этой статье?Неужелли опять мои кривые руки?


VOva-VIP
    
Посты: 325
Откуда: Миасс
Возраст: 27
21-06-2011 10:10 GMT3 час. #1494170   
Какую логику надо прописать НПС чтобы он всегда стоял на месте своего спавна. То есть даже если он видит противника, чтобы он стрелял в него не отходя от места своего спавна?


Struck
    
Посты: 1946
Откуда:
Возраст:
21-06-2011 12:03 GMT3 час. #1494202   
Arist кривые мозги автора, посмотри bind_stalker.script от ЗП, и сделай по аналогии

VOva-VIP кемпер, с полным игнорированием противника(combat_ignore)


Снова в строю.

l
Arist
    
Посты: 310
Откуда: Москва
Возраст:
21-06-2011 12:54 GMT3 час. #1494213   
К ЗП сильная антипатия.Я написал,что через скрипт добавления звуков:

local item
function items()
if item and type(item) == "number" then
if (not level.object_by_id(item)) then
end
item = nil
end
if item and type(item) == "userdata" then
item = item:id()
else
item = nil
end
end


function items_drop(obj)
local sect = obj:section()
if sect then
if sect == "repair_kit_outfit" then
main_new.repair_outfit()
item = obj
end
end
end
работает.
Просто вот это вот каллбек.Хотел на примере с ремкомплектами посмотреть,что это.
VOva-VIP
Кемпер,валькер - без разницы.Главное - combat_ignore в таком вот виде:

[logic]
active = walker
combat_ignore = combat_ignore

[walker]
path_walk = stalker_walk
path_look = stalker_look
combat_ignore_cond = always

[combat_ignore]


karavan
    
Посты: 940
Откуда:
Возраст:
21-06-2011 13:01 GMT3 час. #1494220   
VOva-VIP Настройка логики часть 1

3.2.5.1. Схема sniper
Разновидность кемпера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. Скорость сканирования от точки к точке фиксирована и равна 20сек.
NB! Ставить снайперу только 2 точки look
В кастом дате кемпера прописать:
sniper = true

Файл: \gamedata\scripts\xr_camper.script



Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Angel from Hell
    
Посты: 23
Откуда: Гомель
Возраст: 27
21-06-2011 14:01 GMT3 час. #1494232   
При работе с диалоговым окном я использовал свою функцию, которая читает значение строки "inv_weight" из ltx-файла заданного оружия. Я это значения поставил на показ в диалоговое окно и получил вот что:
Расскажу на примере wpn_beretta, т.к. тут самый яркий пример.

Открываю инвентарь, вижу вес "Беретты", равный 1.18 кг, открываю диалоговое окно и вижу вес, прочитанный из секции, равный ровно 1 кг. Непорядок.
Я полез в ltx-файл "Беретты" вручную и обнаружил там значение секции "inv_weight", равное 1.0. Вроде моя функция все правильно посчитала.
Другой вопрос. Откуда берется вес 1.18 кг? Подскажите пожалуйста.

И еще один вопрос
Как следует из 1-ой неполадки, вес предмета высчитывается не только лишь чтением значения строки "inv_weight". Но тут я нарвался на следующий баг:
Когда я посмотрел вес Пмм'a, то мне далоговое окно выдало число с огромной дробной частью (Например: 0,8273923100456) Вот и мой следующий вопрос: Подскажите функцию, которая поможет сократить число (я уверен, что таковая существует, только вот какая?).


Извиняюсь за поспешные вопросы, я лентяй:-G
Я только что сам ответил на свой первый вопрос, может кому интересно, объясню:

Вес оружия в секции "inv_weight", как ни странно, это вес разряженного оружия. Впринципе, не нужно быть гением, чтобы до этого додуматься:-).
Ну а вот ответ на второй вопрос я все еще хочу узнать.

отредактировал(а) Angel from Hell: 21-06-2011 14:10 GMT3 час.

Труд свободных скриптеров-любителей тяжел и утомителен, полон ошибок и багов, но в то же время интересен, захватывающ и благороден.
Upgrades mod build 1.006 готов. В журнале есть новое видео.
Подробнее в журнале.
VOva-VIP
    
Посты: 325
Откуда: Миасс
Возраст: 27
21-06-2011 14:43 GMT3 час. #1494242   
В логику НПС написал в это:
[logic]
danger = danger_ignore
on_death = death
active = remark1

[danger_ignore]
ignore_distance = 5

[remark1]

[death]
on_info = %+mil_shugan1_done%

[smart_terrains]
none = true


Но если я его убиваю вот такая вот ошибка:

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...w of chernobyl\gamedata\scripts\death_manager.script:139: attempt to index field '?' (a nil value)



Если логика не правильная, то какую нужно писать, чтобы при убийстве НПС выполнялся инфопоршень?


Struck
    
Посты: 1946
Откуда:
Возраст:
21-06-2011 14:55 GMT3 час. #1494247   
Angel from Hell оставляй три к примеру знака после запятой, 3f функция.

Arist какая тут к черту антипатия? Это обычный колбек, который упрощает все тяготы привязывания действия к использованию.

VOva-VIP отследи смерть, да выдай инфопоршень


Снова в строю.

l
Angel from Hell
    
Посты: 23
Откуда: Гомель
Возраст: 27
21-06-2011 15:01 GMT3 час. #1494251   
VOva-VIP,
Логика то правильная... Попробуй закомментировать строку 139 в файле death_manager.script и посмотри новый лог вылета. Эта функция по идее отвечает за спавн предметов (лута) в убитого НПС, там в скрипте все пояснено комментариями.
Проблема, может быть в группировке НПС. Но может и не так, в любом случае нужно закомментировать строку 139 и посмотреть лог еще разок.

А у меня назрел еще один вопрос к товарищу singapur22:

Если взять метод InitStatic[/o**5001618d69873ce82a42**d(CUIWindow*);
function SetPPMode();
function WindowName();
function IsShown();
function SetWndSize(number, number);
function SetWndRect(Frect);
function SetWndRect(number, number, number, number);
function GetHeight() const;
function SetWidth(number);
function Show(boolean);
function IsEnabled();
function ResetPPMode();
function SetFont(CGameFont*);
function IsAutoDelete();
};
[/code]
Как с помощью этих функций можно изменить текст скролла по своему усмотрению?


Struck, что за функция f3? Как ее использовать? Объясни пожалуйста на примере:

local pistol_sect = db.actor:item_in_slot(1):section()
-- Отображаем вес пистолета по строке inv_weight из ltx...
local inv_weight = xml:InitStatic("static_weight",self)

inv_weight:SetText(repair_mod_functions.ReadItemWeight(pistol_sect).." кг")



отредактировал(а) Angel from Hell: 21-06-2011 15:12 GMT3 час.

Труд свободных скриптеров-любителей тяжел и утомителен, полон ошибок и багов, но в то же время интересен, захватывающ и благороден.
Upgrades mod build 1.006 готов. В журнале есть новое видео.
Подробнее в журнале.
VOva-VIP
    
Посты: 325
Откуда: Миасс
Возраст: 27
21-06-2011 15:49 GMT3 час. #1494271   
Angel from Hell да, проблема оказывается в группировке. Странно конечно, но вылетать перестало.
У меня вот ещё одна проблема: мне нужно чтобы мой новый НПС (заспавненый через скрипт) смотрел в другую сторону, ну то есть нужно поменять вектор, но как?
Вот сам скрипт (пытался приписывать 1,5 в скобках после vector, но НПС смотрел всё равно в ту же сторону):
function shugan1_spawn ()
alife():create("mil_killer_quest_spawn",vector():set( -378, -12.38, 398 ),32782,1545)
end


Struck
    
Посты: 1946
Откуда:
Возраст:
21-06-2011 16:00 GMT3 час. #1494278   
Angel from Hell ни f3, а %1.3f, что означает оставлять три знака после запятой, и функция у тебя в корне не верная, нажно получать через метод сfg_get_number, чт. мат. часть луа, а методы получения цифорок и буковок есть в utils

VOva-VIP попробуй set_desired_direction()

отредактировал(а) Struck: 21-06-2011 17:38 GMT3 час.

Снова в строю.

l
Struck
    
Посты: 1946
Откуда:
Возраст:
21-06-2011 17:17 GMT3 час. #1494309   
Как можно сделать захват целей в прицеле(как в бинокле)?

По логике отсканировать все живое и вешать на них статики, но как отследить именно находимся ли мы "в прицеле"?

отредактировал(а) Struck: 21-06-2011 18:26 GMT3 час.

Снова в строю.

l
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
21-06-2011 17:18 GMT3 час. #1494310   
Angel from Hell Класс CUIScrollView не поддерживает непосредственный вывод текста. И я тебе говорил использовать его не для вывода текста, а для скроллинга статика, в котором планируется выводить текст. Чтобы привязать статик к скроллу, нужно использовать метод AddWindow(CUIWindow*, boolean). Где, CUIWindow* --в твоём случае, статик, в котором выводится текст. boolean --булева, не помню за что отвечает.
Данным методом, статик добавляется в скролл_вьювер, так же, как строка в листинг. Тоесть, каждый последующий добавленый элемент, устанавливается под предыдущим. Но в отличии от класса CUIListWnd, высота элемента может превышать высоту скролл_вьювера, и при этом скроллинг можно будет произ**5031618d69873ce82a42**

отредактировал(а) singapur22: 21-06-2011 17:48 GMT3 час.

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Alex Rodriguez
    
Посты: 301
Откуда: С-Пб
Возраст: 29
21-06-2011 17:45 GMT3 час. #1494316   
Нужна помощь:хочу вернуть видимость аномалий в моде,но не могу понять,как.(невидимость сделана как-то иначе,чем описывается в ФАКе).Сам мод называется Full Realism Mod by Wolkolak


singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
21-06-2011 19:55 GMT3 час. #1494368   
Artos Слегка модернизировал вчерашний алгоритм, уст**5001618d69873ce82a42**nd

local a,b,c = unpack(f and {f()} or {5,6,7})

print(a,b,c)[/code]
То-есть. При заключении вызова функции, в фигурные скобки, освобождает нас использовать их, внутри самой функции. :-)


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.


Форумы Архив » Свалка Вопросы и ответы (старое, по 12.09.11)


Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2024 «Stalker-Portal.ru»