Originally posted by JDSTONER
View Post
Announcement
Collapse
No announcement yet.
qc
Collapse
X
-
Originally posted by JDSTONER View Postme and my son have been playing and he was mad that we could not kill him with a gun so i did the mod and changed the rocket launcher in to lava ball launcher.
my skills are week compared to all of you but my 5yr old thinks im bill gates
Your son is 5 years old and you play Quake together ?
Well, at least its not a girl. LOL
Comment
-
to me quake is ok at 5 to my mom quake was not ok when i was 13. there is a hand full of things my son and i bond over that my parents considered a punishable crime. he is not allowed to play COD i find some of it too much but ill bet my grand kid will play thows games young. anyway i better go brake something in qc and ask a new question or this is gonna turn in to a thread all about my kid cose i could tock about him forever
Comment
-
-
i have spent a few days trying to hunt down impulse 9 and for the life of me i cant seem to find it.
im a cheating fool i know but if your gonna cheat why not make it a mega cheat!
my goal is to tell impulse 9 not to give me keys i like to go looking for them in the game and instead give me all guns, quad, megahelth, and the pentagram.
so if you know where i can find the line to make this happen let me know
Comment
-
weapons.qcOriginally posted by JDSTONER View Posti have spent a few days trying to hunt down impulse 9 and for the life of me i cant seem to find it.
im a cheating fool i know but if your gonna cheat why not make it a mega cheat!
my goal is to tell impulse 9 not to give me keys i like to go looking for them in the game and instead give me all guns, quad, megahelth, and the pentagram.
so if you know where i can find the line to make this happen let me know
will bevoid() CheatCommand =
{
if (deathmatch)
return;
self.ammo_rockets = 100;
self.ammo_nails = 200;
self.ammo_shells = 100;
self.items = self.items |
IT_AXE |
IT_SHOTGUN |
IT_SUPER_SHOTGUN |
IT_NAILGUN |
IT_SUPER_NAILGUN |
IT_GRENADE_LAUNCHER |
IT_ROCKET_LAUNCHER |
IT_KEY1 | IT_KEY2;
self.ammo_cells = 200;
self.items = self.items | IT_LIGHTNING;
self.weapon = IT_ROCKET_LAUNCHER;
self.impulse = 0;
W_SetCurrentAmmo ();
};
void()QuadCheat;
void() CheatCommand =
{
if (deathmatch)
return;
local float jealt;
jealt = self.health + 150;
if ( jealt >= 250)
self.health = 250;
else
self.health = jealt;
self.ammo_rockets = 100;
self.ammo_nails = 200;
self.ammo_shells = 100;
self.items = self.items |
IT_INVULNERABILITY|
IT_AXE |
IT_SHOTGUN |
IT_SUPER_SHOTGUN |
IT_NAILGUN |
IT_SUPER_NAILGUN |
IT_GRENADE_LAUNCHER |
IT_ROCKET_LAUNCHER ;
// IT_KEY1 | IT_KEY2; you do not want the keys
self.invincible_time = 1;
self.invincible_finished = time + 30;
self.ammo_cells = 200;
self.weapon = IT_ROCKET_LAUNCHER;
self.impulse = 0;
QuadCheat ();
W_SetCurrentAmmo ();
};Last edited by nahuel; 05-14-2013, 12:55 PM.the invasion has begun! hide your children, grab the guns, and pack sandwiches.
syluxman2803
Comment
-
check my solution now , works perfectlyOriginally posted by JDSTONER View Postok sweet! i did find the line
if (self.impulse == 9)
CheatCommand ();
i guess if i knew how to read code it would have told me to go look for CheatCommand
thanks nahuel
the invasion has begun! hide your children, grab the guns, and pack sandwiches.
syluxman2803
Comment
-
LOL Nahuel. CHEETHA !
Why not extend his Quad and invulnerable time to unlimited.
And add invisibility too.
Hehehe
PS: I always use this during developing:
"a" like "ALL"bind a "god;noclip;notarget;impulse 9"
Anyhow, be sure to autoexec: sv_cheats "1"
Comment
-
i was thinking of cheats and mapping and game testing the other day and i bet thats why they were set up in the first place!
seven what do you think of adding
bind r "cl_capturevideo 1"
to the smc maybe we could get more vids of single player games if it was that easy
NOVA KILLS LAVAMAN - YouTubeLast edited by JDSTONE; 05-14-2013, 04:24 PM.
Comment
-
Nail in the wall
WEAPONS QC
LINE 600ish
hknight qcCode:void() spike_enemy_touch; //ooppee addon, need to make enemy projectiles (knight and scrag projectils use a copy of the id1 code WITHOUT the stuck in walls code) /* =============== start OoPpEe Launch enemy spike! Needs to be different so it DOESNT call "spike_touch" which results in stuck in walls =============== */ void(vector org, vector dir) launch_enemy_spike = { newmis = spawn (); newmis.owner = self; newmis.movetype = MOVETYPE_FLYMISSILE; newmis.solid = SOLID_BBOX; newmis.angles = vectoangles(dir); newmis.touch = spike_enemy_touch; //OoPpEe no more calling the in wall code now :D newmis.classname = "spike"; newmis.think = SUB_Remove; newmis.nextthink = time + 6; setmodel (newmis, "progs/spike.mdl"); setsize (newmis, VEC_ORIGIN, VEC_ORIGIN); setorigin (newmis, org); newmis.velocity = dir * 1000; }; //end ooppee /* =============== launch_spike Used for both the player and the ogre =============== */ void(vector org, vector dir) launch_spike = { newmis = spawn (); newmis.owner = self; newmis.movetype = MOVETYPE_FLYMISSILE; newmis.solid = SOLID_BBOX; newmis.angles = vectoangles(dir); newmis.touch = spike_touch; newmis.classname = "spike"; newmis.think = SUB_Remove; newmis.nextthink = time + 6; setmodel (newmis, "progs/spike.mdl"); setsize (newmis, VEC_ORIGIN, VEC_ORIGIN); setorigin (newmis, org); newmis.velocity = dir * 1000; }; void() W_FireSuperSpikes = { local vector dir; local entity old; sound (self, CHAN_WEAPON, "weapons/spike2.wav", 1, ATTN_NORM); self.attack_finished = time + 0.2; self.currentammo = self.ammo_nails = self.ammo_nails - 2; dir = aim (self, 1000); launch_spike (self.origin + self.view_ofs + v_up * -8 , dir); newmis.touch = superspike_touch; setmodel (newmis, "progs/s_spike.mdl"); setsize (newmis, VEC_ORIGIN, VEC_ORIGIN); self.punchangle_x = -2; }; void(float ox) W_FireSpikes = { local vector dir; local entity old; makevectors (self.v_angle); if (self.ammo_nails >= 2 && self.weapon == IT_SUPER_NAILGUN) { W_FireSuperSpikes (); return; } if (self.ammo_nails < 1) { self.weapon = W_BestWeapon (); W_SetCurrentAmmo (); return; } sound (self, CHAN_WEAPON, "weapons/rocket1i.wav", 1, ATTN_NORM); self.attack_finished = time + 0.2; self.currentammo = self.ammo_nails = self.ammo_nails - 1; dir = aim (self, 1000); launch_spike (self.origin + self.view_ofs + v_up * -8 + v_right*ox, dir); self.punchangle_x = -2; }; .float hit_z; void() spike_stuck_think = { if (self.aflag <= time) { remove (self); return; } setorigin(self, self.pos1 + self.owner.origin - self.pos2); self.nextthink = time; }; //OoPpEe - now to copy over the old id1 code that DOESNT stick in walls. A simple copy and paste void() spike_enemy_touch = { local float rand; if (other == self.owner) return; if (other.solid == SOLID_TRIGGER) return; // trigger field, do nothing if (pointcontents(self.origin) == CONTENT_SKY) { remove(self); return; } // hit something that bleeds if (other.takedamage) { spawn_touchblood (9); T_Damage (other, self, self.owner, 9); } else { WriteByte (MSG_BROADCAST, SVC_TEMPENTITY); if (self.classname == "wizspike") WriteByte (MSG_BROADCAST, TE_WIZSPIKE); else if (self.classname == "knightspike") WriteByte (MSG_BROADCAST, TE_KNIGHTSPIKE); else WriteByte (MSG_BROADCAST, TE_SPIKE); WriteCoord (MSG_BROADCAST, self.origin_x); WriteCoord (MSG_BROADCAST, self.origin_y); WriteCoord (MSG_BROADCAST, self.origin_z); } remove(self); }; //OoPpEe end void() spike_touch = { local float rand; if (other == self.owner) return; if (other.solid == SOLID_TRIGGER) return; // trigger field, do nothing if (pointcontents(self.origin) == CONTENT_SKY) { remove(self); return; } // hit something that bleeds if (other.takedamage) { spawn_touchblood (9); T_Damage (other, self, self.owner, 9); remove(self); //add this so they don't float... return; //add this to avoid errors } else if (other.solid != SOLID_BSP) { remove(self); return; } WriteByte (MSG_BROADCAST, SVC_TEMPENTITY); if (self.classname == "wizspike") WriteByte (MSG_BROADCAST, TE_WIZSPIKE); else if (self.classname == "knightspike") WriteByte (MSG_BROADCAST, TE_KNIGHTSPIKE); else WriteByte (MSG_BROADCAST, TE_SPIKE); WriteCoord (MSG_BROADCAST, self.origin_x); WriteCoord (MSG_BROADCAST, self.origin_y); WriteCoord (MSG_BROADCAST, self.origin_z); self.solid = SOLID_NOT; self.movetype = MOVETYPE_NONE; setorigin (self, self.origin - normalize(self.velocity) * 3); self.velocity = '0 0 0'; //add this, it makes the nail stop if (other.solid == SOLID_BSP && other != world) { self.owner = other; self.pos1 = self.origin; self.pos2 = other.origin; self.aflag = time + 10; self.think = spike_stuck_think; self.nextthink = time; } else { self.nextthink = time + 20; //add this, to prevent packet overflows self.think = SUB_Remove; //add this for same reason as above } }; void() superspike_touch = { local float rand; if (other == self.owner) return; if (other.solid == SOLID_TRIGGER) return; // trigger field, do nothing if (pointcontents(self.origin) == CONTENT_SKY) { remove(self); return; } // hit something that bleeds if (other.takedamage) { spawn_touchblood (18); T_Damage (other, self, self.owner, 18); remove(self); //add this so they don't float... return; //add this to avoid errors } else if (other.solid != SOLID_BSP) { remove(self); return; } WriteByte (MSG_BROADCAST, SVC_TEMPENTITY); WriteByte (MSG_BROADCAST, TE_SUPERSPIKE); WriteCoord (MSG_BROADCAST, self.origin_x); WriteCoord (MSG_BROADCAST, self.origin_y); WriteCoord (MSG_BROADCAST, self.origin_z); self.solid = SOLID_NOT; self.movetype = MOVETYPE_NONE; setorigin (self, self.origin - normalize(self.velocity) * 3); self.velocity = '0 0 0'; //add this, it makes the nail stop if (other.solid == SOLID_BSP && other != world) { self.owner = other; self.pos1 = self.origin; self.pos2 = other.origin; self.aflag = time + 10; self.think = spike_stuck_think; self.nextthink = time; } else { self.nextthink = time + 20; //add this, to prevent packet overflows self.think = SUB_Remove; //add this for same reason as above } };
line 75
to thisCode:launch_spike (org, vec); newmis.classname = "knightspike";
wizardCode://launch_spike (org, vec); //ooppee well we know the drill.... launch_enemy_spike (org, vec); //ooppee volia!
line 204
toCode:launch_spike (self.origin, vec);
boss qcCode://launch_spike (self.origin, vec); //ooppee - GASP!!! again? launch_enemy_spike (self.origin, vec); //ooppee and again fixed :D
line 220 ish
toCode:launch_spike (org, vec);
i had a hard time with this one trying to make it work and pull it out of smc 4.25... i did try like 10 times but could not get it thankfully seven gave me a old smc to look at and i got it fixed in 5 min first try! so if you want your nails in the wall use this not the one at inside3dCode://launch_spike (org, vec); //ooppee - yes even Chthon's lavaball sticks in walls. Let's make him use the launch_enemy_spike :) launch_enemy_spike (org, vec); //ooppee there we go :D
it will leave your nails floating when killing a monster, or if they hit a door. also the monster spikes will stick in the ground and if you walk over them you will get hurt
Last edited by JDSTONE; 05-17-2013, 03:39 PM.
Comment
-
Hello JDSTONER,
Please be careful when posting code.
For readability reasons you should use the CODE tags, not the QUOTE tags around it.
This will keep its seperation, spaces and tabs.
Regarding the "Nails stick in walls" code:
Your posted functions:
- launch_enemy_spike
- spike_enemy_touch
will not be used because they are never called.
OoPpEe had the idea to introduce them to get rid of a SMC-specific issue we once had.
I explained the issue here
If you also decide to seperate the spike code between weapons and enemies, you must also include the function calls in your post.
Look into each monsters qc file to find them:
- boss
- hknight
- wizard
Otherwise you can safely delete those additional function clones completely and leave the monsters qc files as they are.
I am happy to see your passion in studying QuakeC
Please continue (and also register at inside3d, if you havent yet).
Best regards,
Seven
Comment
Comment