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

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

Закрытая тема
 
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Цитата:
Вопрос по той же теме, как сделать так чтобы пароли неповторялись? =)

что ты имеешь в виду ?
Старый 22.06.2009, 07:56
KyTy3oFF
Смерть или слава!
offline
Опыт: 2,154
Активность:
Ну как бы когда вводишь сейв, тебе выдает пароль, с совершенно другими знаками, и каждый раз чтобы они были новые... ну примерно так, и так чтобы еще буквы менялись....
Старый 22.06.2009, 09:52
agentex

offline
Опыт: 34,534
Активность:
KyTy3oFF используй динамические словари..
Старый 22.06.2009, 10:06
KyTy3oFF
Смерть или слава!
offline
Опыт: 2,154
Активность:
Я нихрена непонял, чесное слово, а теперь пожалуйста обьясните тупому, что это такое...
И желательно как их использовать...
Старый 22.06.2009, 10:11
agentex

offline
Опыт: 34,534
Активность:
Старый 22.06.2009, 10:22
KyTy3oFF
Смерть или слава!
offline
Опыт: 2,154
Активность:
так, я забивал каждый сивол в свою ячейку, так что тот метод мне неясен, хотя если брать каждый раз от10 до 20, от 20 до 30, и сделать под рандом... Ну ченить посоветуйте)
Код:
function Keys takes nothing returns nothing
    set udg_SVkey[0]="-"
    set udg_SVkey[1]="a"
    set udg_SVkey[2]="b"
    set udg_SVkey[3]="c"
    set udg_SVkey[4]="d"
    set udg_SVkey[5]="e"
    set udg_SVkey[6]="f"
    set udg_SVkey[7]="j"
    set udg_SVkey[8]="k"
    set udg_SVkey[9]="l"
    set udg_SVkey[10]="m"
    set udg_SVkey[11]="n"
    set udg_SVkey[12]="o"
    set udg_SVkey[13]="p" 
    set udg_SVkey[14]="q"
    set udg_SVkey[15]="r"
    set udg_SVkey[16]="s"
    set udg_SVkey[17]="t"
    set udg_SVkey[18]="u"
    set udg_SVkey[19]="v"
    set udg_SVkey[20]="W"
    set udg_SVkey[21]="z"
    set udg_SVkey[22]="x"
    set udg_SVkey[23]="h"
    set udg_SVkey[24]="g"
    set udg_SVkey[25]="A"
    set udg_SVkey[26]="B"
    set udg_SVkey[27]="C"
    set udg_SVkey[28]="E"
    set udg_SVkey[29]="F"
    set udg_SVkey[30]="G"
    set udg_SVkey[31]="J"
    set udg_SVkey[32]="K"
    set udg_SVkey[33]="L"
    set udg_SVkey[34]="M"
    set udg_SVkey[35]="N"
    set udg_SVkey[36]="O"
    set udg_SVkey[37]="Q"
    set udg_SVkey[38]="R"
    set udg_SVkey[39]="S"
    set udg_SVkey[40]="T"
    set udg_SVkey[41]="W"
    set udg_SVkey[42]="V"
    set udg_SVkey[43]="Y"
    set udg_SVkey[44]="X"
    set udg_SVkey[45]="Z"
    set udg_SVkey[46]="H"
    set udg_SVkey[47]="1"
    set udg_SVkey[48]="2"
    set udg_SVkey[49]="3"
    set udg_SVkey[50]="4"
    set udg_SVkey[51]="5"
    set udg_SVkey[52]="6"
    set udg_SVkey[53]="7"
    set udg_SVkey[54]="8"
    set udg_SVkey[55]="9"
    set udg_SVkey[56]="0"
endfunction
Старый 22.06.2009, 10:29
agentex

offline
Опыт: 34,534
Активность:
KyTy3oFF какой смысл делать массив строк? если сама строка - это массив чаров, а типа чар в жассе нет.. бред короче. пиши все это одной строкой, символы доставай посредством SubString
Старый 22.06.2009, 10:34
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
возми 14-ичную систему счисления 56/4, и сгруппируй по 4 символа , ну вот так например
Цитата:
set udg_SVkey[0]="-"
set udg_SVkey[1]="a"
set udg_SVkey[2]="b"
set udg_SVkey[3]="c"

1
Цитата:
set udg_SVkey[4]="d"
set udg_SVkey[5]="e"
set udg_SVkey[6]="f"
set udg_SVkey[7]="j"

2 и тд
Старый 22.06.2009, 10:34
KyTy3oFF
Смерть или слава!
offline
Опыт: 2,154
Активность:
Хм, тогда мне как узнавать на что мне проверять, тогда надо все равно 1 символ, перед числами, который указывает на данные... или я что то непонял...
agentex
Я никогда небуду делать так как я непонимаю, зачем мне сейв тогда нужен в котором я не все понимаю...?
А тем более я уже сделал весь сейв, поэтому переделывать мне кк то неохота...
Старый 22.06.2009, 10:38
SRes
1110101000
offline
Опыт: 9,997
Активность:
Вот, у меня есть свой пример на эту тему, автор - вкуривай, это самое-самое начало создания сэйв лоада.
Прикрепленные файлы
Тип файла: w3x CodeDecodeSimple.w3x (13.4 Кбайт, 13 просмотров )
Старый 22.06.2009, 10:40
KyTy3oFF
Смерть или слава!
offline
Опыт: 2,154
Активность:
SRes
Я ничего непонял... Ладно, вернусь из института что-нибудь придумаю, но помоему, только один Эльдар понял, что я тут вообще спрашиваю...
Старый 22.06.2009, 10:45
SRes
1110101000
offline
Опыт: 9,997
Активность:
Это пример шифрования. Ты даже не понимаешь как он работает, каким образом ты можешь сделать сохранение чего либо не понимая ? Т.е., вначале логически пойми что делает сэйв лоад, а потом, я думаю, стоит уже придумывать "формулу" исходя из особенностей и фичей заюзаного (сделанного) сэйв лоада.
Старый 22.06.2009, 10:48
KyTy3oFF
Смерть или слава!
offline
Опыт: 2,154
Активность:
» раскрыть
Код:
function SaveExp takes integer SEXP, integer SCIS returns nothing
local string SPLNS = SubStringBJ(I2S(SEXP), SCIS, SCIS)
local string SK = null
if (SPLNS == "1") then
    set SK = udg_SVkey[1]
endif
if (SPLNS == "2") then
    set SK = udg_SVkey[2]
endif
if (SPLNS == "3") then
    set SK = udg_SVkey[3]
endif
if (SPLNS == "4") then
    set SK = udg_SVkey[4]
endif
if (SPLNS == "5") then
    set SK = udg_SVkey[5]
endif
if (SPLNS == "6") then
    set SK = udg_SVkey[6]
endif
if (SPLNS == "7") then
    set SK = udg_SVkey[7]
endif
if (SPLNS == "8") then
    set SK = udg_SVkey[8]
endif
if (SPLNS == "9") then
    set SK = udg_SVkey[9]
endif
if (SPLNS == "0") then
    set SK = udg_SVkey[11]
endif
set udg_SK = SK
set SK = null
endfunction

function Trig_save_Actions takes nothing returns nothing
local integer SPL=GetConvertedPlayerId(GetTriggerPlayer())
local player SP=GetTriggerPlayer()
local integer SEXP
local string array PLN
local integer SCI
local integer SI
local integer SCIS
local string SK = null
    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = 3
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
       if ( bj_forLoopAIndex == 1) then
            set SCI = 1
       else
            if ( bj_forLoopAIndex == 2) then
                 set SCI = 2
            else
                 if ( bj_forLoopAIndex == 3) then
                      set SCI = 3 
                 else                   
                 endif
            endif
       endif
       call ChekName(SCI, SP)
       set PLN[SCI]=udg_SK
       set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
       call SaveHero(SK)
       set PLN[4] = udg_SK
       set SEXP = GetHeroXP(udg_Hero[SPL])
       if (SEXP >= 1000000) and (SEXP <= 9999999) then
           set SI = 7
           set bj_forLoopAIndex = 1
           set bj_forLoopAIndexEnd = 7
           loop
               exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
               if ( bj_forLoopAIndex == 1) then
                    set SCI = 5      
                    set SCIS = 1
               else
                    if ( bj_forLoopAIndex == 2) then
                         set SCI = 6
                         set SCIS = 2
                    else
                         if ( bj_forLoopAIndex == 3) then
                              set SCI = 7 
                              set SCIS = 3
                         else 
                              if ( bj_forLoopAIndex == 4) then
                                   set SCI = 8 
                                   set SCIS = 4
                              else
                                   if ( bj_forLoopAIndex == 5) then
                                        set SCI = 9 
                                        set SCIS = 5
                                   else
                                        if ( bj_forLoopAIndex == 6) then
                                             set SCI = 10 
                                             set SCIS = 6
                                        else
                                             if ( bj_forLoopAIndex == 7) then
                                                  set SCI = 11 
                                                  set SCIS = 7
                                             else
                                             endif
                                        endif
                                   endif
                              endif 
                         endif                  
                    endif
               endif
               call SaveExp(SEXP,SCIS)
               set PLN[SCI]=udg_SK
               set bj_forLoopAIndex = bj_forLoopAIndex + 1
            endloop
       else
       endif
       if (SEXP >= 100000) and (SEXP <= 999999) then
           set SI = 6
           set bj_forLoopAIndex = 1
           set bj_forLoopAIndexEnd = 6
           loop
               exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
               if ( bj_forLoopAIndex == 1) then
                    set SCI = 6      
                    set SCIS = 1
               else
                    if ( bj_forLoopAIndex == 2) then
                         set SCI = 7
                         set SCIS = 2
                    else
                         if ( bj_forLoopAIndex == 3) then
                              set SCI = 8 
                              set SCIS = 3
                         else 
                              if ( bj_forLoopAIndex == 4) then
                                   set SCI = 9 
                                   set SCIS = 4
                              else
                                   if ( bj_forLoopAIndex == 5) then
                                        set SCI = 10 
                                        set SCIS = 5
                                   else
                                        if ( bj_forLoopAIndex == 6) then
                                             set SCI = 11 
                                             set SCIS = 6
                                        else
                                        endif
                                   endif
                              endif 
                         endif                  
                    endif
               endif
               call SaveExp(SEXP,SCIS)
               set PLN[SCI]=udg_SK
               set PLN[5]=udg_SVkey[10]
               set bj_forLoopAIndex = bj_forLoopAIndex + 1
            endloop
       else
       endif
       if (SEXP >= 10000) and (SEXP <= 99999) then
           set SI = 5
           set bj_forLoopAIndex = 1
           set bj_forLoopAIndexEnd = 5
           loop
               exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
               if ( bj_forLoopAIndex == 1) then
                    set SCI = 7      
                    set SCIS = 1
               else
                    if ( bj_forLoopAIndex == 2) then
                         set SCI = 8
                         set SCIS = 2
                    else
                         if ( bj_forLoopAIndex == 3) then
                              set SCI = 9 
                              set SCIS = 3
                         else 
                              if ( bj_forLoopAIndex == 4) then
                                   set SCI = 10 
                                   set SCIS = 4
                              else
                                   if ( bj_forLoopAIndex == 5) then
                                        set SCI = 11 
                                        set SCIS = 5
                                   else
                                   endif
                              endif 
                         endif                  
                    endif
               endif
               call SaveExp(SEXP,SCIS)
               set PLN[SCI]=udg_SK
               set PLN[5]=udg_SVkey[10]
               set PLN[6]=udg_SVkey[10]
               set bj_forLoopAIndex = bj_forLoopAIndex + 1
            endloop
       else
       endif
       if (SEXP >= 1000) and (SEXP <= 9999) then
           set SI = 4
           set bj_forLoopAIndex = 1
           set bj_forLoopAIndexEnd = 4
           loop
               exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
               if ( bj_forLoopAIndex == 1) then
                    set SCI = 8      
                    set SCIS = 1
               else
                    if ( bj_forLoopAIndex == 2) then
                         set SCI = 9
                         set SCIS = 2
                    else
                         if ( bj_forLoopAIndex == 3) then
                              set SCI = 10 
                              set SCIS = 3
                         else 
                              if ( bj_forLoopAIndex == 4) then
                                   set SCI = 11 
                                   set SCIS = 4
                              else
                              endif 
                         endif                  
                    endif
               endif
               call SaveExp(SEXP,SCIS)
               set PLN[SCI]=udg_SK
               set PLN[5]=udg_SVkey[10]
               set PLN[6]=udg_SVkey[10]
               set PLN[7]=udg_SVkey[10]
               set bj_forLoopAIndex = bj_forLoopAIndex + 1
            endloop
       else
       endif
       if (SEXP >= 100) and (SEXP <= 999) then
           set SI = 3
           set bj_forLoopAIndex = 1
           set bj_forLoopAIndexEnd = 3
           loop
               exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
               if ( bj_forLoopAIndex == 1) then
                    set SCI = 9      
                    set SCIS = 1
               else
                    if ( bj_forLoopAIndex == 2) then
                         set SCI = 10
                         set SCIS = 2
                    else
                         if ( bj_forLoopAIndex == 3) then
                              set SCI = 11 
                              set SCIS = 3
                         else 
                         endif                  
                    endif
               endif
               call SaveExp(SEXP,SCIS)
               set PLN[SCI]=udg_SK
               set PLN[5]=udg_SVkey[10]
               set PLN[6]=udg_SVkey[10]
               set PLN[7]=udg_SVkey[10]
               set PLN[8]=udg_SVkey[10]
               set bj_forLoopAIndex = bj_forLoopAIndex + 1
            endloop
       else
       endif
        if (SEXP >= 10) and (SEXP <= 99) then
            set SI = 2
            set bj_forLoopAIndex = 1
            set bj_forLoopAIndexEnd = 2
            loop
                exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
                     if ( bj_forLoopAIndex == 1) then
                          set SCI = 10
                          set SCIS = 1
                     else
                          if ( bj_forLoopAIndex == 2) then
                               set SCI = 11 
                               set SCIS = 2
                          else 
                          endif                  
                     endif
                call SaveExp(SEXP,SCIS)
                set PLN[SCI]=udg_SK
                set PLN[5]=udg_SVkey[10]
                set PLN[6]=udg_SVkey[10]
                set PLN[7]=udg_SVkey[10]
                set PLN[8]=udg_SVkey[10]
                set PLN[9]=udg_SVkey[10]
                set bj_forLoopAIndex = bj_forLoopAIndex + 1
            endloop
        else
        endif
        if (SEXP >= 0) and (SEXP <= 9) then
                set SI = 1
                set SCI = 11
                set SCIS = 1
                call SaveExp(SEXP,SCIS)
                set PLN[SCI]=udg_SK
                set PLN[5]=udg_SVkey[10]
                set PLN[6]=udg_SVkey[10]
                set PLN[7]=udg_SVkey[10]
                set PLN[8]=udg_SVkey[10]
                set PLN[9]=udg_SVkey[10]
                set PLN[10]=udg_SVkey[10]
                set bj_forLoopAIndex = bj_forLoopAIndex + 1
        else
        endif
call DisplayTimedTextToForce( GetPlayersAll(), 30, PLN[1]+PLN[2]+PLN[3]+PLN[4]+PLN[5]+PLN[6]+PLN[7]+PLN[8]+PLN[9]+PLN[10]+PLN[11] )
set udg_SK = null
set SI = 0
set SCI = 0
set SCIS = 0 
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = 12
loop
  exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
  set PLN[bj_forLoopAIndex] = null
  set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
set SEXP = 0 
set SP = null
set SPL = 0 
endfunction


Вот так я сохраняю, скажет зачем так громозко? Ну как я понимаю так я и сохраняю...

Отредактировано alexkill, 22.06.2009 в 11:16.
Старый 22.06.2009, 10:52
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Могу скинуть буржуйскую систему из своей карты
Она покороче и удобнее чем ваши ухищрения
Старый 22.06.2009, 11:00
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Цитата:
KyTy3oFF, если карта будет действительно хорошей, то её обязательно взломают и шифровка не поможет от, скажем, халявных вещей и дохлых босов. Если же карта будет плохой, то кому будут нуждны в неё герои, опыт и вещи?

ты знаешь что лист файл можно удалить, и фиг всем взломщикам в нос

ELDAR добавил:
ты меня малость не понимаешь, 1 из 4 символов сохроняй а потом находи его и асоциируй с числом

Отредактировано ELDAR, 22.06.2009 в 14:31.
Старый 22.06.2009, 12:42
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Вот... только в ней стоит разбираться и переделать под себя можно
У себя в карте я довольно сильно её изменил, а это оригинал.
Автор AceHart
Прикрепленные файлы
Тип файла: w3x SaveSystem.w3x (19.7 Кбайт, 12 просмотров )
Старый 22.06.2009, 13:41
KyTy3oFF
Смерть или слава!
offline
Опыт: 2,154
Активность:
Цитата:
ты меня малость не понимаешь, 1 из 4 символов сохроняй а потом находи его и асоциируй с числом


Так, я наверно туплю немного, ассоциировать с каким числом?
Старый 22.06.2009, 16:34
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
KyTy3oFF такс, можешь даже создать 4 поралленьных массива
Save:ну вот допустим ты переводил число 15 в 14-ичную систему счисления это 11, теперь делаем рандом от 1 до 4(это будет номер одного из четырех массивов) и в этом массиве ищешь 11-ый элемент.
Load:теперь у тя есть последовательность пробегаешься циклом по всем 4 массивам находишь свой символ и выдаешь число
Старый 22.06.2009, 16:45
agentex

offline
Опыт: 34,534
Активность:
прально, прально, мучайтесь. чем кривее и извращеннее сделаете сейв лоад тем труднее будет его взломать.
Старый 22.06.2009, 18:45
KyTy3oFF
Смерть или слава!
offline
Опыт: 2,154
Активность:
Хм... вроде во всем разобрался =) Спасибо всем! =)
Вообщем, тему можно закрывать, да и тем кому трудно все эти алгоритмы, сохраняй каждую цифру, а отом загружай=) Ну там вообщем мой сейв смотри... =) Ведь не все такие про, как агент там... =) или срес, вообщем, кому надо могу всю систему кинуть)) Без шифрощика... Причем я все обьясню, чо там да как....
Старый 24.06.2009, 01:19
Закрытая тема

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

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

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

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



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