Пользователей: 1
Гостей: 1455
Всего: 1456

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

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









Автор Сообщение
Stalk15
    
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
02-07-2010 18:45 GMT3 час. #1282684   
Сделал простую, казалось бы функцию,


Новые фишки для сталкера(см. журнал)
karavan
    
Посты: 940
Откуда:
Возраст:
02-07-2010 19:17 GMT3 час. #1282700   
Что нужно сохранить в таблицу, что бы заспавнить обьект из этой таблицы? И как это делается? Да и возможно ли такое вообще?
Например ситуация такая: Сохранили данные о НПС в таблицу и нужно заспавнить НПС из таблицы один в один похожими (близнеца) но в другом месте, т.е. одинаковая модель, имя, инвентарь и пр., а предыдущего товарища удалили.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
02-07-2010 19:29 GMT3 час. #1282710   
karavan
Что не получается? в новую таблицу записать айди того, кого удалил? Или что?
Stalk15
а прич**5001c54314580bda8be6**er", 7000)
stope = true --флаг-триггер
end
else
stope = false --восстановления флага
end
end
end [/code]

отредактировал(а) erlik: 02-07-2010 19:41 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Mehanik Yar
    
Посты: 469
Откуда: Уфа
Возраст:
02-07-2010 19:30 GMT3 час. #1282712   
Я декомпилировал карту в СДК, открыл ее, но почему то спавнить в нее не получается ничего, уже много раз пробую - нифига, получается спавнить только в две карты которые уже были, атп и еще что то.


karavan
    
Посты: 940
Откуда:
Возраст:
02-07-2010 19:35 GMT3 час. #1282721   
erlik Да. Не получается записать Айди обьекта которого удаляю. Точнее я не пойму он записывается туда или нет. Есть ли способ как-то это проверить?


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
02-07-2010 19:47 GMT3 час. #1282743   
karavan
Проитерируй таблицу и выведи ее значения - хоть в консоль, хоть в лог, хоть на экран.
news_manager.send_tip(db.actor, "Ключ: "..tostring(k).."Значение: "..tostring(v), 0, "trader", 5000)


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Stalk15
    
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
02-07-2010 20:06 GMT3 час. #1282763   
erlik
Спасибо ...Можно поинтересоваться, дабы потом не задавать подобных вопросов,почему в этом случае определение Волка нужно было вынести за тело функции, ну в смысле в чем разница?В том, что за телом - то уже глобальная переменная или что?
Ну и почему нужно было менять местами условия? ...вроде же как ..эээ...ну какбы правильно было, но не работало.
А на счет flobals - это я как-то на форуме так написал, и не заметил даже, а в самом скрипте flobals не было ...


Новые фишки для сталкера(см. журнал)
karavan
    
Посты: 940
Откуда:
Возраст:
02-07-2010 20:28 GMT3 час. #1282785   
erlik Еще раз спасибо. Проитерировал, наверное. Выводится: Ключ 1 Значение 125
--------------------------
У меня не получается заспавнить НПС из таблицы.
Вот как я пытаюсь сделать удаление-спавн НПС по Айди. Что-то я явно не догоняю, а вот что и сам понять не могу. Суть скрипта: Создать удаление НПС на одно

отредактировал(а) Cos: 02-07-2010 22:09 GMT3 час.

Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
02-07-2010 20:34 GMT3 час. #1282795   

# erlik :
...Итерация такой таблицы возможна только через pairs


Так, для справки, ите**5001c54314580bda8be6**t,key)
if k == nil then break end
print(k,v)
key = k
end [/code]


Stalk15
Тебе же Artos уже говорил почиталь про зоны видимости переменных.
Если проблема найти, то вот цитата :
Lua - язык с лексическим разграничением областей видимости. Область видимости переменной начинается первым выражением после ее объявления и действует до конца блока, в котором это объявление встречается. Рассмотрим следующий пример:

[code]x = 10 -- глобальная переменная
do -- начало блока
local x = x -- объявление локальной переменной 'x', она будет равна 10
print(x) --> 10
x = x+1
do -- начало вложенного блока
local x = x+1 -- другая локальная 'x'
print(x) --> 12
end
print(x) --> 11
end
print(x) --> 10 (глобальная переменная)[/code]

Отметим, что в объявлении local x = x, локальная переменная x объявляется еще не в области своей видимости, поэтому x присваивается именно внешняя переменная.
(При инициализации локальной переменной справа от знака равенства вводимая переменная еще не доступна и используется значение переменной, внешней по отношению к текущему блоку. Именно поэтому корректен пример (он демонстрирует часто используемую идиому языка).

В соответствии с правилами лексического разграничения областей видимости, локальные переменные доступны в функциях, определенных внутри их области видимости. Локальная переменная, используемая в таких функциях, называется внешней локальной переменной.

Обработка каждого объявления local ведет к созданию новой локальной переменной. Рассмотрим следующий пример:
[code]a = {}
local x = 20
for i=1,10 do
local y = 0
a = function () y=y+1
return x+y
end
end[/code]

Цикл создает 10 экземпляров функции, в которых используются различные переменные y и один и тот же x.

Разбирайся.
Если что непонятно, то вопросы принимаются только при условии твоего усердия в прикладывании сил для освоения этой темы.
Понять степень вникания просто. Это отразится в твоём вопросе :-)

отредактировал(а) Gun12: 02-07-2010 21:19 GMT3 час.

Не стань номинантом премии Дарвина.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
02-07-2010 21:46 GMT3 час. #1282880   
Gun12
Но ведь pairs и так возвращает next() - какой смысл от ее прямого использования в плане итерации?
да можно изо**5001c54314580bda8be6**r
end


local t={1,5,3,4,5,67,89}
function ip()
for k, v in myipairs(t) do
print(k,v)
end
end[/code]



Stalk15
Определение Волка я вынес во внешнюю локальную переменную потому, что не имело смысла снова и снова (при каждом апдейте) определять юзердату волка.
karavan
по моему подход все таки неверный - ты пытаешься удалив объект (NPC ) заспавнить его точную копию - причем не по секции, а по юзердате (а спавнят обычно по конфиг секции, профилю, номеру секции в allspawn ... хотя может еще как то...)


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
ДатчикХабара
    
Посты: 558
Откуда: Saratov
Возраст:
02-07-2010 22:01 GMT3 час. #1282896   
erlik
Спасибо за функцию,но сообщение не выводится на экран.
В чём проблемс?


Stalk15
    
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
02-07-2010 22:14 GMT3 час. #1282915   
ДатчикХабара
Как не выводится, вот так, как писа


Новые фишки для сталкера(см. журнал)
SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
02-07-2010 22:17 GMT3 час. #1282918   
erlik, спасибо. Вот тестиру**5001c54314580bda8be6**


Хочешь работать нормально, работай один!
ДатчикХабара
    
Посты: 558
Откуда: Saratov
Возраст:
02-07-2010 22:36 GMT3 час. #1282937   
Stalk15
Звук сообщения пикает,но сообщение не выводится на экран.
Кстати люди кто знает.
Как сделать такую квестовую функцию:
Если Гг убил какого-то мужика(к примеру бандита(моего уникальног)),то выдаётся срабатывает действие (к примеру выдаётся инфопоршень)
:-)


Stalk15
    
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
02-07-2010 22:43 GMT3 час. #1282944   
ДатчикХабара
Пропиши в логике тв**5001c54314580bda8be6**


Новые фишки для сталкера(см. журнал)
ДатчикХабара
    
Посты: 558
Откуда: Saratov
Возраст:
02-07-2010 22:46 GMT3 час. #1282947   
Stalk15
Опа,спасибо.
Как раз то что надо!:ye)


Artos
    
Посты: 4176
Откуда:
Возраст: 65
02-07-2010 23:17 GMT3 час. #1282958   
Byurrer
Извинения приняты.


Stalk15, ДатчикХабара
(в качестве информации/уточнения)
Это вариант выдачи инфопоршня в любом случае при факте смерти НПС, а не по условию "убил ГГ".


SkyLoader
Нет у тебя никакого 'цикла' ...
Твоя ошибка в том, что ты одномоментное событие во времени пытаешься отследить и обработать после того, как оно уже произошло.
Подобное требует:
- а) зафиксировать факт наступления события (смерти) и включить таймет тайм-аута;
- б) по окончанию тайм-аута - проводить проверки и нужные действия.

Т.о. делать две функции. Вешать первую на коллбэк смерти и вторую на апдейт.

отредактировал(а) Artos: 02-07-2010 23:44 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
02-07-2010 23:24 GMT3 час. #1282960   
erlik А какой тогда верный?
Как реализовать такую... задумку?
Причина в том что в новом паке локаций совершенно невозможно заставить НПС переходить с локации на локацию (ну это не считая локация ТЧ) вот и начал я размышлять над таким странным способом псевдо-перехода НПС-Компаньонов с локации на локацию.

Artos Посмотри пожалуйста, что можно сделать (мой пост #1282785).


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
02-07-2010 23:26 GMT3 час. #1282964   
ДатчикХабара

файл xr_motivator.script
function motivator_binder:death_callback(victim, who)
if who:id() == db.actor:id() then
xr_statistic.addKillCount(self.object)
if victim:character_name()=="Имя NPC" then
выдадим инфопоршень

end
end

тот код у меня работает - у тебя время показа сообщения скорей всего маленькое.

отредактировал(а) erlik: 02-07-2010 23:29 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
    
Посты: 4176
Откуда:
Возраст: 65
02-07-2010 23:37 GMT3 час. #1282971   
karavan
Во-первых, поясни своё условие:

Суть скрипта: Создать удаление НПС на одном уровне и спавн его на другом уровне
При 'простом' переспавне ты НЕ получишь 'его' же, т.е. секция то непися будет та же, НО(!) ты потеряешь почти все 'индивидуальные' характаристики. Т.е. и Id и имя неписи и пр. характеристики будут другими.
Т.о. тебе 'тот' же НПС нужен или 'такой' же?
C 'компаньонами' это точно не прокатит, т.к. очистится схема от удаленного НПС!

ИМХО, ты НЕ на верном пути.
То, что на 'новые' локации компаньоны не переходят - это ясно, т.к. схема компаньонов не 'знает' ничего о них. Нужно дорабатывать/адаптировать схему.
Ну или ... иметь гимор с нет-пакетами, сохранив где-то все параметры удаляемого НПС и прописывая их вновь созданному.

Ну а то, что у тебя не работает имеющийся вариант:
Ты пытаешься спавнить объект такой же секции по Id удаленного и ... проверяя 'есть ли объект по данному Id', естественно НЕ получишь его (объект), т.к. сам же уже его удалил.
В данном случае и в логике ошибка и в сути, т.к. ты НЕ получищь желаемого результата.

отредактировал(а) Artos: 02-07-2010 23:54 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
ДатчикХабара
    
Посты: 558
Откуда: Saratov
Возраст:
02-07-2010 23:40 GMT3 час. #1282975   
erlik
О,спасиб тоже.


karavan
    
Посты: 940
Откуда:
Возраст:
02-07-2010 23:54 GMT3 час. #1282982   
Artos Мне нужен тот же самый НПС и хотелось бы его Имя и пр. сохранить.

C 'компаньонами' это точно не прокатит, т.к. очистится схема от удаленного НПС!

Об этом я не подумал. Хотя ведь если удалить НПС-компаньона, а потом заспаснить "его же" то не составит труда взять его в компаньоны снова.
Вобщем если такой способ не реализуем, то так и скажи и не буду я морочить голову не себе не людям.

З.Ы.: Хотя возникает еще сложность запуска спавна НПС на уровне где ГГ, т.е. условие такое:
Если уровень ГГ отличается от уровня НПС-компаньона, то удалить НПС-компаньона с уровня где нету ГГ и заспавнить НПС-компаньона (уже не компаньона) на уровне где ГГ.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 65
03-07-2010 00:07 GMT3 час. #1282990   
karavan
Ты полез уже в такие области сложности, что это уже требует достаточно хорошего понимания работы как типичных скриптов/схем так и новых (в данном случае схемы компаньонов).
Из-за недостатка знаний по имеющимся задачам, ты пытаешься выкрутиться доступными тебе средствами, упустив то, что тем самым упростив одно, ты осложняешь другое. Да и теряешь в этом что-то неизбежно.
Помимо того, что тебе придется нанимать повторно НПС (для игрока это уже и странно и будет раздражать), ты потеряешь и то, что те же предметы отданные НПС на 'хранение', будут тоже потеряны.
Вариант перекидывания параметров удаляемого НПС для вновь заспавненного (через нет-пакеты) достаточно трудоемок (тем более для тебя). Да и не уверен что все 'чисто' пройдет. Тут придется многое перепроверять ...

Нужно однозначно дорабатывать/адаптировать схему под свои новые локации. Сделав это один раз, ты и сохранишь все что присуще схеме и не будешь иметь проблем/заморочек в каждом конкретном случае.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
03-07-2010 00:22 GMT3 час. #1282994   
Artos Спасибо за разъяснения.
Я и сам понимаю, что такой способ не верный. Просто искал способ обойти не возможность нормального перехода НПС. Честно говоря сложилось впечатление что на картах вообше отсутствует движение в оффлайне и именно поэтому НПС-компаньон не может перейти с локации на локацию.
Если например НПС отстал от ГГ и ушол в оффлайн, то НПС ищит путь в офлайне как добраться до ГГ и это видно на глобальной карте. На новых локациях точка (маркер) с НПС тупо замирает и не двигается, специально ждал игровых 6 часов и это в пределах локации. Что тогда ждать от перехода с локи на локу?
А как настраивать компаньон-мод я знаю и создавать АИ переходы тоже умею, и даже проверял наличие переходов в разобраном Гейм.Графе.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 65
03-07-2010 01:27 GMT3 час. #1283002   
karavan
'Движения в оффлайне' никогда и не было на локациях. То, что имитируется схемами типа оффлайн-алайф, это имитация, а не собственно движение.
Ты что-то смешал два разных понятия, переход НПС между локациями и следование за ГГ.
Если НПС теряет ГГ, находясь уже на локации с ним, как ты говоришь, и замирает - следует дорабатывать схему компаньоны.
Если замирает после перехода, оказавшись в оффлайне, то следует подбирать точки спавна неписей при переходе на новые локации поближе к точке спавна ГГ и время не затягивать, дабы при переходе непись не попадала в оффлайн. Ну или тоже доработать схему, чтобы и в оффлайне 'дергала компаньона'.

По любому (ИМХО), доработка схемы компаньонов и/или точек спавна при переходах будет и проще и правильнее, чем каждый раз переспавн НПС, да еще с неизвестными пока последствиями ...


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
sevitov_yura
    
Посты: 79
Откуда: Брест
Возраст: 30
03-07-2010 03:02 GMT3 час. #1283005   
1)такая ситуация возникла: прописываю NPC в supplies квестовый предмет, а после смерти мне нужно штобы предмет остался в рюкзаке. Но у меня предмета нету:-( Подскажите как прописать предмет, и штоб после смерти не исчезал:-G


2)Подскажите, как ГГ выдать поршень с помощью функции?, а то шотта забыл


Artos
    
Посты: 4176
Откуда:
Возраст: 65
03-07-2010 03:31 GMT3 час. #1283007   
sevitov_yura
При смерти НПС включается алгоритм спавна лута в 'death_manager.script'.
Уже имеющиеся предметы у НПС проверяются по секциям [keep_items] (оставлять) и [drop_items] (удалять) из '\gamedata\config\misc\death_generic.ltx'.
Занеси свой квестовый предмет в первую секцию - удаляться не будет.

Инфопоршень для выдается методом:
  game_object:give_info_portion(info_id)
, где 'game_оbject' - клиентский объект (для ГГ = db.actor) и 'info_id' - строка-имя инфопоршеня.

Функция для ГГ при этом обычно выглядит типа:

function Give_MyInfoportion()
  if not has_alife_info("My_Infoportion") then
    db.actor:give_info_portion("My_Infoportion")
  end
end
Соответственно убрать инфопоршень:
  game_object:disable_info_portion(info_id)


Прим: Ответ можно было найти во многочисленных ФАК'ах и собственно в кодах игры.

отредактировал(а) Artos: 03-07-2010 03:44 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
sevitov_yura
    
Посты: 79
Откуда: Брест
Возраст: 30
03-07-2010 13:17 GMT3 час. #1283181   
Ребята, помогите! вырезал из ARSENAL-MOD оружие "p90", когда выкидываю за пределами лагеря новичков оружие, то всё нормально, лежит на земле, **5001c54314580bda8be6** : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\Restrictions.cpp
[error]Line : 34
[error]Description : cannot find rank for
[error]Arguments : wpn_p90[/code]

отредактировал(а) sevitov_yura: 03-07-2010 13:56 GMT3 час.

Artos
    
Посты: 4176
Откуда:
Возраст: 65
03-07-2010 13:55 GMT3 час. #1283219   
sevitov_yura
Твой лог ошибки многим-многим известен. :-)
Ошибка при добавлении оружия в игру - НЕ прописывание его в "\gamedata\config\mp\mp_ranks.ltx".

Byurrer
Заспавнить предмет можно по разному ...
Из твоего вопроса не ясно, то ли ты не знаешь секцию ак74 с уже надетым прицелом, то ли ты спавнишь ак74 без прицела и хочешь на него нацепить прицел.
В 1-м случае - см. конфиги автомата и ищи с параметром 'scope_status = 2'.
Во 2-ом посложнее. Не ясно какой прицел ты собрался 'надевать', да и вообще, есть ли нужный прицел.
Уточняй вопрос.

Прим: Постарайтесь, плз, поменьше гадать/предполагать, засоряя топик. Не знаете/не уверены - лучше или в ПМ киньте свои предположения (если невтерпеж), но не разводите флуд, путая и себя и других.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Byurrer
    
Посты: 82
Откуда: А зачем?
Возраст: 32
03-07-2010 13:58 GMT3 час. #1283222   
Artos короче смотри, я хочу заспавнить ак74 с прицелом надетым сразу при спавне но снимаемым, ну он один в оригинальной версии или нет? Сам скрипт спавна автомата без апгрейдов я знаю а вот с надетыми но снимаемыми апгрейдами нет ...

добавлено спустя 1 минуту

Artos
Постараюсь


добавлено спустя 4 минут

Все то что нужно для спавна в готовом т е надетом виде уже есть но нет самой функции ... Но ведь в файле конфиге там тока либо одетый но не снимаемый (а мне нужен снимаемый но одетый)!

отредактировал(а) Byurrer: 03-07-2010 14:04 GMT3 час.

project S.I.P


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


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

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