DIMITRIS Опубликовано 29 мая, 2019 Поделиться Опубликовано 29 мая, 2019 (изменено) Во время игры значение прыгает от 1 до 4. Хочу сделать так, что бы CE прибавлял всегда 0.5 к дефолтному. Т.е. если 4 то CE должен сделать 4.5 и зафризить, а когда меняется допустим на 2, то CE должен поставить 2.5 и зафризить. Возможно ли провернуть такое дело ? Помогите пожалуйста Изменено 29 мая, 2019 пользователем DIMITRIS Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 29 мая, 2019 Поделиться Опубликовано 29 мая, 2019 А как оно будет меняться, если ты собираешься его фризить? Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 29 мая, 2019 Поделиться Опубликовано 29 мая, 2019 (изменено) Пишешь вот так вот: Спойлер // найди записывающую инструкцию, туда впиши прибавку 0,5 // предположим твоё значение в eax label(mylabel) code: mov [mylabel],eax //во временную метку fld dword [mylabel] //предположим оно у тебя float fadd dword [mylabel+4] //прибавляем 0.5 fstp dword [mylabel] //возвращаем в метку mov eax,[mylabel] //возвращаем в eax jmp return mylabel: //метка, +0 место для значения, и +4 сколько прибавлять dd 0 (float)0.5 Изменено 29 мая, 2019 пользователем imaginary Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 30 мая, 2019 Поделиться Опубликовано 30 мая, 2019 (изменено) 5 часов назад, Garik66 сказал: add [адрес твоего значения],3F000000 Вот ты прямо уверен да? ну попробуй, выполни это, и посмотри что произойдёт... Это ошибка. Если тебе уж хочется сделать так, то делать надо: (и то мы будем прибавлять постоянно умножающуюся составляющую, не получив 0.5) add [адрес твоего значения],800000 Не забывай о том что float считается НЕ с нуля, хоть ноль в hex и будет равен 0 в float. Изменено 30 мая, 2019 пользователем imaginary Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 30 мая, 2019 Поделиться Опубликовано 30 мая, 2019 В 29.05.2019 в 10:58, DIMITRIS сказал: CE должен сделать 4.5 и зафризить, а когда меняется допустим на 2 А как оно и в правду будет меняться, если значение заморожено ? К примеру у тебя 4.5 (допустим) ну и заморозило его на этих 4.5..... а как оно потом изменится на 2 ? Или ты имеешь введу, поставить сравнение... и если значение ровно 4- то его фриз с дописью в него 0.5 ... а если оно ровно 2.. то его на 2.5 и фриз... То есть получается, код внутри сам должен следить за данными... Увидел он двойку - сразу запись 2.5 и фриз его.... а если увидел 4 - то дописывает к нему 0.5 и так же фриз его... ? А то я что то не фига не понял его замысла... Но чел видать из моего круга в плане ОБЪЯСНЯТЬ. но даже я его и то не понял... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 30 мая, 2019 Поделиться Опубликовано 30 мая, 2019 1 час назад, imaginary сказал: Вот ты прямо уверен да? с утра торможу. - Плохо болеть однако. Ссылка на комментарий Поделиться на другие сайты Поделиться
DIMITRIS Опубликовано 30 мая, 2019 Автор Поделиться Опубликовано 30 мая, 2019 (изменено) Попробую объяснить подробнее. Есть значение, которое отвечает за скорость передвижения персонажа. Оно меняется + / - во время игры. По моим наблюдениям - оно может быть следующим: 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.50, 3.75, 4. Моя цель - сделать так, что бы это значение было всегда на 0.5 больше от истинного. По факту - можно зафризить макс. значение бега (4), но это будет палевно. Исходя из тестов - понял, что нужно добавлять именно 0.5, да бы избежать бана. Если просто без фриза поменять допустим с 3 на 3.5, то при первом же сдвиге персонажа - значение встанет снова на 2. Как вижу решение я: ( Но не знаю как это воплотить в реальность) Сделать так, что-бы CE прибавлял к истинному значению +0.5 и фризил, но при этом следил за истинным значением, и в случае его изменения менял, что бы не превышать 0.5. Выражаю огромную благодарность за вашу помощь Изменено 30 мая, 2019 пользователем DIMITRIS Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 30 мая, 2019 Поделиться Опубликовано 30 мая, 2019 5 минут назад, DIMITRIS сказал: Если просто без фриза поменять допустим с 3 на 3.5, то при первом же сдвиге персонажа - значение встанет снова на 2. Теперь более понятно - тогда вариант, который предложила @imaginary приемлем. 1 час назад, imaginary сказал: ... Это ошибка. У меня де жавю что ли? По моему я уже один раз так ошибался. 8 минут назад, DIMITRIS сказал: прибавлял к истинному значению +0.5 и фризил ЗЫ: именно так и будет при использовании её кода. Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 30 мая, 2019 Поделиться Опубликовано 30 мая, 2019 3 часа назад, Garik66 сказал: У меня де жавю что ли? По моему я уже один раз так ошибался. Да ладно, с кем не бывает такого ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения