Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 2 из 2
  • «
  • 1
  • 2
[ЗАДАЧА] Замена заглавных букв на прописные и наоборот
хвостег Дата: Четверг, 08.05.2014, 08:28:16 | Сообщение # 16
Сообщений: 161
Репутация: 53 [ +/- ]
Решено.
Код

public OnPluginStart()
{
  RegConsoleCmd("recase", ReCase);
}

public Action:ReCase(client, args)
{
  new String:test[128];
   
  GetCmdArgString(test, sizeof(test));
   
  PrintToChat(client, "%s", ReCaseString(test));
}

stock String:ReCaseString(String:string[])  
{  
  new I = 0;
   
  while(I < strlen(string))
  {
   new Coeff = 32;
   new Coeff2 = 1;
    
   new Byte = string[I];
    
   if(Byte >= 128)
   {
    if(Byte >= 240)
    {
     if(strlen(string[I]) < 4) break; I += 4;
    }
    else if(Byte >= 224)
    {
     if(strlen(string[I]) < 3) break; I += 3;
    }
    else if(Byte >= 192)
    {
     if(strlen(string[I]) < 2) break;
      
     Byte = (Byte % 32) * 64 ; Byte += (string[I+1] % 64) ;
      
     if( (1040 <= Byte <= 1103 ) || (Byte == 1025) || (Byte == 1105) )
     {
      if((Byte == 1025) || (Byte == 1105)) { Coeff = 80; }
       
      if( (1072 <= Byte <= 1103) || (Byte == 1105) ) { Coeff2 = -1; }
       
      Byte = Byte+Coeff*Coeff2;
       
      string[I]   = 192 + RoundToFloor(float(Byte / 64));
      string[I+1] = 128 + (Byte % 64);
     }
      
     I += 2;
    }
    else
    {
     break;
    }
   }
   else
   {
    if( ( 65 <= Byte <= 90) || (97 <= Byte <= 122) )
    {
     if(97 <= Byte <= 122) { Coeff2 = -1; }
      
     string[I] = Byte+Coeff*Coeff2;
    }
     
    I += 1;
   }
  }
   
  return string;
}
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: