-
Постов
410 -
Зарегистрирован
-
Посещение
-
Победитель дней
16
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент Antonshka
-
Порой он полезен. Кстати, как оказалось в оригинале книги пирамида не выравнивается по правому краю, а имеет вид - x xxx xxxxx У тебя правда она получилась немного кривоватая, наверно это от того, что разница между количеством "x" не 2 а 1..
-
Наверно нашёл ответ в интернете - "Имена аргументов, при объявления прототипов являются необязательными." Вариант решения задания без for, while, do, recursive function, string(), но с тем же cout
-
Сегодня начал читать главу "функции". Возник вопрос. @Xipho , почему в твоём скрипте код имеет такой вид вместо такого или такого? В книге автор пишет что объявление (прототип) функции должно содержать возвращаемый тип функции "void", имя функции и типы аргументов функции void DrawLine(int); а определение функции должно содержать возвращаемый тип функции "void", имя функции, типы и имена а̶р̶г̶у̶м̶е̶н̶т̶о̶в параметров функции в том же порядке. void DrawLine(int tabs) { } Больше всего мне интересно почему у тебя в объявлении функции указан не только тип, но и имя аргумента. Спрашиваю для того, чтобы понять как на самом деле нужно объявлять.
-
Кто-нибудь сможет решить задание вообще без использования for, while, do, recursive function, string(), но с тем же cout?
-
Работает исправно, но печатает со второй строки. По задумке нужно с первой.
-
Конечно странно. Просто в книге Лафоре, это задание предваряет обьяснение std::string. Потому читающий не имеет возможности использовать такой метод. Отсюда и вопрос. А курсы - по отзывам я понял, что они равносильны самостоятельному обучению. Разница лишь в том, что на курсах даётся материал более правильно последовательный. Но за совет спасибо.
-
Интересный вариант! Более простой чем у меня. Наверно это от того, что я не использовал string(). Впрочем немудрено - ведь до string() я ещё не дошел. Понял твою точку зрения. Возможно действительно так. Мне думается это задание на запоминание правил написания кода, на запоминание употребляемых выражений, - словом для практики, также и на развитие мышления. P.S. Написать без использования string() смог бы?
-
Да, согласно заданию, пирамида должна быть выравнена по правому краю. Также с каждой новой линией количество символов 'x' должно увеличиваться не на 1, но таким образом х ххх ххххх Значит пока у вас нет решения. Вот еще чуть более изощренный вариант решения с моей стороны Скрипт Результат с пробелом Результат с '0' вместо пробела Как видно из последнего изображения, пирамида должна быть зеркальной, должна начинаться от левого края, должна выравниваться по правому краю, должна иметь 20 строчек. '0' - здесь просто для наглядности что пирамида зеркальная и что начинается от левого края.
-
Задание из книги Лафоре Кто-нибудь пробовал его решить? У меня заняло это несколько часов. Непросто мне она далась. Скрипт Если кто-то из вас решал эту задачу, я с удовольствием посмотрел бы на ваши методы.
-
С ковычками да, будет читать адрес переменной созданной в АА скрипте. Вот примеры разных результатов, если кому интересно Если я правильно понял из мануала, переменная Value4, которая объявлена здесь - function CheckAddress(Value4), видна только в теле этой функции, но не за её пределами. Это тоже что и объявить local value4 внутри функции. здесь переменная "a" является глобальной, и видна во всем проекте, во всех функциях. "b" - видна только в этом файле и в любых функциях этого файла "с" и "d"- видны только в этой функции Видны только в этой функции- значит вне этой функции невозможно получить доступ к этим переменным. Кроме того чтобы похвастаться, я написал это ещё и с тою целью, чтобы знающие люди найдя здесь неточности, указали мне на них, тем самым сделав наши познания более верными.?
-
@Garik66 Я не совсем понял как работает эта часть скрипта В мануале по Луа такое описание: Value4 - область видимости этого параметра только функция CheckAddress. То есть Value4 в функции и Value4 созданный в АА скрипте - это разные переменные. return - возврат результата. Например вызов такой функции вернет 113. CheckAddress(111) - метод вызова функции с передачей в параметр Value4 значения 111 readInteger(Value4) ~= nil - это операция отношения, следовательно return readInteger(Value4) ~= nil вернет либо false, либо true. Такие вот описания там. @Garik66 В написанных тобою скриптах AA я не увидел вызова функции CheckAddress. Также на видео хотелось бы увидеть поведение туториала в случае если указатель указывает на nil.
-
Кто как избегает болезнь геморрой, столь присущую программистам? Лично сам пробовал стоять, но это не помогает. От долгого стояние геморрой также развивается. Пробовал самодельное сидение с отверстием, прототип ортопедической подушки от геморроя, - не эффективно. Осталось опробовать полулежачее положение, которое правда немного неудобное для печатания. С одной стороны геморрой играет отрицательную роль опущенного якоря для движущегося корабля, с другой стороны положительную роль отсечки, для спортивного автомобиля.
-
7. Вариант использовать для проверки на ноль команду ""test" вместо "cmp". test - логическая "И" test reg,reg- проверка на ноль. Пример 1 (reg = 12345) test reg ,reg = test 12345,12345 = 12345 "И" 12345 = 12345 Пример 2 (reg = 0) test reg ,reg = test 0,0= 0"И" 0= 0
-
Пока что кроме IMUL-шифрование параметров ничего не встречал. Вот еще адрес с шифрованным значение 90D8369C, его ключ imul 6FA85A41. Расшифрованное значение 4478B59C (float)994.8376465. Ключ для его зашифровки 9144B5C1. И так все "imul" адреса которые проверял.
-
Это константа. Но я немного о другом. Я планирую сделать два приложения. Первое приложение для быстрого тестирования значений в памяти, для понимания их назначений.. Вот как оно должно работать - первый адрес, ставим бряк на чтение, получаем ключ типа B05C6C43, придумываем любое новое значение float, используя брутфорс получаем float в зашифрованном виде, записываем его вручную в память и смотрим что изменилось в поведении автомобиля, решаем нужен ли этот адрес для другого второго приложения. Далее идем на второй адрес, ставим опять бряк, берем новый ключ типа B05C6C43, float, брусфорс, наше решение, и так далее, третий адрес, четвертый, тестируем, отбираем. Во втором приложении будут использоваться только отобранные адреса. Для каждого отобранного адреса будет свой собственный ключ типа DA9A406B для зашифровки, и ключ типа B05C6C43 для расшифровки. Во втором приложении брутфорс не нужен. Первое приложение - для отсева параметров автомобиля от не параметров, и для нахождения ключей B05C6C43 и DA9A406B для каждого параметра. Второе приложение - для настройки отобранных параметров.
-
@MasterGH, @partoftheworlD, интересные идеи. @Garik66, отличный скрипт получился. Как я понял он использует метод пользователя ParkourPenguin? 433C7EDD * DA9A406B mod 2^32 = BCF2465F // encrypt value BCF2465F * B05C6C43 mod 2^32 = 433C7EDD // decrypt value Спасибо за видео @Garik66, интересно было посмотреть. По поводу , я имел ввиду брутфорс для получения DA9A406B. Нужно протестировать много адресов в памяти, перед тем как понять нужны ли они для конечного инструмента или нет. В конечном инструменте будут использованы готовые ключи типа DA9A406B, для быстрой зашифровки. Но для "Коленвала", задача которого есть быстрое понимание назначения текущего значения в памяти по отношению к автомобилю - брутфорс получение DA9A406B для каждого нового B05C6C43 обременительно. Потому так написал. В "Коленвал" наверно нужно встроить опцию получения ключей зашифровки типа DA9A406B, для определенных ключей расшифровки типа B05C6C43. Затем добавить полученные ключи в конечный инструмент.
-
Коленвал Загрузил бы таблицу и exe, но не знаю как.
-
С форума СЕ. Автор - ParkourPenguin (float)188.4955597 = 433C7EDD // original value 433C7EDD * DA9A406B mod 2^32 = BCF2465F // encrypt value BCF2465F * B05C6C43 mod 2^32 = 433C7EDD // decrypt value Ключ B05C6C43 для расшифровки известен изначально из инструкции. Используя этот ключ и брутфорс метод, автор получил ключ DA9A406B для зашифровки любого нового значения. Брутфорс метод автора Недостаток такого метода, опять же занимающий некоторое время брутфорс.
-
Работает быстро, исправно. Для настройки автомобиля правда не подойдет, там важны десятые/сотые доли.
-
Итог тестирования многопоточности: 19 скриптов АА, в каждом свой отдельный поток (createthread(name)) - поиск для (float)152.4550018 = ~3 секунды. 1 скрипт АА с одним потоком - результат почти тот же. 19 скриптов дали прирост, но не большой.
-
local x = 0 while x ~= 2684354560 do -- 2684354560 = A0000000 x = x + 1 end print(x) ~ 58 секунд до напечатания "x". Луа не подходит.
-
(Float)555 - около секунды. В скрипте необычный порядок высвобождения стека, опечатка?
-
Забыл переместить. То зацикливание которое мы делали в АА скрипте - работает на частоте процессора, с такой же частотой будет работать "while do" в луа скрипте. Такое предположение.
-
Проверил, скрипт 1 быстрее скрипта 2, в 4-5 раза. Скрипт 1 Скрипт 2