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

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


Svoboда

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

> *Shoker*, ты полез туда, где нужны уверенные знания, а не погадалки.

Метод проб и ошибок никто не отменял :)

Попробовать всегда можно, потому и уточнил.

 

> Параметр 'condition' для всех предметов читается как: tT.condition = oPs:r_float(). Чем тебе это не нравится или что смущает?

Меня смущает наличие upd:condition, для чего он тогда нужен, и что обозначает?

Собственно говоря его я вывожу лишь для того чтобы проверить корректную работу разбора UPDATE_ пакета, и только потому-что оно шло первым-вторым в свойствах upd_пакета оружия, а не чтобы получить текущее состояние оружия. Но если этот параметр обозначает не состояние оружия, то тогда почему имеет такое название, и для чего нужен?

 

> И ты так и не отвтеил, что же в твоем пониманиее такое однобайтовые(!) параметры 'upd:condition' и 'upd:grenade_mode' и каковы же значения для них ты ожидаешь?

 

Названия этим параметрам придумывал не я, а те, кто разбирали нет-пакеты.

Ориентируясь по названиям, я ожидаю, что upd:grenade_mode вернёт мне что то, связанное с гранатомётом.

Но вместо этого он каждый раз при каждом save\load (как и upd:condition) возвращает разные числа, которые изменяются случайным образом лишь при следующей загрузке, а их значения не имеют никакого смысла . Тут уже я должен задать вопрос, что из этих параметров я могу получить полезное, что мне от них ожидать, и для чего они вообще существуют? Ибо пока у меня выходит лишь бессвязный набор случайных цифр.

 

PS: С новым скриптом ситуация аналогичная, разве что он теперь чаще просто нули возвращает в выводимых мною upd-параметрах. ^^^

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

            sm.mylog("ShotX = "..scnt)
            sm.mylog(ammo_name)

        sm.mylog(packet.updgrenade_mode) --      = oPu:r_u8() --/#+#
        sm.mylog(packet.updcondition) --         = oPu:r_u8()
        sm.mylog(packet.updweapon_flags) --      = oPu:r_u8()
        sm.mylog(packet.updammo_elapsed) --      = oPu:r_u16()
        sm.mylog(packet.updaddon_flags) --       = oPu:r_u8()
        sm.mylog(packet.updammo_type) --         = oPu:r_u8()
        sm.mylog(packet.updweapon_state) --      = oPu:r_u8()
        sm.mylog(packet.updweapon_zoom) --       = oPu:r_u8()
        sm.mylog(packet.updcurrent_fire_mode) -- = oPu:r_u8()
        sm.mylog("ENDS")

 

Результат:

! [LUA][ERROR] [07:10] ShotX = 1
! [LUA][ERROR] [07:10] ammo_5.56x45_ss190
! [LUA][ERROR] [07:10] 32
! [LUA][ERROR] [07:10] 116
! [LUA][ERROR] [07:10] 104
! [LUA][ERROR] [07:10] 29545
! [LUA][ERROR] [07:10] 32
! [LUA][ERROR] [07:10] 32
! [LUA][ERROR] [07:10] 115
! [LUA][ERROR] [07:10] 101
! [LUA][ERROR] [07:10] 116
! [LUA][ERROR] [07:10] ENDS

 

Бред же какой то...

 

 

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


Ссылка на сообщение
--/ cse_alife_object
local function Parse_Packet_cse_alife_object(tT,oPs)
(1.6):gvid=[135]
(1.25):distance=[0]
(1.22):direct_control=[1]
(1.4):lvid=[48111]
(0.4):object_flags=[-65]
(1.17):custom_data=[]
(1.23):story_id=[-1]
(0.6):spawn_story_id=[-1]

--/ cse_visual
local function Parse_Packet_cse_visual(tT,oPs)
(1.19):visual_name=[dynamics\weapons\wpn_fn2000\wpn_fn2000]
(0.5):visual_flags=[0]

--/ cse_alife_item
function Parse_Packet_cse_alife_item(tT,oPs,oPu)
(0.2):condition=[0.99999958276749]
(0.8):upgrade_count=[0]
(1.16):updnum_items=[0] --UPD--
(0.1):updph_position=[<userdata>] --UPD--
(1.11):upditem__unk1=[<userdata>] --UPD--
(1.8):upditem__unk2=[<userdata>] --UPD--
(0.12):updph_rotation --UPD--
(1.0):a=[3.7459390200166e-017]
(1.1):d=[0]
(1.2):c=[0]
(1.3):b=[8.6880504788139e-044]
(0.0):updph_angular_vel=[<userdata>] --UPD--
(0.7):updph_linear_vel=[<userdata>] --UPD--
(0.3):updph_unknown=[0] --UPD--

--/ cse_alife_item_weapon_magazined_w_gl 
function Parse_Packet_cse_alife_item_weapon_w_gl(tT,oPs,oPu)
(1.7):ammo_current=[90]
(1.14):ammo_elapsed=[30] 
(1.15):weapon_state=[5]
(1.5):addon_flags=[0]
(1.24):ammo_type=[0]
(0.9):item_weapon__unk1=[0]

(0.10):updgrenade_mode=[76] --UPD-- VVV
(1.13):updcondition=[82]
(0.11):updweapon_flags=[123]
(1.12):updammo_elapsed=[3]
(1.9):updaddon_flags=[0]
(1.21):updammo_type=[0]
(1.20):updweapon_state=[0]
(1.10):updweapon_zoom=[0]
(1.18):updcurrent_fire_mode=[0]
------------

 

Проверял на updweapon_state, updweapon_zoom и updcurrent_fire_mode, ни один не менялся ни при смене патронов, ни при зуме и прочем.

Тоже с остальными upd-параметрами. Начинаются боятся, что это всего-навсего GSC-овский рудимент, аля (1.7):ammo_current=[90], и грош цена этим данным :(

 

 

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

KD87

Спасибо за ответ :)

Вселяешь надежду :D

 

Но с чего ты определил, что ошибка именно в updnum_items=[0]?

В ACDC.pl он записан как type => 'h8', но чтения h8 не нашёл, а потому остаётся только u8, который в данный момент и используется...

(Всё, уже разобрался)

 

И спасибо за подробную информацию о q8\q16, эти данные были получены с помощью IDA?

И будет ли тогда критично пытаться прочитать upd:condition как u8? По идее вылета не будет, но и значение выйдет не правильное.

 

 

Artos

!, щас протестирую...

 

ziStam

ИЗучай конец скрипт xr_meet.script

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

:russian_ru: Не, ну это да, только смысл тогда в этом, по сути просто сохранённые данные из конфигов, да ещё и не имеющие особого смысла.

Кстати с новой версией возвращает nil-ы, т.к updnum_items = 0 и эти данные просто не читаются ...

Кажется я понял в чём дело, updnum_items же вроде тока к физике относится, а у тебя дальше проверка на то что он больше 0 и на параметры класса оружия\фонарика и ещё пары. Щас гляну... Да, терь что то выводится, правда щас разберусь ещё что именно, но значения меняются...

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Всё, теперь работает, Artos, зачем у тебя в скрипте это:

    if oPu and tT.updnum_items > 0 then
        tT.updgrenade_mode      = oPu:r_u8() --/#+#
        tT.updcondition         = oPu:r_u8()

 

Зачем tT.updnum_items, ведь он относится к физической части объекта и к cse_alife_inventory_item

Из за этого параметры ниже чтения updnum_items стабильно возвращают nil-ы

 

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

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

 

И по поводу updconditon, это таки состояние оружия. Так при 100% состоянии оружия, оно мне вывело 256, это 2 в 8 степени.

И соответственно с уменьшением состояния оружия оно опускалось вплоть до нуля.

 

KD87, спс., щас проверю, отпишусь.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

KD87

Твой вариант странноват, не вылетает, но работает не верно, в upd возвращает преимущественно 0, и ещё иногда 1 в updnum_items (при вкл. гранатомёте) и 2 в updgrenade_mode когда стрельба не из гранатомёта идёт.

 

Также у тебя не нашёл чтения tT.updph_rotation, хотя в записи он всегда записывается.

Щас ещё кое что попробую, скажу потом.

 

> Не забывай, что в игре классы чаще всего наследуют предыдущие. Оружие - инвентарный предмет (в первую очередь), вот и присущи ему параметры родительского класса.

 

Не тут верно, но updnum_items относится ж тока к инвентарной части нет пакета оружия, зачем из за него блокировать чтение части с параметрами оружия?

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Ну хотя бы потому что updcondition в твоём варианте тоже ноль возвращает :D

Взял сейчас вариант Artos-а ( архив 11013-2, последний), поудалял везде проверку на tT.updnum_items, кроме cse_alife_item.

 

В итоге:

        packet.updnum_items = 0
        packet.updgrenade_mode = 0
        packet.updcondition = 255
        packet.updweapon_flags = 1
        packet.updammo_elapsed = 21 --\\ Не совсем совпадает с действительностью
        packet.updaddon_flags = 0
        packet.updammo_type = 0
        packet.updweapon_state = 5
        packet.updweapon_zoom = 0
        packet.updcurrent_fire_mode = 2

 

 

 

        packet.updnum_items = 1
        packet.updgrenade_mode = 76
        packet.updcondition = 82
        packet.updweapon_flags = 124
        packet.updammo_elapsed = 3
        packet.updaddon_flags = 0
        packet.updammo_type = 0
        packet.updweapon_state = 0
        packet.updweapon_zoom = 0
        packet.updcurrent_fire_mode = 0

 

Так что непонятки, похоже всё же при updnum_items > 0 что то не так считывается. Ежели он равен 0, то всё идёт корректно.

Но если оставить проверки Artos-а, то при обычной стрельбе всегда будет возвращать nil. А если взять твой вариант там кажется некорректно идёт,

но я завтра если что перепроверю.

 

 

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Artos, KD87

Огромное спасибо за помощь :good2:

С последней версией всё прекрасно работает. Никаких сдвигов (ЧН) я не заметил, все параметры отображаются корректно.

Теперь попробую переделать колбек на выстрел, чтобы без кейлогера работал.

 

RvP

А твоя lua-библиотека с невырезанными функциями работает только в ТЧ?

 

> в правой части должно везде быть по примеру

Ещё можно так:

if obj_sect == 'medkit' then snd = "interface\\inv_medkit"

 

Добавлено через 7 мин.:

И вообще, функцию use_object лучше так переделать, использовать таблицу:

 

local snd_tbl = {
    --\\ Медикаменты
    medkit            =     "interface\\inv_medkit",
    medkit_army        =     "interface\\inv_medkit",    
    medkit_scientic        =     "interface\\inv_medkit",    
    bandage            =     "interface\\inv_bandage",
    antirad            =     "interface\\inv_pills",
    
    --\\ Еда
        bread                        =     "interface\\inv_food",
    kolbasa            =     "interface\\inv_food",
    conserva            =     "interface\\inv_food",

    --\\ Напитки
    vodka            =     "interface\\inv_vodka",
    energy_drink        =     "interface\\inv_softdrink",    
                }
                
function use_snd(obj)
    local obj_sect = obj:section()
    
    if snd_tbl[obj_sect] then
        local snd_obj = xr_sound.get_safe_sound_object(snd_tbl[obj_sect])
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    end
end

 

 

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

KoRan

Вообще то "if obj and obj:section() == "af_medusa" then ..." и то что ниже, должно быть внутри функции actor_binder:on_item_take (obj), тоесть

до end стоять.

 

function actor_binder:on_item_take (obj)
    level_tasks.proceed(self.object)
    --game_stats.update_take_item (obj, self.object)

  if obj and obj:section() == "af_medusa" then
    db.actor:give_info_portion("find_art1")  
  end

  if obj and obj:section() == "af_gravi" then
    db.actor:give_info_portion("find_art2")
  end

end

 

Но тебе проще будет сделать так:

 

local my_info_table = {
  af_medusa = "find_art1",
  af_gravi     = "find_art2",
}
function actor_binder:on_item_take (obj)
    level_tasks.proceed(self.object)
    --game_stats.update_take_item (obj, self.object)

     if my_info_table[obj:section()] then
       db.actor:give_info_portion( my_info_table[obj:section()])  
     end
end

 

Тогда тебе достаточно будет лишь заполнять таблицу my_info_table, секция предмета = имя инфы

 

 

 

Artos

Кажется нашёл в новой версии нет-пакетов ошибки. Я ещё не до конца досмотрел, буду писать по мере нахождения:

1) В функциях работы с нет-пакетами аномалий появилась проверка на аномалию, функция isAnomaly(), но она есть только в твоём моде (в _G скрипте),

соответственно если кто то другой будет использовать твой скрипт, то при попытке разбора аномалии, игра будет вылетать. Функцию вставить не проблема, но имхо это уже лишняя осторожность.

 

2) В Fill_Packet_cse_ph_skeleton у тебя идёт запись updskeleton_flags, но в Parse_Packet_cse_ph_skeleton (и вообще во всём скрипте) ты её не считываешь.

Причём в старой версии скрипта это считывание присутствует.

 

3) Не уверен что ошибка. но в Parse_Packet_se_zone_anom, у тебя идёт чтение last_spawn_time_present, читается 8 бит и если они есть, то вызывается функция utils.w_CTime(oPs, tT.ctime), проблема в том, что в чистой игре, эта функция вылетает с таким логом:

[error]Arguments     : LUA error: ...es\stalker - clear sky\gamedata\scripts\utils.script:595: attempt to index local 't' (a number value)

В старой версии чтение и запись CTime я просто убрал, вылетов и глюков не было, хотя не могу стопроцентно ручаться.

 

Всё это проверялось на ЧН.

Больше вроде бы пока ничего не нашёл.

 

ЗЫ: Некоторые вещи мог сказать не правильно, но ты суть поймёшь, если глянешь на скрипт.

 

 

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Лёха_тц

И новую игру не забывай начинать, если спавн меняешь.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Artos

Похоже на ошибку GSC. Если взять utils.script безпатченной версии, то там функция w_CTime() такая:

 

    if not (t == CTime_0) then
        local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0
        Y, M, D, h, m, s, ms = t:get( Y, M, D, h, m, s, ms )

 

А в патченой версии я нигде не нашёл, чтобы вызывался код вида utils.CTime

Разве что как то движково.

 

И да, так мне получается параметр updskeleton_flags просто удалить? А то я вставил его чтение\запись :D

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Galil

Если статьи выдаются инфопоршнями, попробуй просто эти инфопоршни "забрать" (db.actor:disable_info_portion(" ") - но не уверен что именно так, проверь в lua_help)

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Хотел вот спросить по поводу некоторых странностей в работе STATE_Read и State_write колбеков в скриптах типа se_xxx.script

В скрипте sim_faction.script (ЧН, 10 патч) в функциях

 

 

-- Сейв

function se_sim_faction:STATE_Write(packet)

-- ЛОАД

function se_sim_faction:STATE_Read(packet, size)

 

Поставил вывод сообщения такого типа:

sm.ilog_c("load faction %s sid %s", self:name(), self.sid)

 

В итоге вот лог, записан сразу после save\load

 

* Saving objects...
! [LUA][ERROR] [07:15] save faction mar_sim_faction_csky sid 91495
! [LUA][ERROR] [07:15] save faction mar_sim_faction_renegade sid 10069
! [LUA][ERROR] [07:15] save faction mar_sim_faction_monster sid 18016
! [LUA][ERROR] [07:15] save faction gar_sim_faction_bandit sid 82950
! [LUA][ERROR] [07:15] save faction esc_sim_faction_stalker sid 34651
! [LUA][ERROR] [07:15] save faction esc_sim_faction_military sid 89133
! [LUA][ERROR] [07:15] save faction val_sim_faction_freedom sid 64428
! [LUA][ERROR] [07:15] save faction val_sim_faction_killer sid 12956
! [LUA][ERROR] [07:15] save faction agr_sim_faction_dolg sid 26588
! [LUA][ERROR] [07:15] save faction yan_sim_faction_zombied sid 17237
! [LUA][ERROR] [07:15] save faction lim_sim_faction_monolith sid 62255
* 21852 objects are successfully saved
* Game WinSeven_quicksave.sav is successfully saved to file 'f:\games\stalker - clear sky\save\winseven\stalker-stcs\savedgames\winseven_quicksave.sav'
  ...
Загрузка игры "winseven_quicksave.sav"...
* Loading spawn registry...
! [LUA][ERROR] [07:15] load faction mar_sim_faction_csky sid 47402
! [LUA][ERROR] [07:15] load faction mar_sim_faction_renegade sid 99711
! [LUA][ERROR] [07:15] load faction mar_sim_faction_monster sid 17753
! [LUA][ERROR] [07:15] load faction gar_sim_faction_bandit sid 48238
! [LUA][ERROR] [07:15] load faction esc_sim_faction_stalker sid 24366
! [LUA][ERROR] [07:15] load faction esc_sim_faction_military sid 78940
! [LUA][ERROR] [07:15] load faction val_sim_faction_freedom sid 59261
! [LUA][ERROR] [07:15] load faction val_sim_faction_killer sid 57427
! [LUA][ERROR] [07:15] load faction agr_sim_faction_dolg sid 81796
! [LUA][ERROR] [07:15] load faction yan_sim_faction_zombied sid 93268
! [LUA][ERROR] [07:15] load faction lim_sim_faction_monolith sid 31654
* 11568 spawn points are successfully loaded
* Loading objects...
! [LUA][ERROR] [07:15] load faction mar_sim_faction_csky sid 68530
! [LUA][ERROR] [07:15] load faction mar_sim_faction_renegade sid 95163
! [LUA][ERROR] [07:15] load faction mar_sim_faction_monster sid 1499
! [LUA][ERROR] [07:15] load faction gar_sim_faction_bandit sid 71579
! [LUA][ERROR] [07:15] load faction esc_sim_faction_stalker sid 26426
! [LUA][ERROR] [07:15] load faction esc_sim_faction_military sid 86856
! [LUA][ERROR] [07:15] load faction val_sim_faction_freedom sid 19908
! [LUA][ERROR] [07:15] load faction val_sim_faction_killer sid 25487
! [LUA][ERROR] [07:15] load faction agr_sim_faction_dolg sid 25358
! [LUA][ERROR] [07:15] load faction yan_sim_faction_zombied sid 11439
! [LUA][ERROR] [07:15] load faction lim_sim_faction_monolith sid 32970
* 21852 objects are successfully loaded
* Game winseven_quicksave is successfully loaded from file 'f:\games\stalker - clear sky\save\winseven\stalker-stcs\savedgames\winseven_quicksave.sav' 
...
Клиент: Синхронизация...
...
! [LUA][ERROR] [07:18] save faction mar_sim_faction_csky sid 68530
! [LUA][ERROR] [07:18] save faction mar_sim_faction_csky sid 68530
! [LUA][ERROR] [07:18] save faction mar_sim_faction_renegade sid 95163
! [LUA][ERROR] [07:18] save faction mar_sim_faction_renegade sid 95163
! [LUA][ERROR] [07:18] save faction mar_sim_faction_monster sid 1499
! [LUA][ERROR] [07:18] save faction mar_sim_faction_monster sid 1499
! [LUA][ERROR] [07:18] load faction mar_sim_faction_csky sid 65484
! [LUA][ERROR] [07:18] load faction mar_sim_faction_renegade sid 17958
! [LUA][ERROR] [07:18] load faction mar_sim_faction_monster sid 57149

 

 

 

 

Добавлено через 7 мин.:

Собстно я не совсем понял механизм работы этих функций.

Зачем при загрузке два раза вызывается функция STATE_Read() + ещё раз в конце), и зачем в конце загрузки игра занаво вызывает STATE_Write() для всех объектов, если мы загружаем а не сохраняем?

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Vano_Santuri

А что тебе мешает сделать одну глобальную таблицу с подтаблицами? :)

Типа:

 

local NewsTbl = {
["all"] = {  --\\ Общий канал 
          "Текст новости",
          "Текст новости",
          ...
             },
["freedom"] = {  --\\ Свобода
          "Текст новости",
          "Текст новости",
          ...
             },
...
}

 

А дальше можно получать рэндомный текст таким образом.

local ntbl = NewsTbl["freedom"] --\\ получаем подтаблицу с текстами свободы

local random_text = ntbl[math.random(#ntbl)]

 

В итоге random_text будет равен случайному сообщению из таблицы freedom

И тебе достаточно будет лишь менять имя таблицы в local ntbl, передавая её нужное строкове имя.

 

C if-ами лучше не заигрывайся, а то на твоей предыдущей версии новостей из за них Lua Cheker виснул :D

 

Ну и заполнять их аналогично можно, ты только учти что в table.insert первый аргумент это таблица как раз, куда ты будешь свой текст добавлять, тоесть если хочешь туда добавить текст, то пишешь так:

table.insert(ntb, "текст") и всё :)

 

Artos

Спасибо за новую версию нет-пакетов :)

И как тебе хватает терпения каждый раз их перелапатывать чуть ли не полностью, я б повесился давно :D

Я их постараюсь проверить, отпишусь, спасибо :)

 

По поводу STATE_Read\Write, я просто не понял зачем при загрузке сохранения, во первых функция STATE_Read вызывается 3 (!) раза за загрузку для всех объектов. А во вторых в конце загрузки при синхронизации происходить вызов STATE_Write (тоесть по сути во время загрузки сохранять все наши переменные) для всех объектов а потом опять STATE_Read (но уже для тех что на 1 локации с ГГ)

И того 3 Read и 1 Write во время загрузки... зачем?

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Скриншоты не могу глянуть, интернет не позволяет, но как насчёт того (возможно не до конца тебя понял)

local MsgTbl = {}

function addToTbl(name,ti)
if MsgTbl[name] == nil then
    MsgTbl[name] = {}
end

table.insert(MsgTbl[name], ti)
end

 

С помощью функции addToTbl() ты можешь добавить в MsgTbl нужный тебе текст к нужной группировке. Тоесть если тебе надо допустим добавить текст (или не тока текст, ti может быть и таблицой и чем угодно) к свободе, то ты просто пишешь addToTbl("freedom", <...>)

 

Ну и соответственно получить таблицу свободы через такую функцию.

 

function getFromTbl(name)
if MsgTbl[name] == nil then
    return nil --\\ вернёт nil если ничего нету
end
  
return MsgTbl[name]
end

 

Сама таблица будет примерно как та, что я выше показывал.

local MsgTbl = {
     freedom = { -- эту таблицу вернёт функция getFromTbl, name = freedom
                1 = ...,
                2 = ...,
                      },
                     }

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Кто знает, почему в Сталкере разработчики, при определении расстояния от одного вектора к другому, используют преимущественно функцию v1:distance_to_sqr(v2) -- квадрат расстояния между v1 и v2, а не обычную?

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

abramcumner

Ну похоже что так :)

Собстно я сейчас ищу методы ускорения определия дистанции ГГ до объекта.

 

Есть таблица, там в среднем около 200 объектов - аномалий, и нужно каждый апдейт (возможны небольшие погрешности) сравнивать их дистанцию до игрока. Остановился на использовании distance_to_sqr, но потери времени всё равно очень большие, за 1 апдейт в среднем 600-900 "мсек" теряется (не знаю в чём определяется значение profile_timer())

 

Я вот думаю, каким макаром можно ещё это ускорить ...

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Artos

Присоединяюсь к вопросу о флаге.

 

> Ты прав, это 'мои грабли'

А если не секрет, для чего они были необходимы.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Что такое постоянный колбек? Такого нету, есть функция update, которая вызывается несколько раз в секунду (зависит от fps)

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

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