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

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








Автор Сообщение
АнархОПанк
    
Посты: 998
Откуда:
Возраст:
20-08-2010 16:49 GMT3 час. #1322383   
Чувак на болоте прописать надо по типу других террейнов. И лог приложил бы. За ссылку спасибо, надеюсь это не то что я уже качал.

Artos, singapur22 дело таки в иной мистике. Облазил каждый конфиг оружия и проверил на наличие хоть одного слова knife в конфиге - не нашел. Облазил все итемсы и прочее - не нашел.... Я даже не знаю что и делать. Даже когда нету конфига и ОГФ модели вылет, вылет, вылет...


Чувак на болоте
    
Посты: 87
Откуда: Волгодонск
Возраст:
20-08-2010 16:52 GMT3 час. #1322386   
Вот вам народ на пользование эскейп старой версии заточенный под ТЧ Качать


Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 17:08 GMT3 час. #1322411   
singapur22
Есть схем/алгоритмов, которые проверяют/перебирают предметы в рюкзаке актора.
Примеры возможных коллизий:
а) ограничитель веса/объема рюкзака - если вес/объем не задан и неизвестному весу/объему не проставлен дефолтный - вылет;
б) схема определяет кол-во предметов у актора и это кол-во используется для чего-то. Т.к. сепаратор по сути фейк - возможны фатальные последствия как от фейк-предмета (вспомним фейковые гранаты ...), так и от несовпадения кол-ва реальных предметов и общего кол-ва.
Собственно конфигом сепаратора можно попытаться нивелировать всевозможные коллизии, но ... моды развиваются и всех вариантов коллизий предусмотреть 'на будущее' - проблематично. Это и имел ввиду, т.е. необходимость проверять потребность исключений сепаратора их других схем/алгоритмов.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-08-2010 17:11 GMT3 час. #1322418   
АнархОПанк Тады извиняй. Помочь нечем.

Artos А как ты собираешься возвращать сепаратор обратно в инвентарь? Чё за метод? Я такого не нашол. Правда можно через transfer_item, привязать к какому нить инвентарному ящику и трансферить в него и обратно. Только тогда понадобятся ящики на каждой локации ( с этим проблем нет), и производить проверку на локу и выдавать коду соответствующий ей ящик. А это уже усложняет код.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 17:12 GMT3 час. #1322419   
АнархОПанк
Если игра ругается фатальным логом на отсутствие некой секции - то эта секция прописана где-то в кодах. То, что ты не можешь ее найти говорит только о том, что навыки поиска у тебя пока еще недостаточны. Помочь тебе виртуально в поисках не представляется возможным. Ищи и устраняй ошибку или ... сноси геймдату.


singapur22
При перемещении имел ввиду именно трансфер (transfer_item), хотя и недоделал этот вариант из-за неких глюков с определением parent_id ... Порой ящик не признавал себя 'родителем' ...
Ну насчет 'ящика на локации' - для меня нет проблемы в 'усложнении' кода. Т.к. в Симбионе используется менеджер оружия, да и во многих других модах использованы различные аналогичные схемы, то фейковый ящик на локации всегда имеется. Его то и можно использовать для сепаратора (да и для других целей!).

Если же просто дропить - то достаточно запоминать идентификатор объекта (если потребуется). Но ... и этого вроде как не потребуется, т.к дроп-тэйк идет 'за раз' с одним и тем же предметом.

отредактировал(а) Artos: 20-08-2010 17:22 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 18:07 GMT3 час. #1322505   
singapur22
Посмотрев симбионовский вариант пояса и вспомнив свои ковыряния, вспомнились и мысли об оптимизации:
- проверять жив ли актр необязательно. Пояс и у мертвого актора имеется ... Т.о. эта проверка на апдейле из бинда актора излишня.
- собственно постоянный апдейт из бинда актора излишен. Ведь состав предметов на поясе у актора изменяется только при а) дропе (потеря предмета), б) тэйке(приобретении предмета) и в) при ручных перемещениях в открытых окнах инвентаря (трансфер).
Т.о. если по факту этих событий (дроп/тэйк/транчфер) перепроверять состав пояса - то до следующего события (дроп/тэйк/транчфер) периодический апдейт не имеет смысла. В симбионовсков варианте колбэк на апдейт отрегистрируется при его ненадобности, разгружая ресурсы. Собственно и апдейт-то не требуется, а требуется двух-тактный обработчик а) помещение сепаратора на пояс и б) идентификация пояса/предметов.

Прим: Как то не дошли руки, но есть подозрения что признак/метка 'поясного' должна быть у предмета (например в object_flags). Врядли разрабы это записывают в сторадж актору.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
20-08-2010 18:50 GMT3 час. #1322580   
Artos
Не знал что код "сепаратора" есть в симбионе :-G (все никак руки не доходят скачать обновленную версию симбы)
---------------------
Вот такой вопрос есть - есть в нижеприведенном коде какой то фатальный изъян приводящий именно к тому глюку к


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-08-2010 18:50 GMT3 час. #1322581   
Artos Хм. И действительно, ведь в любом случае, пока инвентарь не будет закрыт, итерация не производится. Как и взятие с дропом работают от внешних источников. Я поработаю над этим.

Как то не дошли руки, но есть подозрения что признак/метка 'поясного' должна быть у предмета (например в object_flags). Врядли разрабы это записывают в сторадж актору.


Ты думаешь, что за столько лет этого так никто и не проверил?


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 19:00 GMT3 час. #1322602   
singapur22
Тут время - не показатель. Многие вещи зашорены и модмейкерам иль лень или недосуг ... Например, я это хотел перепроверить еще полгодика назад ...


Тут же вопрос из этой же 'зашоренной' серии:
  Чем КПК актора отличается от других?

Информация к размышлению: Секции предмета "КПК Меченый" нет в игре, но если КПК выкинуть (искусственно), то кроме надписи - все остальное как у стандартного КПК.

Для чего может быть использовано: При отсутствии своего КПК у актора - на миникартах исчезают метки враг/друг/нейтрал/труп. Можно управлять 'ослеплением' ГГ, а не тупо 'затирать' метки в конфигах.

Прим: Есть подозрение, что метка принадлежности ГГ хранится в object_flags КПК или аналогичном параметре.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
АнархОПанк
    
Посты: 998
Откуда:
Возраст:
20-08-2010 19:13 GMT3 час. #1322634   
Artos вылеты прошли когда я снес все конфиги и ОГФ модели от реаниматион прожект. Поствил арсенал мод (заменил только станд. модели) и вылеты начались опять.


Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 19:22 GMT3 час. #1322653   
erlik
По твоему куску кода сложновато оценивать его недостатки. Многие переменные 'из вне', что-то не ясно или может трактоваться двояко ...
Не ясно, например, почему нет выхода из цикла после 'Mina = true', что приводит к естественному 'Mina = false' по окончании цикла и выходе из приведенного куска кода.
Да и собственно 'if sItem ~= "mina" or (sItem == "mina" and not Mina) then' - нечто ведомое только тебе. Какое-то рандомное наполнение ящика по каким-то коэф-там ...
Собственно неясен и твой вопрос, в чем же заключаются твои начинающиеся непонятки?

АнархОПанк
Мне, как думаю и остальным, как то все равно что ты там к себе копируешь/удаляешь, после чего имеешь проблемы.
Тебе ясно сказано:

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-08-2010 19:31 GMT3 час. #1322681   
Artos Мда. С трансфером оказалась плохая идея. Я почемуто думал, что инвентори боксы не относятся к алайфу. Оказалось всё иначе. Они как и другие при отдалении на расстояние алайфа переходят в оффлайн. А так как метод трансфера позволяет юзать только клиентские объекты, то и использование его в данном случае весьма затруднительно. Так что, лучше оставить как есть (спавн/удаление). Собсно, если убрать итератор с апдейта, и юзать его только в соответствующих случаях, то это будет уже не такая уж и проблема.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
20-08-2010 19:38 GMT3 час. #1322703   
Artos
Выхода из цикла нет потому, что прерывать цикл только из-за того что в ящик уже заспавнилась мина я не планировал - он прерывается естественным путем - когда закончится лимит итераций для счетчика for. А лимит итераций определяет рандом.
Условие if sItem ~= "mina" or (sItem == "mina" and not Mina) then такое по смыслу -
если предмет не мина то спавним обязательно. Если мина - то только в том случае если еще не спавнили - определяем это по значению флага Mina . Иначе - ничего не делаем.
Вот это все я и объединил в этом кусочке - проверял это условие в SCITE - вроде как он вполне рабочее.
На входе функция имеет такие аргументы
function get_random_spawn(box, obj_name, lname, pos, lvid, gvid, coef)
юзердата ящика, имя владельца, имя уровня, позиция ящика, вертексы ящика, коэффициент (прибавляется к цифирьке num считанной из ини файла с со списком хабара и коэффициентами вероятности - например
num=0.5
coef = 0.1 - берется из таблицы
в итоге = 0.6
-------------------
Глюки - айди ящиков в которые спавнятся мины в некоторых случаях в таблице отсутствуют - проверял в том числе и выводом значений таблицы прямо перед юзом ящика - в ящике мина однако в таблице нет поля с айди этого ящика.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
batment
    
Посты: 267
Откуда: Киев
Возраст: 30
20-08-2010 19:39 GMT3 час. #1322708   
как вернуть чтоб кровосос высасывал из тебя кровь?


-=NSM=-
Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 19:40 GMT3 час. #1322713   
singapur22
ИМХО, что то тут не так.
Не задумывался как то о зависимости инвентори-боксов от алайфа (посмотрю) но то, что именно фейковый инвентори-бокс, ипользующийся для временного помещения в него оружия от всех неписей на локации, нормально работает - говорит том, что его можно использовать и для сепаратора.
Собственно фейковый инфентори-бокс спавнится один раз на локации. Где бы ГГ ни был в каком краю локации, все неписи, переходя конечно в он-лайн начинают подбирать себе подходящее оружие, отправляя излишки в фейк-ящик. Если бы он был зависим от алайфа - трансфер оружия приводил бы к неизбежным проблемам/вылетам.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
MRN$
    
Посты: 114
Откуда:
Возраст: 17
20-08-2010 19:49 GMT3 час. #1322744   
Почитал про битву с сепаратором - защемило... :)

Artos-у, Singapur-у, erlic-у.

В качестве сепаратора можно выбрать не "посторонний", а какой-нибудь из уже имеющихся у ГГ предметов, может в этом случае что-нибудь измениться в более конструктивную сторону?

И про "не очевидности" или как говорил Artos "варианты коллизий" - например, есть мод в котором "рюкзака" нет совсем, всё в(на) "поясе".


У меня то-же есть (давняя) проблема с поясом и инвентарём. Может поможете раз**50016ea8aab1bb10eeba**e = ctime
elseif time < ctime then
time = ctime + 3000

actor:inventory_for_each(del_separator)
separator_spawned = false
end
end

-- Перебор предметов инвентаря
function scan_inv(item)
local sect = item:section()

if sect == "separator" then
flag = 1
return
end

if flag == 1 then
if string.find(sect, "af_") then
insert_to_table(belt, sect)
end
end
end

-- Добавление в таблицу
function insert_to_table(tbl, sect)
if tbl[sect] == nil then
tbl[sect] = 1
else
tbl[sect] = tbl[sect] + 1
end
end

-- Удаление разделяющего предмета
function del_separator(item)
if item:section() == "separator" then
sim:release(sim:object(item:id()), true)
--dbglog("РАЗДЕЛИТЕЛЬ удалён")
end
end

-- Определение наличия предмета в одном из слотов
function slot_item(item)
for i=0, 12 do
local obj = actor:item_in_slot(i)
if obj and item:id() == obj:id() then
return i
end
end
return nil
end

-- Поднятие предмета
function on_item_take(item)
if item:section() == "separator" then return end

if (separator_spawned == true) then
actor:inventory_for_each(del_separator)
separator_spawned = false
end
--dbglog("Получен предмет [%s]", item:section())
end

-- Выброс предмета
function on_item_drop(item)
if item:section() == "separator" then return end

if (separator_spawned == true) then
actor:inventory_for_each(del_separator)
separator_spawned = false
end
--dbglog("Предмет [%s] выброшен/удалён/съеден", item:section())
end
[/code]

отредактировал(а) MRN$: 20-08-2010 20:08 GMT3 час.

всё легко
Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 19:50 GMT3 час. #1322745   
erlik
Вот э**50016ea8aab1bb10eeba**/code] внушает подозрение на твои проблемы. Два аргумента в таблицу не вставляется 'за раз', хотя по стандартам LUA (массив, подмассив, значение) такая запись корректна. Но(!) не забываем, что в Сталкере свой интерпретатор.
Или ты спавнишь еще где-то в ящики или эта строка приводит к нефатальному прерыванию потока ...
Попробуй иначе, т.е. более 'штатно' типа: table.insert(mines[box.id], sobj.id)


MRN$
В свое время прорабатывал вариант реального предмета в качестве сепаратора, но ...
- при старте новой игры на поясе у ГГ ничего нет, а в слотах как минимум детектор, фонарь, ...
- не так много в игре предметов, которые могут помещаться на пояс. Обязательность наличия такого предмета у ГГ далека от '100% в любой ситуации'. Назови варианты для сепаратора, плз, подумаем.

Из твоего вопроса не ясно понятие 'фокуса' и соответственно его потеря. Собственно и вопрос то вероятно отпадет, если ты прочтешь уже сказанное: "Обновления/итерация по поясу при открытых окнах инвентаря НЕ должна производится".

Сорри, не люблю подобные вопросы обсуждать в ПМ, если на то нет причин. Ведь все что тут говорится/обсуждается может быть полезным не только 'болтающим'.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-08-2010 20:14 GMT3 час. #1322783   
Artos В том то и дело. Спавню ящик за локацией (на значи**50016ea8aab1bb10eeba**n
get_console:execute(tostring(box))
return
end[/code]

Консоль заполняется постоянно выводимой nil.
Это говорит о том, что объект с данным айди находится в offline

Проверяю так. Меняю координаты спавна за локой, на координаты актора, и бокс начинает юзаться кодом.

----------------------------------------

Исправил скрипт пояса у себя в журнале. Теперь итерация юзается только в соответствующих случаях.
Итерацию за три цикла оставил.

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

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
СидырыЧЪ
    
Посты: 208
Откуда:
Возраст: 30
20-08-2010 20:16 GMT3 час. #1322784   
blackraven6
я не говорю что нету там просто спаун зомби а контролер это другое дело


Horrible area mod Видео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 20:34 GMT3 час. #1322809   
singapur22
Хм, странности :-)
Когда-то я фейк-ящик спавнил обычным порядком и 'прятал' где-нить чтобы игроку не попадался ... Но все же изредка 'старрый' ящик кто-то находил.
После этого я его стал спанить в 'воздухе' (300 м) и подвешивать ... Но после сэйв-лоада ящик все одно падал на землю.
Сейчас использован обычный АМК-рюкзачок в качестве неюзаемого инвентори-бокса.
Во всех вариациях проблем пропадания фейк-бокса в офф-лайне не обнаруживалось ни разу хотя ГГ бегает по всей территории локаций, что неизбежно приволило бы к попаданию фейк-ящика за пределы алайфа.
Возможно первичный спавн далеко от ГГ не приводит к net_spawn'у ящика, пока ящик не окажется в пределах алайфа ... Нужно 'посмотреть' ...

MRN$
Довольно неоптимальный поясной-код ... Ну да это на 'вкус и цвет'
Насчет 'фокуса':
Я у себя отказался от сканирования пояса именно по причине потери фокуса и перемещении предметов по ячейкам. Неудобно, когда торгуешь и при освобождении ячейки все остальные предметы перемещаются в рюкзаке. Избежать этого неудастся, т.к. предметы в рбкзаке (включая пояс и слоты) занимают свои места по индексам появления в инвентори. Если некий предмет исчез - освободился индекс и любая итерация изменит расположения предметов, заполняя освободившийся индекс/ячейку.
Собственно если нет причины сканировать пояс при открытых окнах инвентаря - прекращать сканирование и фокус не будет теряться.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Mehanik Yar
    
Посты: 469
Откуда: Уфа
Возраст:
20-08-2010 20:49 GMT3 час. #1322846   
ребят, можно вопрос, как во время игры убрать заспавненный объект?, например переход между локациями, или непися или еще что либо. Подскажите пожалуйста.


Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 21:00 GMT3 час. #1322863   
singapur22
Прочитал статью по поясу. ИМХО, стОит немного уточнить некоторые неявные моменты:
- т.к. имеется два варианта итерации по инвентори актора, то обратить внимание читателей именно на 'inventory_for_each', т.к. именно этот метод имеет порядок сканирования от рюкзака к слотам, в отличии от обычно употребляемого 'iterate_inventory'.
- при добавлении предмета в рюкзак (не в слот и не на пояс, есть и такие), добавляемый предмет получает последний индекс в рюкзаке, а итерация по рюкзаку начинается от первого 'в рюкзак попавшего'. Т.о. при сканировании вновь добавленный предмет оказыается последним в рюкзаке и первым перед предметами на поясе/в слотах, что и дает возможность отделить 'по сепаратору' предметы на поясе от 'рюкзачных'.


Mehanik Yar
Получить любым способом серверную изердату объекта, который требуется удалить, и удалить этот объект стандартным 'reliase'.
Вариантов получения серверного объекта (юзердаты) множество. По игровому идентификатору (ID), по Story_Id, по его имени ...

отредактировал(а) Artos: 20-08-2010 21:04 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
20-08-2010 21:09 GMT3 час. #1322874   
Artos
Спасибо за совет - все оказалось действительно так.
Метод table.insert() с тремя аргументами - таблица, позиция, значение - работает в сталкере некорректно. (с двумя - таблица, значение - глюков вроде не замечал.)
Зато mines[box.id] = sobj.id действует безуп**50016ea8aab1bb10eeba**


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
20-08-2010 21:17 GMT3 час. #1322890   

# Artos :
Вот э**50016ea8aab1bb10eeba**/code] внушает подозрение на твои проблемы. Два аргумента в таблицу не вставляется 'за раз'

Тут не может быть никаких двояких понимай :

table.insert (table, [pos,] value)
Вставляет элемент value в позицию pos в table, сдвигая вверх остальные элементы. Значение по умолчанию для pos равно n+1, где n это длина таблицы (см. §2.5.5), таким образом вызов table.insert(t,x) добавляет x в конец таблицы t.



Не стань номинантом премии Дарвина.
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
20-08-2010 21:34 GMT3 час. #1322913   
Gun12
А ты проверь на сталке - и увидишь вопиющую разницу. С вариантом, где три аргумента - ведь по стандарту - table.insert (table, pos, value) где pos - указанная пользователем позиция вставки, - равнозначно table[pos] = value
Однако в реальном применении в скриптах сталкера все оказывается не таким стандартным. Увы.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 21:35 GMT3 час. #1322916   
Gun12
Ни о какий двояких пониманиях нет и речи. Речь о том, что классический LUA и его интерпретатор в Сталкере могут/имеют различия в реализации тех или иных методов. Мы уже не раз на это обращали внимание (вспомним хотя бы arg.n).
Т.о. для себя я уже вывел пару правил:
- если нет необходимости/целесообразности применять 'нештатные' для игры методы, стОит использовать те, что имеются в игре.
- если в игре появились проблемы/неясности от использования вроде бы стандартного для LUA метода, стОит испоьзовать тот вариант, который проверен кодами игры, т.е. использован разработчиками.

P.S. Собственно и даже стандартyая трактовка в данном случае все же НЕоднозначна!
  table.insert(mines, box.id, sobj.id) - тут box.id НЕ индекс позиции, а значение, которое в свою очередь является субтаблицей, к воторую и заносится новое значение 'sobj.id'.
Т.о. в данной конкретной записи собственно и нет индекса/позиции по которому должна быть выполнена вставка, а задано значение/ключ субтаблицы, в которую должно быть выволнено добавление значения.


erlik
То, что метод 'table.remove()' работает некорректно НЕ замечал. Однако его использование должно быть аккуратным. Если подобным методом удалять строки массива 'на проходе' в цикле - то запросто можно получать некорректные варианты.
Как правило, я стараюсь или занилять позиции/строки, подчищая их потом, либо запоминая позиции, удалять их по выходе из циклов.

отредактировал(а) Artos: 20-08-2010 21:56 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
20-08-2010 21:54 GMT3 час. #1322951   
Artos
У меня цикла там нет. Как правило я тоже пользуюсь заниливанием - так как работает опять же всегда адекватно.
Кстати, если по доументации lua table.remove(t) - по умолчанию аргумента pos удаляет последний элемент таблицы, то почему разрабы для того же самого действия писали так
table.remove (t, table.getn (t)) ? Странные люди однако ...:-)

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


table.insert(mines, box.id, sobj.id) - тут box.id НЕ индекс позиции, а значение, которое в свою очередь является субтаблицей,

Вот тут ты не прав. Субтаблица будет только если сделать так
mines[box.id] ={}
table.insert(mines[box.id], sobj.id)

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

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
    
Посты: 4176
Откуда:
Возраст: 66
20-08-2010 22:01 GMT3 час. #1322960   
erlik
Или у меня зацикл или ...
В


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
20-08-2010 22:09 GMT3 час. #1322975   
Artos
Ну дак я и проверяю if sItem == "mina" and not mines[box.id] then
если итемс равен "мина" и в таблице mines нет поля с индексом box.id (стандартный способ проверки), тогда в это поле записать айди - дабы не было перезаписи в одно и тоже поле. Но значение этого поля нигде не объявлено как таблица. Значение просто number.
Так что это

именно является проверкой на отсутствие мины в подмассиве (субтаблица mines[box.id]) конкретного ящика (с box.id) и (попыткой) добавление в этот подмассив общего массива mines нужного идентификатора мины.

ошибочная интерпретация. :-)
--------------------------------------------------------------------------------------------------------------
Кстати - а ящики у меня сами по себе в воздухе зависают при переспавне - без всяких перезаписей нетпакета.

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

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
    
Посты: 2089
Откуда: Рубцовск
Возраст: 45
20-08-2010 22:17 GMT3 час. #1322991   
Artos Лады. Сделаю уточнения.
И на счёт offline инвентори_бокса. Проверил более тесно. Привязка к алайфу подтверждается. Собсно я решил эту проблему. Достаточно задать ему постоянное нахождение в онлайн сразу после спавна:

sobj:can_switch_online(true)
sobj:can_switch_offline(false)

И всё оказывается в ажуре. :-)


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


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


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

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