Electr0 Posted August 17, 2019 Share Posted August 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 }; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.