AutoGnom 0 Опубликовано 29 Ноября 2011 Всем привет! Начал ковыряться в логике, получается не всё( вот не знаю как из файла логики обратиться к скрипту, как? Всё перерыл, ничего не нашел Вот допустим функция в файле test.script: function conf_door() ... return true end А вот логика: [ph_door@locked] locked = true closed = true on_info = {тут обращение к функции должно быть как я понимаю} ph_door@open ; как тут обратиться к своей функции в моём скрипте? Заранее спасибо Поделиться этим сообщением Ссылка на сообщение
AutoGnom 0 Опубликовано 30 Ноября 2011 Как снова включить выжигатель после его отключения? и как сделать так, что-бы те кто действительно попали под влияние пси-антен, потехоньку умирали, а не стояли живыми, ведь чушь. Я прошу разьеснить мне это, и, если можно привести пару строчек кода по воздействию пси-антен Пишу свой мод, свой сюжет, если что Поделиться этим сообщением Ссылка на сообщение
AutoGnom 0 Опубликовано 2 Декабря 2011 (изменено) У меня в сталкере, если подбираешь артефакт, то он наноси мне хит. Когда я выкидываю этот арт и подбираю, я сделал так чтиобы он мне не наносил хит повторно, но!!! но подобрав много артов и когда я произвожу рестарт игры меня тупо убивает.... как выполнить проверку на арты которые я уже подбирал. local art_params = { ["af_ameba_mica"] = {0.4, 0.5, hit.shock}, ["af_ameba_slime"] = {0.4, 0.8, hit.strike}, ["af_ameba_slug"] = {0.6, 0.8, hit.fire_wound}, ["af_blood"] = {0.8, 0.9, hit.shock}, ["af_cristall"] = {0.9, 0.3, hit.strike}, ["af_cristall_flower"] = {0.9, 0.7, hit.strike}, ["af_drops"] = {0.1, 0.4, hit.explosion}, ["af_dummy_pellicle"] = {0.7, 0.5, hit.burn}, ["af_electra_flash "] = {0.8, 0.1, hit.telepatic}, ["af_electra_moonlight"] = {0.4, 0.3, hit.wound}, ["af_electra_sparkler"] = {0.7, 0.7, hit.strike}, ["af_fireball"] = {0.4, 0.1, hit.radiation}, ["af_fuzz_kolobok"] = {0.8, 0.6, hit.explosion}, ["af_gold_fish"] = {0.8, 0.1, hit.radiation}, ["af_gravi"] = {0.4, 0.3, hit.telepatic}, ["af_medusa"] = {0.5, 0.7, hit.burn}, ["af_mincer_meat"] = {0.5, 0.3, hit.radiation}, ["af_night_star"] = {0.6, 0.7, hit.explosion}, ["af_rusty_kristall"] = {0.1, 0.2, hit.telepatic}, ["af_rusty_sea-urchin"] = {0.4, 0.3, hit.explosion}, ["af_rusty_thorn"] = {0.5, 0.8, hit.strike}, ["af_soul"] = {0.9, 0.9, hit.shock}, ["af_vyvert"] = {0.4, 0.9, hit.telepatic} } local tbl_exists = {} --- #$ Функция обновление рэндома хита радиактивного дождика function artefacts_hit(object) if object then local section = object:section() if section and art_params[section] then -- Проверка на существование if not tbl_exists[object:id()] then -- Заполняем tbl_exists чтоб когда мы выбрасываем и подбираем его снова нам урон не наносился table.insert(tbl_exists, object:id()) tbl_exists[object:id()] = section local hit = hit() hit.draftsman = db.actor hit.direction = vector():set(0,0,0) hit.impulse = art_params[section][2] hit.type = art_params[section][3] hit.power = art_params[section][1] level.add_pp_effector("amk_shoot.ppe", 2011, false) db.actor:hit(hit) end end end end эту функцию я повесил на actor_binder:on_item_take и при загрузке игры когда арты добавляются ко мне в рюкзак, мне снова наносится хит... Народ, как это исправить? Изменено 2 Декабря 2011 пользователем AutoGnom Поделиться этим сообщением Ссылка на сообщение
AutoGnom 0 Опубликовано 21 Июля 2012 class "MapTex" (CUIScriptWnd) function MapTex:__init() super() self:Init(0, 0, device().width, device().height) self.overlay = CUIStatic() self.overlay:Init(15, 15, 256, 256) self.overlay:InitTexture("MapTex\\MapTex") -- текстурка self.overlay:SetStretchTexture(true) self.overlay:Show(true) self:AttachChild(self.overlay) end Мне нужно скриптом повернуть эту текстуру, как? Поделиться этим сообщением Ссылка на сообщение
AutoGnom 0 Опубликовано 21 Июля 2012 В конфиге статика указать параметр heading="1". Это динамический статик, я не прописываю ему никакой конфы в ui_custom_msgs.xml Поделиться этим сообщением Ссылка на сообщение
AutoGnom 0 Опубликовано 22 Июля 2012 (изменено) local health_hud = nil local power_hud = nil local spots = {} local spot_init_table = {} local maptex = nil local is_hide = false local health = nil local power = nil function start_update() for id = 1, 65535 do local sobj = alife():object(id) if sobj then local ssect = sobj:section_name() for _, v in ipairs(list_arts) do if ssect == v then artefacts[id] = {} artefacts[id].spot = false artefacts[id].time_beep = 0 a_m.Tips:show(sobj:section_name(), "CAutoGnomTest",nil,5) end end end end end class "CAutoGnomSpot" (CUIScriptWnd) function CAutoGnomSpot:__init(owner, id, x, y) super() self:Init(0, 0, device().width, device().height) self.owner = owner self.id = id if spots[self.id] == nil then spots[self.id] = CUIStatic() spots[self.id]:SetAutoDelete(true) spots[self.id]:InitTexture("autognom_minimap\\white_dot") spots[self.id]:SetStretchTexture(false) spots[self.id]:SetWndRect(x, y, 2, 2) -- spots[self.id]:SetFont(GetFontLetterica16Russian()) spots[self.id]:Show(true) self:AttachChild(spots[self.id]) end end function CAutoGnomSpot:Update() CUIScriptWnd.Update(self) local obj = level.object_by_id(self.id) if obj and obj:position():distance_to_xz(db.actor:position()) <= self.owner.max_distantion and obj.health > 0 then local x, y = self.owner:get_pos_data(obj:position()) spots[self.id]:SetWndRect(x, y, 2, 2) if is_hide == false then spots[self.id]:Show(true) else spots[self.id]:Show(false) end local color = self:get_color(self.id) spots[self.id]:SetColor(color) if obj.health <= 0 then RemoveSpot(self.id) end else spots[self.id]:Show(false) end end function CAutoGnomSpot:get_color(id) local obj = level.object_by_id(id) local so = alife():object(id) local stalker = IsStalker(so) if obj:alive() then if obj:id() == db.actor:id() then return GetARGB(255, 255, 132, 0) -- its me) end if stalker then if obj:relation(db.actor) == game_object.friend then return GetARGB(255, 0, 255, 0) -- green elseif obj:relation(db.actor) == game_object.enemy then return GetARGB(255, 255, 0, 0) -- red else return GetARGB(255, 255, 255, 0) -- yelloy end end else return GetARGB(255, 127, 127, 127) end end -- *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* -- *_# Класс полоски здоровья -- *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* class "CAutoGnomHealth" (CUIScriptWnd) function CAutoGnomHealth:__init() super() self:Init(0, 0, device().width, device().height) self.overlay = CUIStatic() self.overlay:Init(157, 173, 128, 128) self.overlay:InitTexture("autognom_minimap\\green\\autognom_green_25") self.overlay:SetStretchTexture(true) self.overlay:SetAutoDelete(true) self.overlay:Show(true) self:AttachChild(self.overlay) end function CAutoGnomHealth:Update() CUIScriptWnd.Update(self) if health ~= db.actor.health then local num = math.floor(db.actor.health * 25) health = db.actor.health if num >= 0 then self.overlay:InitTexture("autognom_minimap\\green\\autognom_green_" .. tostring(num)) else self.overlay:InitTexture("autognom_minimap\\green\\autognom_green_0") end end if is_hide == false then self.overlay:Show(true) else self.overlay:Show(false) end end -- *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* -- *_# Класс полоски выносливости -- *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* class "CAutoGnomPower" (CUIScriptWnd) function CAutoGnomPower:__init() super() self:Init(0, 0, device().width, device().height) self.overlay = CUIStatic() self.overlay:Init(145, 10, 128, 128) self.overlay:InitTexture("autognom_minimap\\blue\\autognom_blue_25") self.overlay:SetStretchTexture(true) self.overlay:SetAutoDelete(true) self.overlay:Show(true) self:AttachChild(self.overlay) end function CAutoGnomPower:Update() CUIScriptWnd.Update(self) if power ~= db.actor.power then local num = math.floor(db.actor.power * 25) power = db.actor.power if num >= 0 then self.overlay:InitTexture("autognom_minimap\\blue\\autognom_blue_" .. tostring(num)) else self.overlay:InitTexture("autognom_minimap\\blue\\autognom_blue_0") end end if is_hide == false then self.overlay:Show(true) else self.overlay:Show(false) end end -- *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* -- *_# Класс миникарты -- *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* class "CAutoGnomMiniMap" function CAutoGnomMiniMap:__init() self.max_distantion = 70 self.map_radius = 85 self.map_cntr_x = 138 self.map_cntr_y = 138 self.disabled = false self.signal_power = { l01_escape = {90, 100}, l02_garbage = true, l03_agroprom = true, l04_darkvalley = true, l05_bar = true, l06_rostok = true, l07_military = true, l08_yantar = true, l10_radar = true, l11_pripyat = true } self.time_update = time_global() + 1000 self.update_map_r = false end function CAutoGnomMiniMap:update_map_radius(signal) self.map_radius = signal end function CAutoGnomMiniMap:update_map_radius_random() if self.update_map_r == true then local now_time = time_global() if now_time > self.time_update then self.time_update = now_time + math.random(500, 2000) local signal = math.random(self.signal_power[level.name()][1], self.signal_power[level.name()][2]) self:update_map_radius(signal) end end end function CAutoGnomMiniMap:get_pos_data(tpos) local cam_dir = device().cam_dir local dir = tpos:sub(db.actor:position()) vect = vector_rotate_y(vector():set(dir.x / self.max_distantion * self.map_radius, 0, -dir.z / self.max_distantion * self.map_radius), math.atan2(-cam_dir.x, cam_dir.z) / math.pi * 180) return vect.x + self.map_cntr_x, vect.z + self.map_cntr_y end function CAutoGnomMiniMap:is_disabled() if self.disabled == true then -- return true end return false end function CAutoGnomMiniMap:update() if self:is_disabled() then return end local hud = get_hud() if maptex == nil then ShowPowerHud() ShowHealthHud() ShowMapTex() end for id, obj in pairs(db.storage) do local obj = level.object_by_id(id) local sobj = alife():object(id) if sobj and obj then local stalker = IsStalker(sobj) if stalker and obj:position():distance_to_xz(db.actor:position()) <= self.max_distantion then local x, y = self:get_pos_data(obj:position()) if obj.health > 0 then local id = obj:id() -- if spots[id] == nil then AddSpot(self, id, x, y) -- end end end end end end -- *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* -- *_# Класс текстурки миникарты -- *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* class "CAutoGnomMapTex" (CUIScriptWnd) function CAutoGnomMapTex:__init() super() self:Init(0, 0, device().width, device().height) self.overlay = CUIStatic() self.overlay:Init(15, 15, 256, 256) self.overlay:InitTexture("autognom_minimap\\autognom_minimap") self.overlay:SetStretchTexture(true) self.overlay:Show(true) self.overlay:SetAutoDelete(true) self:AttachChild(self.overlay) end function CAutoGnomMapTex:Update() CUIScriptWnd.Update(self) --self.overlay:SetHeading(math.rad(math.random(360))) if is_hide == false then self.overlay:Show(true) else self.overlay:Show(false) end end function ShowMapTex() if maptex == nil then maptex = CAutoGnomMapTex() get_hud():AddDialogToRender(maptex) end end function RemoveMapTex() if maptex ~= nil then get_hud():RemoveDialogToRender(maptex) maptex = nil end end function CAutoGnomMapTex:__finalize() RemoveMapTex() end function ShowHealthHud() if health_hud == nil then health_hud = CAutoGnomHealth() get_hud():AddDialogToRender(health_hud) end end function RemoveHealthHud() if health_hud ~= nil then get_hud():RemoveDialogToRender(health_hud) health_hud = nil end end function CAutoGnomHealth:__finalize() RemoveHealthHud() end function ShowPowerHud() if power_hud == nil then power_hud = CAutoGnomPower() get_hud():AddDialogToRender(power_hud) end end function RemovePowerHud() if power_hud ~= nil then get_hud():RemoveDialogToRender(power_hud) power_hud = nil end end function CAutoGnomPower:__finalize() RemovePowerHud() end function AddSpot(owner, id, x, y) if spot_init_table[id] == nil then spot_init_table[id] = CAutoGnomSpot(owner, id, x, y) get_hud():AddDialogToRender(spot_init_table[id]) end end function RemoveSpot(id) if spot_init_table[id] ~= nil then get_hud():RemoveDialogToRender(spot_init_table[id]) spot_init_table[id] = nil end end function CAutoGnomSpot:__finalize() RemoveSpot(self.id) end function HideAllStatics() is_hide = true end function ShowAllStatics() is_hide = false end Когда загружаю игру, все мои статики корректно отображаются, всё работает без проблем, игра загружается через F6 без прблем Проблема в следующем: при переходе на другую локацию, игра крашится без лога. Показывается "Сервер: старт игры" и вылет без лога. Понять не могу вчём тут дело, помогите пожалуйста Както не хочется бросать эти наработки на пол дороги Используй для кодов соответствующий тэг (code), чтобы сохранять форматирование/отступы. --/Artos Изменено 23 Июля 2012 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
AutoGnom 0 Опубликовано 23 Июля 2012 AutoGnom, Я пишу свою модификацию, много чего не знаю ещё, учусь), хочется своих нароботок, а не копипастов)) Поделиться этим сообщением Ссылка на сообщение