|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
В случае, когда логика программы выполняется на сервере, а клиентская часть просто является тупой вьюхой, вопрос о защите вообще не стоит. Любая программа, которая полностью работает на клиенте ломается декомпиляцией и правкой "пары строчек" и триалки адоба (как и кого бы то ни было другого) здесь не исключение. Но что-то я не вижу массового спроса на декомпиляторы и изучение, хотя бы основ, программирования.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
О функции getTimer()
Цитата:
Влад |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Вообще всё ломают, что не онлайн. Причем ломатели врядли купили бы, даже если бы не смогли сломать. Вариант с shared object (только не дату храните, а сколько проработала программа ваша) - дёшево и сердито.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Lorem ipsum
|
Использования SharedObject достаточно с головой.
Причины: 1. Для "защиты от дурака" — с головой. 2. Гарантированной защиты не существует.
__________________
Поймай яблоко 2! |
|
|||||
[+1 16.03.13]
[+1 22.03.13] Регистрация: Dec 2012
Сообщений: 100
|
А какой смысл через печенье? Я придерживаюсь мнения (как говорили ранее), что самый надёжный способ, и достаточно очевидный, как и банальный - это через таймерэвэнт.
Конечно есть программы которые могут вносить изменения в блоки памяти, которые юзает какое-либо приложение. Сам лично пользуюсь ими для отлавливания дыр в своих творчествах. Но смысл незамысловатой мысли, которую я пытаюсь выразить, сводится к следующему: используйте таймерэвэнт и будет вам счастье. |
|
|||||
[+4 06.05.14]
|
Я вижу очень красивое и аккуратное решение для вас.
1. Нам нужно 2 строчки на сервере 2. Если пользователь НЕ покупает игру то ему выдается swf в котором в коде есть строка скажем str = "demo". Не важно, что вы напишите вместо demo. При запуске игры выдается вопрос - хотите купить игру? Для этого нужно подключение к интеренту... и т.п.. ля лял ля. 3. После покупки клиенту высылается - релиз. где вместо demo написано release. 4. Суть такая : если написано release - все круто пусть играет до скончания века. Если же написано демо а) после 30 минут времени приложение делает запрос на сервер с ключем demo - если сервер принимает игра продолжается - если отклоняет или нет интернета - игра заканчивается, причем лучшее для этого решения - вообще закрыть окно игры типа крестиком ))) б) Для качественной работы таких игр желательно иметь полный открытый код, но нескорлько соурсов загружаемого контента , типа уровней например. Если игра полная - получишь полную сразу, если не полная заплати и загрузи дополнение. Собственно так и работают все реальные игры, основное приложение весит 100 кб и там только код, причем весь, а вот ассеты грузим по мере надобности
__________________
Марк Tween |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Смысл печенья в том, что оно сохраняется между запусками.
Если же будет высылаться релиз, то даже ломать не надо)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Друзья !
Всем большое спасибо. SharedObject кое на что открыл глаза... В частности, на сохранение данных на диск. Был бы признателен, если бы кто сказал, что такое "печенье" - за жаргоном не поспеваю... Код даю... my_text() - моя любимая ф-я для вывода текста на экран... var b:int; var main_t = new Timer(1000); var so:SharedObject = SharedObject.getLocal("dane_gry","/"); var ppp = new TextField(); my_text(0, 0, 100, 80, 36, "Arial", true, false, "0xссссff", "center", 0, 0, "dynamic","0x0000ff", "0xcccccc", "", so.data.my_t.toString(), 1, ppp); main_t.addEventListener(TimerEvent.TIMER, main_t_f); main_t.start(); function main_t_f(event:TimerEvent):void { if (b == 0 ) { b = so.data.my_t + 1; } b+=1; // для конкретности, 1000 секунд... if (b>=1000) { var time_return = new TextField(); my_text(100, 100, 350, 200, 36, "Arial", true, false, "0xссссff", "center", 0, 0, "dynamic","0x0000ff", "0xcccccc", "", "Увы, срок испытательного периода игры истек", 1, time_return); } so.data.my_t = b; } // func... Последний раз редактировалось wlad; 23.02.2013 в 05:15. Причина: надежность |
|
|||||
Регистрация: Dec 2009
Сообщений: 125
|
cookies
|
Часовой пояс GMT +4, время: 16:30. |
|
« Предыдущая тема | Следующая тема » |
|
|