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/
Artos 99 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) *Shoker*, бред указывать некие значения из распечатки некоего непроиндексированного массива без указания 'ключ-значение' Вот в таком виде: Print_Table: NetP(wpn_fn20005833): addon_flags = [0] ammo_current = [90] ammo_elapsed = [30] ammo_type = [0] condition = [1] custom_data = [<<zero_string>>] direct_control = [1] distance = [0] gvid = [61] lvid = [41939] object_flags = [-65] spawn_story_id = [-1] story_id = [-1] visual_flags = [0] visual_name = [weapons\fn2000\wpn_fn2000_new] weapon_state = [0] updaddon_flags = [0] updammo_elapsed = [97] updammo_type = [0] updcondition = [0] updcurrent_fire_mode = [0] updnum_items = [0] updph_angular_vel.1 = [0] updph_angular_vel.2 = [255] updph_angular_vel.3 = [0] updph_linear_vel.1 = [30] updph_linear_vel.2 = [0] updph_linear_vel.3 = [0] updph_position.<userdata>.x = [1060765.25] updph_position.<userdata>.y = [-3.7059476161288e-022] updph_position.<userdata>.z = [5.4318117588277e-037] updph_position = [vec(x=1060765.250:y=-0.000:z=0.000)] updph_rotation.1 = [195] updph_rotation.2 = [0] updph_rotation.3 = [0] updph_rotation.4 = [255] updweapon_flags = [0] updweapon_state = [0] updweapon_zoom = [0] - хоть что-то можно и понять и далее разбираться. Изменено 13 Октября 2011 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635208
*Shoker* 322 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) --/ 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], и грош цена этим данным Изменено 13 Октября 2011 пользователем *Shoker* Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635233
KD87 720 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) *Shoker*, это не рудимент, это неправильно распаковываешь нет-пакет. Видно же по rotation, что значения идут кривые, где-то соскочил с правильного порядка чтения (я даже скажу где - на upd:num_items). Также по q8 - ты прав, upd:condition действительно хранится в q8. Что такое q8: Функции r_float_qX предназначены для чтения float-значений, хранящихся с очень малой точностью. Прообраз из движка: void NET_Packet::r_float_qX(NET_Packet *this, float *A, float min, float max) что делает: читает один (q8) или два (q16) байта как unsigned __int8 или unsigned __int16 соответвенно, после чего значение переводится в некое подобие float следующим образом: *A = (val / max_container) * (max - min)) + min; (для простоты опускаю преобразования типов) Значения параметров для финалки ТЧ: max_container - максимальное значение, помещающееся в контейнер (255 для восьмибитного, 65535 для шестадцатибитного) max, min - минимальное и максимальное значения float, хранимого в этом контейнере: для q8 min = -1.0, max = 1.0 для q16 min = -32.0, max = 32.0 r_float_q8 в движке используется для чтения кватерниона, векторов angular_velocity и linear_velocity в M_UPDATE объектов, наследующих от CSE_AlifeInventoryItem. r_float_q16, кажется, используется только для чтения некоторых параметров ключей в anm. В старых билдах как q16 хранили еще здоровье и уровень радиации, только параметры были другими. Изменено 13 Октября 2011 пользователем KD87 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635246
ziStam 1 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 Уж простите за нубский вопрос, но как сделать в зп чтобы можно было со всеми нпс разговаривать? Или может какая правка есть? Буду ооочень благодарен Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635251
Artos 99 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) *Shoker*, вдогонку к сообщению KD87: Это подправленный модуль работы с нет-пакетами: m_net_utils_111013-2 По подсказке KD87 (огромное ему спасибо!), проверил 'лишний хвост' для оружия ... и подправил условие чтения. Для оружия с подствольниками оставил закомментированной возможность проверки, что нет-пакет (UPDATE) прочитан до конца, так что можно самому перепроверить. Изменено 13 Октября 2011 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635257
*Shoker* 322 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) KD87 Спасибо за ответ Вселяешь надежду Но с чего ты определил, что ошибка именно в updnum_items=[0]? В ACDC.pl он записан как type => 'h8', но чтения h8 не нашёл, а потому остаётся только u8, который в данный момент и используется... (Всё, уже разобрался) И спасибо за подробную информацию о q8\q16, эти данные были получены с помощью IDA? И будет ли тогда критично пытаться прочитать upd:condition как u8? По идее вылета не будет, но и значение выйдет не правильное. Artos !, щас протестирую... ziStam ИЗучай конец скрипт xr_meet.script Изменено 13 Октября 2011 пользователем *Shoker* Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635265
Artos 99 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 *Shoker*: аля (1.7):ammo_current=[90], и грош цена этим данным Загляни в конфиг своего ФН'а и посмотри сам что у тебя там ... Уверен, что именно ammo_current = 90 и стоИт. Так что: что написал - то и получай. ;-) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635268
*Shoker* 322 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) Не, ну это да, только смысл тогда в этом, по сути просто сохранённые данные из конфигов, да ещё и не имеющие особого смысла. Кстати с новой версией возвращает nil-ы, т.к updnum_items = 0 и эти данные просто не читаются ... Кажется я понял в чём дело, updnum_items же вроде тока к физике относится, а у тебя дальше проверка на то что он больше 0 и на параметры класса оружия\фонарика и ещё пары. Щас гляну... Да, терь что то выводится, правда щас разберусь ещё что именно, но значения меняются... Изменено 13 Октября 2011 пользователем *Shoker* Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635270
Artos 99 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) *Shoker*, это данных просто НЕТ, поэтому и не читаются. Чувствуешь разницу? Пакет закончился - далее 'мусор не читается (в отличии от раннего ...)' Не, ну это да, только смысл тогда в этом, по сути просто сохранённые данные из конфигов, да ещё и не имеющие особого смысла.Не уподобляйся мартышке из басни дедушки Крылова (про очки) ... ;-) То, что причитано было при спавне и запомнено в нет пакет - может как раз и изменяться! Ну а имеет это особое значение иль нет - для этого нужно и знать, что это за параметр и зависимости от него, и как его использовать для некоего смысла. Изменено 13 Октября 2011 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635273
KD87 720 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) Artos, ты немножко избыточно поправил в пакетах оружия, а вот в cse_alife_item, напротив, недостаточно. Вот, попробуйте это: http://narod.ru/disk/28326681001/m_net_utils.script.html Кстати, а битовый сдвиг в сталкерском lua есть? Изменено 13 Октября 2011 пользователем KD87 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635274
*Shoker* 322 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) Всё, теперь работает, 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, спс., щас проверю, отпишусь. Изменено 13 Октября 2011 пользователем *Shoker* Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635275
KD87 720 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) *Shoker*, из того, что я написал про q8 выше, оно переводится в нормальный float так: float = (q8/255)*2 -1. Подставь свое значение, получишь как раз примерно 1. Кстати, а почему 256? Разве не должен выдавать 255, он же 8 бит читает? Изменено 13 Октября 2011 пользователем KD87 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635276
Malandrinus 615 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 KD87, Кстати, а битовый сдвиг в сталкерском lua есть? Нету Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635278
Artos 99 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) KD87, спасибо за информацию и правки. Однако, вариант с твоими правками будет нерабочим в отношении оружия. За сегодня завтра приведу коды к некоему знаменателю, а пока наспех только хуже выйдет. *Shoker*: Зачем tT.updnum_items, ведь он относится к физической части объекта и к cse_alife_inventory_item Не забывай, что в игре классы чаще всего наследуют предыдущие. Оружие - инвентарный предмет (в первую очередь), вот и присущи ему параметры родительского класса. Иной вопрос, а в конкретном случае в нет-пакете зависят ли от предыдущих ппараметров последующие ... С этим предстоит поразбираться. Изменено 13 Октября 2011 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635284
*Shoker* 322 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) KD87 Твой вариант странноват, не вылетает, но работает не верно, в upd возвращает преимущественно 0, и ещё иногда 1 в updnum_items (при вкл. гранатомёте) и 2 в updgrenade_mode когда стрельба не из гранатомёта идёт. Также у тебя не нашёл чтения tT.updph_rotation, хотя в записи он всегда записывается. Щас ещё кое что попробую, скажу потом. > Не забывай, что в игре классы чаще всего наследуют предыдущие. Оружие - инвентарный предмет (в первую очередь), вот и присущи ему параметры родительского класса. Не тут верно, но updnum_items относится ж тока к инвентарной части нет пакета оружия, зачем из за него блокировать чтение части с параметрами оружия? Изменено 13 Октября 2011 пользователем *Shoker* Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635289
KD87 720 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) Artos, условия действуют в пределах части пакета, относящегося к текущему классу. Ты уже поставил условие в cse_alife_item, все, оружие-то его пакет наследует, а что там оружие своего добавляет, это уже пакета cse_alife_item не касается. Если подробней, оно все читается так: UPDATE_Read::CSE_AlifeInventoryItem читает свою часть, передает остаток в UPDATE_Read::CSE_AlifeItem, у его своих параметров нет, он отдает пакет дальше в UPDATE_Read::CSE_AlifeWeapon, потом в UPDATE_Read::CSE_AlifeWeaponMagazined. Каждый читает свой кусочек и дальше дает читать другим. Единственное исключение - UPDATE_Read::CSE_AlifeWeaponMagazined_W_Gl (не помню точно, как этот класс в движке называется). Он почему-то читается самым первым у оружия, а дальше вступает UPDATE_Read::CSE_AlifeInventoryItem. Добавлено через 4 мин.: *Shoker*, я, конечно, извиняюсь, но такого параметра, как rotation у оружия вовсе нет Ты может путаешь с кватернионом, так это не совсем то. Хотя, конечно, кватернион характеризует вращение. А насчет апдейт-параметров - так они у оружия почти всегда и ноль. Ну кроме, может, позиции. С чего ты взял, что неверно? Изменено 13 Октября 2011 пользователем KD87 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635290
*Shoker* 322 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 (изменено) Ну хотя бы потому что updcondition в твоём варианте тоже ноль возвращает Взял сейчас вариант 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. А если взять твой вариант там кажется некорректно идёт, но я завтра если что перепроверю. Изменено 13 Октября 2011 пользователем *Shoker* Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635294
RvP 1 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 Кстати, а битовый сдвиг в сталкерском lua есть? есть во многих библиотеках для lua, можно подключить. Например чтото отсюда http://lua-users.org/wiki/BitwiseOperators Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635295
Artos 99 Опубликовано 14 Октября 2011 Поделиться Опубликовано 14 Октября 2011 (изменено) KD87 Поправил различные нюансы в читалке нет-пакетов ... со всем оружием боле-менее понятно, но с оружием класса 'cse_alife_item_weapon_magazined_w_gl' - непонятки. Проверяю на SHoC v1.0006 Заспавнил "Грозу" и считал ее нет-пакет. Параметр 'upd:num_items' оказался равным 0 и соответствено пропущены остальные 'upd' для 'cse_alife_item'. Но(!) update-пакет оказался недосчитанным на 16 байт. Принудительно их изъял (r_u8), и вот что получил: Print_Table: NetPacket(wpn_groza): --/ cse_alife_object gvid = [61] distance = [0] direct_control = [1] lvid = [41939] custom_data = [<<zero_string>>] object_flags = [-65] story_id = [-1] spawn_story_id = [-1] --/ cse_visual visual_flags = [0] visual_name = [weapons\groza\wpn_groza] --/ cse_alife_item condition = [1] --/ cse_alife_item_weapon ammo_current = [90] ammo_elapsed = [30] weapon_state = [0] addon_flags = [0] ammo_type = [0] --/ cse_alife_item (left=27) upd:num_items = [0] --/ ??? (left=26) <- принудительное считывание (r_u8) upd:chunk.01 = [195] upd:chunk.02 = [124] upd:chunk.03 = [1] upd:chunk.04 = [83] upd:chunk.05 = [195] upd:chunk.06 = [2] upd:chunk.07 = [224] upd:chunk.08 = [155] upd:chunk.09 = [193] upd:chunk.10 = [213] upd:chunk.11 = [184] upd:chunk.12 = [12] upd:chunk.13 = [195] upd:chunk.14 = [0] upd:chunk.15 = [0] upd:chunk.16 = [255] --/ cse_alife_item_weapon_magazined_w_gl (left=10) upd:grenade_mode = [0] --/ cse_alife_item_weapon (left=9) upd:condition = [255] upd:weapon_flags = [0] upd:ammo_elapsed = [30] upd:addon_flags = [0] upd:ammo_type = [0] upd:weapon_state = [0] upd:weapon_zoom = [102] --/ cse_alife_item_weapon_magazined (left=1) upd:current_fire_mode = [0] --/ done (left=0) Ну ни как не возьму в тоолк, откуда взялись эти 16 байт? Чем и когда они должны считываться. В опущеных 'upd' из 'cse_alife_item' (по причине upd:num_items = 0), по любому только 4х3 + 4 + 3 + 3 байтов, т.е. 16 можно набрать только если считывать 'upd:ph_position' (4x3) и 'upd:quaternion' (4) - но это вроде как в ACDC отсекается строкою: return if ($_[0]->{'upd:num_items'} == 0); да и для координат значения явно некорректны (upd:ph_position => x=556143935488.000:y=-0.000:z=0.000). Где может быть загвоздка/недоработка? Изменено 14 Октября 2011 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635318
abramcumner 1 229 Опубликовано 14 Октября 2011 Поделиться Опубликовано 14 Октября 2011 *Shoker*, из того, что я написал про q8 выше, оно переводится в нормальный float так: float = (q8/255)*2 -1. Подставь свое значение, получишь как раз примерно 1. Кстати, а почему 256? Разве не должен выдавать 255, он же 8 бит читает? Неверно. Для updcondition диапазон от 0.0f до 1.0f. Ну и формула соответственно q8 / 255 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/147/#findComment-635321
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти