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

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

 
anaksimandr

offline
Опыт: 1,291
Активность:
Свойства единицы «Опыт», «Уровень» и «Награда» теперь можно изменять с помощью триггеров.
Из сегодняшнего обновления.
И еще почти в тему=)
Опыт, предметы и выученные способности теперь можно сохранять в банк данных и загружать из него.
Старый 22.09.2010, 14:19
agentex

offline
Опыт: 34,534
Активность:
Опыт, предметы и выученные способности теперь можно сохранять в банк данных и загружать из
него.
неправда, в разделе Bank natives.galaxy ничего не изменилось.
или ты о последствиях того что добавили экспу и левел?
Старый 23.09.2010, 01:07
anaksimandr

offline
Опыт: 1,291
Активность:
Это цитаты из официальной сводки по обновлению, все притензии к близзард. Я думаю, что кто-то просто не нашел етк.
Я тоже не нашел =) но просто так они б писать не стали..наверное.
Старый 23.09.2010, 01:21
agentex

offline
Опыт: 34,534
Активность:
anaksimandr, я бы тоже не стал бы утверждать чего то, если этого действительно нет)
короче понятно, они имели ввиду сохранение этих параметров у юнита при записи его в банк.

Отредактировано agentex, 23.09.2010 в 03:19.
Старый 23.09.2010, 03:10
Guard

offline
Опыт: 2,425
Активность:
Походу придётся всё же банк использовать ...
Старый 24.09.2010, 16:44
agentex

offline
Опыт: 34,534
Активность:
Guard, код как в варкрафте - убого, юзерам нах не надо каждый раз вводить его руками. оптимальный вариант - код хранить в банке, и юзеру нет мороки и ты не будешь париться по поводу защиты.
agentex добавил:
отредактировал систему, раньше числа больше 16^5 не декордировались изза кривой встроенной функции Pow. теперь спокойно можно кодировать десятизначные числа
» crypt system
string [10] cs_dict;
int cs_PowInt(int n, int power)
{
int i = 1;
int result = n;
if (power>0)
{
while(i<power)
{
result = result*n;
i = i + 1;
}
}
else if (power==0)
{
result = 1;
}
return result;
}
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))*cs_PowInt(dl, sl-i);
i = i+1;
}
return result;
}
void cs_Init()
{
int test_int = 1100345341;
string test_str;
cs_dict[0] = "01";
cs_dict[1] = "0123456789ABCDEF";
UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, StringToText(IntToString(test_int)));
test_str = cs_EncodeInt(test_int, 1, 0);
UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, StringToText(test_str));
UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, StringToText(IntToString(cs_DecodeInt(test_str, 1))));
}
теперь зачем это вобще надо и как использовать. к примеру есть герой hero класса воин с 200к опыта.
индекс класса воин, к примеру 1.
чтобы не кодировать 1 (это слишком банально) можно к примеру прибавить к ней рандомное число.
string output = "";
int rn = RandomInt(1, 1000);
string rn_s = cs_EncodeInt(rn, 0, 3);//кодируем рандомное число по словарю 0 тремя символами
int exp = UnitGetPropertyInt(hero, c_unitPropXP, true);
string exp_s = cs_EncodeInt(exp, 0, 4);//4 символа для экспы обычно хватает.
int cls = 1+rn;
string cls_s = cs_EncodeInt(cls, 0, 3);

output = StringSub(exp_s, 3, 3)+StringSub(rn_s, 1, 1)+StringSub(exp_s, 2, 2)+StringSub(cls_s, 2, 2)+StringSub(exp_s, 4, 4)+StringSub(rn_s, 3, 3)+StringSub(cls_s, 1, 1)+StringSub(exp_s, 1, 1)+StringSub(rn_s, 2, 2)+StringSub(cls_s, 3, 3);

Отредактировано agentex, 24.09.2010 в 17:41.
Старый 24.09.2010, 17:14
Guard

offline
Опыт: 2,425
Активность:
agentex спасибо огромное. очень благодарен! последний вопрос.
Старый 24.09.2010, 17:50
Тонг

offline
Опыт: 13,665
Активность:
Чтоб не плодить сущностный напишу тут.
можно ли хранить количество стартовых очков юзера где нить на серваках? Может есть в Б-нете соответствующая функция.
Старый 24.09.2010, 19:30
Guard

offline
Опыт: 2,425
Активность:
Тонг недумаю
Старый 24.09.2010, 19:38
Тонг

offline
Опыт: 13,665
Активность:
Ну хранятся же все наши достижение которые близ заложил.
Старый 24.09.2010, 19:58
agentex

offline
Опыт: 34,534
Активность:
это ничего не значит
Старый 24.09.2010, 21:38
Тонг

offline
Опыт: 13,665
Активность:
То есть неизвестно есть ли такое и общественное мнение говорит что вряд ли?
как вывод сохраняем на комп игрока шифрованный хмл который можно таскать с собой?
Старый 24.09.2010, 22:01
agentex

offline
Опыт: 34,534
Активность:
как вывод сохраняем на комп игрока шифрованный хмл который можно таскать с собой?
других вариантов пока нет
Старый 24.09.2010, 22:28
megasniper

offline
Опыт: 3,656
Активность:
а можно в ge переводить в мд5?)
Старый 24.09.2010, 23:14
ScorpioT1000
Работаем
offline
Опыт: отключен
да можно, алгоритм открытый, язык позволяет, напиши систему
Старый 28.09.2010, 15:55
agentex

offline
Опыт: 34,534
Активность:
один вопрос - зачем? без скрипта карты не то что мд5, обычный код по словарю почти невозомжожно расшифровать (если пряморуко сделан)
а если у тя в руках mapscript.galaxy тут никакие алгоритмы не помогут..
Старый 28.09.2010, 16:06
ScorpioT1000
Работаем
offline
Опыт: отключен
мд5, как и любой хеш-ключ, невозможно расшифровать *лицоладонь*
Старый 28.09.2010, 16:09
agentex

offline
Опыт: 34,534
Активность:
а тут говорится обратное
Старый 28.09.2010, 16:12
Guard

offline
Опыт: 2,425
Активность:
ScorpioT1000:
да можно, алгоритм открытый, язык позволяет, напиши систему
Так просто её не напишешь имхо.
Старый 28.09.2010, 18:32

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

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

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

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



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