X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcheats.qc;h=5d6fba14fd8a2247aba7b8fd189635a2fe9f3ac2;hb=75a369ff551c693e05841164bfedc9c3d21838d0;hp=82bc9036158a3f343cf41c35108c2028d6c5c25a;hpb=56d4045219a33eaf7512e7c15261d1776eac4282;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cheats.qc b/qcsrc/server/cheats.qc index 82bc90361..5d6fba14f 100644 --- a/qcsrc/server/cheats.qc +++ b/qcsrc/server/cheats.qc @@ -1,17 +1,15 @@ #include "cheats.qh" -#include "_all.qh" #include "g_damage.qh" #include "race.qh" #include "../common/triggers/teleporters.qh" -#include "mutators/mutators_include.qh" +#include "mutators/all.qh" #include "weapons/tracing.qh" #include "../common/constants.qh" -#include "../common/deathtypes.qh" -#include "../common/effects.qh" +#include "../common/deathtypes/all.qh" #include "../common/util.qh" #include "../common/monsters/all.qh" @@ -22,10 +20,10 @@ #include "../common/triggers/func/breakable.qh" -#include "../csqcmodellib/sv_model.qh" +#include "../lib/csqcmodel/sv_model.qh" -#include "../warpzonelib/anglestransform.qh" -#include "../warpzonelib/util_server.qh" +#include "../lib/warpzone/anglestransform.qh" +#include "../lib/warpzone/util_server.qh" void CopyBody(float keepvelocity); @@ -65,7 +63,7 @@ void CheatShutdownClient() } float CheatsAllowed(float i, float argc, float fr) // the cheat gets passed as argument for possible future ACL checking -{ +{SELFPARAM(); // dead people cannot cheat if(self.deadflag != DEAD_NO) return 0; @@ -115,7 +113,7 @@ float CheatsAllowed(float i, float argc, float fr) // the cheat gets passed as a float num_autoscreenshot; void info_autoscreenshot_findtarget() -{ +{SELFPARAM(); entity e; e = find(world, targetname, self.target); if(!e) @@ -129,7 +127,7 @@ void info_autoscreenshot_findtarget() self.angles_y = a.y; // we leave Rick Roll alone } -void spawnfunc_info_autoscreenshot() +spawnfunc(info_autoscreenshot) { if(++num_autoscreenshot > autocvar_g_max_info_autoscreenshot) { @@ -142,7 +140,7 @@ void spawnfunc_info_autoscreenshot() } float CheatImpulse(float i) -{ +{SELFPARAM(); BEGIN_CHEAT_FUNCTION(); switch(i) { @@ -152,8 +150,7 @@ float CheatImpulse(float i) // shared with regular waypoint init, so this is not a cheat by itself if(!self.personal) { - self.personal = spawn(); - self.personal.classname = "personal_wp"; + self.personal = new(personal_wp); } self.personal.origin = self.origin; self.personal.v_angle = self.v_angle; @@ -283,11 +280,11 @@ float CheatImpulse(float i) e = self; Send_Effect(EFFECT_ROCKET_EXPLODE, e.origin, '0 0 0', 1); - sound(e, CH_SHOTS, W_Sound("rocket_impact"), VOL_BASE, ATTEN_NORM); + sound(e, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM); e2 = spawn(); setorigin(e2, e.origin); - RadiusDamage(e2, self, 1000, 0, 128, world, world, 500, DEATH_CHEAT, e); + RadiusDamage(e2, self, 1000, 0, 128, world, world, 500, DEATH_CHEAT.m_id, e); remove(e2); LOG_INFO("404 Sportsmanship not found.\n"); @@ -301,13 +298,12 @@ float CheatImpulse(float i) void DragBox_Think(); float drag_lastcnt; float CheatCommand(float argc) -{ +{SELFPARAM(); BEGIN_CHEAT_FUNCTION(); string cmd; cmd = argv(0); switch(cmd) { - entity e; float effectnum, f; vector start, end; entity oldself; @@ -341,7 +337,7 @@ float CheatCommand(float argc) effectnum = _particleeffectnum(argv(1)); W_SetupShot(self, false, false, "", CH_WEAPON_A, 0); traceline(w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, MOVE_NORMAL, self); - trailparticles(self, effectnum, w_shotorg, trace_endpos); + __trailparticles(self, effectnum, w_shotorg, trace_endpos); DID_CHEAT(); break; } @@ -362,7 +358,7 @@ float CheatCommand(float argc) } else { - e = spawn(); + entity e = spawn(); e.model = strzone(argv(1)); e.mdl = "rocket_explode"; e.health = 1000; @@ -373,10 +369,7 @@ float CheatCommand(float argc) e.angles = fixedvectoangles2(trace_plane_normal, v_forward); e.angles = AnglesTransform_ApplyToAngles(e.angles, '-90 0 0'); // so unrotated models work } - oldself = self; - self = e; - spawnfunc_func_breakable(); - self = oldself; + WITH(entity, self, e, spawnfunc_func_breakable(e)); // now, is it valid? if(f == 0) { @@ -406,23 +399,21 @@ float CheatCommand(float argc) } sprint(self, "Usage: sv_cheats 1; restart; cmd penalty 5.0 AHAHAHAHAHAHAH))\n"); break; - case "dragbox_spawn": + case "dragbox_spawn": { IS_CHEAT(0, argc, 0); - e = spawn(); - e.classname = "dragbox_box"; + entity e = new(dragbox_box); e.think = DragBox_Think; e.nextthink = time; e.solid = -1; // black - setmodel(e, "null"); // network it + setmodel(e, MDL_Null); // network it if(argc == 4) e.cnt = stof(argv(1)); else e.cnt = max(0, drag_lastcnt); - e.aiment = spawn(); - e.aiment.classname = "dragbox_corner_1"; + e.aiment = new(dragbox_corner_1); e.aiment.owner = e; - setmodel(e.aiment, "models/marker.md3"); + setmodel(e.aiment, MDL_MARKER); e.aiment.skin = 0; setsize(e.aiment, '0 0 0', '0 0 0'); if(argc == 4) @@ -433,10 +424,9 @@ float CheatCommand(float argc) setorigin(e.aiment, trace_endpos); } - e.enemy = spawn(); - e.enemy.classname = "dragbox_corner_2"; + e.enemy = new(dragbox_corner_2); e.enemy.owner = e; - setmodel(e.enemy, "models/marker.md3"); + setmodel(e.enemy, MDL_MARKER); e.enemy.skin = 1; setsize(e.enemy, '0 0 0', '0 0 0'); end = normalize(self.origin + self.view_ofs - e.aiment.origin); @@ -448,26 +438,24 @@ float CheatCommand(float argc) else setorigin(e.enemy, e.aiment.origin + 32 * end); - e.killindicator = spawn(); - e.killindicator.classname = "drag_digit"; + e.killindicator = new(drag_digit); e.killindicator.owner = e; setattachment(e.killindicator, e, ""); setorigin(e.killindicator, '0 0 -8'); - e.killindicator.killindicator = spawn(); - e.killindicator.killindicator.classname = "drag_digit"; + e.killindicator.killindicator = new(drag_digit); e.killindicator.killindicator.owner = e; setattachment(e.killindicator.killindicator, e, ""); setorigin(e.killindicator.killindicator, '0 0 8'); DID_CHEAT(); break; - case "dragpoint_spawn": + } + case "dragpoint_spawn": { IS_CHEAT(0, argc, 0); - e = spawn(); - e.classname = "dragpoint"; + entity e = new(dragpoint); e.think = DragBox_Think; e.nextthink = time; e.solid = 0; // nothing special - setmodel(e, "models/marker.md3"); + setmodel(e, MDL_MARKER); setsize(e, PL_MIN, PL_MAX); e.skin = 2; if(argc == 3) @@ -483,25 +471,24 @@ float CheatCommand(float argc) move_out_of_solid(e); } - e.killindicator = spawn(); - e.killindicator.classname = "drag_digit"; + e.killindicator = new(drag_digit); e.killindicator.owner = e; setattachment(e.killindicator, e, ""); setorigin(e.killindicator, '0 0 40'); - e.killindicator.killindicator = spawn(); - e.killindicator.killindicator.classname = "drag_digit"; + e.killindicator.killindicator = new(drag_digit); e.killindicator.killindicator.owner = e; setattachment(e.killindicator.killindicator, e, ""); setorigin(e.killindicator.killindicator, '0 0 56'); DID_CHEAT(); break; + } case "drag_remove": IS_CHEAT(0, argc, 0); RandomSelection_Init(); crosshair_trace(self); - for(e = world; (e = find(e, classname, "dragbox_box")); ) + for(entity e = world; (e = find(e, classname, "dragbox_box")); ) RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos)); - for(e = world; (e = find(e, classname, "dragpoint")); ) + for(entity e = world; (e = find(e, classname, "dragpoint")); ) RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos)); if(RandomSelection_chosen_ent) { @@ -521,9 +508,9 @@ float CheatCommand(float argc) { RandomSelection_Init(); crosshair_trace(self); - for(e = world; (e = find(e, classname, "dragbox_box")); ) + for(entity e = world; (e = find(e, classname, "dragbox_box")); ) RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos)); - for(e = world; (e = find(e, classname, "dragpoint")); ) + for(entity e = world; (e = find(e, classname, "dragpoint")); ) RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos)); if(RandomSelection_chosen_ent) { @@ -543,11 +530,11 @@ float CheatCommand(float argc) { f = fopen(argv(1), FILE_WRITE); fputs(f, "cmd drag_clear\n"); - for(e = world; (e = find(e, classname, "dragbox_box")); ) + for(entity e = world; (e = find(e, classname, "dragbox_box")); ) { fputs(f, strcat("cmd dragbox_spawn ", ftos(e.cnt), " \"", vtos(e.aiment.origin), "\" \"", vtos(e.enemy.origin), "\"\n")); } - for(e = world; (e = find(e, classname, "dragpoint")); ) + for(entity e = world; (e = find(e, classname, "dragpoint")); ) { fputs(f, strcat("cmd dragpoint_spawn ", ftos(e.cnt), " \"", vtos(e.origin), "\"\n")); } @@ -562,7 +549,7 @@ float CheatCommand(float argc) if(argc == 2) { f = fopen(argv(1), FILE_WRITE); - for(e = world; (e = find(e, classname, "dragbox_box")); ) + for(entity e = world; (e = find(e, classname, "dragbox_box")); ) { fputs(f, "{\n"); fputs(f, "\"classname\" \"trigger_race_checkpoint\"\n"); @@ -572,7 +559,7 @@ float CheatCommand(float argc) fputs(f, strcat("\"targetname\" \"checkpoint", ftos(e.cnt), "\"\n")); fputs(f, "}\n"); } - for(e = world; (e = find(e, classname, "dragpoint")); ) + for(entity e = world; (e = find(e, classname, "dragpoint")); ) { start = '0 0 0'; effectnum = 0; @@ -628,15 +615,15 @@ float CheatCommand(float argc) break; case "drag_clear": IS_CHEAT(0, argc, 0); - for(e = world; (e = find(e, classname, "dragbox_box")); ) + for(entity e = world; (e = find(e, classname, "dragbox_box")); ) remove(e); - for(e = world; (e = find(e, classname, "dragbox_corner_1")); ) + for(entity e = world; (e = find(e, classname, "dragbox_corner_1")); ) remove(e); - for(e = world; (e = find(e, classname, "dragbox_corner_2")); ) + for(entity e = world; (e = find(e, classname, "dragbox_corner_2")); ) remove(e); - for(e = world; (e = find(e, classname, "dragpoint")); ) + for(entity e = world; (e = find(e, classname, "dragpoint")); ) remove(e); - for(e = world; (e = find(e, classname, "drag_digit")); ) + for(entity e = world; (e = find(e, classname, "drag_digit")); ) remove(e); DID_CHEAT(); break; @@ -697,43 +684,37 @@ float CheatCommand(float argc) break; case "usetarget": IS_CHEAT(0, argc, 0); - e = self; - self = spawn(); + setself(spawn()); self.target = argv(1); - activator = e; + activator = this; SUB_UseTargets(); remove(self); - self = e; + setself(this); DID_CHEAT(); break; case "killtarget": IS_CHEAT(0, argc, 0); - e = self; - self = spawn(); + setself(spawn()); self.killtarget = argv(1); - activator = e; + activator = this; SUB_UseTargets(); remove(self); - self = e; + setself(this); DID_CHEAT(); break; case "teleporttotarget": IS_CHEAT(0, argc, 0); - e = self; - self = spawn(); + setself(new(cheattriggerteleport)); setorigin(self, self.origin); - self.classname = "cheattriggerteleport"; self.target = argv(1); teleport_findtarget(); if(!wasfreed(self)) { - Simple_TeleportPlayer(self, e); + Simple_TeleportPlayer(self, this); remove(self); - self = e; DID_CHEAT(); } - else - self = e; + setself(this); break; } @@ -755,7 +736,7 @@ void Drag_MoveDrag(entity from, entity to); .entity dragentity; float CheatFrame() -{ +{SELFPARAM(); BEGIN_CHEAT_FUNCTION(); // Dragging can be used as either a cheat, or a function for some objects. If sv_cheats is active, @@ -799,7 +780,7 @@ float CheatFrame() .float dragmovetype; float Drag(float force_allow_pick, float ischeat) -{ +{SELFPARAM(); BEGIN_CHEAT_FUNCTION(); // returns true when an entity has been picked up @@ -1034,8 +1015,9 @@ void Drag_Update(entity dragger) draggee.ltime = max(servertime + serverframetime, draggee.ltime); // fixes func_train breakage vector vecs = '0 0 0'; - if(dragger.weaponentity.movedir_x > 0) - vecs = dragger.weaponentity.movedir; + .entity weaponentity = weaponentities[0]; // TODO: unhardcode + if(dragger.(weaponentity).movedir.x > 0) + vecs = dragger.(weaponentity).movedir; vector dv = v_right * -vecs_y + v_up * vecs_z; @@ -1075,7 +1057,7 @@ void Drag_MoveDrag(entity from, entity to) } void DragBox_Think() -{ +{SELFPARAM(); if(self.aiment && self.enemy) { self.origin_x = (self.aiment.origin.x + self.enemy.origin.x) * 0.5; @@ -1091,19 +1073,19 @@ void DragBox_Think() if(self.cnt == -1) // actually race_place -1 { // show "10 10" for qualifying spawns - setmodel(self.killindicator, "models/sprites/10.spr32"); - setmodel(self.killindicator.killindicator, "models/sprites/10.spr32"); + setmodel(self.killindicator, MDL_NUM(10)); + setmodel(self.killindicator.killindicator, MDL_NUM(10)); } else if(self.cnt == -2) // actually race_place 0 { // show "10 0" for loser spawns - setmodel(self.killindicator, "models/sprites/10.spr32"); - setmodel(self.killindicator.killindicator, "models/sprites/0.spr32"); + setmodel(self.killindicator, MDL_NUM(10)); + setmodel(self.killindicator.killindicator, MDL_NUM(0)); } else { - setmodel(self.killindicator, strcat("models/sprites/", ftos(self.cnt % 10), ".spr32")); - setmodel(self.killindicator.killindicator, strcat("models/sprites/", ftos(floor(self.cnt / 10)), ".spr32")); + setmodel(self.killindicator, MDL_NUM(self.cnt % 10)); + setmodel(self.killindicator.killindicator, MDL_NUM(floor(self.cnt / 10))); } self.nextthink = time;