Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Starter 238 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 А не подскажете, как вывести на худ вместимость инвентаря? И как изменить прозрачность карты на худе? Насчёт первого не очень ясно, вес? объём? Насчёт 2-го открываешь текстуры худа через фотошоп на катором установлен плагин nVidea и в каналах меняешь альфа-канал. Белый видно, чёрный-нет, значит серый прозрачный))) Всё зависит от яркости Чем белее тем виднее. ЯДиск папка с крутым схроном! Ссылка на комментарий
Malandrinus 615 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 вот как мне отформатировать строку Было бы там чего изучать, особенно для вывода строк. text = string.format("%s %s %s %s %s.%s.", obj_name, verb, adjective, substantive, str, habar) Вылетает на охранении 50-го мессиджа Не могу понять почему меня не срабатывает проверка Стоит проверка на запас в 180 байт. Потом пишутся все данные функцией taynik_rnd.message_save. Ты бы привёл её код, а то так не понять. Что за число 180? Какое отношение имеет к записываемым данным? Где твои 45-50 сообщений? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Dimmer 0 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Ребят! недавно спрашивал как можно уменьшить кол-во монстров или убрать их совсем...подсказали что можно изменить время бодрствования монстров...я изменил в основном на ночное время...но НЕРАБОТАЕТ! как появлялись днем так и лезут...подскажите как их убрать или уменьшить количество... Ссылка на комментарий
Garry_Galler 7 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) malandrinus насчет string.format понял - все просто :ny_ph34r_1: спасибо. я пробелы поставить не додумался между "%s и %s - и у меня все слитно выходило. function message_save(p) local size= 0 size = table_maxn(message) --получим кол-во строковых ключей в таблице первого уровня p:w_u8(size) --запомним их кол-во for k, v in pairs(message) do p:w_stringZ(k) --запомним имена строковых ключей size= 0 size = table_maxn(v) --запомним кол-во ключей в таблицах второго уровня p:w_u8(size) --запишем кол-во целочисленных ключей в этих таблицах --теперь проитерируем сразу таблицы третьего уровня - где ключи - числа, а значения таблицы for index, tab in ipairs(v) do p:w_stringZ(tab.text_id) --запишем значение первого ключа p:w_u16(tab.id) --запишем значение второго ключа end end end table_maxn(tbl) - это моя функция которая возвращает кол-во ключей таблицы - использую в основном для строковых ключей(хотя годится и для целочисленных) - почему то разработчик LUA не позаботился о такой мелочи - вот и приходится строковые считать через отдельную функцию. 180 байт это типа примерный максимум который будет записан - то есть длина одного мессиджа + ключи таблицы. вот я и проверяю - если 180 байт+ то что уже есть (packet:w_tell() возвращает ведь текущую позицию записи - то есть байт на котором остановилась последняя запись) меньше размера пакета то пишем. Иначе - нет. Но сейчас понял что это как то не то -- надо получать точный размер того что придется записать - буду исправлять. ЗЫ: вопрос не по теме - как подключать в SCITE библиотеку классов? вроде require (classlib") - только куда это вписать и надо ли модуль создавать...и саму библиотечку куда лучше положить. Изменено 23 Января 2010 пользователем Garry_Galler Ссылка на комментарий
Starter 238 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Labus насчёт 1-го это работа в скриптах, в них я полный 0. Так что спроси у скриптера. Насчёт второго знаю что в папке config\ui в некоторых файлах есть свойства r="225" g="225" b="250" a="255", наверное но врать не буду точно не знаю, что a="255" это альфа, значение 0 полностью прозрачно, 255 не прозрачно. Если в этих файлах есть путь к map то можешь попробовать исправить, ну или план Б, берёшь текстуры карт Зоны и везде альфа высветляешь. ЯДиск папка с крутым схроном! Ссылка на комментарий
Dimmer 0 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Labus! в принципе частоту спавна я нашел...мне б некоторых монстров убрать совсем...изломов например...или просто количество монстров, ато целые стада встречаются... Ссылка на комментарий
Malandrinus 615 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Garry_Galler, Но сейчас понял что это как то не то -- надо получать точный размер того что придется записатьПравильно. Ещё вариант, проверять оставшееся место перед каждым оператором записи. вопрос не по теме - как подключать в SCITE библиотеку классов? вроде require (classlib") - только куда это вписать и надо ли модуль создавать...и саму библиотечку куда лучше положить. Вписать в начале головного модуля. Библиотеку клади рядом с выполняемым файлом. А что за классы? Luabind же в SCITE недоступен. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Dimmer 0 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Labus, 6,39 mb нет не знаю..и что там редатировать тож не знаю...(( Изменено 23 Января 2010 пользователем Dimmer Ссылка на комментарий
Garry_Galler 7 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 malandrinus так как я в этом пока не разбираюсь, то напишу как написано на сайте откуда скачал. "Библиотека построения именованных классов. Самая продвинутая реализация классов и практически всех принципов ООП включая виртуальные классы от разработчика LUA." Ссылка на комментарий
uglan59 1 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Dimmer, можно попробовать уменьшить количество без редактирования all.spawn. В gamedata\config\scripts\amk есть файлы например escape.ltx открываем и видим: [esc_rat5] xyzlg = -38.25,-18.31,-192.03,239633,106 respawn_section = rat_strong max_count = х min_spawn = х max_spawn = х idle_spawn = 86400 creature_binded_logic = logic\esc_rat5 [esc_fracture] xyzlg = -247.08001708984,-8.905158996582,-72.884590148926,11439,66 respawn_section = fracture_strong max_count = x min_spawn = x max_spawn = x idle_spawn = 86400 creature_binded_logic = logic\esc_fracture x - число. Ставим везде единицу, в итоге должен спавнится один монстр. И так открываем каждый файл с названием локи и редактируем каждую секцию. Изменено 23 Января 2010 пользователем uglan59 Ссылка на комментарий
Dimmer 0 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 uglan59, спасибо, буду пробовать! Ссылка на комментарий
Malandrinus 615 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 так как я в этом пока не разбираюсь, то напишу как написано на сайте откуда скачал.Приведи ссылку плиз. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Garry_Galler 7 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 malandrinus отсюда - тема по ООП. Там еще одна такая же тема есть. _http://mydc.ru/topic1429.html Ссылка на комментарий
Monnoroch 6 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Vano_Santuri, у тебя удалится только тот обьект,что ты передал в функцию. Добавлено через 2 мин.: И malandrinus тебе уже написал - не пишут так. пишут так: function remove(obj) if obj then alife():release(alife():object(obj:id()), true) end return obj~=nil end и вообще зачем тут return? Изменено 23 Января 2010 пользователем Monnoroch Ссылка на комментарий
Monnoroch 6 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Ray, Блиииииин....пацталом...... if a == b then Как смогу - с меня плюс Изменено 23 Января 2010 пользователем Monnoroch Ссылка на комментарий
Vano_Santuri 33 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 Ну вот пожалуй пришли к самому главному для меня вопросу, мучаюсь я с ним 4 месяца, как не смешно.Итак: 1)Заспавнил 10 аномалий : function create_anomalies(section,rad_anom,x,y,z,lv,gv,mode) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end if pos==nil then pos=db.actor:position() end local p_obj = alife():create(section,vector():set(x,y,z),lv,gv) local packet = net_packet() packet:w_begin(0) p_obj:STATE_Write(packet) packet:r_seek(2) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:r_s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) packet:w_s32(on_off_mode_enabled_time) packet:w_s32(on_off_mode_disabled_time) packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) if mode == nil then packet:w_u8(last_spawn_time_present) end p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) return p_obj end function zaton_anom() lv_new = math.random(1700000) pos_new = level.vertex_position(lv_new) create_anomalies("zone_mine_electric_dinamic",3,pos_new.x,pos_new.y,pos_new.z,lv_new,0) end .... вобщем случайные аномалии и таких 10 штук, это не важно.... спавнится все гуд. 2)Поиск аномалии на удаление (для электры) function destroi_anomalies() for k=1, 65535 do obj = level.object_by_id(k) if obj ~= nil then if IsAnom(obj)==true then remove(obj) end end end end function IsAnom (obj) local s = obj:section() if string.find(s, "zone_mine_electric_dinamic") then return true else return false end end function remove(obj) if obj then alife():release(alife():object(obj:id()), true) end return obj~=nil end Сделал все правильно(или нет) НО! При удалении аномалий приведенной функцией есть огрехи, удаляю хоть одну аномалиюю, сохраняюсь, при загрузке этого сейва вылет с логом : * Game zaton_2_vibros111111 is successfully loaded from file 'c:\docume~1\alluse~1\af40~1\stalke~1.-\savedgames\zaton_2_vibros111111.scop' (3.206s) * phase time: 3205 ms * phase cmem: 415389 K * phase time: 19 ms * phase cmem: 415389 K * phase time: 18 ms * phase cmem: 415389 K * [win32]: free[918488 K], reserved[70672 K], committed[1107928 K] * [ D3D ]: textures[272313 K] * [x-ray]: crt heap[415373 K], process heap[430188 K], game lua[40767 K], render[466 K] * [x-ray]: economy: strings[25448 K], smem[10027 K] stack trace: Т.е причины нет.... Объясните , пожалуйста , что я сделал неверно? Просто уже надоело, не получается и все. Что-то кончается, что-то начинается... Ссылка на комментарий
Monnoroch 6 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Vano_Santuri, ну по нетпакетам сказать ничо не могу,но раз спавнится гуд то ошибок нет. И еще: if IsAnom(obj)==true then = if IsAnom(obj) then И вот: if string.find(s, "zone_mine_electric_dinamic") then return true else return false end то же самоечто и return string.find(s, "zone_mine_electric_dinamic") далее if obj ~= nil then = if obj then ==== и важно: пиши local obj = level.object_by_id(k) а не obj = level.object_by_id(k) перепиши все,и попробуй. хотябы перепиши и запости - легче читать будет и думать где косяки сильные... ===== возможно между спавном и удалением не прошел апдейт.... Зачем здесь функция вообще? Кстати,да. и тут: function IsAnom (obj)- тоже не нужны она. Изменено 23 Января 2010 пользователем Monnoroch Ссылка на комментарий
Malandrinus 615 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 и вообще зачем тут return? Зачем здесь функция вообще? release либо удалит либо вылетит, так что что-то там возвращать смысла нет. В С++ даже есть специальная функция strcmp для сравнения именно строк, а не их адресов.Здесь более уместны аналогии с STL. Там строки - это объекты класса и сравниваются по содержимому. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Vano_Santuri 33 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 А про апдейт можно по подробнее? скорей всего аномалии в оффлайне, и при их удалении оттуда не так удаляются, или как вы сказали не прошел апдейт, как его этот апдейт насильно провести? Что-то кончается, что-то начинается... Ссылка на комментарий
Monnoroch 6 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 (изменено) Vano_Santuri, а как ты их спавнишь и удаляешь? в 1 функции? должно пройти гдето 1/10 секунды между спавном и удалением. насильно никак.просто подождать.(ну там кода куча,да) Но в игре у тебя заведомо пройдет не одня тысяча апдейтов - иначе эти анамалии просто не рентабельны Изменено 23 Января 2010 пользователем Monnoroch Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти