PDA

Просмотр полной версии : Скрипт EngToRus


Fer123
09.12.2008, 23:15
Я только недавно начал писать скрипты для phx и вот 1 из моих скриптов на ваш суд :)
Скрипт для перевода слов на русский, по ошибке написаных на английском.
Например слово "Ghbdtn" скрипт переведет так "Привет".
Для настройки введите имя вашего персанажа в константу Name='имя'
Скрипт:
Program EngToRus;
const
Name='fer123';
var
temp:string;
i:integer;
function ConvertNeeded(tmpstr : string) : boolean;
var i,countru,counteng:integer;
begin
countru:=0;
counteng:=0;
for i:=1 to length(tmpstr) do
begin
if tmpstr[i] in ['а'..'я','А'..'Я'] then inc(countru);
if tmpstr[i] in ['a'..'z','A'..'Z'] then inc(counteng);
end;
result:=true;
if (countru>0) and (counteng>=0) then result:=false;
end;
function ConvertStr(tmpstr : string) : string;
var i:integer;
function ConvertChar(tmpchar : char) : char;
const
alphabet=[' ','[',']','{','}','<','>',',','.',':','"','/','?','q','w','e','r','t','y','u','i','o','p','a', 's','d','f','g','h','j','k','l','z','x','c','v','b ','n','m','`','~'];
rualphabet=[' ','х','ъ','Х','Ъ','Б','Ю','б','ю','Ж','Э','.',',', 'й','ц','у','к','е','н','г','ш','щ','з','ф','ы','в ','а','п','р','о','л','д','я','ч','с','м','и','т', 'ь','ё','Ё'];
var i:integer;
begin
if tmpchar=chr(39) then begin
result:='э';
exit;
end;
if tmpchar=';' then begin
result:='ж';
exit;
end;
if tmpchar='^' then begin
result:=':';
exit;
end;
if tmpchar='@' then begin
result:='"';
exit;
end;
if tmpchar in ['0'..'9'] then begin
result:=tmpchar;
exit;
end;
if tmpchar='$' then begin
result:=';';
exit;
end;
if tmpchar='&' then begin
result:='?';
exit;
end;
if tmpchar='|' then begin
result:='/';
exit;
end;
for i:=0 to (length(alphabet)-1) do
begin
if tmpchar=alphabet[i] then
begin
result:=rualphabet[i];
exit;
end;
if ord(tmpchar)=(ord(alphabet[i])-32) then
begin
result:=chr(ord(rualphabet[i])-32);
exit;
end;
end;
result:=tmpchar;
end;
begin
for i:=1 to length(tmpstr) do tmpstr[i]:=ConvertChar(tmpstr[i]);
result:=tmpstr;
end;
begin
if FromClient and (pck[1]=#$38) and (ConnectName=Name) then
begin
temp:=ReadS(2);
if ConvertNeeded(temp) then
begin
temp:=ConvertStr(temp);
if ReadD(length(temp)*2+4)=2 then
begin
buf:=#$38;
writes(temp);
writed(2);
writes(ReadS(length(temp)*2+8));
SendToServerEx(Name);
pck:='';
exit;
end;
buf:=#$38;
writes(temp);
buf:=buf+pck[length(pck)-3]+pck[length(pck)-2]+pck[length(pck)-1]+pck[length(pck)];
SendToServerEx(Name);
pck:='';
end;
end;
end.

Essential
10.12.2008, 00:09
CУпер. И главное работает. А слова вообще все будет переводить? даже маты? А то ведь и вправду так стремно было переключаться всегда...

xkor
10.12.2008, 03:10
Essential, переводить будет всё, но только если всё сообщение на английской раскладке набрано, если хоть один символ русский то переводить не будет...

ЗЫ по крайней мере на сколько я могу понять этот абсолютно не структурированный код...

Fer123
10.12.2008, 19:42
Essential, переводить будет всё, но только если всё сообщение на английской раскладке набрано, если хоть один символ русский то переводить не будет...

Да. Я сделал это для того чтобы не обрабатывало строки в которых есть и русский и английский текст, воизбежании того что пользователь мог написать чтото на английском и русском правильно в одной строке. А проверить правильно ли написано то или иное слово невозможно.
xkor
Что значит "структурированный код" объясни плз.

xkor
10.12.2008, 22:24
Что значит "структурированный код" объясни плз.это значит что вместо такого:
function ConvertNeeded(tmpstr : string) : boolean;
var i,countru,counteng:integer;
begin
countru:=0;
counteng:=0;
for i:=1 to length(tmpstr) do
begin
if tmpstr[i] in ['а'..'я','А'..'Я'] then inc(countru);
if tmpstr[i] in ['a'..'z','A'..'Z'] then inc(counteng);
end;
result:=true;
if (countru>0) and (counteng>=0) then result:=false;
end;
пишут так:
function ConvertNeeded(tmpstr: string): boolean;
var
i, countru, counteng: integer;
begin
countru:=0;
counteng:=0;
for i:=1 to length(tmpstr) do begin
if tmpstr[i] in ['а'..'я','А'..'Я'] then inc(countru);
if tmpstr[i] in ['a'..'z','A'..'Z'] then inc(counteng);
end;
result:=true;
if (countru>0) and (counteng>=0) then result:=false;
end;

wanick
10.12.2008, 22:35
"структурированный код" - читается легче и понимается

Мегамозг
11.12.2008, 02:34
"структурированный код" - читается легче и понимается

Вы оба путаете структурированный и форматированный тексты :D :D
Это две большие разницы.

Shizo
11.12.2008, 03:01
Класс чувак спсибо!!!

wanick
11.12.2008, 03:06
Мегамозг, ты знаток, поделись тогда своими знаниями... объясни дилетантам :) что значит

структурированный и форматированный код, а не текст

Xelat
11.12.2008, 06:43
Мегамозг, ты знаток, поделись тогда своими знаниями... объясни дилетантам :) что значит

структурированный и форматированный код, а не текст

Я так понимаю, структурированный код - это код, разбитый на логические части - процедуры и функции, а не сплошным потоком с кучей goto. :)
А форматированный - это как раз набранный по определённому формату (отступы, пробелы и т.д.).

Grinch
11.12.2008, 09:07
:D дык мои скрипты свет не увидит по этой причине :)

wanick
11.12.2008, 20:18
кстати меня вот какраз волнует вопрос почему нет такого редактора чтобы форматирование скриптов делал сам
вот например у Macromedia Flash эта функция встроена
там по идее не форматировано написать сложно
и даже если ты напишешь то всегда можно изменить формат вывода кода
простыми манипуляциями конфига, для других языков я таких опций не встречал что вгоняет в тоску :)

Xelat
11.12.2008, 22:11
wanick,
помимо actionscript'а есть ещё форматтер для php в Zend Studio.

wanick
12.12.2008, 00:18
Zend, насколько я знаю платный, кряков не разу не находил, да и если бы был что каждый раз включать его чтобы форматировать код, ну а как же быть с другими языками взять например Delphi, ну в принципе это риторический вопрос не по теме, продолжать дискуссию на эту тему не имеет смысла в этом разделе :)