Перейти к контенту

Рекомендуемые сообщения

Callisto, ну если речь о защите от читеров, то не буду далее  расспрашивать иль распространяться предположениями. ;-)

Однако замечу, что штатными средствами игры твою защиту (даже ничего не зная о ней) реализовать по-сути невозможно. Реализация чита может быть очень маленькой и простенькой в использовании. А с учетом, что в наше время, при широких каналах, наличии торрентов и прочего, то даже перепакованный диск игры не помеха для читеров.

Т.о. а, стОит ли заморачиваться и тратить свое время на это? (вопрос риторический и не требует ответа) Скорее вопрос: "а захочется ли кому-то ломать?" - более актуален.  ;-)

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Есть ли какой нибудь код для более детального слежения за стеком движка или какие-нибудь функции, что бы контролировать наличие проблемных данных и следить за ними?

Ссылка на комментарий

Пытаюсь определить id машины актёра

local oActorCar = db.actor:get_holder_class()
local oCarId = oActorCar:id() 

 

 

Происходит вылет:

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 :
[error]Arguments : LUA error: ...e.r. Тени Чернобыля\gamedata\scripts\bind_car.script:29: attempt to index a nil value

stack trace:

 

Ссылка на комментарий

АuReN, я кончено извиняюсь, но разве get_holder_class возвращает объект машины? Разве эта функция не возвращает объект родительского класса? Да и вообще, каким образом машина может принадлежать ГГ? Ты что, её в рюкзак засунул? :)

Ссылка на комментарий

ColR_iT, Я пробовал применять две функции get_current_holder и get_holder_classобе как написано на Stalker Inside, возвращают машину или стационарное оружие связанное с ГГ. Попытка определить id с помощью каждой из них вызывает вылет. Пробовал сделать object():id() для этих функций, что так же вызывает вылет.

 

Может возвращает серверный объект?

ColR_IT

Изменено пользователем ColR_iT
Ссылка на комментарий

АuReN,

 

Пытаюсь определить id машины актёра

local oActorCar = db.actor:get_holder_class()
local oCarId = oActorCar:id() 
Происходит вылет:

эта функция возвращает объект типа CHolderCustom, он же скриптовый класс holder (имя класса на самом деле не имеет значения, поскольку нигде явно не используется). Строго говоря, это клиентский класс, но не game_object, поэтому у него нет поля id.

Кроме того. как ты делаешь делать нельзя. Если актор не в машине или не за станковыйм пулемётом, то get_holder_class() вернёт nil и вылет будет на следующей строке, но уже по другой причине. Кстати, судя по логу именно это и происходит.

 

Что касается определения id машины, то без правок движка это делается достаточно хлопотно: надо перебирать машины и искать ту, в которой сидит актор, сравнением положения актора и машины. По крайней мере я других способов не знаю. С правками это можно сделать проще.

Изменено пользователем malandrinus
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

malandrinus, А что тогда с функцией get_current_holder? Работает ли она?

Изменено пользователем АuReN
Ссылка на комментарий

АuReN

Как вариант, можно весь автотранспорт биндить отдельно. И через биндер машин на апдейте отслеживать расстояние. Скажем, 1.5 . В случае совпадения дистанций занести ИД машины в хранилище автотранспорта или же ( не знаю точно, работает ли коллбек юзания на машинах) через коллбек.

malandrinus, А что тогда с функцией get_current_holder? Работает ли она?

 

Про правила цитирования забывать не нужно.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

panzyuza, В данный момент я так и делаю. В биндере проверяю дистанцию и произвожу действие. Но например для БТР'а необходимо, в отличии от других машин, ставить дистанцию около 5 метров, т.к. позиция кабины далека от центра машины. А в этот радиус могут попасть и другие машины. Вот я и ищу лучшее решение этой задачи.

Ссылка на комментарий

panzyuza, В данный момент я так и делаю. В биндере проверяю дистанцию и произвожу действие. Но например для БТР'а необходимо, в отличии от других машин, ставить дистанцию около 5 метров, т.к. позиция кабины далека от центра машины. А в этот радиус могут попасть и другие машины. Вот я и ищу лучшее решение этой задачи.

Тогда коллбек юзания. Других вариантов нет.

 

Как хочешь...

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

АuReN,

что тогда с функцией get_current_holder? Работает ли она?

О, кстати я ошибся в предыдущем посте. Функция get_holder_class() возвращает этот же объект, но сконвертированный в тип holder.Т.е. её надо вызывать для машины, и она вернёт машину же, но в виде класса holder. А вот get_current_holder() как раз вызывается для актора и возвращает машину/пулемёт, в которой он сидит, или nil.

 

Вот жаль, что нельзя править посты. Как всё неудобно стало.

 

Кстати, в качестве идеи. Можно попробовать сравнить сами объекты холдеров, тот, что получен у актора и тот, который получен из машины. Я сейчас попробовать не могу, но есть некая вероятность, что это может сработать. Если сработает, то тогда всё равно надо перебирать машины, но не придётся мудрить с расстоянием до актора.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Ребят, за что отвечает вот этот код ?

local bufferedmessages={}


function mylog(msg)
end
function dbglog(fmt,...)
local msg = string.format(fmt, ...)
local msg_no_ws = string.gsub(msg, "%s", "_")
get_console():execute("dbg:" .. msg_no_ws)

end

 

Ссылка на комментарий

Здравствуйте , "ковырял скрипты" наткнулся на такое :

-- Сохраняем данные об отключенном вводе
if self.st.disable_input_time == nil then
   packet:w_bool(false)
else
   packet:w_bool(true) ---- fixed by Kamikazze
   utils.w_CTime(packet, self.st.disable_input_time)
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

Строчка кода packer:w_bool(true)  должна быть профиксена так packet:w_bool(true) ?? Я так понял это была синтаксическая ошибка кода, верно ? Если нет поправьте. 

 

Всё верно.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Это где ты такую ошибку нашел в оригинале или в моде каком, или сам делал и допустил?
А то мне может пригодится!

Поиск по слову "packer" в папке script выдаёт единственный результат.
Научись пользоваться поиском - очень полезная вещь, которая оградит тебя и нас от подобных вопросов.
ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Здравствуйте, ув. мододелы, столкнулся тут с проблемой, весь форум перерыл, но не нашел ответ..(а ведь помню где-то это уже обсуждалось)...вообщем ситуация такова, хочу узнать как записывается уловия ранга...

пример, если у ГГ ранг 300, то срабатывает инфопоршень и появляется диалог, если нет, то условие зацикливается..

Могу предположить что, код будет вот такого вида, но честно сказать...не особо понимаю, тут приравнивание ранга идет, как я понял к неписю, а как по той же схеме сделать проверку на ранг ГГ?

rank = n_rank --nepis.character_rank ()
   if n_rank == nil then n_rank = math.random(1, 9)*100 end
   if n_rank <= 300 then
db.actor:give_info_portion("cit_fail_first_task1")
	elseif n_rank <=600 then
db.actor:give_info_portion("cit_fail_first_task2")
    elseif n_rank <= 900 then
db.actor:give_info_portion("cit_fail_first_task3")
end

 

И ещё непонятно выражение "nil" это что-то по поводу 0?...

Буду признателен если поможете:) Спасибо!

Ссылка на комментарий

Всем привет, я давно где то на форуме видел функцию спавна НПС где сразу прописывается логика.

Вот что то похожее на это:

function borland_spawn()
    local obj = alife():create("borland",vector():set(24.034,16.555,677.921),303261,208)
    cfg\\= ВОТ ЭТА ВОТ СТРОЧКА CFG Я НЕ ЗНАЮ КАК ПРАВИЛЬНО ПИШЕТСЯ
    local tbl = amk.read_stalker_params(obj)
    tbl.sid = 97125
    amk.write_stalker_params(tbl, obj)
end

 

Будьте добры, покажите пожалуйста мне эту функцию.

АМК..1.4.1..+..Народная..Солянка..от..19.04.10..дополнение..14.08.10..+..патч..3.09.10..+..DMX..1.3.5..+..ADDON..BY..SARUMAN

Ссылка на комментарий

@Снайпер56

 

function spawn_npc()
 local obj = alife():create("clear_sky_1",vector():set(-133.097,1.284,-277.065),79374,3377)
 local params = amk.read_stalker_params(obj)
 params.custom = "[logic]\ncfg = scripts\\new\\clear_sky_1.ltx" - путь к файлу логики НПС и имя самого файла.лтх
 amk.write_stalker_params(params,obj)
end
Ссылка на комментарий

Вопрос такой. Хочу отыскать скрипт, в котором прописано действие на Актора пси-излучение при Контролёре. Хочу понять, какой тип хита используется, найти там используемые эффекты и анимации. Не подскажете, где это можно найти?

  • Нравится 1
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...