Это популярное сообщение. Dennis_Chikin 3 665 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-847221
Vano_Santuri 33 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Нет в разных, сначала стартует удаление и старт таймера на 5минут, после того, как сработает таймер идет спавн аномалий. Сейчас еще раз попробую. Что-то кончается, что-то начинается... Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366820
Monnoroch 6 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Забей-забей,я тут понял,что не в этом причина. Перепиши код,как я посоветовал - тогда и разговор можно продолжить.А так его читать и в уме оптимизировать и думать еще - мне сложно. Добавлено через 4 мин.: Я тут подумал - это вообще все ацтой. Секунду... Добавлено через 4 мин.: local tbl = {} function zaton_anom() lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) local obj = create_anomalies("zone_mine_electric_dinamic",3,pos_new.x,pos_new.y,pos_new.z,lv_new,0), table.insert(tbl,obj:id()) end function destroi_anomalies() for i = 1,#tbl do alife():release(alife():object(tbl[i]), true) end end Вот и все.Я использую только create_anomalies из твоего. А работать удаление будет в 700-800 раз быстрее твоего. попробуй мой код А зачем усложнять? Изменено 23 Января 2010 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366821
Vano_Santuri 33 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Вот переписал как и сказали ? function destroi_anomalies() for k=1, 65535 do local obj = level.object_by_id(k) if obj then if IsAnom(obj) then remove(obj) end end end end function IsAnom (obj) local s = obj:section() return string.find(s, "zone_mine_electric_dinamic") end function remove(obj) if obj then alife():release(alife():object(obj:id()), true) end return obj~=nil end Или может еще убрать что-нибудь? Добавлено через 2 мин.: Monnoroch, И так все просто? Что-то кончается, что-то начинается... Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366827
Monnoroch 6 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 local obj = alife():create(section,pos,lv,gv) obj:kill(obj) Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366837
Vano_Santuri 33 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Monnoroch, Сработало, и вправду быстрее намного работает, даже не виснет ничего. А если взять несколько таких function zaton_anom1() lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) local obj = create_anomalies("zone_mine_electric_dinamic",3,pos_new.x,pos_new.y,pos_new.z,lv_new,0), table.insert(tbl,obj:id()) end Но с разными аномалиями "zone_mine_electric_dinamic" они будут заноситься в таблицу? И удаляться оттуда? Что-то кончается, что-то начинается... Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366842
Monnoroch 6 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Vano_Santuri, local sect = "zone_mine_electric_dinamic" function zaton_anom_many(sect) for i=1,10 do zaton_anom1(sect..i) end end function zaton_anom1(sectt) lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) local obj = create_anomalies(sectt,3,pos_new.x,pos_new.y,pos_new.z,lv_new,0), table.insert(tbl,obj:id()) end Изменено 23 Января 2010 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366843
Vano_Santuri 33 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Monnoroch, извини, но у тебя кое-где ошибки, возможно и не ошибки, но с ними у меня не работало 1) ........ew.z,lv_new,0), --- эта запятая не нужна, иначе вылет на глобальную obj , ведь с запятой функция неверная. .....table.insert(tbl,obj:id()) , неверный метод(ошибка ссылалась на metod id) нужно ставить так table.insert(tbl,obj.id) тогда все отлично работает. И еще вопрос, эта таблица постоянная или нет? т.е спавню аномалии, данные сохраняются, могу побегать по локам, и когда вернусь на эту и запущу функциию удаления, аномалии удалятся? Если запущу с другой локи, тоже удалятся?(будут ли ошибки)? И каков предел таблицы? сколько она может в себя вместить? Что-то кончается, что-то начинается... Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366867
Monnoroch 6 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Vano_Santuri, нет.при выходе\загрузке игры таблица чистится. как восстанавливать - пиши на актора.как это делать - ууу,по пакетам читай,тут как раз обсуждение идет по ним... ну ошибся,что тут такого...я же не тестировал и писал то так,бегло. Вместить...ну....тысяч 100-200 наверное - цифер то.. Добавлено через 32 мин.: _Призрак_, спавнит нормального обычного НПС? Изменено 23 Января 2010 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366869
Garry_Galler 7 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) _Призрак_ Насчет трупа - obj:kill(obj) сработает только если сделать паузу между креате и килл - я так делал - таймер на 1 секунду. И готово - труп есть. Но это слишком громоздко. Все проще. Есть специальный метод для этого - в общем дарю способ: local sobj = alife():create("stalker", position, level_vertex_id, game_vertex_id) sobj:on_death() Vano_Santuri для твоей таблицы - вот пример сохранения одномерной таблицы из моих скриптов - сохраняется таблица такого же вида как у тебя. --сохранение данных function morg_save(p) local i = 0 --подсчитаем кол-во ключей for k,v in pairs(morg) do i = i + 1 end --запишем кол-во p:w_u8(i) --сохраняет целые числа до 256 for k, v in pairs(morg) do p:w_u16(k) --сохраняет числа до 65536 --вообще сохранять здесь ключи необязательно так как они идут в математическом порядке p:w_u16(v) --достаточно только значения сохранить end end --загрузка данных function morg_load(r) --загрузим кол-во ключей local i = r:r_u8() --запустим цикл for k = 1, i do --присвоим значения local id = r:r_u16() --соотвественно это тоже лишнее, но пусть для примера останется - если ключи будут идти не математическом порядке - вот тогда надо их точно сохранять morg[id] = r:r_u16() --здесь заполняем таблицу ключ=значение end end обе функции нужно вписать в бинд сталкер в функции function actor_binder:save(packet) и function actor_binder:load(reader) - каждую вписывать в одно и тоже место - чтобы они располагались в одинаковых местах каждой функции. для спавна разных аномалий добавляешь в функцию - в тело оператора for do - эту строчку local section = #anom[math.random(#anom)] - а к ней пишешь табличку anom с именами секций аномалий типа так local anom ={'zone_gravi_zone','zone_mincer', 'zone_witches_galantine','zone_mosquito_bald', 'zone_monolith','zone_zhar','zone_radioactive', 'zone_emi','zone_no_gravity','zone_zharka_static'} в креате соотвественно вместо имени пишешь section - и получаешь рандомный набор аномалий на любой вкус. Изменено 23 Января 2010 пользователем Garry_Galler Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366889
Malandrinus 615 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Garry_Galler, это как бы не специальный метод для убиения, а коллбек серверного объекта на смерть. Т.е. он автоматом вызывается при смерти непися. Весьма неожиданно, что он сам по себе вызывает смерть неписей. Я не пробовал, но может быть можно использовать метод kill_entity класса alife_simulator. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366912
Monnoroch 6 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 malandrinus, а коллбэк на хит вызывает хит? Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366946
Malandrinus 615 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 Monnoroch, нет конечно. И вообще смысл колбека - не вызывать что-то, а напротив быть вызванным чем-то, чтобы дать в этот момент что-то сделать дополнительное. Поэтому меня и удивило немного, что on_death вызывает смерть. Однако работает, а kill_entity не работает, я только что проверил. Кстати, в ЗП для серверного класса добавили метод kill, видимо как раз для решения этой проблемы. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366955
Monnoroch 6 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 (изменено) malandrinus, Да я чисто по аналогии) И правда,аномально...мб ПЫС и сами не знают? Вопрос: что может это означать: local a ={} function a:func_1() end function a:func_2() end Это что,такой самопальный класс на основе таблицы? Изменено 24 Января 2010 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-366956
Vano_Santuri 33 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 Garry_Galler, Спасибо, а как можно очищать эту таблицу? Допустим. 1)Спавним аномалии, данные о них записываются в таблицу. 2)Во время удаления эти данные извлекаются и аномалии удаляются. 3)Но, эти же данные остаются сохраненные в таблице, как их очистить? 4)В очищенную таблицу опять заносятся данные ..... Можно ли чистить её вообще? Что-то кончается, что-то начинается... Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-367027
Monnoroch 6 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 (изменено) Vano_Santuri, удалять: tbl = {} Добавлено через 3 мин.: Vano_Santuri, Проще по-другому делать.Ничего никуда не сохранять,просто в нет_спавне актора запускать спавн анамалий а в нет_дестрое их удаление. Изменено 24 Января 2010 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-367029
Malandrinus 615 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 Monnoroch, Конструкция вида: function <имя_класса/таблицы>:<имя_функции/метода>(<список_аргументов>) <тело функции> end это на самом деле комбинация из двух синтаксических украшений. Приведённый код эквивалентен следующей конструкции: <имя_класса/таблицы>.<имя_функции/метода> = function(self, <список_аргументов>)<тело функции>end Или иными словами в таблицу просто добавляется ещё одна пара с ключом <имя_функции/метода> и значением типа "function". Сама функция при вызове подразумевает наличие первого скрытого аргумента self. В случае использования при вызове нотации с двоеточием: t:fun(<список_аргументов>) это в свою очередь эквивалентно записи t.fun(t, <список_аргументов>) Т.е. при вызове таблица/объект подставляется в качестве первого неявного аргумента, который соответственно станет неявным аргументов self в объявлении выше. Короче да, самопальный класс =) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-367036
Vano_Santuri 33 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 Что-то не допру : 1) Спавнили аномалию, её данные занеслись в таблицу? local tbl = {} function zaton_anom() lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) local obj = create_anomalies("zone_mine_electric_dinamic",3,pos_new.x,pos_new.y,pos_new.z,lv_new,0) table.insert(tbl,obj.id) end 2)В этом же скрипте (поставили на биндер актора) т.е данные из таблицы сохранились? Но куда они сохранились? function morg_save(p) local i = 0 for k,v in pairs(morg) do i = i + 1 end p:w_u8(i) for k, v in pairs(morg) do p:w_u16(k) p:w_u16(v) end end 3)Так же загружаем игру, в биндере выводятся данные этой таблицы function morg_load(r) local i = r:r_u8() for k = 1, i do local id = r:r_u16() morg[id] = r:r_u16() end end 4)Запускаем функцию удаления, и она выводит данные о таблице и удаляет анормалии по этим данным? которые загрузились из нетпакета? function destroi_anomalies() for i = 1,#tbl do alife():release(alife():object(tbl[i]), true) end end Так получается? Просто я не могу понять ход работы этой всей системы. Потом вопрос такой. Вот удалились аномалии. Данные все равно в таблице остались? Если да, то Monnoroch, как это понять? удалять: tbl = {} Т.е вообще из скрипта удалить, не использовать её ? И встречный вопрос , что делают функции записанные в таком виде? ххххх ={} это как глобальные? или как? Что-то кончается, что-то начинается... Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-367039
Monnoroch 6 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 Vano_Santuri, это - очистить таблицу.присвоить ей начальное значение {}. malandrinus, это тоже luabind? Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-367048
Garry_Galler 7 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 Vano_Santuri первая функция запишет айди аномалий в таблицу по принципу ключ=значение так как таблица у тебя индексируется по умолчанию - то будет так [1] = айди [2] = айди [3] = айди и т.д. вторая функция сохранит все данные из таблицы (при нажатии квиксейва, записи сохранения или перезагрузке) в объект "actor" средствами нет пакета. третья функция загрузит данные таблицы из объекта "actor" и заполнит таблицу заново. четвертая функция проитерировав табличку удалит аномалии по их айди из таблицы. если в конце функции удаления (перед последним end) написать local имя таблицы ={} -- то таблица будет объявлена как пустая - то есть очищена от всех данных. И теперь при новой генерации аномалии она будет заполнена новыми айди. объявление переменных без идентификатора local означает их автоматическое объявление как глобальных - то есть с областью видимости за пределами файла\функции где они объявлены. Чревато ошибками если имена глобальных переменных пересекутся. Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-367197
Malandrinus 615 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 это тоже luabind?Нет. То, что я сейчас описал - это голый Lua. Будет работать где угодно. Luabind естественно опирается на эти синтаксические возможности. Добавляет к этому предопределённые конструкторы/деструкторы, глобальную функция создания, наследование. Ну в принципе это и средствами Lua тоже можно сделать, но там это просто готовое есть. Кроме того, если здесь строится на базе таблицы, то в Luabind - на базе пользовательского объекта. Естественно, в основном он нужен для экспорта сишных классов. "Просто классы" Luabind как бы приводит к своему стандарту оформления. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/170/#findComment-367209
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти