Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Такое возможно? (https://javascript.ru/forum/misc/2901-takoe-vozmozhno.html)

KOPCAP 24.02.2009 14:17

Такое возможно?
 
Здравствуйте, у меня такая трудности с заменой я не могу придумать скрипт который заменял бы
Код:

{
"classname" "worldspawn"
"classname" "worldspawn"
"MaxRange" "4096"
"mapversion" "220"
"mapversion" "220"
"wad" "halflife.wad"
{
( 0 128 128 ) ( 128 128 128 ) ( 128 0 128 ) SKY [ 1 0 0 -64 ] [ 0 -1 0 64 ] 0 1 1
( 0 0 0 ) ( 128 0 0 ) ( 128 128 0 ) SKY [ 1 0 0 -64 ] [ 0 -1 0 64 ] 0 1 1
( 0 128 128 ) ( 0 0 128 ) ( 0 0 0 ) C1A3WALL01 [ 0 1 0 -64 ] [ 0 0 -1 0 ] 0 1 1
( 128 128 0 ) ( 128 0 0 ) ( 128 0 128 ) C1A3WALL01 [ 0 1 0 -64 ] [ 0 0 -1 0 ] 0 1 1
( 128 128 128 ) ( 0 128 128 ) ( 0 128 0 ) C1A3WALL01 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1
( 128 0 0 ) ( 0 0 0 ) ( 0 0 128 ) C1A3WALL01 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1
}
}

на
Код:

k = "{\n( "+x+0+" "+y+128" 128 ) ( "+x+128+" "+y+128+" 128 ) ( "+x+128+" "+y+0+" 128 ) SKY [ 1 0 0 -64 ] [ 0 -1 0 64 ] 0 1 1 \n( "+x+0+" "+y+0+" 0 ) ( "+x+128+" "+y+0+" 0 ) ( "+x+128+" "+y+128+" 0 ) SKY [ 1 0 0 -64 ] [ 0 -1 0 64 ] 0 1 1 \n( "+x+0+" "+y+128+" 128 ) ( "+x+0+" "+y+0+" 128 ) ( "+x+0+" "+y+0+" 0 ) C1A3WALL01 [ 0 1 0 -64 ] [ 0 0 -1 0 ] 0 1 1 \n( "+x+128+" "+y+128+" 0 ) ( "+x+128+" " +y+0+ " 0 ) ( "+x+128+" "+y+0+" 128 ) C1A3WALL01 [ 0 1 0 -64 ] [ 0 0 -1 0 ] 0 1 1 \n( "+x+128+" "+y+128+" 128 ) ( "+x+0+" "+y+128+" 128 ) ( "+x+0+" "+y+128+" 0 ) C1A3WALL01 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1 \n( "+x+128+" "+y+0+" 0 ) ( "+x+0+" "+y+0+" 0 ) ( "+x+0+" "+y+0+" 128 ) C1A3WALL01 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1 \n}";
т.е. в исходном коде выбирал только объект и заменял Х У координаты.

Gvozd 24.02.2009 16:08

мне достаточно неочевидно, как из первого получается второй у вас.
в любом случае полагаю вашу задачу можно отлично решить при помощи регулярных ьвыражений

Андрей Параничев 24.02.2009 16:42

KOPCAP,
Редактор карт Gold Source на JavaScript пишете?

KOPCAP 24.02.2009 19:18

Цитата:

Сообщение от Андрей Параничев (Сообщение 13133)
KOPCAP,
Редактор карт Gold Source на JavaScript пишете?

не для source для обычного))) только я уже написал а теперь хочу упростить добавление объектов созданием еще одной програмки:)
P.S.
Gvozd спасибо за ссылку буду разбираться.

Андрей Параничев 24.02.2009 19:22

KOPCAP,
Обычный и называется "Gold Source", но зачем писать редактор на JavaScript, это что-то новенькое.

А что вам именно нужно сделать, я так и не понял.

KOPCAP 24.02.2009 19:35

Цитата:

Сообщение от Андрей Параничев (Сообщение 13146)
KOPCAP,
Обычный и называется "Gold Source", но зачем писать редактор на JavaScript, это что-то новенькое.

А что вам именно нужно сделать, я так и не понял.

Программу пишу для создания уровней под игру на телефоне))) просто так будет легче. а именно мне нужно чтобы программа обрабатывала текст таким образом:
1. удаляла начальные строки, не нужные далее:
Код:

{
"classname" "worldspawn"
"classname" "worldspawn"
"MaxRange" "4096"
"mapversion" "220"
"mapversion" "220"
"wad" "halflife.wad"
{

2. Заменяла
Код:

( 128 128 128 )
на
Код:

( "+(x*1+128*1)+" "+(y*1+128*1)+" 128 )
//Как оказалось надо скобки

т.е. первые два числа.
при чем остаток
Код:

SKY [ 1 0 0 16 ] [ 0 -1 0 -16 ] 0 1 1
не трогала.

KOPCAP 24.02.2009 20:44

Gvozd спасибо почитал статью и вот что получилось:
var fso, tf;
	fso = new ActiveXObject("Scripting.FileSystemObject");
	file=fso.openTextFile("index.map", 1, true);
	file.readLine();
	file.readLine();
	file.readLine();
	file.readLine();
	file.readLine();
	file.readLine();
	file.readLine();
	function drowbrush(){
		var newbrush = "";
		var repls = "";
		newbrush=newbrush+file.readLine()+"\n";
		repls = file.ReadLine();
		repls = repls.replace(/\s/, "kp\"+(x*1+");
		repls = repls.replace(/\s/, "*1)+\"kp\"+(y*1+");
		repls = repls.replace(/\s/, "*1)+\"kp");
		repls = repls.replace(/\s/, "kp");
		repls = repls.replace(/\s/, "kp");
		repls = repls.replace(/\s/, "kp\"+(x*1+");
		repls = repls.replace(/\s/, "*1)+\"kp\"+(y*1+");
		repls = repls.replace(/\s/, "*1)+\"kp");
		repls = repls.replace(/\s/, "kp");
		repls = repls.replace(/\s/, "kp");
		repls = repls.replace(/\s/, "kp\"+(x*1+");
		repls = repls.replace(/\s/, "*1)+\"kp\"+(y*1+");
		repls = repls.replace(/\s/, "*1)+\"kp");
		repls = repls.replace(/\s/, "kp");
		repls = repls.replace(/\s/, "kp");
		repls = repls.replace(/kp/g, " ");
		alert(repls);
	}
	drowbrush();
в файле index.map хранится
{
"classname" "worldspawn"
"classname" "worldspawn"
"MaxRange" "4096"
"mapversion" "220"
"mapversion" "220"
"wad" "\program files\valve\valve\halflife.wad;\program files\valve\valve\decals.wad"
{
( 0 128 128 ) ( 128 128 128 ) ( 128 0 128 ) SKY [ 1 0 0 -64 ] [ 0 -1 0 64 ] 0 1 1 
( 0 0 0 ) ( 128 0 0 ) ( 128 128 0 ) SKY [ 1 0 0 -64 ] [ 0 -1 0 64 ] 0 1 1 
( 0 128 128 ) ( 0 0 128 ) ( 0 0 0 ) C1A3WALL01 [ 0 1 0 -64 ] [ 0 0 -1 0 ] 0 1 1 
( 128 128 0 ) ( 128 0 0 ) ( 128 0 128 ) C1A3WALL01 [ 0 1 0 -64 ] [ 0 0 -1 0 ] 0 1 1 
( 128 128 128 ) ( 0 128 128 ) ( 0 128 0 ) C1A3WALL01 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1 
( 128 0 0 ) ( 0 0 0 ) ( 0 0 128 ) C1A3WALL01 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1 
}
}
вот начало но по крайней мере получаю то что нужно чуть доработаю и все Спасибо, тему можно закрывать.


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