Ru/CS:GO VScript Examples: Difference between revisions
< Ru
		
		
		
		Jump to navigation
		Jump to search
		| m (Kr0tchet moved page CS:GO VScript Examples:ru to CS:GO VScript Examples/ru: Moving page to add MultiPage on main page.) | m (Multipage removal) | ||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| {{ | {{LanguageBar|title = Примеры скриптов CS:GO}} | ||
| {{csgo}} Ниже приведены примеры  | {{Delisted|csgo}} | ||
| {{csgo}} Ниже приведены примеры {{L|VScript|VScript'ов}} для {{csgo|4}}. | |||
| ==Примеры== | ==Примеры== | ||
| Line 124: | Line 125: | ||
| ==Смотрите также== | ==Смотрите также== | ||
| * | *{{L|List of CS:GO Script Functions|Список функций CS:GO}} | ||
| * | *{{L|Logic_script|logic_script}} | ||
| * | *{{L|VScript}} | ||
| ==Внешние ссылки== | ==Внешние ссылки== | ||
| * [http://en.wikipedia.org/wiki/Squirrel_(programming_language) Squirrel (programming language)] - Ссылка на Wikipedia про Squirrel | * [http://en.wikipedia.org/wiki/Squirrel_(programming_language) Squirrel (programming language)] - Ссылка на Wikipedia про Squirrel | ||
| * {{sq}}[http://squirrel-lang.org/ Squirrel: The Programming Language - Documentation and Sample Code] | * {{sq}}[http://squirrel-lang.org/ Squirrel: The Programming Language - Documentation and Sample Code] | ||
| {{ACategory|Counter-Strike: Global Offensive}} | |||
| {{ACategory|VScript}} | |||
| {{ACategory|Scripting}} | |||
Latest revision as of 05:20, 12 July 2024
На этой странице представлена информация об игре или программном обеспечении,  Counter-Strike: Global Offensive,, которые более не доступны для покупки или загрузки в цифровом виде.
 Counter-Strike: Global Offensive,, которые более не доступны для покупки или загрузки в цифровом виде.
Здесь представлена историческая и техническая справка.
Здесь представлена историческая и техническая справка.
![]() Ниже приведены примеры VScript'ов для
 Ниже приведены примеры VScript'ов для ![]() Counter-Strike: Global Offensive.
 Counter-Strike: Global Offensive.
Примеры
Найти ближайшего игрока возле энтити
buttonReference <- Entities.FindByName( null, "button_01" ); // найти энтити "button_01" и сохранить ее в переменной
	
player <- Entities.FindByClassnameNearest( "player", buttonReference.GetOrigin(), 512 ); // найти игрока в радиусе 512 юнитов от кнопки, и сохранить этого игрока в переменную
Превратить ложные гранаты в бомбы
//Этот скрипт должен быть присоединен к чему-то, вроде logic_script,
//но при работе с другими Энтити, скрипт будет работать независимо
//до тех пор, пока Энтити - жива, и у она настроена на функцию Think()
EXPLOSION_SOUND <- "c4.Explode"; //Можно найти в sound picker(обозреватель звуков) в Hammer'е
function Precache() //Функция работает тогда, когда скрипт (на карте) создается
{
	self.PrecacheScriptSound( EXPLOSION_SOUND );
}
//Каждую 0.1 секунды функция проверяет, есть ли decoy_projectiles (выброшенные лож.гранаты) на карте.
//Если такая находится, то оно проверяет, равна ли скорость вектору:(0,0,0)
//Если равна(true), то это означает, что лож.граната упала на землю и не двигается, и мы можем идти дальше.
//Создаем env_explosion и настраиваем, перемещаем его к лож.гранате.
//После чего мы должны удалить гранату.
function Think()
{
	ent <- null;
	while ((ent = Entities.FindByClassname(ent, "decoy_projectile")) != null)
	{		
		if(ent.GetVelocity().Length() == Vector(0,0,0).Length())
		{		
			owner <- ent.GetOwner();
			origin <- ent.GetOrigin();	
			
			exp <- Entities.CreateByClassname("env_explosion");
			exp.__KeyValueFromInt("iMagnitude", 2000);
					
			ent.EmitSound(EXPLOSION_SOUND);
									
			exp.SetOrigin(origin);
			exp.SetOwner(owner);
									
			EntFireByHandle(exp, "Explode", "", 0.1, owner,owner);						
			ent.Destroy();						
			DispatchParticleEffect("explosion_c4_500", origin, origin);
		}		
	}
}
Создать Таймер для независимого запуска функции
thinkTimer <- null;
//Используем "*имя* <- function()" вместо "function Think()"
//чтобы создать функцию-переменную.
TimerThink <- function() 
{
	//тут будет "думающий" скрипт таймера
	//он будет выполняться каждый раз, когда созданный таймер будет обрабатывать выходы(outputs)
	
	print("Tick - ");
}
function OnPostSpawn()
{
	if(thinkTimer == null)
	{
		thinkTimer = Entities.CreateByClassname("logic_timer");		//создать таймер
		thinkTimer.ValidateScriptScope(); 							//проверить, был ли он создан
		local timerScope = thinkTimer.GetScriptScope(); 			//получить "окружение" таймера
		
		timerScope.Think <- TimerThink; 							//функция Think в "окружении" таймера теперь является копией TimerThink из "окружения" скрипта
		EntFireByHandle(thinkTimer, "AddOutput", "OnTimer !self:RunScriptCode:Think():0:-1", 0, null, null); 
																	//ent_fire можно использовать в консоли, либо в Hammer
																	//ent_fire name Addoutput "OutputName Target:Input:Delay:RepeatTimes"
		
		thinkTimer.__KeyValueFromFloat("RefireTime", 0.1); 			//ставим частоту таймера. RefireTime - опция, которую можно узнать, отключив SmartEdit в Hammer'е.
		EntFireByHandle(thinkTimer, "Enable", "", 0, null, null); 	//и наконец, запускаем таймер.
	}
}
Присоединить функцию к Энтити во время работы таймера
thinkTimer <- null;
function OnPostSpawn()
{
	//Создает таймер и ставит функцию Think для запуска при каждом тике.
	if(thinkTimer == null)
	{
		thinkTimer = Entities.CreateByClassname("logic_timer");			//создать таймер
		thinkTimer.ValidateScriptScope(); 								//проверить, был ли он создан
		local timerScope = thinkTimer.GetScriptScope(); 				//получить "окружение" таймера										
									
		timerScope.mainScriptScope <- self.GetScriptScope();			//сохраняем "окружение" скрипта в переменную "окружения" таймера
		timerScope.DoThink <- function() { mainScriptScope.Think() };	//создаем функцию DoThink в "окружении" таймера, чтобы вызывать Think в этом скрипте.
		
		thinkTimer.ConnectOutput("OnTimer", "DoThink"); 				//Ставим функцию DoThink при каждом тике таймера
		
		thinkTimer.__KeyValueFromFloat("RefireTime", 0.1); 				//ставим частоту таймера. RefireTime - опция, которую можно узнать, отключив SmartEdit в Hammer'е.
		EntFireByHandle(thinkTimer, "Enable", "", 0, null, null); 		//и наконец, запускаем таймер.
	}
}
//Функция, которая будет использоваться каждый раз при тике таймера.
function Think()
{
	print("Tick - ");
}
[Нужно сделать]
Смотрите также
Внешние ссылки
- Squirrel (programming language) - Ссылка на Wikipedia про Squirrel
 Squirrel: The Programming Language - Documentation and Sample Code Squirrel: The Programming Language - Documentation and Sample Code