XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > StarCraft (только чтение)> Галактическая академия
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
Guard

offline
Опыт: 2,425
Активность:
Save код
Привет всем ! У меня очередной вопрос. Как сделать save код как на warcraft III или лучше ?
Старый 06.09.2010, 19:08
reALien

offline
Опыт: 29,211
Активность:
В старе сейвкоды ни к чему, т.к. можно сохранять xml прямо на компьютеры из игры даже в мультиплеере.
Старый 06.09.2010, 19:27
H
hello world
offline
Опыт: 130,675
Активность:
Смотри действия из раздела "Банк"
Там можно сохранять данные в виде xml таблиц в "мои документы". В том числе и такие данные как уровень героя, деньги и т.п. .. Вопрос пока только один - как все это защищать? Вот тут уже придется писать алгоритмы перевода строк в числа, а числа из одной системы в другую..

Отредактировано Sg0D, 06.09.2010 в 19:35.
Старый 06.09.2010, 19:29
lentinant
Скучно
offline
Опыт: 42,216
Активность:
простейшая модель - все числовые данные героя (уровень, бонусы к характеристикам, деньги и т.д.) лепишь в одну строку, после чего переразбиваешь ее на трехзначные числа, каждое переводишь в эквивалентный символ ASCII таблицы, снова лепишь в одну строку (при желании, каждых четыре символа разделяешь тире), и получаешь код. Чтобы было сложнее, можно перед тем как лепить в одну строку данные, проводить над ними какие-то преобразования, причем лучше для каждого числа разное, и с участием случайного коэффициента (который лепить в строку после кодируемого числа). Порядок загрузки происходит с точностью наоборот
lentinant добавил:
ну, подозреваю, так приблизительно выглядели системы сохранения в варике
lentinant добавил:
если помучиться, могу сделать иллюстрацию-схему
lentinant добавил:
Ahelhot, reALien, а если человек будет играть с другого компа? xml-файл не всегда можно с собой носить, к примеру, в компьютерных клубах, а код спокойно переписывается с бумажки
Старый 06.09.2010, 19:37
zikworld

offline
Опыт: 3,878
Активность:
я видел чел делал рпг, дак там сколько всего можно было сохранить вплоть до настроек игры, а самое вкусное это то что ненадо было этот код вводить, он сам берется из хмл файла и вставляется, вводишь только логин и пароль, вот так то господа))
Старый 06.09.2010, 20:31
Guard

offline
Опыт: 2,425
Активность:
reALien:
В старе сейвкоды ни к чему, т.к. можно сохранять xml прямо на компьютеры из игры даже в мультиплеере.
Код гораздо эффективнее, поверь !
lentinant Спасибо. попробую сделать !
lentinant:
если помучиться, могу сделать иллюстрацию-схему
буду благодарен =)
Старый 06.09.2010, 21:00
ScorpioT1000
Работаем
offline
Опыт: отключен
генерите свой алфавит, вобщем чисто вбиваешь в поисковик "криптография" и зубришь, ничем не отличается от той-же сишной генерации допустим) т.е. это вопрос не к модмейкингу
Старый 06.09.2010, 23:05
lentinant
Скучно
offline
Опыт: 42,216
Активность:
попробую сварганить схемку-пример. кста, вспомнил простую систему кода: тупо идут все данные игры (разделенные тире), а после них контрольное число, вычисленное с самых данных по определенному алгоритму
Старый 07.09.2010, 00:08
Дон

offline
Опыт: 3,585
Активность:
Мда, товарищи а толк то какой сохранения допустим того же самого уровня, с невозможностью потом это число присвоить загруженному герою?.... Триггерно его задать нельзя, нет такой функции.
Старый 07.09.2010, 00:55
lentinant
Скучно
offline
Опыт: 42,216
Активность:
У меня схемки не очень хорошо выходят, так что если что непонятно, спрашивай. В символьную строку переводить не стал, поскольку выдавало какую-то ересь, так что лучше создай свою таблицу, где каждому числу от 00 до 99 будет присваиваться определенный символ. Ограничения данных и коэффициентов сделаны дабы результаты Alg1 и Alg2 (кстати, вместо иксов первый воспринимает уровень, а второй класс, это так, на всякий случай) были двухзначными числами, и чтоб сама строка могла делиться на двухзначные числа, и всегда имела одинаковую длину. С деньгами мучиться не стал, алгоритм в голову как-то не идет. Ну, в общем, так оно и делается; все данные кодируются алгоритмом, лепятся вместе и перерабатываются в символы, ну, и наоборот. Главное - рассчитывать так, чтобы всегда была одинаковая длина строки
lentinant добавил:
Дон, не понял вопрос
Старый 07.09.2010, 00:59
Дон

offline
Опыт: 3,585
Активность:
Ну как бы вопрос был про то, как к примеру загрузив число 10 из банка, поставить какому-либо юниту(можно также загруженному) уровень опыта это число тоесть - 10:))))
Старый 07.09.2010, 01:09
H
hello world
offline
Опыт: 130,675
Активность:
Дон
На например как вариант сделать свою систему опыта и уровней =0
Не пойму зачем юзать ту убогую фигню ^__^
редактор ведь дает такие возможности...
Старый 07.09.2010, 02:45
lentinant
Скучно
offline
Опыт: 42,216
Активность:
Ahelhot, не вижу большой разницы между записью шифрованных данных в xml-файл и выводом оных на экран.
lentinant добавил:
есть кстати вариант как дать уровень герою, правда, делается через "универсальный интерфейс", да и недля всех случаев подходит. Создать юнита с огромной дамагой, и на каждый вероятный уровень какого-то слабенького юнита, и каждому в опыт за убийство дать столько, чтоб хватило качнуться до определенного уровня. И, в зависимости от того, какой нам нужен уровень, возле героя создаем вражеского слабачка, нашего дамагера и даем указ убить первого. Опыт распространяется и на героя
Старый 07.09.2010, 04:24
ZeToX2007

offline
Опыт: 7,009
Активность:
Цитата:
Сообщение от Дон
Мда, товарищи а толк то какой сохранения допустим того же самого уровня, с невозможностью потом это число присвоить загруженному герою?.... Триггерно его задать нельзя, нет такой функции.


Есть вариант сделать юнитов, которые дают определённое кол-во опыта, и после загрузки карты,сделать тёмный экран на 1-2 сек и за это время герой должен чем нибудь убить их и получить опыт.
Старый 07.09.2010, 08:21
Guard

offline
Опыт: 2,425
Активность:
lentinant спасибо за схему
и во общем всем спасибо за ответы =)
Старый 07.09.2010, 14:33
agentex

offline
Опыт: 34,834
Активность:
набросал системку шифрования основанную на переходе в другую СС (алфавит СС задается строками). в идеале ее следует использовать после алгоритма lentinant'а )
» code
string [10] cs_dict;

string cs_GetChar(int d, int ind)
{
return StringSub(cs_dict[d], ind+1, ind+1);
}

int cs_GetIndex(int d, string chr)
{
return StringFind(cs_dict[d], chr, true)-1;
}

string cs_EncodeInt(int i, int d, int l)
{
string s = "";
int dl = StringLength(cs_dict[d]);
int result = i;
while(result>=dl)
{
s = cs_GetChar(d, ModI(result, dl))+s;
result = result/dl;
}
s = cs_GetChar(d, ModI(result, dl))+s;
result = StringLength(s);
if (result>l&&l!=0)
{
UIDisplayMessage(PlayerGroupAll(), c_messageAreaError, StringToText("Warning! Crypted code is longer than defined value!"));
}
else if (result<l)
{
while(StringLength(s)<l)
{
s = cs_GetChar(d, 0)+s;
}
};
return s;
}


int cs_DecodeInt(string s, int d)
{
int i = 1;
int result = 0;
int dl = StringLength(cs_dict[d]);
int sl = StringLength(s);
while(i<=sl)
{
result = result+cs_GetIndex(d, StringSub(s, i, i))*FixedToInt(Pow(dl, sl-i));
i = i+1;
}
return result;
}

void cs_Init()
{
cs_dict[0] = "01";
cs_dict[1] = "0123456789ABCDEF";
UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, StringToText(IntToString(cs_DecodeInt(cs_EncodeInt(548359, 1, 0), 1))));
}
Старый 16.09.2010, 03:39
H
hello world
offline
Опыт: 130,675
Активность:
Это можно и на GUI сделать =O
У тебя в системе только кодируется/декодируется число )
До save/load еще далеко.
Старый 16.09.2010, 13:00
agentex

offline
Опыт: 34,834
Активность:
я и не грил что это сейв лоад.. Очевидно что под каждую карту нужны свои алгоритмы, а кодирование в символы просто усложняет хакинг героя.
на гуи принципиально ниче не делаю, ибо уныл в любых проявлениях
кстати еще одно преиммущество - сжатие данных, это важно т.к. в мульте банки с кол-вом занчений>80 не работают.

Отредактировано agentex, 16.09.2010 в 14:33.
Старый 16.09.2010, 14:28
Guard

offline
Опыт: 2,425
Активность:
хм... agentex можешь по подробнее объяснить что эт плиз ?
Старый 16.09.2010, 14:30
agentex

offline
Опыт: 34,834
Активность:
Guard, позже сделаю пример как юзать. Ща не дома
Старый 16.09.2010, 14:35

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 23:05.