Перейти к контенту

[SoC] Ковыряемся в файлах


Рекомендуемые сообщения

Kirag

понял тебя. Спасибо за интересный способ :ny_thumbsup: попробую применить.

Всех с Наступившим Годом белого Тигра!

 

Gonarh

что ж я так и предполагал изначально.

только тут возникает один вопрос - а как скажем выводится инфа в рейтинг - где меняется кол-во трупаков на совести Меченого?

Ссылка на комментарий

можно ли прописать файлу другую дирректорию иконок,ну например чтобы он брал иконку не из ui_icon_equipment,а из,ну наприме ui_icon_equipment1?

а то сколько я не парился с фотошопом,все никак не получается создать новую иконку(видать фотошоп паленый попался)

Ссылка на комментарий

Кто-нибудь знает,что происходит,когда скрипт считает математические действия?

то есть 2+3 или 4*2 я пишу в скрипте - как это обрабатывает компиллятор?

Ссылка на комментарий
можно ли прописать файлу другую дирректорию иконок,ну например чтобы он брал иконку не из ui_icon_equipment,а из,ну наприме ui_icon_equipment1?

можно

Кто-нибудь знает,что происходит,когда скрипт считает математические действия?

скрипт ничерта не считает, это текстовый файлег, который парсится xrLua.dll, щас глянул список экспортируемых функций в данной библе, там их не меньше 400

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Gonarh, что происходит в движке,когда он в скрипте находит,математические действия.

Я это хотел сказать.

ты же сам знаешь,что я знаю,что это просто текст :)

Ссылка на комментарий
Gonarh, что происходит в движке,когда он в скрипте находит,математические действия.

Я это хотел сказать.

ты же сам знаешь,что я знаю,что это просто текст :)

вот здесь написано как добавить в свою софтину поддержку интерпретатора луа, думаю будет понятно

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий
что происходит в движке,когда он в скрипте находит,математические действия.

Это зависит от типа переменной. Если встроенный арифметический тип, то тупо считает, вроде как приводя к более сложному типу из двух. Точное поведение зависит от реализации.

Если это пользовательский тип, то при наличии метатаблицы с переопределённой арифметической операцией переправит действие этой операции (для vector или CTime к примеру). При отсутствии - будет ошибка "no such operator defined"

Это всё в принципе заморочки Lua. В его документации всё и описано.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

malandrinus, так.

Можно попроще,пожалуйста?

 

Вот пишу я

 

function plus(a,b )

return a+b

end

что происходит когда я вызываю plus(2,12) например?сам процесс складывания - что он из себя представляет?

 

меня интересует именно механизм складывания чисел - что компиллятор делает,имея 2 числа и задачу их сложить.

Изменено пользователем Monnoroch
Ссылка на комментарий

Monnoroch,

интерпретатор (здесь не компилятор, а именно интерпретатор) переводит высокоуровневую операцию в последовательность машинных кодов. В данном случае это заключается в вызове некой внутренней функции, которая собственно и выполнит сложение.

Сама функция представляет собой последовательность инструкций процессора, которая делает примерно следующее:

- Читает из стека аргументы в машинные регистры

- выполняет собственно сложение. Обычно для этого есть инструкция типа "сложить значение из регистра А со значением из регистра Б и поместить обратно в А"

- возвращает результат тем или иным образом в зависимости от соглашения о вызовах. Например через определённый регистр.

 

Ну и всё. Эти инструкции выполняются уже непосредственно процессором. Ниже уровня для программиста нету =)

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

- выполняет собственно сложение. Обычно для этого есть инструкция типа "сложить значение из регистра А со значением из регистра Б и поместить обратно в А"

 

Вот это мне и надо...То есть это непосредственно команда процессора?

Ты не знаешь,в таком случае,как устроена эта "сложить" в процессоре?

 

Я сам могу в уме или на бумаге складывать:

-столбиком

-десятично (есть вариации)

 

А как складывает процессор?

Изменено пользователем Monnoroch
Ссылка на комментарий

RvP, а по-русски? :)

 

Предположим, что необходимо сложить два числа 5 и 4. Что же происходит в компьютере, когда поступает подобная команда? Давайте рассмотрим подобную ситуацию. Для начала необходимо перевести 5 и 4 в двоичную систему исчисления(так как компьютер ничего кроме нее не понимает). 5(в 10-ой)=0101(в 2-ой) и 4(в 10-ой)=0100(в 2-ой). Эта информация храниться в оперативной памяти до тех пор, пока не поступит команда их сложить. После того, как настало время произвести операцию, система заранее посылает эти два числа и код инструкции которую необходимо произвести(в нашем случае сложение) из оперативной памяти в кэш процессора. Там по истечении некоторого времени они ждут своей очереди поступления на конвейер. Когда очередь наступила, число 0101(5) заносится в один регистр, число 0100(4) во второй и поступает инструкция сложить. Два числа складываются, получается результат 1001(9), который заносится в третий регистр, и затем значение регистра отсылается обратно в оперативную память в определенную ячейку.

 

 

Вот мне эта инструкция и интересно как действует.

И насколько долго она работает.

Практический интерес в том - что будет обрабатываться быстрее - перевод из строки в число+сложение+перевод обратно в строку или таблица соответствий то есть функция,переводящая "2"+"2" в "4" для ЦИФЕР.

Только не надо говорить,что это занимает пол миллисекунды,дело не в этом.Мне сейчас именно важна скорость,а не сложность кода.

Изменено пользователем Monnoroch
Ссылка на комментарий

Monnoroch,

сумматор там стоит. Это такое электронное устройство. На входы подаёшь два двоичных числа, на выходных контактах через некоторое время получаешь результат. Посмотри здесь, если сильно интересно, как он устроен.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Monnoroch, странно что вы это не учили :) мы это по ШКИ проходили:

рисуется розрядная сетка(аля таблицо с 2мя строками и количеством столбцов равным розрядности машины) и туда справа-налево пишем наши числа в 2-ой системе счисления. пустые места заполняем нулями. сама операция сложения в проце выполняется примитивно- просто сложением :) (а вот с отниманием все намного интерестней)). по сути он складывает столбиком, но в бинарном коде. тоже ньюанс: не видел что б проц или програма нормально считали числа с дробной частью(десятичная форма). в проце такого нету, тут уже надо самому как то(тоесть он то посчитает, но сам перевод дробной части в 2й код как я понял для него затруднителен)

Vita sine libertate, nihil

Vita sine litteris - mors est

Ссылка на комментарий

Ммм,если кто программировал на паскале,не можете подсказать тогда,что будет быстрее обсчитываться:

inttostr(strtoint('2')+strtoint('2')); // стандартные функции

или

function plus(a,b:char):string;

begin

if (a = '2') and (b = '2') then

result:='4'

elseif...//тут условия для всех комбинаций цифр (да,81 штука,а что делать)

end;

 

 

Изменено пользователем Monnoroch
Ссылка на комментарий
Ммм,если кто программировал на паскале,не можете подсказать тогда,что будет быстрее обсчитываться:

Второй способ с кучей if-ов порочный в принципе. И скорее всего будет намного медленней.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

RvP, нельзя.слишком короткое -19 знаков точность и все равно 0 пишет.

 

Добавлено через 1 мин.:

malandrinus, спасибо.я просто думал - может оно логические выражения быстрее выполняет....

 

=====

 

хе-хе.А вот по итогам 10 миллионов вычислений быстрее мой способ :)

гдето 0.1 секунды.однако вот так :)

Изменено пользователем Monnoroch
Ссылка на комментарий

Monnoroch,

у тебя запредельно медленное преобразование строк в числа. Учитывая, что это даже не строки, а одиночные символы (если я верно понял), то сконвертировать их в соответствующие числа можно на порядок быстрее, используя коды символов. Функции для этого есть.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

×
×
  • Создать...