Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Хемуль36рус 1 790 Опубликовано 22 Ноября 2014 Поделиться Опубликовано 22 Ноября 2014 Что-то не пойму, мне нужно что бы спальник не появлялся в инвентаре .Сделал вот так --'amk.spawn_item_in_inv("matras") end end function test_for_need_sleep_tr_item(oid) if alife():object(oid)==nil then if news_main then news_main.create_treasurebox() end end end Он появляется. просто при использовании исчезает, что не так, подскажите нубу, в скриптах я он и есть. Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-893780
Хемуль36рус 1 790 Опубликовано 22 Ноября 2014 Поделиться Опубликовано 22 Ноября 2014 @Dennis_Chikin, ты меня не понял, мне просто нужно что бы спальник не появлялся в инвентаре при новой игре. Он будет квестовым предметом. Вот кусок из амк_мод.скрипт. В нем можно оключить спавн спальника в инвентарь? --'******************************************************************************* --' ** ** ** ** ** ** ** ** SLEEP_AMK ** ** ** ** ** ** ** ** ** --'******************************************************************************* function reduce_need_sleep(time) local tmp=amk.load_variable("gg_need_sleep",0) tmp=tmp-time*120 if tmp<0 then tmp=0 end amk.save_variable("gg_need_sleep_nrg",0) amk.save_variable("block_sleep_menu",0) amk.save_variable("gg_need_sleep",tmp) test_sleep_pp() end function test_for_need_sleep() if sleep_manager.is_sleep_active() == false then amk.save_variable("gg_need_sleep",amk.load_variable("gg_need_sleep",0)+1) test_sleep_pp() end amk.g_start_timer("gg_need_sleep",0,0,6) end function test_sleep_pp() local tmp=amk.load_variable("gg_need_sleep",0) if tmp>360 then sleep_manager.main(5+amk.load_variable("gg_need_sleep_nrg",0)) end if tmp>300 then level.add_pp_effector("yantar_underground_psi.ppe", 999, true) level.set_pp_effector_factor(999, 5.0) end if tmp<=300 then level.remove_pp_effector(999) end end function check_sleep_item(obj) local flagg = amk.load_variable("flagg") local section = obj:section() local stype=nil if section=="energy_drink" then stype="nrg" --'elseif (section=="medkit" or section=="medkit_army" or section=="medkit_scientic") then --' stype="med" elseif section=="matras" then stype="matras" elseif section=="repbox_s1" and flagg ~= 1 then amk.start_timer("sleep_repbox",0.1,amk.pack_array_to_string( {obj:id(), obj:condition(), 1} )) elseif section=="repbox_s2" and flagg ~= 1 then amk.start_timer("sleep_repbox",0.1,amk.pack_array_to_string( {obj:id(), obj:condition(), 2} )) elseif section=="repbox_s6" and flagg ~= 1 then amk.start_timer("sleep_repbox",0.1,amk.pack_array_to_string( {obj:id(), obj:condition(), 6} )) elseif section=="treasure_item" then stype="tr_item" end if stype~=nil then amk.start_timer("sleep_"..stype,0.1,obj:id()) end end function test_for_need_sleep_nrg(oid) if alife():object(oid)==nil then local n=amk.load_variable("gg_need_sleep_nrg",0) if n<3 then amk.save_variable("gg_need_sleep_nrg",n+1) amk.save_variable("gg_need_sleep",amk.load_variable("gg_need_sleep",0)-30+n*10) test_sleep_pp() end amk.g_start_timer("block_sleep_menu",0,1,0) amk.save_variable("block_sleep_menu",1) end end --[[ function test_for_need_sleep_med(oid) if alife():object(oid)==nil then amk.save_variable("gg_need_sleep",amk.load_variable("gg_need_sleep",0)+5) test_sleep_pp() end end ]]-- function test_for_need_sleep_matras(oid) if alife():object(oid)==nil then local enemy=false local obj local level_object_by_id = level.object_by_id local actor = db.actor local actorPos = actor:position() for npcId, npc in pairs(db.storage) do obj = level_object_by_id(npcId) if obj then if (( IsStalker(obj) and amk.get_npc_relation(obj,db.actor)=="enemy" ) or IsMonster(obj)) and obj:position():distance_to(db.actor:position())<40 and obj:see(db.actor) then enemy=true break end end end if enemy==true then amk.send_tip(game.translate_string("not_need_sleep_enemy"),nil,nil,5) else if amk.load_variable("blowout",-1)>-1 and amk.load_variable("blowout",-1)<5 then amk.send_tip(game.translate_string("blowout_not_sleep"),nil,nil,5) else if amk.load_variable("block_sleep_menu",0)==0 then --if amk.load_variable("gg_need_sleep",0)>10 then if amk.load_variable("gg_need_sleep",0)>0 then local spwn=ui_cheat.cheat(get_hud()) level.start_stop_menu(spwn,true) else amk.send_tip(game.translate_string("not_need_sleep"),nil,nil,5) end else amk.send_tip(game.translate_string("not_need_sleep_nrg"),nil,nil,5) end end end amk.spawn_item_in_inv("matras") end end function test_for_need_sleep_tr_item(oid) if alife():object(oid)==nil then if news_main then news_main.create_treasurebox() end end end Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-893792
Dennis_Chikin 3 665 Опубликовано 22 Ноября 2014 Поделиться Опубликовано 22 Ноября 2014 (изменено) amk.spawn_item_in_inv("matras") -- это создание спальника. Но это, вроде, не новая игра, а именно переспавн. При использовании. Вообще я не знаю, в какой игре он при старте создается - вроде бы везде по диалогу. Но в любом случае надо найти аналогичные строчки, с созданием этого матраса, тупо поиском по файлам, и убрать. В этих кусках кода "стартового" создания нет. Изменено 22 Ноября 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-893795
Outfater 288 Опубликовано 23 Ноября 2014 Поделиться Опубликовано 23 Ноября 2014 (изменено) Хочу сделать чтобы при взятии записки из тайника появлялся другой тайник (как в ОП-2 Коллекционер). В файле bind_stalker.script в самый низ этой функции добавил: function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) if xrs_ai then xrs_ai.actor_item_take(obj) end --game_stats.update_take_item (obj, self.object) inventory.on_item_take(obj) -- added by xStream for AMK miniSDK amk.on_item_take(obj) -- end of addition repack_ammo.on_take(obj) if rx_ai then rx_ai.actor_item_take(obj)end art_hit.hit_by_art(obj) --verg_art_hit.on_item_take(obj) --visual_fix if obj:clsid() == clsid.equ_stalker_s or obj:clsid() == clsid.equ_exo then local outfit = db.actor:get_current_outfit() if outfit and outfit:id() ~= obj:id() then db.actor:transfer_item(outfit, db.actor) if db.actor then name = obj:section() if db.actor:object("bread") ~= nil then db.actor:give_info_portion("boxkvest2_dal") end end end end end При этом инфопоршень выглядит так: <info_portion id="boxkvest2_dal"><action>kvestovik.spawn_boxkvest2</action></info_portion> Но при наличии хлеба тайник boxkvest2 не появляется. Что не так? @Хемуль36рус, По моему в акторе это настраивается, там где аттачмент. Изменено 23 Ноября 2014 пользователем Outfater Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-893816
Dennis_Chikin 3 665 Опубликовано 23 Ноября 2014 Поделиться Опубликовано 23 Ноября 2014 (изменено) Вот прямо так добавил то, что зеленым, и оно даже не вылетает ? Хотя и не работает ? Во-первых, взятие из тайника, это function actor_binder:take_item_from_box() Во-вторых, if obj:section() == "bread" then db.actor:give_info_portion( "boxkvest2_dal" ) end Где obj - второй аргумент take_item_from_box() - вот что там в скобках после запятой, то и должно быть. В-третьих, даже если имеется kvestovik.spawn_boxkvest2(), и оно написано правильно, а не так, как извращен bind_stalker, то где именно оно есть, чтобы вообще срабатывало ? Ну и это дурной тон, пихать в xml кучу всякого. здесь же, в take_item_from_box() пишется if obj:section() == "bread" then kvestovik.spawn_boxkvest2() end, а уже там выдается инфо, и вообще все, что душе угодно. Кстати, сам себя не похвалишь - ни кто не похвалит. http://www.amk-team.ru/forum/index.php?showtopic=8830&p=893852- про похождения Петрухи и прочих Кротов с долговцами в оффлайне. Изменено 23 Ноября 2014 пользователем Dennis_Chikin 1 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-893827
Outfater 288 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) @Dennis_Chikin, Спасибо, работает и с одной if obj:section() == "bread" then db.actor:give_info_portion( "boxkvest2_dal" ) end. А второе условие if obj:section() == "bread" then kvestovik.spawn_boxkvest2() end я так понял, для вызова функции напрямую без поршня? Да. dc Изменено 24 Ноября 2014 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894196
groks 440 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 Может кто поможет с атакой кровососа? Есть понятное: -- Поцелуй кровососа (Авторы: Artos, Charsi, Shadows)if self.object:clsid()==clsid.bloodsucker_s and self.object:section()~="bloodsucker_effector" thenlocal oTarget = self.object:get_enemy()if oTarget and IsStalker(oTarget) and self.object:see(oTarget) thenlocal iDist = self.object:position():distance_to(oTarget:position())if iDist <= 3 thenlocal iTime = time_global()if (self.timer_anim or 0) < iTime thenself.timer_anim = iTime + 2000if oTarget:id()~=0 and self.object:position():distance_to(db.actor:position()) < 5 thensound_object("monsters\\bloodsucker\\vampire_sucking"):play_at_pos(db.actor,vector():set(0,0,1),0,sound_object.s2d)endif oTarget:id()==0 thenif NextAttack < iTime and self.object.health < 0.5 thenNextAttack = iTime + 18000RestoreActor = iTime + 4500DirActor = truedb.actor:hide_weapon()level.disable_input()level.hide_indicators()level.add_call(bloodsucker_vampire_timer,bloodsucker_actor_release)level.add_pp_effector("escape.ppe",1975,true)level.add_cam_effector("camera_effects\\drunk.anm",1978,false,"")local oSnd = sound_object("monsters\\bloodsucker\\vampire_sucking")if not (oSnd and oSnd:playing()) then oSnd:play_no_feedback(oTarget,sound_object.s2d,0,vector(),5.0) endendif DirActor thenlocal pos = self.object:position()local vDir = pos:sub(oTarget:position())db.actor:set_actor_direction(-vDir:getH())vDir:normalize()local pos = self.object:position():sub(vDir)db.actor:set_actor_position(pos)endendendif self.timer_anim and self.timer_anim >= iTime and DirActor thendb.actor.health = -0.002self.object.health = 0.008endendendend И есть смутное: --/#+# 'засос кровососа боксёра' --------------------------------------------------if self.object:clsid() == clsid.bloodsucker_s and self.object.health > 0.25 thenlocal oTarget = self.object:get_enemy()if oTarget and IsStalker(oTarget) and self.object:see(oTarget) then--/ если у кровососа есть враг/цель и кровосос его видит то ...local iDist = self.object:position():distance_to(oTarget:position())if iDist <= 2 then --/ дистанция для анимации 'засоса'local iTime = time_global()--/ таймер для анимации и хита ...if (self.timer_anim or 0) < iTime thenself.timer_anim = iTime + 500 --/ таймер анимации ~ 0.5 секif self.object:animation_count() > 0 thenself.object:clear_animations()endself.object:add_animation("wounded_2_out") --/ варианты: "vampire_0" | "idle"--/ озвучка 'засоса'local oSnd = sound_object("material\\dead-body\\collide\\hithard06hl")oSnd:play_no_feedback(oTarget, sound_object.s2d, 0, vector(), 5.0)end--/ хит жертве (притягиваем)if (self.timer_hit or 0) < iTime and (self.timer_anim and self.timer_anim + 200 >= iTime) thenself.timer_hit = iTime + 10 --/ таймер хита ~ 0.1 секlocal vDir = self.object:direction() --/ вектор кровососаlocal vDirHit = vector_rotate_y(vDir,179.0)local h = hit()h.draftsman = self.objecth.direction = vDirHit --/ направление хитаh:bone("bip01_spine") --/ для учета 'брони'h.power = 0.02level.add_cam_effector("camera_effects\\fusker.anm",959,false,"")h.impulse = 50/iDist --/ чем ближе - тем сильнее 'засос'h.type = hit.wound --hit.strikeoTarget:hit(h) --/ наносим хит жертве--/ разворот жертвы на кровососа. TODO: требует доработки/замены!if oTarget:id() == db.actor:id() then --/ жертва == актор? (а нужно?)oTarget:set_actor_direction(vDirHit:getH())endendendendend--/<----------------------------------------------------------------------- Второе выдернуто из http://www.amk-team.ru/forum/index.php?showtopic=12793 Ну хит я подрезал, ну время атаки можно. Но атака идёт бесконечно и без пауз. Практически нереально выжить. Врезать первый вариант не получается - анимация другая. Можно сделать паузу между атаками во втором варианте? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894198
AndreySol 215 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) Спасибо, работает и с одной if obj:section() == "bread" then db.actor:give_info_portion( "boxkvest2_dal" ) end Похоже, что любое взятие хлебушка из любого инвентарного ящика будет проходить проверку, и соответственно выполнять назначенное действие... Условия проверки надо доработать, в соответствии с одноразовостью(или нет ?) действия. Изменено 24 Ноября 2014 пользователем AndreySol Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894265
Max_Raf 35 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 Привет всем, возник вопрос: как можно моментально узнать мёртв ли объект или нет? Нужно узнать почти сразу же - мёртв ли сталкер после метода obj:kill(obj). Метод obj:alive() не предлагать, пробовал - метод говорит что сталкер всё ещё жив. ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894434
RayTwitty 575 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) Нужно узнать почти сразу же - мёртв ли сталкер после метода obj:kill(obj). Метод obj:alive() не предлагать, пробовал - метод говорит что сталкер всё ещё жив. local bAlive = true function MobKill(obj) obj:kill(obj) bAlive = false end function aaa() if not bAlive then ... end end Изменено 24 Ноября 2014 пользователем Shadows Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894436
Max_Raf 35 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) , с переменными как то не оч. Всё думаю как бы моментально изменить значения у серверного объекта и по нему ориентироваться в другой функции, ток не знаю какое значение менять, чтобы оно осталось даже если игра будет перезагружена. (коммьюнити не предлагать - этот "ориентир" уже используется)Я бы попробовал расписать: что надо, что есть, и в чем это выражается в каких случаях. Где именно проблема, как ее увидеть. Соответствующая тема как раз открыта. dc Изменено 24 Ноября 2014 пользователем Dennis_Chikin ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894442
RayTwitty 575 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) @Max_Raf, вроде кроме метода alive в скрипты ничего не экспортировано по этой теме. Так что остается либо такой костыль, либо если смогешь, то меняй в памяти какой-нибудь байт у этого объекта, а потом его читай где надо. З.Ы. health == 0 кстати пробовал? чтобы оно осталось даже если игра будет перезагружена. Так ведь после перезагрузки, если объект будет мертв, то и alive вернет фальс. Изменено 24 Ноября 2014 пользователем Shadows Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894443
Max_Raf 35 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) , пробовал, вроде не сработало. Ща ещё раз гляну. Да проблемы по сути нету никакой. Просто есть 3 функции. В первой сталкер самовыпиливается и функция завершается. Затем после неё идёт вторая функция в которой нужно проверить жив ли сталкер (идёт вторая) или нет (идёт третья). Вот и вопрос: как узнать почти что сразу, самовыпилился ли он для второй функции, иначе сработает третья функция. По сути можно и переменными в таблице, но интересно, есть ли другой способ без лишних заборов? К примеру коммьюнити ему сменить и потом проверять по ней (но это уже используется) , а если надо почти моментально? Получается надо и переменные и метод alive() вместе... но забор ведь) иными словами: нужен определённый "флаг" трупа который выставляется моментально. Изменено 24 Ноября 2014 пользователем Max_Raf ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894448
Dennis_Chikin 3 665 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) 1. obj.just_killed = true 2. if obj.just_killed or not obj:alive() then ... else ... end Переменная может быть любая из свободных. Изменено 24 Ноября 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894452
Max_Raf 35 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 @Dennis_Chikin, мм способ по сути такой же как и у . Ладно, попробую чо нить придумать сам. Всем спс. ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894455
_Val_ 2 402 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 3 функции. В первой сталкер самовыпиливается А можно подробней про самовыпиливание? Что-это такое, раз после этого нужно проверять, жив ли он? С учетом того, что функция **суицида** к примеру убивает сталкера достаточно надежно. А из его логики всегда можно выдать посмертный поршень или вызвать любую функцию. Или это - "забор"? Блин... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894458
Struck 61 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) , а функция kill точно жизни в 0 уводит? Я помню, что вроде она может и в отрицательную степь увести, но тебе с движком оно виднее. local bAlive = true function MobKill(obj) obj:kill(obj) bAlive = false end function aaa() if not bAlive then ... end end @Max_Raf, тут ты походу bAlive не сохранил, эта функция не может не работать. А так способ предложенный Денисом хороший (подобные вещи в юзердату писать), меньше мусора будет в дальнейшем. Изменено 24 Ноября 2014 пользователем Struck Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894459
Max_Raf 35 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) @Struck про kill: в первой функции ставил health в ноль вот так obj.health = - obj.health , затем во второй проверял obj.health <= 0. Итог - не прокатило. Но проверю ещё раз, мало ли напортачил. про bAlive и юзердату: (я не говорил что они не пашут) методы считай не особо отличаются, просто разные места для сохранений флага. Я видимо слабо уточнил - надо бы такой флаг, который бы остался даже при перезагрузке и был привязан к объекту, как пример - смена коммьюнити. P.S. Я много чего не знаю. Да забейте ребят, проблемы нет. Просто любопытно. Изменено 24 Ноября 2014 пользователем Max_Raf ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894461
RayTwitty 575 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) obj.just_killed = true Разве новые свойства таким образом можно задавать? Why not ? Ни чем не отличается от self.what_you_know = something из себя. dc Изменено 24 Ноября 2014 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894463
Dennis_Chikin 3 665 Опубликовано 24 Ноября 2014 Поделиться Опубликовано 24 Ноября 2014 (изменено) "надо бы такой флаг, который бы остался даже при перезагрузке" - Но зачем ??? Можно еще db.storage[npc_id].pstor.your_var = true. Но а смысл ? Если :alive() замечательно работает ? Еще есть серверный объект, которому пишут в пакет, но зачем же ??? Короче, правильный ответ в этой телевикторине не угадал ни кто. 8( Изменено 24 Ноября 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/296/#findComment-894464
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти