Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- init() {
- if(isAlive(self)) {
- self.valkyrieblock = false;
- self.rakk = spawn("script_model", self.origin + (0, 0, 50));
- self.rakk setmodel("xmodel/weapon_temp_panzershreck_rocket");
- self.valkir = spawn( "script_model",self.origin);
- self.valfuel = 60;
- self.valfuelx = 0.2;
- self.oldorigin = self.origin;
- self.oldangles = self.angles;
- self.spawnprotected = 1;
- destroy = true;
- self.valspeed = 130;
- self.musictime = 0.5;
- self HudElementControl(destroy);
- self disableWeapon();
- self setmodel(level._effect["Invisible"]);
- self linkto(self.valkir);
- self thread playSoundAtLocation("raketa_start", self.origin, .1 );
- self thread playValAir();
- self thread FuleMonitor();
- while(self.valfuel > 0 && isAlive(self) && isDefined(self)) {
- self.valfuel -= self.valfuelx;
- angles = self getPlayerAngles();
- vector = anglesToForward(angles);
- vector = maps\mp\_utility::vectorScale(vector, self.valspeed);
- self.valkir moveTo(self.origin + vector, .5);
- self.rakk moveTo(self.origin + (0, 0, 50) + vector, .5);
- self.rakk rotateto(angles,.1);
- start = self.origin + (0, 0, 50);
- end = start + vector;
- trace = bulletTrace(start, end, true, self);
- dis = distance(start, trace["position"]);
- if(dis < 50) {
- self.valfuel = 0;
- self ExplodeValyrie();
- }
- else if(self attackButtonPressed()) {
- self.valfuel = 0;
- self ExplodeValyrie();
- }
- else if(self UseButtonPressed()) {
- self.valspeed = 250;
- self.valfuelx = 0.5;
- self.musictime = 0.4;
- thread Fade();
- }
- wait 0.1;
- }
- if(!isAlive(self) || self.pers["team"] != "allies")
- {
- self.valfuel = 0;
- self.valkyrieblock = true;
- self.valkir delete();
- self.rakk delete();
- self.hud_prval destroy();
- self.hud_usetur destroy();
- self.hud_cross_val destroy();
- self.hud_valkir destroy();
- }
- if(!isDefined(self)) {
- self.valfuel = 0;
- self.valkir delete();
- self.rakk delete();
- self.hud_prval destroy();
- self.hud_usetur destroy();
- self.hud_cross_val destroy();
- self.hud_valkir destroy();
- }
- if(self.valfuel < 0 && isAlive(self) && isDefined(self))
- {
- self.valfuel = 0;
- self ExplodeValyrie();
- }
- }
- }
- Fade() {
- self.hud_usetur fadeOverTime(0.5);
- self.hud_usetur.alpha = 0;
- wait 0.5;
- self.hud_usetur destroy();
- }
- playValAir() {
- while(self.valfuel > 1 && isAlive(self) && isDefined(self)) {
- self thread playSoundAtLocation("raketa", self.origin, .1 );
- wait self.musictime;
- }
- }
- ExplodeValyrie() {
- if(isAlive(self)) {
- org = self.origin + (0,0,12);
- playfx(level._effect["teddy_explosion"], org);
- self thread playSoundAtLocation("explo_metal_rand", self.origin, .1 );
- destroy = false;
- self unlink(self.valkir);
- self.valkir delete();
- self.rakk delete();
- self HudElementControl(destroy);
- self MonitorValkyrie();
- for(x=1; x < 4; x++) {
- self.ssh1 destroy();
- self.ssh1 = newClientHudElem(self);
- self.ssh1.sort = 5;
- self.ssh1.alignX = "left";
- self.ssh1.alignY = "top";
- self.ssh1.x = 0;
- self.ssh1.y = 0;
- self.ssh1.alpha = 8;
- self.ssh1 setShader("sh" + x, 640, 480);
- wait 0.3;
- self.ssh1 destroy();
- }
- self setOrigin(self.oldorigin);
- self setPlayerAngles(self.oldangles);
- self enableWeapon();
- if(game["allies"] == "american")
- {
- self setmodel(level._effect["bodya"]);
- }
- if(game["allies"] == "british")
- {
- self setmodel(level._effect["bodyb"]);
- }
- if(game["allies"] == "russian")
- {
- self setmodel(level._effect["bodyr"]);
- }
- self.spawnprotected = 0;
- wait 3;
- self.valkyrieblock = true;
- }
- }
- MonitorValkyrie()
- {
- if(isAlive(self))
- {
- eAttacker = self;
- targetPos = self.origin;
- iRange = 300;
- vDir = (targetPos);
- players = getentarray("player", "classname");
- for(i = 0; i < players.size; i++)
- {
- distance = distance(targetPos, players[i].origin);
- if((distance > iRange || players[i].sessionstate != "playing" || !isAlive(players[i]) || players[i].pers["team"] == "allies" )) continue;
- players[i] thread [[level.callbackPlayerDamage]](eAttacker, eAttacker, 5000, 1, "MOD_RIFLE_BULLET", "valkyrie_mp", self.vPoint, vDir, "none", 0);
- }
- }
- }
- FuleMonitor() {
- x = 100;
- while(self.valfuel > 0 && isAlive(self) && isDefined(self)) {
- prok = 100/60;
- hod = 60 - self.valfuel;
- min = 60 - hod;
- x = prok*min;
- if(x-int(x)<0.5)
- {
- x=int(x);
- }
- else
- {
- x=int(x+1);
- }
- self.hud_fuelram destroy();
- self.hud_fuelram = newClientHudElem(self);
- self.hud_fuelram.x = 268;
- self.hud_fuelram.y = 78;
- self.hud_fuelram.sort = -1;
- self.hud_fuelram.alignx = "left";
- self.hud_fuelram setShader("white", 104, 14);
- self.svrlogo.alpha = .6;
- self.hud_fuelram.color = (0.1,0.1,0.1);
- self.hud_fuel destroy();
- self.hud_fuel = newClientHudElem(self);
- self.hud_fuel.x = 270;
- self.hud_fuel.y = 80;
- self.hud_fuel.sort = 0;
- self.hud_fuel.alignx = "left";
- self.hud_fuel setShader("white", x, 10);
- self.hud_fuel.color = (0.3,0.8,0.1);
- wait 0.1;
- }
- self.hud_fuel destroy();
- self.hud_fuelram destroy();
- }
- HudElementControl(destroy) {
- if(destroy) {
- self.hud_usetur destroy();
- self.hud_usetur = newClientHudElem(self);
- self.hud_usetur.x = 320;
- self.hud_usetur.y = 405;
- self.hud_usetur.alignx = "center";
- self.hud_usetur.fontscale = 1;
- self.hud_usetur.label = &"^3P^9ress ^1[^2USE^1] ^3f^9or ^3A^9ccelerate^1!";
- self.hud_prval destroy();
- self.hud_prval = newClientHudElem(self);
- self.hud_prval.x = 320;
- self.hud_prval.y = 420;
- self.hud_prval.alignx = "center";
- self.hud_prval.fontscale = 1;
- self.hud_prval.label = &"^3P^9ress ^1[^2ATTACK^1] ^3f^9or ^3e^9xplode ^3V^9alkyrie^1!";
- self.hud_cross_val destroy();
- self.hud_cross_val = newClientHudElem(self);
- self.hud_cross_val.sort = -2;
- self.hud_cross_val.alignX = "left";
- self.hud_cross_val.alignY = "top";
- self.hud_cross_val.x = 0;
- self.hud_cross_val.y = 0;
- self.hud_cross_val setShader("img_valkiria", 640, 480);
- }
- else
- {
- self.hud_prval destroy();
- self.hud_cross_val destroy();
- self.hud_usetur destroy();
- }
- }
- PlaySoundAtLocation(sound, location, iTime)
- {
- org = spawn("script_model", location);
- wait 0.05;
- org show();
- org playSound(sound);
- wait iTime;
- org delete();
- return;
- }
Add Comment
Please, Sign In to add comment