Zh/CS:GO VScript Examples

From Valve Developer Community
< Zh
Revision as of 06:20, 30 August 2017 by GEEKiDoS (talk | contribs)
Jump to navigation Jump to search

反恐精英:全球攻势 以下是适用于Counter-Strike: Global Offensivevscripts 脚本 .

找到离一个已知实体实体最近的玩家

buttonReference <- Entities.FindByName( null, "button_01" ); // 找到一个叫 "button_01" 的实体并且储存它的targetname(名字)
	
player <- Entities.FindByClassnameNearest( "player", buttonReference.GetOrigin(), 512 ); // 在距离按钮中心 512 Hammer单位(英寸) 的范围内寻找玩家并且储存为一个变量.

会原地爆炸爆的诱弹

//以下的脚本需要附加到一个类似logic_script之类的实体上

EXPLOSION_SOUND <- "c4.Explode"; //这个可以在Hammer的声音浏览器里找到

function Precache() /如果这个函数定义了那么他会在脚本执行时自动执行
{
	self.PrecacheScriptSound( EXPLOSION_SOUND );
}

//以下脚本的作用是每间隔 0.1 秒检查地图上有没有 decoy_projectiles 这个实体
//当地图上有这个实体的时候检测他的速度是否为 0,0,0
//如果是的那么诱弹就是停下来了然后就可以运行剩下的部分:
//创建一个 env_explosion 并且移动到诱弹的中心点
//然后触发这玩意,随后kill掉诱弹

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);
		}		
	}
}

一把始终瞄准着玩家的枪

//以下脚本需要以下在hammer里放好以下实体:
//一个叫hurt的func_brush,并且将origin球拖动到玩家头部
//一个叫sentry_main的的枪模型
//然后运行StartAimBot

function StartAimBot() {
    sentry <- Entities.FindByName(null,"sentry_main");
    hurt <- Entities.FindByName(null,"hurt");
}

function Think() {
    local Target = Entities.FindByClassnameNearest( "player", buttonReference.GetOrigin(), 512 );
    if(Target != null) {
        local m_targetVector = Target.EyePosition();
        local m_sentryOrigin = sentry.GetOrigin();
        local m_dir = m_targetVector - m_sentryOrigin;

        local UCSX = sqrt(pow(m_dir.x,2)+pow(m_dir.y,2));
        local pitch = asin(m_dir.z / sqrt( pow(UCSX,2) + pow(m_dir.z,2) )) * 180 / PI * -1;
        local yaw = asin(m_dir.y / sqrt( pow(m_dir.x,2) + pow(m_dir.y,2) )) * 180 / PI;

        if(m_dir.x < 0)
            yaw = 180 - yaw;
        
        sentry.SetAngles(pitch,yaw,0);
        hurt.SetOrigin(Target.EyePosition());
    }
}

在hud上显示消息

_msg <- null

//如何调用?
//ShowMsg(activator,"<font color='#FFFF00'>这是一条红色的消息");
function ShowMsg(player, message)
{
	if(_msg == null)	
		_msg <- Entities.CreateByClassname("env_message");	
	_msg.__KeyValueFromString("message", message);
	_msg.SetOwner(player);
	EntFireByHandle(_msg, "showmessage", "", 0, player, player);
}
待完善: 求更多大佬完善这个界面

看一下这些吧

外部链接