Автор Сообщение
Посты: 2338
Откуда:
03-04-2011 13:03 GMT3 час. #1462534   
Stalk15
Синие инвентарные ящики(с видимым визуалом equipments\item_box_01_visual.ogf) в оригинале расставлены по локациям в SDK и поэтому как и сказал Максим Р. впаяны в геометрию уровня. В качестве инвентарной подкладки используется ящик-невидимка(с моделькой из папки physics\equipment_cache\) и с классом O_INBOX.
Если заспавнить скриптом видимый синий ящик с классом O_INBOX, то можно обнаружить, что в этот ящик почему то нельзя заглянуть(у меня вроде так было). Все прочее ящики будут иметь нормальный доступ в инвентарь, однако будут физически проницаемыми(через них можно проходить), так как объекты класса O_INBOX не имеют физической оболочки. Поэтому чтобы решить данную проблему мне пришлось в тайниках пойти на такой трюк - спавнить два типа ящиков на одной координате - инвентарную невидимку и видимый ящик с классом P_DSTRBL (можно и O_PHYS_S). А чтобы видимый ящик(имеющий физ. оболочку) нельзя бы случайно сдвинуть с места - закреплять его на месте спавна специальной функцией.


Посты: 2
Откуда:
03-04-2011 13:35 GMT3 час. #1462564   
помогите мне, тут такая проблемка..как уменьшить/увеличить отличие цен на продажу товара от цен на его покупку. долго везде искал, копался...не нашёл, помогите, обьясните, я просто этим никогда не занимался и не создавал модов...пожалуйста:-(


Посты: 211
Откуда:
03-04-2011 17:47 GMT3 час. #1462729   
Люди, здравствуйте.
subtlegeneral, вот. Тут рассказано о том, что и как в торговле. В том числе и о ценах:

Все настройки, связанные с ассортиментом торговцев в игре, находятся в файлах gamedata\config\misc\trade_***.ltx


Секция [trader_generic_buy]
Эта секция описывает какие товары торговец будет покупать.
Название предмета = минимальная цена покупки, максимальная цена покупки
Например:
wpn_vintorez = 0.5, 0.7
Это значит что торговец купит оружие от 50% полной его стоимости до 70%, т.е. если Винторез стоит 1000, то торговец купит его в диапазоне от 500 до 700 рублей. Диапазон зависит от отношения торговца к Меченому - чем лучше, тем дороже купит


_____________________________________________________________________________

А теперь, собственно говоря, мои вопросы:
1)

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: ...:\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:338: attempt to index global 'my_script' (a nil value)

Вот, я не могу понять, что же это я делаю не так. My_script - название файла с моей функцией. Функция называется: main_f(). Объявлял ее в bind_stalker вот так: my_script.main_f()


2)
Я сделал новый тип предметов. Как хранить в каждом какой-то новый параметр, чтобы при спавне нового предмета этого типа, этот параметр уже существовал (и был инициализирован). Через нет-пакеты, как мне подсказали. Но как именно?..

3)
Как вообще посмотреть содержание нет-пакета? А то, чтобы в него вносить изменения, надо знать его структуру.


Посты: 1023
Откуда:
03-04-2011 17:58 GMT3 час. #1462738   
erlik, Максим Р.
Спасибо, теперь разобрался.


vhodnoylogin
1) В твоем скрипте(my_script.script) допущена синтаксическая ошибка. Скачай чекер луа, он найдет ошибку.


Я заспавнил в инвентарный ящик предметы. Если сохраниться и загрузиться, то заспавненные предметы в ящике изчезают. Вроде бы должны сохраняться предметы и не изчезать.
Как быть? Придется все секции предметов сохранять в пстор(предметов то много)?


vhodnoylogin
Тогда покажи, что там у тебя в твоем скрипте написано.

отредактировал(а) Stalk15: 03-04-2011 18:05 GMT3 час.

Посты: 211
Откуда:
03-04-2011 18:03 GMT3 час. #1462741   
Stalk15, скачал-проверил-не нашел.

Checking D:\S.T.A.L.K.E.R\gamedata\scripts\my_script.script:
Found 0 errors.



Проблема еще стоит.


Посты: 1946
Откуда:
03-04-2011 18:34 GMT3 час. #1462765   
vhodnoylogin всмысле посмотреть содержание?...может узнать на сколько заполнен?

добавлено спустя 22 секунд

vhodnoylogin кидай скрипт сюда - будем смотреть, "тут тебе не телепаты"(с)

отредактировал(а) Struck: 03-04-2011 18:36 GMT3 час.

Посты: 211
Откуда:
03-04-2011 18:39 GMT3 час. #1462769   
--------------------------------------------------------------------------------------------
**5001001a66cf24ce67c0**
--------------------------------------------------------------------------------------------

**5002001a66cf24ce67c0**de]

--------------------------------------------------------------------------------------------
function number_of_ammo(obj)
local se_obj = alife():object(obj:id())
local packet = net_packet()
cse_alife_item_ammo.STATE_Write(se_obj, packet)
packet:r_seek(packet:w_tell() - 2)
return packet:r_u16()
end

__________________________________________


Посты: 2338
Откуда:
03-04-2011 19:30 GMT3 час. #1462813   
Stalk15
Вообще странная проблема с исчезновением предметов.
Странная потому что я с ней не сталкивался :-) Но в АМК дабы ее обойти придумали перевод ящиков-тайников в онлайн\оффлайн (или наоборот :-))
Однако у меня спавн предметов в подобные тайники проходит безупречно. Может просто люди не так спавнят?
Хотя у меня спавн предметов в ящик происходит одновременно со спавном ящика - то есть получается что они спавнятся в серверный объект - может поэтому у меня все так удачно


Посты: 211
Откуда:
03-04-2011 20:24 GMT3 час. #1462849   
erlik, благодарю за ссылку, но не помогло:
1) end'ы убрал. но ошибка осталась
2) чекер в моей писанине ничего не нашел
3) нашел ошибку в коде Сингапура

И все же, что означал мой лог?
Потому что я перешел к следующему логу:

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: d:\s.t.a.l.k.e.r\gamedata\scripts\my_script.script:20: attempt to index upvalue 'a_item' (a nil value)


Чем-то похоже, да? Только тут говорится о 'a_item'.


Посты: 2338
Откуда:
03-04-2011 20:47 GMT3 час. #1462861   
vhodnoylogin
Если честно переписывать твой код мне лень. У тебя значение переменной active_id будет всегда 0.
Так что думай и делай выводы. А вылет связан с нелогичностью условий - поэтому если у ГГ в руках пусто - ты вылетаешь, так как a_item равна nil, а она у тебя в конце кода используется без всякой на то проверки.


Посты: 940
Откуда:
03-04-2011 22:26 GMT3 час. #1462932   
Кто может подсказать, как проверить ранг актера?


Посты: 1946
Откуда:
03-04-2011 22:31 GMT3 час. #1462935   
**5001001a66cf24ce67c0**

примеров уйма...


Посты: 940
Откуда:
03-04-2011 22:47 GMT3 час. #1462943   
Struck ОК посмотрю. А то искал по rang. :-)


Посты: 1023
Откуда:
04-04-2011 11:34 GMT3 час. #1463066   
erlik
Я предметы спавню, когда ящик в оф


Посты: 4176
Откуда:
04-04-2011 12:39 GMT3 час. #1463077   
erlik, Stalk15
Если ящик уже заспавнен и в него доспавнивать или трансферить (перемещать) - то, т.к. ящики не биндятся и не имеют апдейтов - доспавненные предметы не остаются в ящике после перезагрузки (сохраняется серверная часть, теряя клиентские дополнения). Как уже заметил erlik - следует перевеси ящик из онлайна в оффлайн и обратно (что и сделано было в АМК), тогда все предметы сохранятся в сэйвах.
Это касается не только подобных ситуаций. Например на арене - вещи тоже изымаются/возвращаются через 'онлайновые' ящики и ... если не озаботиться - после сэйва своих шмоток можно недосчитаться ...


Посты: 28
Откуда:
04-04-2011 13:51 GMT3 час. #1463103   
лиди скажите чтоза глюк когда на наклонной поверхности у меня гг вниз ползет это стало появлятся после изменения личных параметров

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

и кстати как увеличить или уменьшить шанс выпода тайника

отредактировал(а) alykard216: 04-04-2011 13:58 GMT3 час.

Посты: 78
Откуда:
04-04-2011 14:03 GMT3 час. #1463111   
alykard216 файл treasuremanager вроде он в скриптах вот точнее
Редактирование тайников:
Частота выпадения:
treasure_manager.script - редактируешь его получаешь частоту выпадание тайников - 65 меняй на что-нить допустим на 10...


Посты: 28
Откуда:
04-04-2011 14:10 GMT3 час. #1463117   
Silent_Assassin спасибо


Посты: 78
Откуда:
04-04-2011 14:13 GMT3 час. #1463118   
alykard216 незачто , если ещё вопрос есть задавай


Посты: 28
Откуда:
04-04-2011 14:16 GMT3 час. #1463120   
чеем редоктировать 3D модели

добавлено спустя 31 секунд

и all.spavn

отредактировал(а) alykard216: 04-04-2011 14:16 GMT3 час.

Посты: 4176
Откуда:
04-04-2011 14:25 GMT3 час. #1463125   
Вопрос: (любителям головоломок)

Практически в любом моде появляются с той или иной частотой ошибки типа: 'e_entity->ID_Parent == id_parent'.
Мои изыскания показали, что в основном ноги растут из схемы собират**5007001a66cf24ce67c0**_reject
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp
[error]Line : 24
[error]Description : device_pda23827
[error]Arguments : gar_stalker_respawn_123826
[/code]
Предметы могут быть разными (оружие, медикаменты, еда, ...). Общее одно - предмет уже прошедший операцию трансфера (перемещения) в онлайне сервер пытается разаттачить от прежнего владельца и судя по логу - владельцем оказывается сам предмет. Т.е. сервер запаздывает на цикл.
Вот два (упрощенных) варианта трансфера, которые одинаково пропускают подобную ошибку:
[code]
local iCnt = oBody:object_count()
for i=0,iCnt-1 do
oItem = oBody:object(i)
sSection = oItem:section()
if sSection ~="bolt" and oItem:parent() and oItem:parent():id() == oBody:id() and not oBody:marked_dropped(oItem) then
oBody:mark_item_dropped(oItem) --/ ставим метку перемещения
oBody:transfer_item(oItem,oNPC) --/ перемещаем предмет
end
end

oBody:iterate_inventory(
function (dummy,oItem)
local sSection = oItem:section()
if sSection ~="bolt" and oItem:parent() and oItem:parent():id() == oBody:id() and not oBody:marked_dropped(oItem) then
oBody:mark_item_dropped(oItem) --/ ставим метку перемещения
oBody:transfer_item(oItem,oNPC) --/ перемещаем предмет
end
end
,nil)

Прим: наличие/отсутствие метки трансфера в алгоритмах не влияет на (не)возникновение ошибки.
[/code]
Есть ли у кого мысли о причине возникновения подобных рандомных коллизий и варианте их устранения?

Прим: Варианты замены трансфера переспавном не предлагать. Имеются весткие причины неприемлемости подобной замены.

- переспавн квестовых предметов в ассинхронном режиме порой приводит к провалу квестов;
- переспавн различных предметов с уже установленными параметрами требует дополнительных усилий по восстановлению этих параметров. Для оружия, например, это и исправность, и заполнение магазана, и навешанные аддоны, ...
- ...


alykard216, Silent_Assassin
Не путайте форум с чатами! Спасибки, расшаркивания и пр. подобное - в ПМ, пл.
С вопросами типа 'чеем редоктировать ...' -> ФАК
C неграмотными постами -> в бан ...

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

Посты: 755
Откуда:
04-04-2011 14:59 GMT3 час. #1463140   
Artos, не знаю как непись, а гг пять минут назад получил такой вылет при умирании от гранаты, в то время, как был в аномалии. Аномалия уже была взведена и сразу разорвала труп гг, как тот умер. Я был в мультиплеере.. один.. без модов


Посты: 4176
Откуда:
04-04-2011 15:04 GMT3 час. #1463146   
SkyLoader
Не очень внятна суть твоего поста.
При разрыве ГГ в аномалии или любом подобном 'исчезновении' ГГ из игры - не удивителен факт вылета. Немало кодов НЕ предусматривает исчезновение ГГ (db.actor) из игры после ее начала.

С описанным мною вопросом это никак не связано, тем более в моем случае ни труп, ни НПС ни в каких не аномалиях и никаких гранат/... НПС просто подходит к трупу и обыскивает его в относительно спокойной обстановке.


Посты: 78
Откуда:
04-04-2011 15:12 GMT3 час. #1463151   
alykard216 Для редактирования Allpaspawn hex редактор или xrSpawner 0.13.0 3D модели вроде 3D Max


Посты: 755
Откуда:
04-04-2011 15:23 GMT3 час. #1463157   
Artos, а, у меня такого не было. Только при удалении трупа мог быть такой вылет.


Посты: 28
Откуда:
04-04-2011 15:29 GMT3 час. #1463164   
к стати как зделать чтобы на pda приходили сообщения о смерти сталкеров и которых я убил


Посты: 19
Откуда:
04-04-2011 15:35 GMT3 час. #1463167   
ребят, подскажите пожалуйста как исправить вылеты с ТТ-2 при загрузке авто и квик сейвов


Посты: 4176
Откуда:
04-04-2011 15:35 GMT3 час. #1463168   
SkyLoader
Ты заблуждаешься в том что у 'тебя' не было. Можно пройти игру (чистую) или мод не один раз и не напоротьсяч на подобную ошибку,но это не значит что ошибка невозможна.
Давай не будем флудить не по сути. Мой вопрос не в том (не)было ли у кого-то ... а как избавиться от ошибки трансфера(!) и от вероятности ее проявления.


Посты: 2338
Откуда:
04-04-2011 22:27 GMT3 час. #1463443   
alykard216
xr_motivator.script->каллбек на смерть->проверка кто убил->мессидж

Silent_Assassin
Вроде у Мавроди. Если не знаешь - лучше промолчи( в соответствии со своим ником). allspawn редактируют обычным текстовым редактором - предварительно его необходимо распаковать утилитой ACDC от bardak'а. XR Spawner"ом пользуются только дети.

Alex_v-bass
В тему ТТ_2 шагай... смело и уверенно. Здесь она есть. Или на оффсайт мода. Или в тему мода на сайте amk-team. А вообще там нет таких вылетов на патче 1.0004. Если у тебя другой патч - меняй.
----------------------------------------------------
Artos
Подобная ошибка у меня интенсивно проявлялась при тестировании мода RealBags - при дропе большого числа предметов за раз из инвентаря\рюкзака. Долго искал причину и пытался придумать как обойти вылет пока наконец просто не добавил в функцию дропа дополнительную проверку IsExistObject(gObj) - где проверяется наличие серверной копии у клиентского объекта.

function IsExistObject(gObj)
return level.object_by_id(gObj:id()) and alife():object(gObj:id())
end

--// Author function 7.9 (aka MRN$)
function DropObject(gObj)
local actor = db.actor
if gObj and IsExistObject(gObj) and not tExeptItem[gObj:section()] then
local posX = actor:position().x
local posY = actor:position().y
local posZ = actor:position().z
local dirX = device().cam_dir.x
local dirZ = device().cam_dir.z
local x_off = dirX*1.6
local z_off = dirZ*1.6
local x = posX + x_off
local y = posY + 1
local z = posZ + z_off
actor:drop_item_and_teleport(gObj, vector():set(x, y, z))
end
end

Вылет как ни странно исчез. И больше при дропе никогда не проявлялся.

отредактировал(а) erlik: 04-04-2011 22:52 GMT3 час.

Посты: 4176
Откуда:
05-04-2011 09:28 GMT3 час. #1463510   
erlik
Bpоде бы в моем пояснении хотя и не явно, но фигурируют и клиетский и серверный объекты ..., т.е. проверка их наличия само собою подразумевается.
Да и сам лог говорит НЕ об отсутствии серверного объекта, а о некорректности 'родителя'.
Ошибка же не 'интенсивна', как ты выразился, а как раз довольно редка, но тем не менее хотелось бы ее исключить.

P.S. Резануло глаза в твоем коде:

local posX = actor:position().x
local posY = actor:position().y
local posZ = actor:position().z
local dirX = device().cam_dir.x
local dirZ = device().cam_dir.z
local x_off = dirX*1.6
local z_off = dirZ*1.6
local x = posX + x_off
local y = posY + 1
local z = posZ + z_off

Зачем же тратить ресурсы на получение одного и того же по нескольку раз?
Вот так и проще и вроде как понятнее:

local pos = actor:position()
local dir = device().cam_dir
local x = pos.x + dir.x*1.6
local y = pos.y + 1
local z = pos.z + dir.z*1.6
:-)

отредактировал(а) Artos: 05-04-2011 10:36 GMT3 час.



Форумы Архив » Свалка Модификации ТЧ, вопросы и ответы (старое, по 14.06.11)


Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Организация GSC Game World признана нежелательной на территории Российской Федерации.
Использование материалов сайта возможно с разрешения администрации. © 2004–2025 «Stalker-Portal.ru»