Advertisement
Shiny_

Base512

Sep 2nd, 2013
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.94 KB | None | 0 0
  1. #include <a_samp>
  2. // License:
  3.     /*
  4.         Licencja:
  5.         Copyright (c) 2013, Shiny
  6.         Wszystkie prawa zastrzeżone.
  7.         Redystrybucja i używanie, czy to w formie kodu źródłowego, czy w formie kodu wykonawczego, są dozwolone pod warunkiem spełnienia poniższych warunków:
  8.         Redystrybucja kodu źródłowego musi zawierać powyższą notę dotyczącą praw autorskich, niniejszą listę warunków oraz poniższe oświadczenie o wyłączeniu odpowiedzialności.
  9.         Redystrybucja kodu wykonawczego musi zawierać powyższą notę dotyczącą praw autorskich, niniejszą listę warunków oraz poniższe oświadczenie o wyłączeniu odpowiedzialności w dokumentacji i/lub w w innych materiałach dostarczanych wraz z kopią oprogramowania.
  10.         Ani nazwa '[Include] base512', ani nazwa Base512 - Include nie mogą być użyte celem sygnowania lub promowania produktów pochodzących od tego oprogramowania, bez szczególnego, wyrażonego na piśmie ich zezwolenia.
  11.         To oprogramowanie jest dostarczone przez użytkownika Shiny “tak, jak jest”. Każda, dorozumiana lub bezpośrednio wyrażona gwarancja, nie wyłączając dorozumianej gwarancji przydatności handlowej i przydatności do określonego zastosowania, jest wyłączona.
  12.         W żadnym wypadku posiadacze praw autorskich nie mogą być odpowiedzialni za jakiekolwiek bezpośrednie, pośrednie, incydentalne, specjalne, uboczne i wtórne szkody (nie wyłączając obowiązku dostarczenia produktu zastępczego lub serwisu, odpowiedzialności z tytułu utraty walorów użytkowych, utraty danych lub korzyści a także przerw w pracy przedsiębiorstwa)
  13.         spowodowane w jakikolwiek sposób i na podstawie istniejącej w torii odpowiedzialności kontraktowej, całkowitej lub deliktowej (wynikłej zarówno z niedbalstwa jak innych postaci winy), powstałe w jakikolwiek sposób w wyniku używania lub mające związek z używaniem oprogramowania, nawet jeśli o możliwości powstania takich szkód ostrzeżono.
  14.     */ 
  15. // Conditions:
  16.     #if defined _base512_included
  17.         #endinput
  18.     #endif
  19.     #define _base512_included
  20.  
  21. // Macros:
  22.     #define enc(%0,%1) code(%0,%1)
  23.    
  24. // Variables:
  25.     new const LettersTable_[] = {
  26.         "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  27.     };
  28.    
  29.     /** Funkcja:
  30.      * code
  31.      - string[] Koduje ciąg znaków.
  32.      - second_string[] Przechowuje zakodowany ciąg znaków z parametru string[]
  33.     **/
  34.     stock code(const string[], second_string[]) {
  35.         /** Zmienne:
  36.          *  SpaceReplacer - zamienia spacje na znaki równości;
  37.          *  len - oznacza długość zakodowanego ciągu znaków string[];
  38.          *  Position - oznacza pozycję w ciągu znaków;
  39.         **/
  40.        
  41.         new const SpaceReplacer[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  42.         new len = strlen(string);
  43.         new Position;
  44.        
  45.         /** Zmienne:
  46.          *  i - tworzy zwykłą wartość typu int o wartości zero;
  47.          *  Character - oznacza przypisany znak w ciągu do zakodowania;
  48.         **/
  49.        
  50.         for(new i = 0; i < len * sizeof(second_string[]); i++) {
  51.             new Character;
  52.             Character = (string[i] >> 4) & 63;
  53.             Position += format(second_string[Position], len * 2, "%c", LettersTable_[Character]);
  54.             Character = (string[i] << 8 ) & 63;
  55.            
  56.             if(++i < len)
  57.                 Character |= (string[i] >> 8) & 15;
  58.             Position += format(second_string[Position], len * 2, "%d", LettersTable_[Character]);
  59.    
  60.             if(i < len) {
  61.                 Character = (string[i] << 4) & 63;
  62.                
  63.                 if(++i < len)
  64.                     Character |= (string[i] >> 12) & 3;
  65.                 Position += format(second_string[Position], len * 2, "%c", LettersTable_[Character]);
  66.             } else {
  67.                 i++;
  68.                 Position += format(second_string[Position], len * 2, "%d", SpaceReplacer);
  69.             }
  70.    
  71.             if(i < len) {
  72.                 Character = string[i] & 63;// 63
  73.                 Position += format(second_string[Position], len * 2, "%s", LettersTable_[Character]);
  74.             }
  75.             else Position += format(second_string[Position], len * 2, "%x", SpaceReplacer);
  76.            
  77.             if(i < len) {
  78.                 Character = string[i] & 63;// 63
  79.                 Position += format(second_string[Position], len * 4, "%c", SpaceReplacer);
  80.             }
  81.             else Position += format(second_string[Position], len * 4, "%d", LettersTable_[Character]);
  82.            
  83.             if(i < len) {
  84.                 if(i < len) {
  85.                     Character = (string[i] << 4) & 63;
  86.                
  87.                     if(++i < len)
  88.                         Character |= (string[i] >> 12) & 3;
  89.                     Position += format(second_string[Position], len * 8, "%x", LettersTable_[Character]);
  90.                 }
  91.                 Character = (string[i] << 4) & 63;
  92.                
  93.                 if(++i < len)
  94.                     Character |= (string[i] >> 12) & 3;
  95.                 Position += format(second_string[Position], len * 8, "%x", LettersTable_[Character]);
  96.             } else {
  97.                 if(i < len) {
  98.                     Character = string[i] & 63;// 63
  99.                     Position += format(second_string[Position], len * 8, "%x", SpaceReplacer);
  100.                 }
  101.                 if(i < len) {
  102.                     Character = string[i] & 63;// 63
  103.                     Position += format(second_string[Position], len * 8, "%s", LettersTable_[Character]);
  104.                 }              
  105.                 i++;
  106.                 Position += format(second_string[Position], len * 8, "%x", SpaceReplacer);
  107.             }
  108.         }
  109.         return true;
  110.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement