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

Скриптование


Svoboда

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

Кактус_523

Мы получаем обьект класса. Это не тоже что и хендлер. Хотя бы потому что хендлер используется в С, а в С нет классов

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Одно "но" - текстуры всегда будет под худом. Не знаю как с AddCustomStatic обстоят дела, но вот с AddDialogToRender они обстоят именно так

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Я не буду разбираться что у вас в коде не правильно, но объясните мне смысл вот этого:

if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "scientific_outfit" and db.actor:item_in_slot(7):condition() <=0.80 ...

 

ЗАЧЕМ?

 

Вы вызываете аж 3 раза движковую функцию. Которая тоже время требует на выполнение. Притом такой код как выше выглядит не красиво. Почему не написать так:

 

local slot_item_7 = db.actor:item_in_slot(7)
if slot_item_7 and slot_item_7:section() == "scientific_outfit" and slot_item_7:condition() <=0.80 ...

 

И понятней, и быстрей

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Какой функцией можно получить ближайший левел_вертекс к данной позиции? Не перебирать же их все.

Freedom

Поделиться этим сообщением


Ссылка на сообщение

proper70

Тут может быть такой момент. У тебя в логике не прописано:

[smart_terrains]
none = true

Поэтому вполне вероятно что когда он спавнится, он работает по своей логике, т.к. например все смарты забиты. А потом какой то смарт освобождается и он уходит туда. Пропиши этот параметр в логику

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Struck

Эм....

local where = ""
if y>point.y then
   where = where .."северо-"
else
   whene = where.."юго-"
end
if x>point.x then
   where = where.."восток"
else
   where = where.."запад"
end

Не?

Тут конечно нужно еще поработать с таким моментом, что объект может находится с небольшим смещением по х или у относительно нашей точки и его можно считать условно "ровно на севере". Тут так-же просто - высчитать угол (геометрия 7 класс) и сравнить его с каким-то углом, например с 22,5

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

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Еще ее можно вручную сунуть в _G таблицу:

_G["my_global_func"] = function () get_console():execute("my_global_func called") end

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Может я что то не понимаю, но у вас то условие никогда не пройдет. У вас pre_fov всегда равно 0, а 0 никогда не может быть больше положительного числа

Freedom

Поделиться этим сообщением


Ссылка на сообщение

А я понял. Каллбек нахит вызывается даже когда выстрел идет в воздух и вызывается как реакция на опасность. Но такой вариант можно отследить - сила выстрела равна 0. Там в каллбеке даже есть условие if amount>0 then - перемести туда свою функцию и все будет хорошо

Freedom

Поделиться этим сообщением


Ссылка на сообщение

boryan67

 

Что же вас всех тянет к нет-пакетам! Для работы с нет пакетом нужно его создать, написать в него, прочитать. Да и банально - это же грязный хак. При кривых руках могут быть проблемы

Изменено пользователем _Призрак_

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Но у остальных же все работает. И у меня работало, хотя и с ПДА. Почему тебе не запомнить класс окна и не получать его каждый раз?

Freedom

Поделиться этим сообщением


Ссылка на сообщение
local tbl = {
["ammo_9x18_ap"] = 3,
["wpn_pm"] = 2
}
check_items(tbl)

function check_items(t)
db.actor:iterate_inventory(
function (dummy, oItem)
if t[oItem:section()] and t[oItem:section()]~=0 then
t[oItem:section()] = t[oItem:section()]-1
end
end
,nil)

for k,v in pairs(t) do
if v!=0 then return false end
end

return true
end

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Во первых почитай про область видимость переменных. Например такой код выдаст ошибку:

local a=1
if a==1 then
local b =15
end
b = b+1

С руганью на то что мы не создали переменную b. Почему? Мы создали ее в условии, но эта переменная удалится при выходе из условия. То же самое с циклами и функциями. Можно сделать глобальную переменную, которая будет видна везде. Тогда нужно просто не писать local перед именем переменной. Но это плохой стиль программирования и может вызвать колизию

 

Так же я не уверен что у тебя при старте будет инициализирована переменная my_flag_1. Сделай так:

 


function every_hour()
if not my_flag_1 then my_flag_1 = 0 end

local time_m = level.get_time_minutes()
if time_m == 59 and my_flag_1 == 0 then
local snd = sound_object([[interface\mp_reward]])
snd:play_no_feedback(db.actor,sound_object.s2d, 0, vector():set(0, 0, 0), 2.0)
my_flag_1 = 1
end

if time_m =~ 59 then
my_flag_1 = 0
end
end

 

 

 

З.Ы.бАнальщина

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Возвращаясь к вопросу о получении имени сохранения. Есть способ проще. Даже два.

1) Мы можем сохраниться двумя способами - через меню или через консоль/квик_сейв. Через меню мы можем отследить (как это сделать все понятно надеюсь). А в игре можно попробовать отследить статик, который показывается после сохранения - на нем как раз написано имя сохранения. Сложность алгоритма минимальна

2) Можно при старте игра при помощи FS класса считать все файлы в папке saves (точнее считать имена файлов и дату изменения). Как только мы в биндере актора происходит вызов метода save() то мы взводим флаг и на следующем апгрейде опять просматриваем папку с сохраниениями на предмет изменений. Сложность алгоритма зависит от количества файлов в папке

Freedom

Поделиться этим сообщением


Ссылка на сообщение

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

Freedom

Поделиться этим сообщением


Ссылка на сообщение

Для того чтобы определить есть ли значение в массиве его в худшем случае нужно полностью перебрать (сложность O(n)), а в случае хеша алгоритмическая сложность точно ниже (скорее всего что то типа O(logn), но я точно не знаю, зависит от реализации, сужу по тому как это сделано в других языках/системах. Есть базы данных где доступ осуществляется вообще за константу)

Freedom

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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