Леня Баньши 5 Опубликовано 13 Января 2011 Поделиться Опубликовано 13 Января 2011 (изменено) Создал для сейго безобразия инвентарь, чуток сыроват, http://4put.ru/pictures/max/85/263491.jpg, только одна проблема объем переместился и в инвентаре и при обыске трупов и при торговле, возможно ли это как-то исправить? Изменено 13 Января 2011 пользователем Леня Баньши アレクセイ 高い Arekusei takai Ссылка на комментарий
Garry_Galler 7 Опубликовано 13 Января 2011 Автор Поделиться Опубликовано 13 Января 2011 (изменено) Леня Баньши Тебе сюда: function Bag:Init(Wnd,info_id) (файл xr_bag.script) local iPosX, iPosY=200, 236 -- позиция по X, Y статика для открытого окна инвентаря ГГ if info_id=="ui_car_body" then --// позиция если открыто окна инвентаря трупа iPosY=iPosY+27 iPosX=iPosX-7 --// позиция если открыто окно торговли elseif info_id=="ui_trade" then iPosY=iPosY+14 iPosX=iPosX-7 end тебе нужно сместить влево - значит уменьшить значение по X для окна инвентаря ГГ на 5- 10 пискелей. Для остальных окон смотри сам. А для кнопки сброса - сюда:ui_new_slots.script function UISlotWnd:InitControls() ............... self.btn_drop:Init("ui\\ui_btn_01_h", 230,735, 120, 30) -- опять же координаты по X, Y Изменено 13 Января 2011 пользователем Garry_Galler Ссылка на комментарий
Леня Баньши 5 Опубликовано 28 Января 2011 Поделиться Опубликовано 28 Января 2011 В связи с тем, что Kirag выпустил новый патч(который я проглядел) для магазинов - совмещение придется делать заново ohmy.gif Ссылку пока не удаляю - возможно просто сделаю фикс, который поверх можно будет кинуть. Garry_Galler, а можно уточнить когда это будет и будет ли вообще? А то разрядка магазинов серьезно барахлит, берем разряжаем магазин, все появляются патроны в рюкзаке, пустая обойма, но при нажатии бинокля в руках пустой магазин, который, если зарядить, там и остается. アレクセイ 高い Arekusei takai Ссылка на комментарий
Ирбис 183 Опубликовано 31 Января 2011 Поделиться Опубликовано 31 Января 2011 Garry_Galler в связи с личной заинтересованностью в развитии вашей идеи предлагаю следующие опции на реализацию : 1 Ограничение на количество ячеек инвентаря, по факту заполнения которых в инвентарь невозможно взять вещь. Зависит от вида рюкзака. "Износ" рюкзака - поставить учетную функцию на время и частоту ходьбы/бега/прыжков (каждое из действий прибавляет свой коэффицент к счетчику) гг с перегрузкой + общее время ходьбы гг с рюкзаком на плечах. По факту накопления н-ого числа рюкзак "рвется" т.е блокируется а все вещи из инвентаря оказываются на земле. Решается покупкой нового рюкзака, который тут же активируется при покупке или подборе. Дальнейшую судьбу мысли решать вам. Замедляю полураспад души стержнями музыки Ссылка на комментарий
Garry_Galler 7 Опубликовано 4 Февраля 2011 Автор Поделиться Опубликовано 4 Февраля 2011 (изменено) Леня Баньши У меня подобные вещи и на чистой игре(+только магазины) иногда и происходили. Под новый фикс я делал адаптацию, но она у меня, увы, почему то не заработала. Пока руки не дошли разобраться в чем там дело - в общем непростое это дело совмещать подобные разработки :-) Ирбис Я подумаю над предложением. ----------------------------------------------------------------------------------------------- PS: Мне тут Geoset сделал новые модельки для пары рюкзаков - немного попозже выложу. Изменено 4 Февраля 2011 пользователем Garry_Galler Ссылка на комментарий
Барсуков Герман 0 Опубликовано 4 Февраля 2011 Поделиться Опубликовано 4 Февраля 2011 могу помочь с моделями, но если делать то не в сроки. Ссылка на комментарий
Septimus 0 Опубликовано 9 Февраля 2011 Поделиться Опубликовано 9 Февраля 2011 (изменено) 5) Патроны вешаются на пояс. А тут нету такой проблемы?: Дело в том что скрипт мода запрещает использовать патроны из рюгзака не только ГГ, но и всем НПС. Так что когда НПС отстреливает обойму, убирает оружие и бегает по местности с криками "Я без оружия!" Из мода аммуниция на поясе. Изменено 9 Февраля 2011 пользователем Septimus Ссылка на комментарий
goroskob 7 Опубликовано 9 Февраля 2011 Поделиться Опубликовано 9 Февраля 2011 Septimus, это было в старой версии "Аммуниции...", которая была еще правленым .dll'ом. Тут скриптовая версия. Моё новое оружие здесь. Ссылка на комментарий
Septimus 0 Опубликовано 9 Февраля 2011 Поделиться Опубликовано 9 Февраля 2011 goroskob, тут нет этого бага получается,хорошо.Очень хорошо Garry_Galler, Прошу разрешения использовать твой мод в Своем дополнении для FSM.Этот мод это то что мне нужно.Со слотами я разобрался сам,а вот с аммуницией нет.Дай разрешение,пожалуйста. Ссылка на комментарий
Garry_Galler 7 Опубликовано 10 Февраля 2011 Автор Поделиться Опубликовано 10 Февраля 2011 (изменено) Septimus У меня патроны вешаются на пояс простой правкой одной строчки в файле weapons.ltx и к реалиазции аммуниции на поясе моя разработка отношения не имеет. Там идет запрет на перезарядку, если патроны отсутствуют на поясе, у меня же ничего подобного нет, так как это не имело отношения к тому что я реализовывал. И патроны вешаются на пояс просто для удобства(чтобы при сбросе рюкзака не остаться без боеприпасов - предметы на поясе у меня не сбрасываются), но перезаряжаться (при активном рюкзаке) можно и при отсутствии патронов на поясе. Так что ты немного ошибся - если хотел именно реалиазции запрета на перезарядку. Все это реализовано, как я понял, в последней скриптовой версии "Аммуниции на поясе" (без багов с NPC). Недавно мне предложили совместить ее с моими рюкзаками (а в придачу еще и магазины kirag'a - что из этого выйдет, пока не знаю :-) Вердикт относительно возможности совмещения магазинов kirag'a и скриптового варианта "аммуниции на поясе": несовместимы. Впрочем оно и не нужно: данные разработки - это альтернативы, которые делают почти одно и тоже в плане геймплея, только в магазинном питании это сделано более продвинуто в плане приближения к реалистичности. Однако нужно отдать должное автору скриптового варианта "аммуниции на поясе" kstn - сделано гениально просто. Причем настолько просто, что сразу даже не понял в чем фокус . В общем вывод такой: по отдельности каждую из этих разработок можно совместить с моими рюкзаками, причем "аммуниция на поясе" совмещается проще. Там всего то нужно перенести из bind_stalker.script вызов функции мода в мой bind_stalker.script и сделать кой какие мелкие правки в конфиг-файлах в виде добавления инклуда #include "ammo_fake.ltx" в weapons.ltx и одной секции предмета(separator) из items.ltx в bag.ltx, а также не забыть добавить _g.script. ----------------------------------- --------------------------------------------------------------------------------------------------- Насчет использования моей разработки в своих модах: ограничений нет (разве что для Осознания). ------------------------------------------------------------------------------------------ Барсуков Герман Отпишусь в личку. Изменено 10 Февраля 2011 пользователем Ааз Ссылка на комментарий
Septimus 0 Опубликовано 10 Февраля 2011 Поделиться Опубликовано 10 Февраля 2011 ограничений нет (разве что для Осознания). Спасибо. Ссылка на комментарий
dragunof 3 Опубликовано 18 Февраля 2011 Поделиться Опубликовано 18 Февраля 2011 Уважаемый Garry_Galler, подскажите как убрать возможность вешать патроны на пояс? П.С:А фэйковые предметы обязательны или можно найти другой вариант. ▲ ▲ ▲ Ссылка на комментарий
Gandifil 0 Опубликовано 21 Февраля 2011 Поделиться Опубликовано 21 Февраля 2011 Garry_Galler , какую версию мода не установлю, когда я пытаюсь запустить сталкер, у меня появляется маленькое окошко(ну которое при запуске), а потом тут же исчезает. Что делать? Дурак знает как затеять драку, умный знает как победить в драке, мудрец знает как избежать драки. Ссылка на комментарий
Garry_Galler 7 Опубликовано 22 Февраля 2011 Автор Поделиться Опубликовано 22 Февраля 2011 Gandifil Для начала - лог вылета приложить. И что за мод указать. dragunof Закомментировать строчку ;belt = true в файле weapons.ltx - в оригинале она и так была закомментирована - я просто убрал точку с запятой перед строчкой . Для тех кто не в курсе - ; - это обычный символ комментирования строк в файлах конфигурации (родом он из асссемблера), - после данного символа любые данные при чтении файла игнорируются. Фейковые предметы обязательны - так как именно на них и строится технология использования предметов в новых слотах. Ссылка на комментарий
Snork_7171 0 Опубликовано 23 Февраля 2011 Поделиться Опубликовано 23 Февраля 2011 Извините а нет адаптации под разрешение 1280х720? При устанавлени такого разрешения пояс не иотображается. Снорки рулят. Ссылка на комментарий
Леня Баньши 5 Опубликовано 24 Февраля 2011 Поделиться Опубликовано 24 Февраля 2011 Snork_7171, Адаптации нету, просто скопируй файл config\ui\inventory_new и назови его inventory_new_16. Должно помочь. アレクセイ 高い Arekusei takai Ссылка на комментарий
Gandifil 0 Опубликовано 9 Марта 2011 Поделиться Опубликовано 9 Марта 2011 Здраствуйте, есть вопрос. Совмещаю этот мод с магазинным модом и замечаю что рюкзаки используют обьекты dark_matter_container1 и dark_matter_container2. Если я правильно понимаю, то они используются в магазинном моде. Можно ли сделать так, что бы рюкзаки их вообще не трогали? ТО есть не замечали вообще. Дурак знает как затеять драку, умный знает как победить в драке, мудрец знает как избежать драки. Ссылка на комментарий
parsek123 0 Опубликовано 14 Марта 2011 Поделиться Опубликовано 14 Марта 2011 Здравствуйте. Я тут попробовал вставить в свою сборку рюкзаки, и файл bind_stalker.script у меня уже был редактирован. Вот что получилось function init (obj) xr_motivator.AddToMotivator(obj) end function actor_init (npc) npc:bind_object(actor_binder(npc)) end local game_difficulty_by_num = { [0] = "gd_novice", [1] = "gd_stalker", [2] = "gd_veteran", [3] = "gd_master" } lasthealth = 0 lasttime = 0 post_process = 0 local weapon_hide = false ---------------------------------------------------------------------------------------------------------------------- class "actor_binder" (object_binder) ---------------------------------------------------------------------------------------------------------------------- function actor_binder:__init (obj) super(obj) self.bCheckStart = false self.weather_manager = level_weathers.WeatherManager() self.actor_detector = xr_detector.actor_detector() end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:net_spawn(data) printf("actor net spawn") level.show_indicators() self.bCheckStart = true self.weapon_hide = false -- спрятано или нет оружие при разговоре. weapon_hide = false -- устанавливаем глобальный дефолтовый флаг. if object_binder.net_spawn(self,data) == false then return false end db.add_actor(self.object) if self.st.disable_input_time == nil then level.enable_input() end self.weather_manager:reset() -- game_stats.initialize () if(actor_stats.add_to_ranking~=nil)then actor_stats.add_to_ranking(self.object:id()) end --' Загружаем настройки дропа death_manager.init_drop_settings() return true end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:net_destroy() if(actor_stats.remove_from_ranking~=nil)then actor_stats.remove_from_ranking(self.object:id()) end -- game_stats.shutdown () db.del_actor(self.object) sr_light.clean_up () self.object:set_callback(callback.inventory_info, nil) self.object:set_callback(callback.article_info, nil) self.object:set_callback(callback.on_item_take, nil) self.object:set_callback(callback.on_item_drop, nil) --self.object:set_callback(callback.actor_sleep, nil) self.object:set_callback(callback.task_state, nil) self.object:set_callback(callback.level_border_enter, nil) self.object:set_callback(callback.level_border_exit, nil) self.object:set_callback(callback.take_item_from_box, nil) --******************************************* --// дизаблим каллбек self.object:set_callback(callback.use_object, nil) --******************************************* if sr_psy_antenna.psy_antenna then sr_psy_antenna.psy_antenna:destroy() sr_psy_antenna.psy_antenna = false end xr_sound.stop_all_sound_object() object_binder.net_destroy(self) end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:reinit() object_binder.reinit(self) local npc_id = self.object:id() db.storage[npc_id] = { } self.st = db.storage[npc_id] self.st.pstor = nil self.next_restrictors_update_time = -10000 self.object:set_callback(callback.inventory_info, self.info_callback, self) self.object:set_callback(callback.article_info, self.article_callback, self) self.object:set_callback(callback.on_item_take, self.on_item_take, self) self.object:set_callback(callback.on_item_drop, self.on_item_drop, self) self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats --self.object:set_callback(callback.actor_sleep, self.sleep_callback, self) self.object:set_callback(callback.task_state, self.task_callback, self) --self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self) self.object:set_callback(callback.level_border_enter, self.level_border_enter, self) self.object:set_callback(callback.level_border_exit, self.level_border_exit, self) self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) --******************************************* --// добавим наконец ГГ каллбек на юзание self.object:set_callback(callback.use_object, self.use_callback, self) --******************************************* end --******************************************* --// ну и метод канешно function actor_binder:use_callback(obj, who) bag.OnActorUse(obj) end --******************************************* ---------------------------------------------------------------------------------------------------------------------- function actor_binder:take_item_from_box(box, item) local story_id = box:story_id() if story_id == nil then return end treasure_manager.take_item_from_box(box, story_id) --[[ local respawner = se_respawn.get_respawner_by_parent(story_id) if respawner == nil then return end --' Необходимо уменьшить счетчик в респавнере respawner:remove_spawned(item:id()) local smart_terrain = db.strn_by_respawn[respawner:name()] if smart_terrain == nil then return end local npc = smart_terrain.gulag:get_nearest_online_obj(db.actor:position()) if npc ~= nil then xr_sound.set_sound_play(npc, "reac_box") xr_gulag.setGulagEnemy(smart_terrain:name() , db.actor) end ]] end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:level_border_enter(npc, info_id) self.actor_detector:actor_enter() end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:level_border_exit(npc, info_id) self.actor_detector:actor_exit() end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:info_callback(npc, info_id) --******************************************* bag.OnActorInfo(info_id) --******************************************* printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id) --' Сюжет level_tasks.proceed(self.object) -- Отметки на карте level_tasks.process_info_portion(info_id) end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:on_trade (item, sell_bye, money) if sell_bye == true then game_stats.money_trade_update (money) else game_stats.money_trade_update (-money) end end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:article_callback(npc, group, name) --printf("article_callback [%s][%s]", group, name) if device().precache_frame >1 then return end if group == "Diary" then news_manager.send_encyclopedy("diary", group) else news_manager.send_encyclopedy("encyclopedy", group) end end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) --game_stats.update_take_item (obj, self.object) --******************************************* bag.OnActorTake(obj) --******************************************* end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:on_item_drop (obj) -- Vergas ogg-player player_ogg.lose_item(obj) -- Vergas ogg-player level_tasks.proceed(self.object) --game_stats.update_drop_item (obj, self.object) --******************************************* bag.OnActorDrop(obj) --******************************************* end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:task_callback(_task, _objective, _state) task_manager.task_callback(_task:get_id(), _objective:get_idx(), _state) if _objective:get_idx() == 0 then if _state == task.fail then news_manager.send_task(db.actor, "fail", _task, _objective) elseif _state == task.completed then task_manager.reward_by_task(_task) news_manager.send_task(db.actor, "complete", _task, _objective) else news_manager.send_task(db.actor, "new", _task, _objective) end else if _task:get_objective(0):get_state() == task.in_progress then news_manager.send_task(db.actor, "update", _task, _objective) end end end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:map_location_added_callback(spot_type_str, object_id) if (false==app_ready()) or (device().precache_frame>1) then return end --'news_manager.send_task(db.actor, "new") end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:update(delta) object_binder.update(self, delta) -- DEBUG slowdown -- slowdown.update() local time = time_global() game_stats.update (delta, self.object) -- апдейт погоды self.weather_manager:update() -- апдейт схемы детектора self.actor_detector:update() -- апдейт звуковой схемы актера xr_sound.update_actor() --' Проверка потери жизни --[[ if self.object.health - lasthealth > 0.001 or self.object.health - lasthealth < -0.001 then printf("%f | %f", self.object.health, self.object.health - lasthealth, game.time() - lasttime) lasthealth = self.object.health lasttime = game.time() end ]] -- Обновление отключения ввода с клавиатуры. if self.st.disable_input_time ~= nil and game.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idle then level.enable_input() self.st.disable_input_time = nil end -- Обновление сна с переносом чувака в указанную позицию if self.st.sleep_relocate_time ~= nil and game.get_game_time():diffSec(self.st.sleep_relocate_time) >= self.st.sleep_relocate_idle then self.object:set_actor_position(self.st.sleep_relocate_point) local dir = self.st.sleep_relocate_point:sub(self.st.sleep_relocate_look) self.object:set_actor_direction(dir:getH()) self.st.sleep_relocate_time = nil end -- Апдейт прятание оружия игрока во время диалога if weapon_hide == true or self.object:is_talking() then if self.weapon_hide == false then self.object:hide_weapon() self.weapon_hide = true end else if self.weapon_hide == true then self.object:restore_weapon() self.weapon_hide = false end end -- обновление рестрикторов, которые под логикой, срабатывает через интервалы времени if self.next_restrictors_update_time < time then bind_restrictor.actor_update(delta) self.next_restrictors_update_time = time + 200 task_manager.actor_update() end -- обновление постпроцессов if post_process ~= 0 then if post_process:update () == true then post_process = 0 end end -- обновление пси-антенны if sr_psy_antenna.psy_antenna then sr_psy_antenna.psy_antenna:update(delta) end --' Вывод сообщения о большой радиации if self.object.radiation >= 0.7 then local hud = get_hud() local custom_static = hud:GetCustomStatic("cs_radiation_danger") if custom_static == nil then hud:AddCustomStatic("cs_radiation_danger", true) hud:GetCustomStatic("cs_radiation_danger"):wnd():SetTextST("st_radiation_danger") end else local hud = get_hud() local custom_static = hud:GetCustomStatic("cs_radiation_danger") if custom_static ~= nil then hud:RemoveCustomStatic("cs_radiation_danger") end end if self.bCheckStart then printf("SET DEFAULT INFOS") if not has_alife_info("storyline_actor_start") and (level.name() == "l01_escape") then self.object:give_info_portion("storyline_actor_start") _G.g_start_avi = true printf("*AVI* RUN START AVI") end -- if not has_alife_info("encyclopedy") then -- self.object:give_info_portion("encyclopedy") -- end if not has_alife_info("global_dialogs") then self.object:give_info_portion("global_dialogs") end if not has_alife_info("level_changer_icons") then self.object:give_info_portion("level_changer_icons") end level_tasks.add_lchanger_location() self.bCheckStart = false --******************************************* bag.OnActorUpdate() --******************************************* end if check_16 then check_16.main(delta) end end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:save(packet) local save_treasure_manager = true printf("actor_binder:save(): self.object:name()='%s'", self.object:name()) object_binder.save(self, packet) --' Сохраняем уровень сложности if save_treasure_manager == true then packet:w_u8(level.get_game_difficulty() + 128) else packet:w_u8(level.get_game_difficulty()) end --' Сохраняем данные об отключенном вводе if self.st.disable_input_time == nil then packet:w_bool(false) else packer:w_bool(true) utils.w_CTime(packet, self.st.disable_input_time) end xr_logic.pstor_save_all(self.object, packet) self.weather_manager:save(packet) sr_psy_antenna.save( packet ) if save_treasure_manager == true then treasure_manager.save(packet) end task_manager.save(packet) self.actor_detector:save(packet) --******************************************* bag.OnActorSave(packet) --******************************************* end ---------------------------------------------------------------------------------------------------------------------- function actor_binder:load(reader) printf("actor_binder:load(): self.object:name()='%s'", self.object:name()) object_binder.load(self, reader) printf("actor_binder:object_binder.load(): self.object:name()='%s'", self.object:name()) --' Загружаем уровень сложности local game_difficulty = reader:r_u8() local load_treasure_manager = false if game_difficulty >= 128 then game_difficulty = game_difficulty - 128 load_treasure_manager = true end get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty]) if reader:r_eof() then abort("SAVE FILE IS CORRUPT") end local stored_input_time = reader:r_u8() if stored_input_time == true then self.st.disable_input_time = utils.r_CTime(reader) end xr_logic.pstor_load_all(self.object, reader) self.weather_manager:load(reader) sr_psy_antenna.load(reader) if load_treasure_manager == true then treasure_manager.load(reader) end task_manager.load(reader) self.actor_detector:load(reader) --******************************************* bag.OnActorLoad(reader) --******************************************* end ---------------------------------------------------------------------------------------------------------------------- --старт префетча звуков --if string.find(command_line(), "-noprefetch") == nil then -- sound_prefetch.prefetch_sounds() --end -- Weapon functions function hide_weapon() weapon_hide = true end function restore_weapon() weapon_hide = false end // this is test for section iteration /** local function test_section_iteration(file_name, section_name) printf ("file : %s",file_name) printf ("section : %s",section_name) local file = ini_file(file_name) local n = file:line_count(section_name) printf ("lines : %d",n) local id, value = "", "", result for i=0,n-1 do result, id, value = file:r_line(section_name,i,"","") printf ("line %d : %s = %s",i,id,value) end end test_section_iteration("system.ltx","space_restrictor") /**/ Но инвентарь без рюкзака не блокируется, и при последующем закрытии происходит вылет FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...mes\s.t.a.l.k.e.r. - mod\gamedata\scripts\bag.script:470: attempt to index field 'tBeltItemById' (a nil value) Это одна беда, другая - если рюкзак сбросить и закрыть инвентарь, то потом он уже не открывается, даже если рюкзак поднять или купить новый. Вобщем похоже перемудрил со скриптом, вот только что не знаю. Прошу помощи. Почемуто кнопки нет редактировать прошлое сообщение. Вобщем по предыдущему вопросу уже сам всё решил. Но вот ещё один небольшой вопросик: Как перенести надпись, никак найти не могу. Полезные статьи для новичков по 3dsMax, Maya, Photoshop и не только... Интересные статьи по работе в Maya Ссылка на комментарий
Knight 0 Опубликовано 27 Марта 2011 Поделиться Опубликовано 27 Марта 2011 Хотелось бы сделать такое замечание: помимо объема у любого предмета, есть такое понятие как его габариты. Скажем, лист фанеры может иметь одинаковый объем с футбольным мячом, но по габаритам его значительно превосходить. Отсюда - футбольный мяч мы легко поместим в рюкзак, а вот с листом фанеры такого номера не пройдет.=) С ув. Ссылка на комментарий
Garry_Galler 7 Опубликовано 30 Марта 2011 Автор Поделиться Опубликовано 30 Марта 2011 Knight Предложишь вариант \скрипт для выяснения подходит ли предмет рюкзаку по габаритам? И еще: у меня там табличка объемов предметов имеется, которая настроена от балды. Каждый может ее подправить под себя ориентируясь на примерный объем предмета в жизни и его габариты. ...Игра, товарищи, требует условностей - не все можно сделать как в жизни. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти