Николай ФеНиКс
как верно пояснил Darien Fx в функции hud_static() переменная local seconds это уже СОВСЕМ другая переменная (пусть и одноименная).
одноименных локальных переменных находящихся внутри (в теле) разных функций можно создавать скока угодно - так как граница их видимости - тело функции(или даже чанк - блок).
sevitov_yura
так я и говорю - на данный момент способа задать пути для NPC вне allspawn никто не нашел.
разрабы жестко задали эту необходимость в движке - и обойти ее пока никому не удалось.
"расстыковать all.spawn" - это имелось ввиду скорей всего банальная декомпиляция через ACDC - чем все и занимаются
Цитата#sevitov_yura :...Читая статью
...
Разъясните, что означает "расстыковать"
Читая эту статью разъяснять нужно будет ещё очень многое.
Впечатление от "полноты" предоставленной информации как в том анекдоте, - "Не съем, то понадкусываю".
Начать - начали, а закончить забыли.
Ну раз не возникают - значит у тебя всё работает как нужно и разъяснять нечего. Значит сам смекнул как сделать правильно.
Некоторым разъясняют и более развернуто, но результат плачевен.
Сообщение было успешно отредактировано Gun12 (19-06-2010 03:35 GMT3 часа, назад)
Gun12, пока вопросы не возникают, всё сделал как мне нада))) А о чём вопросы должны возникать???
Я тока узнал что вп нужно прописывать в олспвне(распоковав его), сразу аналогично сделал как в игре,уже челы и гранаты кидают и ходят где нада и логика 'на все случаи жизни')
Сообщение было успешно отредактировано sevitov_yura (19-06-2010 15:22 GMT3 часа, назад)
meet_state = <название состояния> он определяет, в каком состоянии будет находиться персонаж, если открылось диалоговое окно общения и торговли.
А что писать туда?
Николай ФеНиКс
там xml не используется вообще - чисто процедурный код.
Darien Fx
все меню из релизной версии сталка.
когда я попытался загрузить указанный в списке allspawn(он там один был) игра пошла на перезагрузку, а потом вылетела - так как файл не был обнаружен. Там в скрипте для получения файлов иcпользовались методы класса FS (и какие то еще)- саму процедуру я пока не очень понял.
скрипт находится в ui_spawn_dialog.script
Происходит вылет, если в слот ножа помещаешь какой ли бо предмет. Т.е. если у тебя есть нож в 0 слоте и нож в инвентаре, пытаешься переставить нож из рюкзака в первый слот и происходит безлоговый вылет. Такая же петрушка с болтом и фонарем. Что нужно переписать в настройках, чтобы от этого избавиться.
"Трудно исправить баги с изменением содержимого изначально жестко прописанных слотов. Для смены ножа нужно выкинуть оба ножа на землю, и подобрать тебе нужный."
Т. е. если включить дроп ножа, то можно создать такой "костыль", который будут юзать игроки, если захотят поменять ножи.
function static()
local npc = level_object_by_sid(006) --/ вот так использовать
if npc and string.find(npc:name(),"имя_нпс") and not flobals then
if npc:position():distance_to(db.actor:position()) < 10 then
local h = hit ()
h.power = 1
h.direction = vector():set (0, 0, 0)
h.impulse = 0
h.draftsman = db.actor --/ или npc
h.type = hit.explosion
npc:hit(h)
flobals = true
level.add_pp_effector ("deadcity_wake.ppe ", 1974, false)
news_manager.send_tip(db.actor, "%c[255,255,1,1]Имя того, кто это скажет\\n%c[255,1,255,1]Дальше подойти нельзя! Опасная зона!%c[default]", 0, "default", 8000)
end
end
end
вызываю через биндер....
подхожу вплотную к НПСу и ноль эмоций не хита, ничего...
Сообщение было успешно отредактировано Николай ФеНиКс (19-06-2010 19:52 GMT3 часа, назад)
Николай ФеНиКс
Сомнения насчёт этого - if npc and string.find(npc:name(),"имя_нпс") and not flobals then
Попробуй так - if npc and string.find(npc:character_name(),"имя_нпс") and not flobals then
добавлено спустя 2 минут
Ещё непонятно "имя_нпс" в твоём коде - ты так это и оставил?
Сообщение было успешно отредактировано Darien Fx (19-06-2010 18:34 GMT3 часа, назад)
Николай ФеНиКс
А нафига тебе вообще нужна вот эта часть строчки if npc and string.find(npc:name(),"имя_нпс") and not flobals then ? У тебя и так NPC определяется по сиду - зачем еще по имени?
name() - это уникальное имя из allspawn - у волка оно там esc_wolf
character_name() - имя на русском - Волк, Вася Пупкин, Ашот, Фанат, Ара
profile_name() - имя из профиля типа escape_trader_name, esc_wolf_name и т.д - пора бы уж запомнить.
erlik
я это знаю...
это и есть уникальное имя esc_wolf_name из all.spawn (просто волка нового делал, дублера.)
____________
ладно с этой функцией разобрались а как же со второй????
этой:
Почему начисление не в банк а сразу ГГ ???
Код:
local sxron = 0
if who and amount > 0.01 and bone_index > 0 then
if who:id() == db.actor:id() then --/ для актора
local oActiveItem = db.actor:object("wpn_p90_oxotnik")
if oActiveItem then --/ у актера проверяемое оружие
local kuda = ""
local money = 0
if bone_index == 14 or bone_index == 15 then
kuda = "Ранен в глаз"
money = 200
elseif bone_index == 13 then
kuda = "Ранен в голову"
money = 180
elseif bone_index == 16 then
kuda = "Ранен в челюсть"
money = 120
elseif bone_index == 17 then
kuda = "Ранен в шею"
money = 100
elseif bone_index == 9 or bone_index == 10 or bone_index == 11 or bone_index == 18 then
kuda = "Ранен в грудь"
money = 80
elseif bone_index >= 1 and bone_index <= 8 then
kuda = "Ранен в ногу"
money = 20
elseif bone_index >= 19 and bone_index <= 42 then
kuda = "Ранен в руку"
money = 60
end
sxron = sxron + money
news_manager.send_tip(db.actor, kuda..", Всего="..sxron..",Начислено="..money, nil, nil, 2000)
end
end
end
вот что получается:
обратить внимание на сообщение
как сделать чтобы показывало действительно всю набранную сумму?
т.е. например начальная сумма 0 попал набрал 20 всего показывать стало 20, попал набрал 200 стало 220, а сообщение начислено показывало 200.
как это реализовать?
erlik
это не функция, и твой пример каким боко работать будет через что и как вызывать функцию?
тут уже на хит колбек не поставишь...
-------------
а если надо допусти написать несколько костей то так: [1,5]
Повозился немного с твоим вариантом меню "Gravi".
В принципе все можно заставить заработать. Но нужны конкретные алгоритмы/условия ...
Столкнулся, правда, с некоторыми непонятками/проблемами, вызывающими странные безлоговые вылеты. Причем ошибки возникают (рандомно) только при входе курсора в область кнопок меню.
Т.к. все это можно обойти, используя различные варианты, зависящие от требуемого функционала, то дальнейшее ковыряние в кодах требует все же твоих конкретных требований.
Не думаю, что это удобно делать в топике, 'засоряя' его. В моем профиле есть аська - стукнись, если еще не отпала необходимость.
Николай ФеНиКс
работать будет также как и твой вариант - только быстрее.
и вызов идентичен.
только индексов костей у тебя как я сейчас заметил много - аж 42 штуки - тогда табличка большая получится. Но всегда можно найти выход и сделать компактный вариант.
Gun12
ты не знаешь другого способа объединения двух таблиц? (ну более элегантного что ли или даже очень быстрого).
пока накатал такой вариант:
Код:
function Union(tab_1, tab_2)
local Empty ={}
for i=1, #tab_1 do
table.insert(Empty,tab_1[i])
end
for i=1, #tab_2 do
table.insert(Empty,tab_2[i])
end
return Empty
end
в C# для этого делал метод Union есть - в lua же пришлось его самому создавать.
добавлено спустя 1 минуту
Artos
хорошо - стукну в АСЮ - чуть попозже.
Сообщение было успешно отредактировано erlik (19-06-2010 20:39 GMT3 часа, назад)
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.