Перейти к публикации
Планета Deus Ex

Лаборатория Вероники


Рекомендованные сообщения

Опубликовано:

В этой теме я постараюсь предоставить общественности интересные на мой взгляд скрипты и возможно карты и возможно еще какую-то интересную информацию по DeusEx Editing. :)

 

Я создала эту тему потому-что мои «Вопросы...» не совсем для этого подходят. Да и вопросов я уже не задаю, стараюсь разобраться во всем сама. ;)

  • Ответы 81
  • Создано
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Опубликованные изображения

Опубликовано:
А можно как-то сделать следы от снега? Мне очень надо.

 

 

Я пока не собиралась такого делать и мне это вряд-ли понадобиться, так как в моем моде даже погоды нормальной нет--измерение другое.

 

Но я думаю можно сделать звук шагов по снегу, см. DeusExPlayer.uc,

Function PlayFootStep. Вопрос только в том где взять этот звук шагов. Хотя в NOLF2 должен быть такой звук...

Опубликовано:

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

Опубликовано:

Я сделала себе нормальную консоль, так как она была отключена.

 

Вызываеться клавишей ~ (Тильда)

 

Скрипт я взяла из Engine.u и изменила так чтобы консоль работала.

Также я заменила шрифт в консоли так как те что по умолчанию--слишком мелкие на разрешении 1024x768.

 


// Добавить (Точнее заменить) Console=Veronika_mod_01_Core.Rus_Console в файл DeusEx.ini.

class Rus_Console expands Console;

//-----------------------------------------------------------------------
Var Font SmallFont;
Var Font MedFont;
Var Font BigFont;
Var Font LargeFont;

#Exec new TrueTypeFontFactory Name=LargeFont FontName=«HarRierBold Tygra» Height=18 CharactersPerPage=128 AntiAlias=1 
#Exec new TrueTypeFontFactory Name=BigFont FontName=«HarRierBold Tygra» Height=18 CharactersPerPage=128 AntiAlias=1 

#exec new TrueTypeFontFactory Name=MedFont  FontName=«DPix_8pt» Height=8 CharactersPerPage=128 AntiAlias=1 
#exec new TrueTypeFontFactory Name=SmallFont  FontName=«DPix_8pt» Height=8 CharactersPerPage=128 AntiAlias=1 


// Size the view up.
exec function ViewUp()
{
BorderSize = Clamp( BorderSize-1, 0, MaxBorder );
}

// Size the view down.
exec function ViewDown()
{
BorderSize = Clamp( BorderSize+1, 0, MaxBorder );
}


// Called by the engine when a single key is typed.
event bool KeyType( EInputKey Key );

// Called by the engine when a key, mouse, or joystick button is pressed
// or released, or any analog axis movement is processed.
event bool KeyEvent( EInputKey Key, EInputAction Action, FLOAT Delta )
{
if( Action!=IST_Press )
{
	return false;
}
// DEUS_EX CNN — Shift-Tilde is console now
else if( Key==IK_Tilde )
{
	if( ConsoleDest==0.0 )
	{
//			ConsoleDest=0.6;

		ConsoleDest=0.3;
		GotoState('Typing');
	}
	else GotoState('');
	return true;
}

else return false;
}



simulated function DrawConsoleView( Canvas C )
{
local int Y, I, Line;
local float XL, YL;


// Console is visible; display console view.


Y = ConsoleLines — 1;
MsgText[(TopLine + 1 + MaxLines) % MaxLines] = «(>»@TypedStr;
for ( I = Scrollback; I < (NumLines + 1); I++ )
{
	// Display all text in the buffer.
	Line = (TopLine + MaxLines*2 — (I-1)) % MaxLines;

	C.DrawColor.R = 255;
	C.DrawColor.G = 255;
	C.DrawColor.B = 255;

	C.Font = /*C.*/MedFont;

	if (( MsgType[Line] == 'Say' ) || ( MsgType[Line] == 'TeamSay' ))
		C.StrLen( MsgPlayer[Line].PlayerName$«:»@MsgText[Line], XL, YL );				
	else
		C.StrLen( MsgText[Line], XL, YL );

	// Half-space blank lines.
	if ( YL == 0 )
		YL = 5;

	Y —= YL;
	if ( (Y + YL) < 0 )
		break;
	C.SetPos(4, Y);
	C.Font = /*C.*/MedFont;

	if (( MsgType[Line] == 'Say' ) || ( MsgType[Line] == 'TeamSay' ))
		C.DrawText( MsgPlayer[Line].PlayerName$«:»@MsgText[Line], false );
	else
		C.DrawText( MsgText[Line], false );
}				
}

simulated function DrawSingleView( Canvas C )
{
local string TypingPrompt;
local int I, J;
local float XL, YL;
local string ShortMessages[4];
local int ExtraSpace;


// Console is hidden; display single-line view.

C.SetOrigin(0.0, 0.0);

// Ask the HUD to deal with messages.
if ( Viewport.Actor.myHUD != None 
	&& Viewport.Actor.myHUD.DisplayMessages© )
	return;

C.DrawColor.R = 255;
C.DrawColor.G = 255;
C.DrawColor.B = 255;

// If the HUD doesn't deal with messages, use the default behavior
if (!Viewport.Actor.bShowMenu)
{
	if ( bTyping )
	{			
		TypingPrompt = «(>»@TypedStr$«_»;
		C.Font = /*C.*/MedFont;
		C.StrLen( TypingPrompt, XL, YL );
		C.SetPos( 2, FrameY — ConsoleLines — YL — 1 );
		C.DrawText( TypingPrompt, false );
	}
}

if ( TextLines > 0 && (!Viewport.Actor.bShowMenu || Viewport.Actor.bShowScores) )
{
	J = TopLine;
	I = 0;
	while ((I < 4) && (J >= 0))
	{
		if ((MsgText[J] != "") && (MsgTick[J] > 0.0) && (MsgTick[J] > MsgTickTime) )
		{
			if (MsgType[J] == 'Say') 
				ShortMessages[i] = MsgPlayer[J].PlayerName$«:»@MsgText[J];
			else
				ShortMessages[i] = MsgText[J];
			I++;
		}
		J--;
	}

	J = 0;
	C.Font = /*C.*/MedFont;
	for ( I = 0; I < 4; I++ )
	{
		if (ShortMessages[3 — I] != "")
		{
			C.SetPos(4, 2 + (10 * J) + (10 * ExtraSpace));
			C.StrLen( ShortMessages[3 — I], XL, YL );
			C.DrawText( ShortMessages[3 — I], false );
			if ( YL == 18.0 )
				ExtraSpace++;
			J++;
		}
	}		
}
}

//-----------------------------------------------------------------------------
// State used while typing a command on the console.

state Typing
{
exec function Type()
{
	TypedStr="";
	gotoState( '' );
}
function bool KeyType( EInputKey Key )
{
	// DEUS_EX CNN — bring up the console if we hit shift-tilde
	if (Key == Asc(«~»))
	{
		if( ConsoleDest==0.0 )
		{
//				ConsoleDest=1.0;		// DEUS_EX CNN — fullscreen console
//				ConsoleDest=0.6;
			ConsoleDest=0.3;
			GotoState('Typing');
		}
		else GotoState('');
	}
	else if( Key>=0x20 && Key<0x80 && Key!=Asc(«~») && Key!=Asc(«`») )
	{
		if ( bNoStuff )
		{
			bNoStuff = false;
			return true;
		}
		TypedStr = TypedStr $ Chr(Key);
		Scrollback=0;
		return true;
	}
}
function bool KeyEvent( EInputKey Key, EInputAction Action, FLOAT Delta )
{
	local string Temp;

	bNoStuff = false;
	if( Key==IK_Escape )
	{
		if( Scrollback!=0 )
		{
			Scrollback=0;
		}
		else if( TypedStr!="" )
		{
			TypedStr="";
		}
		else
		{
			ConsoleDest=0.0;
			GotoState( '' );
		}
		Scrollback=0;
	}
	else if( global.KeyEvent( Key, Action, Delta ) )
	{
		return true;
	}
	else if( Action != IST_Press )
	{
		return false;
	}
	else if( Key==IK_Enter )
	{
		if( Scrollback!=0 )
		{
			Scrollback=0;
		}
		else
		{
			if( TypedStr!="" )
			{
				// Print to console.
				if( ConsoleLines!=0 )
					Message( None, «(>» @ TypedStr, 'Console' );

				// Update history buffer.
				History[HistoryCur++ % MaxHistory] = TypedStr;
				if( HistoryCur > HistoryBot )
					HistoryBot++;
				if( HistoryCur — HistoryTop >= MaxHistory )
					HistoryTop = HistoryCur — MaxHistory + 1;

				// Make a local copy of the string.
				Temp=TypedStr;
				TypedStr="";
				if( !ConsoleCommand( Temp ) )
					Message( None, Localize(«Errors»,«Exec»,«Core»), 'Console' );
				Message( None, "", 'Console' );
			}
			if( ConsoleDest==0.0 )
				GotoState('');
			Scrollback=0;
		}
	}
	else if( Key==IK_Up )
	{
		if( HistoryCur > HistoryTop )
		{
			History[HistoryCur % MaxHistory] = TypedStr;
			TypedStr = History[--HistoryCur % MaxHistory];
		}
		Scrollback=0;
	}
	else if( Key==IK_Down )
	{
		History[HistoryCur % MaxHistory] = TypedStr;
		if( HistoryCur < HistoryBot )
			TypedStr = History[++HistoryCur % MaxHistory];
		else
			TypedStr="";
		Scrollback=0;
	}
	else if( Key==IK_PageUp )
	{
		if( ++Scrollback >= MaxLines )
			Scrollback = MaxLines-1;
	}
	else if( Key==IK_PageDown )
	{
		if( —-Scrollback < 0 )
			Scrollback = 0;
	}
	else if( Key==IK_Backspace || Key==IK_Left )
	{
		if( Len(TypedStr)>0 )
			TypedStr = Left(TypedStr,Len(TypedStr)-1);
		Scrollback = 0;
	}
	return true;
}
function BeginState()
{
	bTyping = true;
	Viewport.Actor.Typing(bTyping);
}
function EndState()
{
	bTyping = false;
	Viewport.Actor.Typing(bTyping);
	//log(«Console leaving Typing»);
	ConsoleDest=0.0;
}
}





defaultproperties
{

 LoadingMessage=«Выполняется загрузка»
 SavingMessage=«Выполняется сохранение»
 PausedMessage=«--==[ ПАУЗА В ИГРЕ ]==--»
 PrecachingMessage=«Предварительное кэширование»
 FrameRateText=«Кадры в секунду»
 AvgText=«Примерно»
 LastSecText=«За послед. секунду»
 MinText=«Мин.»
 MaxText=«Макс.»
 fpsText=«Кадр/сек»
 SecondsText=«секунд.»
 FramesText=«кадров пририсовано в»

	 TimeDemoFont=SmallFont


 SmallFont=Font'ВАШ_ПАК.SmallFont'
 MedFont=Font'ВАШ_ПАК.MedFont'
 BigFont=Font'ВАШ_ПАК.BigFont'
 LargeFont=Font'ВАШ_ПАК.LargeFont'

}

 

ВАЖНО: В Windows Должны быть установлены следующие шрифты:

HarRierBold Tygra

DPix_8pt

 

Необходимо отредактировать файл DeusEx.ini, заменив класс консоли на собственный.Console=ВАШ_ПАК.Rus_Console в файл DeusEx.ini.

 

 

Лично мне такая коносоль удобнее чем обычная и даже фон у нее есть ;)

Опубликовано:

Вероника, используй, пожалуйста тэг codebox вместо code для длинных скриптов. А то страница становится слишком длинной и её неудобно читать.

Опубликовано:

Я полагаю что многие знают про конвертер UNr2De, преобразующий модели Unreal в формат DeusEx.

 

Но видимо в этом конвертере есть какие-то ошибки, так как не удаеться нормально преобразовать некоторые модели вытащенные из UnrealTournament. То есть из них вылазят какие-то длинные треугольники.

 

Среди таких моделей есть Plant2m и Plant4m а может и еще какие-то.

 

Но оказалось что есть альтернативный способ: через MilkShape 3d.

Чтобы использовать этот способ:

 

1. На Альфе скачайте модуль для экспорта в формат DeusEx (правда я не помню раздел где я нашла этот модуль) и установите его.

2. В Милке откройте файл модели (Import-Unreal/UT .3D)

3. Из Милки экспортируйте в формат DeusEx (Export-DeusEx .3D)

 

Модель при этом будет нормальной, в этом можно убедиться посмотрв не нее в WotGrealExporter ;)

 

Лично я этот способ через Милку обнаружила только вчера :/

Опубликовано:
Я полагаю что многие знают про конвертер UNr2De, преобразующий модели Unreal в формат DeusEx.

 

Но видимо в этом конвертере есть какие-то ошибки, так как не удаеться нормально преобразовать некоторые модели вытащенные из UnrealTournament. То есть из них вылазят какие-то длинные треугольники.

 

Среди таких моделей есть Plant2m и Plant4m а может и еще какие-то.

 

Но оказалось что есть альтернативный способ: через MilkShape 3d.

Чтобы использовать этот способ:

 

1. На Альфе скачайте модуль для экспорта в формат DeusEx (правда я не помню раздел где я нашла этот модуль) и установите его.

2. В Милке откройте файл модели (Import-Unreal/UT .3D)

3. Из Милки экспортируйте в формат DeusEx (Export-DeusEx .3D)

 

Модель при этом будет нормальной, в этом можно убедиться посмотрв не нее в WotGrealExporter :)

 

Лично я этот способ через Милку обнаружила только вчера :/

 

И ещё Plant3M.. Долго помню возился с этими растениями, а так хотелось. Не знал, кстати что милк в деус конвертирует.

Опубликовано:
Я полагаю что многие знают про конвертер UNr2De, преобразующий модели Unreal в формат DeusEx.

 

(...)

 

Но оказалось что есть альтернативный способ: через MilkShape 3d.

Чтобы использовать этот способ:

 

1. На Альфе скачайте модуль для экспорта в формат DeusEx (правда я не помню раздел где я нашла этот модуль) и установите его.

Я нашел где его можно там скачать, второе вложение в первом посте: Milkshape2DeusEx

 

(нужно иметь акк на альфе что бы скачать)

Опубликовано:

Я на днях залезла в класс ScriptedPawn и обратила внимание на переменную SurprisePeriod. Оказалось что она отвечает за то как долго противник будет разглядывать игрока перед тем как кинуться на него :-k

 

Вот если значение этой переменной установить в 0.00 (по умолчанию стоит 2.00) то враги не будут разглядывать игрока и сразу будут кидаться на него :D

 

По умолчанию переменная SurprisePeriod скрыта от редактирования но это поправимо. ;)

 

Запустив редактор открываем для редактирования класс DeusEx.ScriptedPawn.

 

Находим такое:

 

var	 float	   EnemyReadiness;
var	 float	   ReactionLevel;
var	 float	   SurprisePeriod; // ВОТ ЭТО!!!!!!!
var	 float	   SightPercentage;
var	 float	   CycleTimer;
var	 float	   CyclePeriod;
var	 float	   CycleCumulative;
var	 Pawn		CycleCandidate;
var	 float	   CycleDistance;

 

И меняем так:

var()	 float	   SurprisePeriod; // ВОТ ЭТО!!!!!!!

 

Затем в меню Script выбираем Compile Changed, ждем и сохраняем пак DeusEx. Затем перезагружаем редактор и открываем любую карту и выбираем любого NPC. В свойствах в категории ScriptedPawn ,будет новая переменная SurprisePeriod. Её можно будет менять по желанию, например я себе везде поставила 0.00 но можно выставить больше, скажем 10.00 :trunk:

 

Все это для UED1 но можно сделать и в UED2, почти все аналогично.

Опубликовано:

Помню как-то просил Деда сделать мини-мод позволяющий использовать copy/paste во время сеанса взлома компьютеров (копировать и вставлять себе в notes). Чтобы было все взаправду и по-хакерски: взломал, урал информацию, отключился, а потом читаешь спокойно и с наслаждением. Но Деда похитили прешельтсы, и мод он не сделал.

Вероника, сможешь такое реализовать ?

Опубликовано:
использовать copy/paste во время сеанса взлома компьютеров (копировать и вставлять себе в notes).

 

LGS, ты имеешь в виду: текст из E-Mail будет сохраняться в Заметках (Notes). Я правильно поняла? Я не могу ничего обещать но попробовать никто не мешает ;)

Опубликовано: (изменено)

LGS, ты имеешь в виду: текст из E-Mail будет сохраняться в Заметках (Notes). Я правильно поняла? Я не могу ничего обещать но попробовать никто не мешает ;)

прсто чтобы можно было выделять текст е-мэйлов

Изменено пользователем LGS
Опубликовано:

Поддерживаю Легуса. Вот если бы еще и книги так можно было копировать, а то бывают моменты, когда враги дышат в спину 8) и нет времени прочесть. Вот только в всплывающем окне нельзя выделять текст, но может можно сделать чтобы текст книг автоматически добавлялся в закладку «Разговоры» ?

Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...