Пользователей: 0
Гостей: 474
Всего: 474

» Подробно
Привет, гость!








Автор Сообщение
Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-08-2010 18:36 GMT3 час. #1314883   
singapur22
Именно так, вначале дроп и позже тэйк.
После записи в сэйв стораджей объектов перед разрушением локации все объекты и (актор тоже) дропят все зависимые от них объекты (рушатся связи).
После старта - в 'голенького' актора и во всех оствльных непимей засовываются все имевшиеся у них предметы. А т.к. эти предметы должны быть считаны из сэйва и появиться в он-лайне - процесс идет даже после начала апдейтов.

Тэйк по п.2 обязан быть, т.к. не 'голенький' же у тебя актор.

Вывод о том, что объект-актор не удаляется, ИМХО не верен. Биндер актора точно переинициализируется, но более важно - переинициализируется 'actor_proxy'! что собственно и говорит о восстановлении/замене объекта-актор из сэйва при (пере)запуске.

P.S. Сорри, но ... попробую сам перепроверить отсутствие тэйка у актора по п.2.
ПО моим наблюдениям это событие идет на первых 'precache_frame' (примерно 28...25)

P.P.S. Не очень понятно что ты называешь кол-вом прошлой локации и кол-вом нового сюжета? Если у актора быто 10 аптечек перед сохранением или при переходе - то столько же и должно быть при (пере)запуске на новой локации. Если конечно не работает некая 'чистка' при старте. Не могут исчезнуть предметы, которые были сохранены в сэйв. И их 'parent_id' обязаны засунуть эти предметы (тэйкнуть) к своим владельцам.

отредактировал(а) Artos: 11-08-2010 18:53 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
11-08-2010 18:38 GMT3 час. #1314887   
Artos А как на счёт пункта (2)? Вот, вот. Но его тютю. :-G Перепробывал все имеющиеся сейвы. НЕТУ!


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Darien Fx
    
Посты: 1372
Откуда:
Возраст: 30
11-08-2010 18:45 GMT3 час. #1314890   
singapur22
Если ты выводишь инфу через get_console, то нужно будет пролистать лог во время игры чуть повыше, ибо тейк всё-таки есть в п.2.
Ну или если через сенд_тип, то главно не забыть проверить "историю" в пда, т.к. сообщения со стандартным "временем жизни" (5 сек.) любят исчезать ещё до старта игры :-), смотря где вызвал.

отредактировал(а) Darien Fx: 11-08-2010 19:19 GMT3 час.

singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
11-08-2010 18:51 GMT3 час. #1314893   
Опа. Соврал. С сейва "all" не пробывал. А здесь take вызывается. Но почему с других сейвов молчит? Ладно разберёмся.
Ещё один вопрос. Имеется метод определения номера активного слота: db.actor:active_slot()
Пока какото слот активен, всё вроде нормально. Но если не один слот не активен, он выдаёт число: 4294967296 Не многовато ли?


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-08-2010 18:56 GMT3 час. #1314896   
singapur22
Любой предмет (серверный объект), не имеющий стори_ид (m_story_id) выдает это число (4294967296) в качестве отсутствия. Ну а то, что многовато - то r_s32 или w_s32 это не 'u16' (65535) и хранят знак, т.е. старший бит исчезает.
Вероятно разрабы перестарались и отвели не 'u16' для хранения номера активного слота, а 's32', а т.к. 0 - это тоже возможный номер активного слота (ножны), а не отсутствие, то ... вероятно сохранение -255 и выходит в 4294967296.


P.S. Я уже давно не ищу у разрабов обязательность наличия какого-либо смысла в их кодах. Рудиментов столько, что ... еще не на одно 'поколение' модмейкеров хватит разгребать 'мусор' и ломать головы предполагалками.

Могу только предположить, что предполагали кол-во слотов превысит 16 (слоты+пояс+...). Пояс помнится в оригинате 6-8 ячеек ... Вот и не уложились в 'u16'. 'u24' - практически не используется. 'u32' - глюкавит. Вот и остановились на 's32'.

отредактировал(а) Artos: 11-08-2010 19:15 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
11-08-2010 18:57 GMT3 час. #1314897   
Darien Fx Действительно. Молодца. Спасибо за подсказку, друг. Я чёта тэйк на консоль не поставил. Упустил. Спасибо всем. Теперь действительно всё в ажуре. :-)

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

Artos А смысл было реганить Int32 для слотов?

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

Artos Всё может быть. Собсно фиг с ним. Надо внести себе в справку данную особенность. Дабы не пойматься при создании сохранок.

отредактировал(а) singapur22: 11-08-2010 19:07 GMT3 час.

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
11-08-2010 19:17 GMT3 час. #1314904   
singapur22
Ты был прав насчет каллбека на изъятие - я его видимо вчера не тем местом проверял &P
А Artos скорей прав насчет числа установленных фасткаллов на один объект,
так что фасткалл в моем случае пока отменяется - тем паче что глючит - хотя и редко.
---------------------------------------------------------------------------------------------
Серьезная у вас тут темка вышла - даже как то неловко влезать с вопросом: по каким причинам может не сработать метод hit()
Вот например хитуется объект мина - сообщение о взрыве приходит всегда - однако сам взрыв(собственно партиклы, звуки - все по дефолту - без скриптов) в некоторых случаях не наличествуют. То есть как бы объект хиту подвергся - но не взорвался - хотя сила хита приличная.

h.power = 20
h.type = hit.fire_wound
if boom~= nil then
boom:hit(h) -- \взрываем мину
news_manager.send_tip(db.actor, "Тайник взорван", 0, nil, 5000)
start_timer_2(1)
else
news_manager.send_tip(db.actor, "Объект бомбы не существует", 0, nil, 5000)
end

Или вот метод или explode() - прекрасно работает у меня в одной разработке, однако здесь не хочет производить нужного действия.
У меня при взрыве нычки хабар как бы выкидывается(переспавнивается) из инвентаря ящика на землю и затем физикой (через полсекунды) пинается - но при этом идет проверка - если объект можно взорвать
if get_clsid(obj)==clsid.obj_explosive then
то мы ему вместо пинка сделаем obj:explode() -- и тишина почему то - ни один объект не взорвался.
Странно... Паузы в полсекунды вполне достаточно чтобы серверный свезаспавненный объект стал клиентским - тем боле что пинаются они все нормально(а пинать можно только клиентские) - а вот взрываться не хотят.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-08-2010 19:21 GMT3 час. #1314908   
singapur22
ИМХО, простейшее: 'if ative_slot_num >= 0 or ative_slot_num <=10 then ative_slot_num = -1 end' (иль аналогичное) - избавляет и от вероятности 'нарваться' и дает возможность использовать 'u16' вместо 's32' для запоминания любого ative_slot_num.

erlik
А если все же указать вроде как предусмотренный разрабами параметр для метода: explode(0)?
Или может ты пинаешь объекты (класс не взрывчатки) не поддерживающие этот метод и твоя же проверка отсекает? Гранаты/артефакты (мины вроде на классе артов делают обычно) этим методом не подрываются.


Исходная информация:
При выполнении задания/квеста в статистику игроку записывается информация о выполненном квесте (некое название) и кол-во баллов (можно посмотреть в КПК).

  actor_stats.add_points("quests", sTask, 1, tTask.reward_rank).

Собственно sTask - стринг, который может быть подцвечен в зависимости от чего-то, типа: sTask = "%c[255,160,160,160]"..sTask"

Есть также метод получения общего кол-ва баллов по типам/разделам статистики:
  actor_stats.get_points(string)

Вопрос:
Есть ли возможность удалить/стереть/заменить некорректныю/'глючную' запись конкретного уже выполненного квеста в статистике игрока?
Или хотя бы: где хранятся эти записи?
Требуется для совместимости с имеющимися сэйвами.

отредактировал(а) Artos: 11-08-2010 19:54 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Darien Fx
    
Посты: 1372
Откуда:
Возраст: 30
11-08-2010 19:53 GMT3 час. #1314932   
Artos
Влезу с предп


Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-08-2010 19:56 GMT3 час. #1314935   
Darien Fx
Мне требуется именно по квестам и именно стринг (название) квеста, а не суммарные очки.
Хотя ... если хоть по какой иной (киллсталкер/киллмонстер/...) статистике что-то есть - то можно поискать по аналогии для квестов.
По рангам не подходит, это понижение/изменение очков ранга игроку, меняется цифра. А остальное - добавлялки/смотрелка.

Собственно потребность возникла из-за корявости парсина строк движком и подцвеченая(ые) строка(и) попала(и) в статистику, приводя к вылету при просмотре статистики. Требуется именно строку(и) заменить/затереть/исправить.
Если нет прямых методов, то ... должна же где-то храниться/сохраняться в сэйвы статистика и все эти строки!?


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Vitоs
    
Посты: 467
Откуда: Колхоз :D
Возраст: 28
11-08-2010 20:41 GMT3 час. #1314977   
скажите как увеличеть силу и жизни у монстров.


...Я мeдлeнно схожу с умa...
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
11-08-2010 20:48 GMT3 час. #1314985   
Artos
Аргумент в методе explode() ни на что не влияет. Помню проверял - думал что либо сила взрыва будет разная либо это задержка перед взрывом - ничего подобного - разницы никакой. Каждый объект подрывается также как обычно.
А гранаты кстати подрываются этим методом - у меня же в гравипушке они тоже спавнятся и пинаются - и прекрасно подрываются опосля. Арты конечно нет. И подствольные гранаты и заряд для РПГ.
Но у меня в тайнике именно ручные гранаты.
Мина у меня на классе II_EXPLO конфиг от динамита вроде.(не помню уже - но в общем таж самая что и моей разработке бомба с дистанционным подрывом). Она всегда подрывалась.
Та что загадка выходит...

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

Artos
в классе CGameTask() есть метод get_id() для получения строки с именем квеста
вот описание маландринуса :
даёт строку-идентификатор задачи. Это атрибут id из тега game_task в XML
-- если не был выполнен метод load или не была добавлена хоть одна подзадача, то вернёт nil
-- если вручную добавили подзадачу, то вернёт "user_task"

отредактировал(а) erlik: 11-08-2010 21:18 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-08-2010 21:24 GMT3 час. #1315030   
erlik
Ну тогда тогда или сам попробуй в лог вывести поэтапности и выяснить причину 'не взрыва' или нужны коды, чтобы детально анализировать иль пробовать 'метод тыка'.

А по таску - исходно все имеется, и идентификаторы и строки и все прочее. Нужен доступ к изменению/стиранию наименования/идентификатора задачи, уже попавшей в статистику, а не выданной игроку иль еще что ...


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
11-08-2010 22:20 GMT3 час. #1315096   
Artos
Такой вариант на ночь глядя в голову пришел - может бред , но вдруг на мысль наведет.
Судя по скриптам в task_manager инфа по рандомным таскам пишется в таблицу
task_info = {} затем она сохраняется в нет-пакет и соответственно при загрузке игры заново подгружается в методе CRandomTask:load(p)
Так вот - может просто в этой таблице данные переписать?
Загрузить ее, изменить нужные значения ключей и заново сохранить.
Хотя чувствую что тебе все таки нужен доступ в класс actor_stats
метод занесения инфы то есть - actor_stats.add_points("quests", task_desc.name, 1, task_desc.reward_rank)
а вот как ее считать и можно ли перезаписать - непонятно.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-08-2010 22:31 GMT3 час. #1315108   
erlik
Сам понимаю вопрос 'на засыпку'. Ну и собственно не столь уж и важен. Выход из тупика порой - только отсупление назад (ну и фиг с ними с сэйвами ...). :-)
Все, что в таск менеджере - это еще не выданные или активные (выданные) задания. То, что выполнено - это уже в статистике, и в таск-менеджере только отались 'флаги' о том, что уже выполнено/не выдавать ... Нет-пакетами в таск-менеджере сохраняется только активная часть заданий (выданы и не сданы), а все остальное реинициализируется при старте игры заново из конфигов.
А вот доступ к массиву статистики по квестам - получается фигушки, кроме как уже упомянутых двух методов. Это собственно и немного понятно, дай волю - игрок будет себе накручивать очки ... :-).
Но ... где-то это ж хранится(!) ...


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
11-08-2010 23:33 GMT3 час. #1315170   
Artos
Попробовал вызвать метод actor_stats.get_points("quests") с аргументом который приметил в add_points() - метод вернул число 0 . Вызывал его как вначале игры ,так и после выполнения задания принести флешку Шустрого.
Я то думал, что вернет таблицу - однако получил фиг знает что :-)
-----------------------------
PS:- вот блин - невнимательно прочитал твой пост - там же написано что метод возвращает.
Получается что действительно нет доступа к тому массиву статистики по квестам.

отредактировал(а) erlik: 11-08-2010 23:40 GMT3 час.

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
xxx5
    
Посты: 124
Откуда:
Возраст: 31
11-08-2010 23:50 GMT3 час. #1315175   
Доброго времени суток. Подскажите пожалуйста сайт на котором есть много разных статей для модинга сталкера.


Artos
    
Посты: 4176
Откуда:
Возраст: 66
11-08-2010 23:55 GMT3 час. #1315180   
O, erlik, и все же спасибо, за последний пост!
Упоминание тобою об аргументах ... заставило их опять проанализировать и ...
  add_points("quests", sTask, 1, tTask.reward_rank)
arg1 - quests - стринг, наименование категории статистики;
arg2 - sTask - стринг, строка-название выполненного задания;
arg3 - 1/-1 - флаги добавить/убавить очков (аналоги add/del);
arg4 - очки (вес квеста) в общем кол-ве квестовых очков
Мелькнула глупая мысль, а если в ту же категорию (квесты) в ту же строку (прежнее значение sTask) не добавить(1), а убавить(-1) очков ... иль даже 'nil'? Если там не аналог 'table.insert(...)', а прямая запись по ключу ... то может что-то и выйдет?! Бум пробовать ... надежда мала, но все же ...

xxx5
Например: stalkerin.gameru.net/wiki/


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
12-08-2010 00:09 GMT3 час. #1315186   
Товарищи!
Подскажите пожалуйста как получить Айди предмета при выбрасывании?
Вот что мне нужно. :-)
Есть в руках у ГГ Калаш при нажатии на кнопку на клавиатуре "выбросить" автомат соответственно исчезает из инвентаря и слота, и падает на землю. Как получить Айди?


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 66
12-08-2010 00:14 GMT3 час. #1315190   
karavan
Используй коллбэк актора на дроп: function actor_binder:on_item_drop(obj)
- где obj собственно выброшенный предмет (точнее лишившийся владельца - актора). Ну и его идентификатор - obj:id()
Перепроверив (что не обязательно), что это нужный тебе калаш - действуй далее ...


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
12-08-2010 00:16 GMT3 час. #1315192   
Artos Благодарю. :-)

Еще возник вопрос.
Возможно ли получить Айди болта при выбрасывании? Просьба помочь. :-cool)

отредактировал(а) karavan: 12-08-2010 00:48 GMT3 час.

Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 66
12-08-2010 00:21 GMT3 час. #1315194   
karavan
Ну а если самому включить думалку?!
Проверив активность слота (6-го) ... и предмет/объект в нем ... и его секцию/класс на тождестов с болтом ... и запомнив идентификатор этого болта ... Мож что и выйдет с уже упомянутым выше дропом?!
(не уверен в успехе, но вроде как ... должно прокатить)

Пишется: проЗьба -> проСьба (от проСю ;-) )

отредактировал(а) Artos: 12-08-2010 00:33 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
12-08-2010 00:55 GMT3 час. #1315207   
Artos Вышло вот что. А как дальше незнаю. w_stick - это тот же бо


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 66
12-08-2010 01:05 GMT3 час. #1315209   
karavan
Ну уже не плохо, хотя болт в 6-м слоте, а не 1-ом.
(Неплохо бы научиться наконец форматировать коды в постах)

Ну а теперь если вместо сенда (сообщения в экран) сделать запоминалку идентификатора во внешнюю к функции переменную ... добавив ветку обнИления этой переменной при неактивности 6-го слота или НЕ болта в нем то ... Проверяя калбек дропа на 'выкинутый' предмет ... остается удостовериться тождество идентификатора выкинутого предмета и запомненного болта, то ...

А ты не заметил, что задача определения выкинутого калаша иль болта - идентичны по сути? &P И скорее всего тебе будет достаточно коллбека на болт.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
12-08-2010 01:16 GMT3 час. #1315212   
Artos Я с колбеками никогда не работал поэтому сложно сориентироватся. Если можеш помоги.

Код форматирую, но почему-то всегда появляется не в форматированном виде.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 66
12-08-2010 01:27 GMT3 час. #1315214   
karavan
Не прибедняйся, с коллбеками работают также как и с тем же 'биндером' (actor_binder:update()), только в **50016ea8aab1bb10eeba**--/ выброшен болт?
get_my_func(obj:id()) --/ вызов 'своей' функции с передачей ей ID-болта
end
end[/code]

Ну а для форматирования - всего лишь требуется вставлять нужное кол-во пробелов при использовании тегов 'cоde', если их у тебя не хватает в исходном коде.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
12-08-2010 01:37 GMT3 час. #1315216   

Artos
А ты не заметил, что задача определения выкинутого калаша иль болта - идентичны по сути?

А разве? Калаш выкидывается из слота на землю, а болт бросается. Насколько я понимаю разница есть. Хотя в плане получения Айди обьекта я не уверен. И в том и другом случае ведь на землю скидывается ОГФ модель. :-)
---------------------
А создавать таблицу для obj разве ненадо?


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Artos
    
Посты: 4176
Откуда:
Возраст: 66
12-08-2010 01:50 GMT3 час. #1315221   
karavan
Не проецируй свое воображение о реальности на реалии игры. Коды не знают что такое 'земля'. Событие дропа - это всего лишь 'потеря' одного объекта-актора другого объекта-предмета. А улетел он в небо, съеден иль упал на землю - это уже иные цифирьки и анимация, воспринимаемая тобою как 'близко к реальности'.
Тебе нужен ID выброшенного болта - ты его получил. А упадет болт на землю иль в болото иль еще куда и как - в данном контексте не имеет значения.
Ну а про некую 'таблицу для obj' - если еще хочется поупражняться - ну посоздавай парочку иль сколько не жалко ... ;-) Вот только при создании задумайся - а зачем это нать?

А в чем разница между 'выкидывается' и 'бросается'? В замахе? &P


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
karavan
    
Посты: 940
Откуда:
Возраст:
12-08-2010 01:57 GMT3 час. #1315223   
Artos Если я получаю айди предмета то мне он для чего-то нужет. Я вот и не пойму откуда мне считывать этот Айди? Точнее как?
Просто стандартным способом?
...
for k,v in pairs(ids) do
local obj = alife():object(v)
if obj then
...

отредактировал(а) karavan: 12-08-2010 02:06 GMT3 час.

Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
blackraven6
    
Посты: 624
Откуда: СПб
Возраст: 32
12-08-2010 02:00 GMT3 час. #1315224   
Artos Если нету разницы в дропе и метании болта, то можно избавиться от блока на поднятие кинутого болта? Там ведь название то отмечается, как у канистр и прочего у чего в ручную заблокировано поднятие. Где у него блок на поднятие стоит? В классе?



Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP


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


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

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