Автор | Сообщение |
|
| |
Пост N: 34
Зарегистрирован: 12.12.08
|
|
Отправлено: 09.06.09 12:15. Заголовок: Статистика
Вопрос по GM-у. Как сделать в игре статистику (можно ли создать txt файл со статами (переменные с числами), а затем брать из него информацию?) ?
|
|
|
Ответов - 23
[только новые]
|
|
|
| |
Пост N: 585
Зарегистрирован: 26.06.07
Откуда: Россия, Владивосток
Награды:
|
|
Отправлено: 09.06.09 12:23. Заголовок: Можно вопрос что ты ..
Можно. Вопрос что ты хочешь записывать?
|
|
|
|
| |
Пост N: 959
Зарегистрирован: 20.04.07
Откуда: Россия))), Питер
|
|
Отправлено: 09.06.09 12:24. Заголовок: можно, читай хелп В ..
можно, читай хелп Скрытый текст В более продвинутых играх, Вы, вероятно, захотите, чтобы данные читались из файла, который будете поставлять с игрой. Например, Вы могли бы сделать файл, который описывает определённые моменты, которые должны случиться. Также, Вы, вероятно, захотите сохранить информацию для следующего запуска игры (например, состояние текущей комнаты). Следующие функции существует, чтобы читать и записывать данные в текстовые файлы: file_text_open_read(fname) Открывает файл с указанным именем для чтения. Функция возвращает id файла, что должно быть использовано в других функциях. Вы можете открыть много файлов в то же самое время (32 максимум). Не забывайте закрывать их, когда они завершат свои действия. file_text_open_write(fname) Открывает указанный файл для записи и создаёт файл, если он не существует. Функция возвращает id файла, что должно быть использовано в других функциях. file_text_open_append(fname) Открывает указанный файл для добавления данных при завершении, создаёт их, если они не существует. Функция возвращает id файла, что должно быть использовано в других функциях. file_text_close(fileid) Закрывает файл с заданным id. file_text_write_string(fileid,str) Записывает строку в файл с заданным id. file_text_write_real(fileid,x) Записывает реальную величину в файл с заданным id. file_text_writeln(fileid) Записывает символ новой строки в файл. file_text_read_string(fileid) Читает строку из файла с заданным id и возвращает эту строку. Строка заканчивается в конце линии. file_text_read_real(fileid) Читает реальную величину из файла и возвращает эту величину. file_text_readln(fileid) Пропускает остальную часть линии в файл и начинает в начале следующей строки. file_text_eof(fileid) Возвращает, если достигнуто окончание файла. Чтобы манипулировать файлами в Вашей файловой системе, Вы можете использовать следующие функции: file_exists(fname) Возвращает, когда файл с заданным именем существует (истина) или не существует (ложь). file_delete(fname) Удаляет файл с заданным именем. file_rename(oldname,newname) Переименовывает файл с именем oldname в newname. file_copy(fname,newname) Копирует файл fname в newname. directory_exists(dname) Возвращает, если существует указанная директория. Имя должно содержать полный путь, а не относительный. directory_create(dname) Создаёт директорию с заданным именем (включая путь к ней), если она не существует. Имя должно содержать полный путь, а не относительный. file_find_first(mask,attr) Возвращает имя первого файла, который подходил маске и атрибутам. Если такой файл не существует, возвращается пустая строка. Маска может содержать путь и может содержать специальные символы, например 'C:\temp\*.doc. Атрибуты предоставляют дополнительные файлы, которые Вы хотите видеть. (Так что нормальные файлы всегда возвращаются, когда они подходят маске.) Вы можете добавить следующие константы, чтобы увидеть тип файлов: fa_readonly файлы только для чтения fa_hidden скрытые файлы fa_sysfile системные файлы fa_volumeid файлы тома-идентификатора fa_directory директории fa_archive архивные файлы file_find_next() Возвращает имя следующего файла, который подходит заданной маске и атрибутам. Если такой файл не существует, то возвращается пустая строка. file_find_close() Должно быть вызвано после обработки всех файлов, чтобы освободить память. file_attributes(fname,attr) Возвращает, если файл имеет все атрибуты в attr. Используйте комбинацию вышеуказанных констант. Следующие функции могут быть использованы для изменения имени файла. Отметьте, что эти функции не работают в фактических файлах, они взаимодействуют только со строками. filename_name(fname) Возвращает часть имени указанного файлового имени с расширением, но без пути. filename_path(fname) Возвращает часть пути указанного файлового имени, включая обратную косую черту. filename_dir(fname) Возвращает часть директории указанного файлового имени, это нормально, так же как и полный путь, но за исключением обратной косой черты. filename_drive(fname) Возвращает информацию устройства filename. filename_ext(fname) Возвращает часть расширения указанного файлового имени, включая подачу точки. filename_change_ext(fname,newext) Возвращает указанное файловое имя, с расширением (включая точку) изменённое в новое расширение. Используйте пустую строку как новое расширение. Вы также можете удалить расширение. Иногда Вам может понадобиться чтение данных из двоичных файлов. Следующие подпрограммы "низкого уровня" существуют именно для этого: file_bin_open(fname,mod) Открывает файл с указанным именем. Режим указывает, что может подходить файлу: 0 = чтение, 1 = запись, 2 = как чтение, так и запись. Функция возвращает id файла, что должно быть использовано в других функциях. Вы можете открыть многочисленные файлы в то же самое время (32 максимум). Не забывайте закрывать их, как только они завершат свои действия. file_bin_rewrite(fileid) Перезаписывает файл с заданным id, то есть, очищает его и начинает записывать в начале. file_bin_close(fileid) Закрывает файл с заданным id. file_bin_size(fileid) Возвращает размер (в байтах) файла с заданным id. file_bin_position(fileid) Возвращает текущую позицию (в байтах; 0 - первая позиция) файла с заданным id. file_bin_seek(fileid,pos) Перемещает текущую позицию файла на указанную позицию. Чтобы добавить позицию перемещения файла по размеру с перезаписываемым файлом. file_bin_write_byte(fileid,byte) Записывает байт данных в файл с заданным id. file_bin_read_byte(fileid) Читает байты данных из файла и возвращает его. Если пользователь выбрал бы безопасный режим в предпочтениях, то для множества таких программ, Вы не смогли бы определить путь - а только файлы, находящиеся в папке приложения могут быть, например, записаны. Если Вы включали файлы в выполняемую игру и автоматически не экспортировали их в начале игры, то для этого Вы можете использовать следующие функции: export_include_file(fname) Экспорт включенного файла с именем fname. Имя должно быть строковой переменной, так что не забудьте кавычки. export_include_file_location(fname,location) Экспорт включенного файла с именем fname в определенную директорию. Директория должна содержать путь и имя файла. discard_include_file(fname) Отказ от включенного файла с именем fname, используется для освобождения памяти. Имя должно быть строковой переменной, так что не забудьте кавычки. Следующие четыре переменные предназначенные "только для чтения" могут быть полезны: game_id* Уникальный идентификатор для игры. Вы можете использовать его, если Вам нужны уникальные имена файлов. working_directory* Прокладывает директорию для игры. (Не включая обратную косую черту.) program_directory* Директория, в которой сохранена игровая информация (не ставя в конце обратную черту). Вы запускаете автономную игру обычно из рабочей директории. Обратите внимание, что при тестировании игры Вы создаете программу, и рабочая директория будет другая. В том случае рабочая директория - место, где сохранена доступная для редактирования версия игры, в то время как каталог программы - временный каталог для тестирования. temp_directory* Создаёт временную директорию для игры. Вы можете загрузить временные файлы в эту папку. Они будут удалены в конце игры. В определённых ситуациях, Вы могли бы захотеть предоставить возможность играющим вносить командные аргументы строк в игру, которые будут выполнены (например, чтобы создавать чит-коды или специальные режимы). Чтобы получить такие аргументы, Вы можете использовать две следующие подпрограммы. parameter_count() Возвращает число параметров командной строки. Фактические параметры могут быть найдены со следующей функции. parameter_string(n) Возвращает параметры командной строки n. Первый параметр имеет индекс 1. Последний - parameter_count(). Индекс 0 - специальный. Это имя файла выполнимой игры (включая путь). Вы можете прочитать величину переменной среды, используя следующую функцию: environment_get_variable(name) Возвращает величину (строки) переменной среды с заданным именем.
|
|
|
|
|
| |
Пост N: 35
Зарегистрирован: 12.12.08
|
|
Отправлено: 09.06.09 12:40. Заголовок: Спасибо. Можно. Воп..
Спасибо. цитата: | Можно. Вопрос что ты хочешь записывать? |
| Я танчики делаю, хочу сделать статистику: сколько всего игр, сколько поражений, побед, выпущеных пуль и т.д.
|
|
|
|
| New Art Games дизайнер, сценарист
|
Пост N: 2319
Зарегистрирован: 19.09.05
Откуда: Россия
Награды:
|
|
Отправлено: 09.06.09 12:51. Заголовок: Zohan пишет: Я танч..
Zohan пишет: цитата: | Я танчики делаю, хочу сделать статистику: сколько всего игр, сколько поражений, побед, выпущеных пуль и т.д. |
| FatPir полностью ответил на твой вопрос. жмёшь на ссылку Скрытый текст в его сообщении и читаешь, там Всё что тебе нужно написано
|
|
|
|
| |
Пост N: 36
Зарегистрирован: 12.12.08
|
|
Отправлено: 09.06.09 12:55. Заголовок: FatPir полностью отв..
цитата: | FatPir полностью ответил на твой вопрос. жмёшь на ссылку Скрытый текст в его сообщении и читаешь, там Всё что тебе нужно написано |
| Я понял, я же сказал спасибо
|
|
|
|
| New Art Games дизайнер, сценарист
|
Пост N: 2320
Зарегистрирован: 19.09.05
Откуда: Россия
Награды:
|
|
Отправлено: 09.06.09 15:45. Заголовок: хы =) слово спасибо ..
хы =) слово спасибо принял за слова "zuko пишет: " которые должны идти перед словом "цитата" =)
|
|
|
|
| |
Пост N: 960
Зарегистрирован: 20.04.07
Откуда: Россия))), Питер
|
|
Отправлено: 09.06.09 16:06. Заголовок: Ev-genius он имеет ..
Ev-genius он имеет ввиду кнопку на сообщение "Спасибо" Zohan нз
|
|
|
|
| |
Пост N: 588
Зарегистрирован: 26.06.07
Откуда: Россия, Владивосток
Награды:
|
|
Отправлено: 09.06.09 16:56. Заголовок: Zohan пишет: Я танч..
Zohan пишет: цитата: | Я танчики делаю, хочу сделать статистику |
| дык эту статистику я же вручную смогу изменить... лучше просто сэйвами замути это.. ато придется еще с кодировкой потупить...
|
|
|
|
| |
Пост N: 71
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 09.06.09 18:18. Заголовок: А нельзя просто glob..
А нельзя просто global. переменными сделать? Командами типа: global.win +=1 "drav variable"
|
|
|
|
| |
Пост N: 40
Зарегистрирован: 12.12.08
|
|
Отправлено: 09.06.09 18:22. Заголовок: А математические дей..
D(e)N, нет, статистика должна храниться постоянно, а не в течение одной игры FatPir А математические действия там как выполнять? Например, подсчет убийств? (И как потом это вывести в переменную?)
|
|
|
|
| |
Пост N: 72
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 09.06.09 18:52. Заголовок: Zohan пишет: статис..
Zohan пишет: цитата: | статистика должна храниться постоянно |
| Статистика за всю игру или за один бой?
|
|
|
|
|
| |
Пост N: 41
Зарегистрирован: 12.12.08
|
|
Отправлено: 09.06.09 18:53. Заголовок: D(e)N пишет: Статис..
D(e)N пишет: цитата: | Статистика за всю игру или за один бой? |
| За всю игру, если бы за один бой была бы я бы переменные сделал
|
|
|
|
| |
Пост N: 73
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 09.06.09 19:16. Заголовок: Тогда можно после ка..
Тогда можно после каждого раунда выводить окно со статистикой и сохранять его скрин в папку с игрой. И будут не сухие цифры в .txt формате а красивое фото с результатами.
|
|
|
|
| |
Пост N: 42
Зарегистрирован: 12.12.08
|
|
Отправлено: 09.06.09 19:19. Заголовок: D(e)N пишет: Тогда ..
D(e)N пишет: цитата: | Тогда можно после каждого раунда выводить окно со статистикой и сохранять его скрин в папку с игрой. И будут не сухие цифры в .txt формате а красивое фото с результатам |
| А потом игрок будет сам подсчитывать сколько же у него все-таки убийств Нет, к сожалению, такой вариант не пройдет А вообще я вот так хочу сделать: в меню будет отдельная опция: "Статистика" Затем открывается новое окно, там она, собственно, и будет
|
|
|
|
| |
Пост N: 74
Зарегистрирован: 04.03.09
Откуда: Россия, Ростов-на-Дону
|
|
Отправлено: 09.06.09 19:41. Заголовок: Zohan пишет: А пото..
Zohan пишет: цитата: | А потом игрок будет сам подсчитывать сколько же у него все-таки убийств |
| Я имел в виду не статистика за раунд а global. переменная за всю игру. Zohan пишет: цитата: | А вообще я вот так хочу сделать: в меню будет отдельная опция: "Статистика" Затем открывается новое окно, там она, собственно, и будет |
| Продолжаю свою идею: при входе в комнату "Статистика" будет в качестве backgrounda подгружаться известный скрин. А если появятся вопросы зачем делать эту кнопку если результаты можно посмотреть после боя, то комнату с послебойными результатами можно выводить только на один шаг (step) для скрина. Никто ничего не увидит! Оффтоп: Хоть забанте буду стоять на своем!!!
|
|
|
|
| |
Пост N: 961
Зарегистрирован: 20.04.07
Откуда: Россия))), Питер
|
|
Отправлено: 09.06.09 21:57. Заголовок: мне кажется действит..
мне кажется действительно будет проще через встроенные сейвы просто создай те самые глобальные переменные количества побед, поражений и т.п. и то самое драв а потом просто во время страта игры загружа сохраненку.
|
|
|
|
| |
Пост N: 44
Зарегистрирован: 12.12.08
|
|
Отправлено: 10.06.09 08:19. Заголовок: Спасибо, понял. А во..
Спасибо, понял. А возможно ли глобальные переменные сохранять в отдельном файле по завершению игры?
|
|
|
|
| |
Пост N: 595
Зарегистрирован: 26.06.07
Откуда: Россия, Владивосток
Награды:
|
|
Отправлено: 10.06.09 11:21. Заголовок: Да все можно вопрос ..
Да все можно вопрос будет в другом насколько крякабельная игра окажется=)
|
|
|
|
Отправлено: 14.06.09 22:28. Заголовок: На случай, если всё ..
На случай, если всё же захочешь внешне. Создаёшь файлик "file.ini" с необходимыми переменными к примеру(то, что пишеться внутри): цитата: | [global] vsegoigr=0 pobedi=0 porajeniya=0 |
| Затем в игре создаёшь все эти переменные, спокойно работаешь с ними, а когда придёт время записать их, вызываешь файл: цитата: | ini_open("file.ini") ini_write_string("global","vsegoigr",string(переменная всех игр)) ini_write_string("global","pobedi",string(переменная побед)) ini_write_string("global","porajeniya",string(переменная поражений)) |
| Когда придёт время загрузить переменные из файла, делаешь так: цитата: | ini_open("file.ini") aaa = ini_read_string("global","vsegoigr",0) итд |
|
|
|
|
|
Отправлено: 15.06.09 09:28. Заголовок: ALIEN XIII пишет: i..
ALIEN XIII пишет: цитата: | ini_open("file.ini") aaa = ini_read_string("global","vsegoigr",0) |
|
Тут надо бы ещё их в real преобразовать - real().
|
|
|
|
| |
Пост N: 627
Зарегистрирован: 26.06.07
Откуда: Россия, Владивосток
Награды:
|
|
Отправлено: 15.06.09 18:56. Заголовок: ага патом я зайду в ..
ага патом я зайду в этот файлик исправлю побед 999 поражений 0 выпощено пуль 1 убито 10998
|
|
|
|
|
| New Art Games дизайнер, сценарист
|
Пост N: 2330
Зарегистрирован: 19.09.05
Откуда: Россия
Награды:
|
|
Отправлено: 15.06.09 21:25. Заголовок: zuko пишет: ага пат..
zuko пишет: цитата: | ага патом я зайду в этот файлик исправлю побед 999 поражений 0 выпощено пуль 1 убито 10998 |
| тогда для криптостойкости можно использовать несложную контрольную сумму перед тем как записать переменные, сложить их всех, добавить пару случайных (ихже тоже записать в файл) и тамже вывести сумму по некоторой формуле, чтото прибавить чото сложить (идея ясна) как вариант в ГМ есть div mod операции, их активно можно юзать для составления контрольной суммы а потом считывая данные высчитывать сумму и сверять. изменил себе жизни? попробуй потом вычисли формулу если хорошо составлена, чтобы сумму подправить, иначе без неё даные не верифицируются
|
|
|
|
Отправлено: 15.06.09 22:50. Заголовок: zuko пишет: ага пат..
zuko пишет: цитата: | ага патом я зайду в этот файлик исправлю побед 999 поражений 0 выпощено пуль 1 убито 10998 |
| Как бы эти переменные не настолько приоритетные, чтобы их стремились изменять =) Просто статистическая таблица, где записаны достижения, для себя. Хотя я бы тоже сохранениями скорее всего сделал бы)
|
|
|
|