Electr0 Опубликовано 17 августа, 2019 Опубликовано 17 августа, 2019 иногда при декомпиляции lysis'ом исходников плагинов можно увидеть такое: if (1097859072 == damage && (0.0 == damageForce[0] && 0.0 == damageForce[1] && 0.0 == damageForce[2])) а на самом деле: #define CHARGER_DMG_POUND 15.0 else if (damage == CHARGER_DMG_POUND && (damageForce[0] == 0.0 && damageForce[1] == 0.0 && damageForce[2] == 0.0)) выходит вместо 15.0 там оказалось 1097859072. в чем дело я не знаю, но нашел способ конвертировать такие случаи, если мы точно знаем что там должен быть float: нашел темку на немецком https://www.sps-forum.de/hochsprachen-opc/71602-doppelwort-dbd-labview-auslesen.html и после чего понял что делать: Цитата 1097859072 (dec) = 0x41700000 (hex) = 15.0 1. Конвертируем 1097859072 из dec в hex через Decimal to Hexadecimal converter, итоговое значение берем из поля Hex signed 2's complement получилось = 41700000 2. 41700000 конвертируем в float через IEEE-754 Floating Point Converter, вставив наше число в поле Hexadecimal Representation получилось 15.0 в поле Decimal representation точно такая же проблема возникла при декомпиляции плагина l4d2_tank_protector.sp new Float:c2m2SafePlace[3] = { -1008566272, -979118080, 1107296256 }; new Float:c5m2SafePlace[3] = { -972148736, -974813184, 1092616192 }; new Float:c5m2SafePlace2[3] = { -971503616, -977342464, 1126301696 }; new Float:c5m3SafePlace[3] = { 1168080896, 1167876096, 1092616192 }; new Float:c2m2Angles[3] = { 0, 1127153664, 0 }; а должно быть: new Float:c2m2SafePlace[3] = { -453.0, -5243.0, 32.0 }; new Float:c5m2SafePlace[3] = { -9100.0, -7345.0, 10.0 }; new Float:c5m2SafePlace2[3] = { -9730.0, -6110.0, 162.0 }; new Float:c5m3SafePlace[3] = { 5104.0, 5004.0, 10.0 }; new Float:c2m2Angles[3] = { 0.0, 175.0, 0.0 }; Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.