User panel stuff on forum
  64 posts on 3 pages  First page123Last page
General Discussion
2013-04-08, 19:48
Moderator
383 posts

Registered:
Jan 2006
Hello everyone.

A week ago Razor[X] got banned for using WallHack cheat in official games from TD3 and his opponents got WO.
News on ThunderDome 3 website.

We received a number of requests to provide details of it and I told that will share something in a week.
However a week passed but we were not able to prepare good quality video. So I decided to share what we have.

I can share few low-quality videos right now and post more videos created by Jissse in few days.

I really recommend to check the demos first.

DM6:
Demo
Youtube video.

Ztndm3:
Demo
Youtube video.
With best wishes, B1aze.
2013-04-08, 20:00
Member
55 posts

Registered:
Jan 2009
It is like he doesn´t even try to hide it.
2013-04-08, 20:08
Moderator
383 posts

Registered:
Jan 2006
Yes, the video speaks for itself.

Feel free to post your favorite moments
With best wishes, B1aze.
2013-04-08, 20:17
Member
286 posts

Registered:
Sep 2012
Also three more videos here:
DM6
DM2
ZTN

You can't see that much the enemy because of youtube compression, but you should understand what happens. Plus I have way too much work to capture that shit again.
2013-04-08, 20:59
Member
92 posts

Registered:
Aug 2007
Sad story.
2013-04-09, 02:46
Member
111 posts

Registered:
Jul 2006
great news, played against razor in 4on4 mix couple of times,

I remember several situations thinking to myself "100% wallhack" ...




Unfortunately, there's a couple of players still around who give me this feeling, and probably are using WH,


not naming names, but these videos are tempting me to expose them....






cheating in qw is the most lowlife thing you can do , cheating in games at all is really lame, but in qw? especially in 2013..
2013-04-09, 07:16
Member
152 posts

Registered:
Feb 2012
It was such a shame to play 4v4 pracc with him and then find out the next day that he cheats . I even thought it was an april fool's day joke... Seemed to be a decent guy on mumble. But the videos are undeniable, wallhack is evident. Btw he still states he didn't use it, lol. While even demos from that pracc show that he used wh...
It's really disgusting.
“If I wanted you to understand it, I would have explained it better.” (c) Johan Cruyff
2013-04-09, 08:42
News Writer
1267 posts

Registered:
Jun 2007
Eh, I dont see why you cant be a decent guy on mumble and at the same time use wallhack

Aside from that, it is very lame to cheat.
Chosen
2013-04-09, 09:08
Member
152 posts

Registered:
Feb 2012
Hooraytio wrote:
Eh, I dont see why you cant be a decent guy on mumble and at the same time use wallhack

Aside from that, it is very lame to cheat.


I guess it's just my prejudice against cheaters. Hard not to despise something you've been fighting against for years in another community... I can "understand" when it's "for fun" (it's idiotic, but at least humour as motivation is barely passable), but to actually use it to "win" and lie to people when caught is just as pathetic as it's despicable. So yeah, I subconsciously expect such people to give themselves away when talking Nothing's that easy, unfortunately...
“If I wanted you to understand it, I would have explained it better.” (c) Johan Cruyff
2013-04-09, 09:14
Administrator
647 posts

Registered:
Nov 2008
LOL and I almost lost to him once.

Hope he gets banned from everything qw-related! And don't play mixes/pracs with him =)
2013-04-09, 13:29
Member
459 posts

Registered:
Mar 2008
Andeh wrote:
LOL and I almost lost to him once.

Hope he gets banned from everything qw-related! And don't play mixes/pracs with him =)


/name Razor[Y]
/cfg_save

https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSTsHyAOL3tO6_yEtGZRzgmX4C2D4RKD5eeIhuVnoxUB7LX6Xd4Zg
2013-04-09, 15:18
Member
286 posts

Registered:
Sep 2012
You think he's already been banned 24 times ?
2013-04-09, 16:29
Member
357 posts

Registered:
Mar 2006
it's pretty easy to code in the server wall hacking restrictions (sv_cullentities).
DarkPlaces and FTE already do this.
if one wants me to post a plug-in for MVSD then i can...
2013-04-09, 19:54
Member
111 posts

Registered:
Jul 2006
SputnikUtah wrote:
it's pretty easy to code in the server wall hacking restrictions (sv_cullentities).
DarkPlaces and FTE already do this.
if one wants me to post a plug-in for MVSD then i can...




sounds great, please do it right away man...


but are you sure a simple openGL injection hack can't circumvent it ?


anyway, please do this, I play less and less 4on4 mixes nowaday,

only because it feels like several players are using WH, mostly players who were always OK or decent, but somehow nowadays they got a lot "better" , they always know where you are ,

even if there is no possible way of them knowing it or guessing it...

(you don't make a sound to give away position, and there is no reason for them to check there at that particular moment , and it keeps on happening with the same players )
2013-04-09, 19:58
Member
459 posts

Registered:
Mar 2008
kingpin wrote:
SputnikUtah wrote:
it's pretty easy to code in the server wall hacking restrictions (sv_cullentities).
DarkPlaces and FTE already do this.
if one wants me to post a plug-in for MVSD then i can...




sounds great, please do it right away man...


but are you sure a simple openGL injection hack can't circumvent it ?


anyway, please do this, I play less and less 4on4 mixes nowaday,

only because it feels like several players are using WH, mostly players who were always OK or decent, but somehow nowadays they got a lot "better" , they always know where you are ,

even if there is no possible way of them knowing it or guessing it...

(you don't make a sound to give away position, and there is no reason for them to check there at that particular moment , and it keeps on happening with the same players )


for the love of everything that keeps qw sacred: do whatever you can to bring kp back in the mix! And no, I'm not joking or being sarcastic here.
2013-04-09, 20:17
Member
357 posts

Registered:
Mar 2006
in sv_ents.c at the bottom replace sv_writeentititestoclients with this


#define offsetrandom(MIN,MAX) ((rand() & 32767) * (((MAX)-(MIN)) * (1.0f / 32767.0f)) + (MIN))

extern cvar_t sv_cullentities;
extern trace_t SV_ClipMoveToEntity (edict_t *ent, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end);

qbool SV_InvisibleToClient(edict_t *viewer, edict_t *seen)
{
int i;
trace_t tr;
vec3_t start;
vec3_t end;
qbool player;

if (seen->v.movetype == MOVETYPE_PUSH ) //dont cull doors and plats
return false;

i = NUM_FOR_EDICT(seen);
player = (i >= 1 && i <= MAX_CLIENTS);

//1 = only check player models, 2 = check all ents
if (sv_cullentities.value == 1 && !player)
return false;

memset (&tr, 0, sizeof(tr));
tr.fraction = 1;

start[0] = viewer->v.origin[0];
start[1] = viewer->v.origin[1];
start[2] = viewer->v.origin[2] + viewer->v.view_ofs[2];

//aim straight at the center of "seen" from our eyes
end[0] = 0.5 * (seen->v.mins[0] + seen->v.maxs[0]);
end[1] = 0.5 * (seen->v.mins[1] + seen->v.maxs[1]);
end[2] = 0.5 * (seen->v.mins[2] + seen->v.maxs[2]);

tr = SV_ClipMoveToEntity (sv.edicts, start, vec3_origin, vec3_origin, end);
if (tr.fraction == 1)// line hit the ent
return false;

//last attempt to eliminate any flaws...
if (player || sv_cullentities.value != 1)
{
for (i = 0; i < 64; i++)
{
end[0] = seen->v.origin[0] + offsetrandom(seen->v.mins[0], seen->v.maxs[0]);
end[1] = seen->v.origin[1] + offsetrandom(seen->v.mins[1], seen->v.maxs[1]);
end[2] = seen->v.origin[2] + offsetrandom(seen->v.mins[2], seen->v.maxs[2]);

tr = SV_ClipMoveToEntity (sv.edicts, start, vec3_origin, vec3_origin, end);
if (tr.fraction == 1)// line hit the ent
{
// Com_DPrintf (va("found ent in %i hits\n", i));
return false;
}
}
}

return true;
}

/*
=============
SV_WriteEntitiesToClient

Encodes the current state of the world as
a svc_packetentities messages and possibly
a svc_nails message and
svc_playerinfo messages
=============
*/

void SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg, qbool recorder)
{
int e, i, max_packet_entities;
packet_entities_t *pack;
client_frame_t *frame;
entity_state_t *state;
edict_t *clent;
client_t *cl;
edict_t *ent;
vec3_t org;
byte *pvs;
int hideent;

// this is the frame we are creating
frame = &client->frames[client->netchan.incoming_sequence & UPDATE_MASK];

// find the client's PVS
clent = client->edict;
pvs = NULL;
if (!recorder)
{
VectorAdd (clent->v.origin, clent->v.view_ofs, org);
pvs = CM_FatPVS (org);
if (client->fteprotocolextensions & FTE_PEXT_256PACKETENTITIES)
max_packet_entities = 256;
else
max_packet_entities = MAX_PACKET_ENTITIES;
}
else
{
max_packet_entities = MAX_MVD_PACKET_ENTITIES;

for (i=0, cl=svs.clients ; i<MAX_CLIENTS ; i++,cl++)
{
if (cl->state != cs_spawned)
continue;

if (cl->spectator)
continue;

VectorAdd (cl->edict->v.origin, cl->edict->v.view_ofs, org);

// disconnect --> "is it correct?"
//if (pvs == NULL)
pvs = CM_FatPVS (org);
//else
// SV_AddToFatPVS (org, sv.worldmodel->nodes, false);
// <-- disconnect
}
}
if (clent && client->disable_updates_stop > realtime)
{ // Vladis
int where = TruePointContents(clent->v.origin); // server flash should not work underwater
disable_updates = !ISUNDERWATER(where);
}
else
{
disable_updates = false;
}

// send over the players in the PVS
SV_WritePlayersToClient (client, clent, pvs, msg);

// put other visible entities into either a packet_entities or a nails message
pack = &frame->entities;
pack->num_entities = 0;

numnails = 0;

if (fofs_hideentity)
hideent = ((eval_t *)((byte *)&(clent)->v + fofs_hideentity))->_int / pr_edict_size;
else
hideent = 0;

if (!disable_updates)
{// Vladis, server flash

// QW protocol can only handle 512 entities. Any entity with number >= 512 will be invisible
// From ZQuake.
// max_edicts = min(sv.num_edicts, MAX_EDICTS);

for (e = pr_nqprogs ? 1 : MAX_CLIENTS+1, ent=EDICT_NUM(e);
e < sv.num_edicts/*max_edicts*/;
e++, ent = NEXT_EDICT(ent))
{
if (pr_nqprogs) {
// don't send the player's model to himself
if (e < MAX_CLIENTS + 1 && svs.clients[e-1].state != cs_free)
continue;
}

// ignore ents without visible models
if (!ent->v.modelindex || !*
#ifdef USE_PR2
PR2_GetString(ent->v.model)
#else
PR_GetString(ent->v.model)
#endif
)
continue;

if (e == hideent)
continue;

if (!(int)sv_demoNoVis.value || !recorder)
{
// ignore if not touching a PV leaf
for (i=0 ; i < ent->e->num_leafs ; i++)
if (pvs[ent->e->leafnums[i] >> 3] & (1 << (ent->e->leafnums[i]&7) ))
break;

if (i == ent->e->num_leafs)
continue; // not visible

if (sv_cullentities.value && SV_InvisibleToClient(clent, ent))
continue;
}

if (SV_AddNailUpdate (ent))
continue; // added to the special update list

// add to the packetentities
if (pack->num_entities == max_packet_entities)
continue; // all full

state = &pack->entities[pack->num_entities];
pack->num_entities++;

state->number = e;
state->flags = 0;
VectorCopy (ent->v.origin, state->origin);
VectorCopy (ent->v.angles, state->angles);
state->modelindex = ent->v.modelindex;
state->frame = ent->v.frame;
state->colormap = ent->v.colormap;
state->skinnum = ent->v.skin;
state->effects = TranslateEffects(ent);
}
} // server flash
// encode the packet entities as a delta from the
// last packetentities acknowledged by the client

SV_EmitPacketEntities (client, pack, msg);

// now add the specialized nail update
SV_EmitNailUpdate (msg, recorder);

// Translate NQ progs' EF_MUZZLEFLASH to svc_muzzleflash
if (pr_nqprogs)
for (e=1, ent=EDICT_NUM(e) ; e < sv.num_edicts ; e++, ent = NEXT_EDICT(ent))
{
// ignore ents without visible models
if (!ent->v.modelindex || !*PR_GetString(ent->v.model))
continue;

// ignore if not touching a PV leaf
for (i=0 ; i < ent->e->num_leafs ; i++)
if (pvs[ent->e->leafnums[i] >> 3] & (1 << (ent->e->leafnums[i]&7) ))
break;

if ((int)ent->v.effects & EF_MUZZLEFLASH) {
ent->v.effects = (int)ent->v.effects & ~EF_MUZZLEFLASH;
MSG_WriteByte (msg, svc_muzzleflash);
MSG_WriteShort (msg, e);
}
}
}


Actually thats ezQuake but it can be ported fairly easy.
The majic is the SV_InvisibleToClient function
and the 1 liner
"if (sv_cullentities.value && SV_InvisibleToClient(clent, ent))" continue;
All it does is scan from the players pov all visible entities. If the entity is culled by a wall then the information about that entity is never sent to the player.
So EVEN if u had transparent walls, you wouldnt see anything behind it. but then this would break Multiple view demos
2013-04-10, 06:33
News Writer
1267 posts

Registered:
Jun 2007
Seriously tho kingpin, who is cheating?
Its pretty easy to sit here and say you avoid mixing because some players might be using wallhack.
Either say who it is and provide some demos or just be silent.

Its not like there are thousands of spots to check on dm3 either and also, if you keep hanging around in those spots they will keep checking them.
I am sorry but from what you are saying it sounds more like you are butthurt that your sneaking isnt working and not that the other players are cheating.

Also, if some of them who you think are cheating currently play in EQL it would be great to find out so it can be checked out.
Chosen
2013-04-10, 19:46
Administrator
1025 posts

Registered:
Apr 2006
I've been thinking about fixing it too SputnikUtah, however the issue isn't purely as simple as looking at a persons POV. You gotta take other aspects into consideration as network latency, partially visible areas etc.

Imagine a map with a long line of pillars. Each pillar is just a tiny bit wider than a player mdl. You stand on one side of the pillars and a player is running on the other side of them. Imagine how good this will work with a "dumb" implementation.

Anyway, hopefully Spike/LordHavoc already solved this in a decent way. Why would you break MVD's? Server records MVD's and server will continue to know "everything" so np there.

EDIT: It looks like that code is the "first attempt" by rOOk, IIRC, and not particularly efficient.
2013-04-11, 10:59
Member
1435 posts

Registered:
Jan 2006
I remember playing at XS4ALL FFA on some custom map with see-through stairs (like those in dm6 SSG area), hiding below the staircase, while the enemies kept walking the stairs up and down at the other side, so I was watching them through the stair (bars). They kept disappearing and reappearing randomly and I always suspected this feature to be the cause. I never consulted it with anybody tho, so might have been something else too, perhaps?

Edit: http://demos.quakeworld.nu/download.php?id=128

(Edited 2013-05-03, 06:36)
2013-04-11, 11:54
Administrator
1025 posts

Registered:
Apr 2006
JohnNy_cz wrote:
I remember playing at XS4ALL FFA on some custom map with see-through stairs (like those in dm6 SSG area), hiding below the staircase, while the enemies kept walking the stairs up and down at the other side, so I was watching them through the stair (bars). They kept disappearing and reappearing randomly and I always suspected this feature to be the cause. I never consulted it with anybody tho, so might have been something else too, perhaps?

IIRC it's exactly the feature mentioned that's causing it. I think LH solved it by like having a "lookahead" feature and some timer with a pretty low value, to prevent this kind of things. It should still render wallhacks pretty unusable, but I guess as the cost of showing players for a small period of time after they've disappeared from screen (if you're using wallhack that is).
2013-04-12, 07:19
Member
357 posts

Registered:
Mar 2006
oops your right that is an old version
here's the newer

qboolean SV_InvisibleToClient(edict_t *viewer, edict_t *seen)
{
int i;
trace_t tr;
vec3_t start;
vec3_t end;
extern trace_t SV_ClipMoveToEntity (edict_t *ent, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end);
// extern qboolean CL_Clip_Test(vec3_t org);
int it;

if (seen->tracetimer > sv.time)
return false;

it = (int)(seen->v.items);

//R00k: DM players want to see the Quad/Pent glow. Dont cull them at the moment...(fixme)
if ((strcmp(pr_strings + seen->v.classname, "player" == 0) && ((it & IT_QUAD) || (it & IT_INVULNERABILITY)))
{
return false;
}

if (sv_cullentities.value == 1) //1 only check player models, 2 = check all ents
{
if (strcmp(pr_strings + seen->v.classname, "player")
return false;
}
/*
if (seen->v.movetype == MOVETYPE_PUSH )
{
if (sv_cullentities.value == 3)
{
if (CL_Clip_Test(seen->v.origin)== false)
return false;
}
else
return false;
}
*/
memset (&tr, 0, sizeof(tr));
tr.fraction = 1;

start[0] = viewer->v.origin[0];
start[1] = viewer->v.origin[1];
start[2] = viewer->v.origin[2] + viewer->v.view_ofs[2];

//aim straight at the center of "seen" from our eyes
end[0] = 0.5 * (seen->v.mins[0] + seen->v.maxs[0]);
end[1] = 0.5 * (seen->v.mins[1] + seen->v.maxs[1]);
end[2] = 0.5 * (seen->v.mins[2] + seen->v.maxs[2]);

tr = SV_ClipMoveToEntity (sv.edicts, start, vec3_origin, vec3_origin, end);

if (tr.fraction == 1)// line hit the ent
{
seen->tracetimer = sv.time + 1;
return false;
}

memset (&tr, 0, sizeof(tr));
tr.fraction = 1;

//last attempt to eliminate any flaws...
if ((!strcmp(pr_strings + seen->v.classname, "player") || (sv_cullentities.value > 1))
{
for (i = 0; i < 64; i++)
{
end[0] = seen->v.origin[0] + offsetrandom(seen->v.mins[0], seen->v.maxs[0]);
end[1] = seen->v.origin[1] + offsetrandom(seen->v.mins[1], seen->v.maxs[1]);
end[2] = seen->v.origin[2] + offsetrandom(seen->v.mins[2], seen->v.maxs[2]);

tr = SV_ClipMoveToEntity (sv.edicts, start, vec3_origin, vec3_origin, end);
if (tr.fraction == 1)// line hit the ent
{
//Con_DPrintf (va("found ent in %i hits\n", i));
seen->tracetimer = sv.time + 1;
return false;
}
}
}
return true;
}


BTW i am r00k..

edit: i havent looked at this code in several years, though it seems that an ent seen by someone else will reset that ent's tracetimer, even if u cant see it
so like
<a> | <b>
.....<c>.....
player A cant see B but both see C. C is reseting player B's tracetimer as visible, so player A (who is wall hacking) can now see player B.. hmm
its 2:29am so im a little fuzzy..

looks like im going to have to make the tracetimer an array so that a to b is 0 but b to c is delayed by 0.2 secs.. or just remove the delay
2013-04-12, 08:16
Member
35 posts

Registered:
Feb 2011
kingpin wrote:
SputnikUtah wrote:
it's pretty easy to code in the server wall hacking restrictions (sv_cullentities).
DarkPlaces and FTE already do this.
if one wants me to post a plug-in for MVSD then i can...




sounds great, please do it right away man...


but are you sure a simple openGL injection hack can't circumvent it ?


anyway, please do this, I play less and less 4on4 mixes nowaday,

only because it feels like several players are using WH, mostly players who were always OK or decent, but somehow nowadays they got a lot "better" , they always know where you are ,

even if there is no possible way of them knowing it or guessing it...

(you don't make a sound to give away position, and there is no reason for them to check there at that particular moment , and it keeps on happening with the same players )



Put the names on the table.
2013-04-12, 12:19
Member
386 posts

Registered:
Apr 2006
overflow wrote:
Put the names on the table.

That's super-dangerous, especially in a small community where everyone knows each other. If you think someone's a cheater, then you should gather some evidence and analyse it. If someone's willing to do that, then they could contact kp privately for some names.
2013-04-12, 12:31
Administrator
2059 posts

Registered:
Jan 2006
Stev wrote:
overflow wrote:
Put the names on the table.

That's super-dangerous, especially in a small community where everyone knows each other. If you think someone's a cheater, then you should gather some evidence and analyse it. If someone's willing to do that, then they could contact kp privately for some names.

Wise words, i concur.
www.facebook.com/QuakeWorld
2013-04-12, 13:03
Member
35 posts

Registered:
Feb 2011
Stev wrote:
overflow wrote:
Put the names on the table.

That's super-dangerous, especially in a small community where everyone knows each other. If you think someone's a cheater, then you should gather some evidence and analyse it. If someone's willing to do that, then they could contact kp privately for some names.


Then I hope somebody is willing to do that, otherwise I would prefer to know the names, because then on this case the playe would:
a) defend himself
b) deny, but probably will also stop using it
2013-04-12, 13:55
Member
1435 posts

Registered:
Jan 2006
overflow wrote:
because then on this case the playe would:
a) defend himself


Welcome to the civilized world, where people prove someone is guilty, and not the other way, as proving that you're innocent is often impossible.

More reading: http://en.wikipedia.org/wiki/Legal_burden_of_proof
"the necessity of proof always lies with the person who lays charges."
2013-04-12, 14:25
Member
35 posts

Registered:
Feb 2011
JohnNy_cz wrote:
overflow wrote:
because then on this case the playe would:
a) defend himself


Welcome to the civilized world, where people prove someone is guilty, and not the other way, as proving that you're innocent is often impossible.

More reading: http://en.wikipedia.org/wiki/Legal_burden_of_proof
"the necessity of proof always lies with the person who lays charges."


Oh shit. I thought we were still monkeys.
2013-04-12, 19:00
Member
370 posts

Registered:
Mar 2008
overflow wrote:
JohnNy_cz wrote:
overflow wrote:
because then on this case the playe would:
a) defend himself


Welcome to the civilized world, where people prove someone is guilty, and not the other way, as proving that you're innocent is often impossible.

More reading: http://en.wikipedia.org/wiki/Legal_burden_of_proof
"the necessity of proof always lies with the person who lays charges."


Oh shit. I thought we were still monkeys.


Technically, We are all Monkeys.
2013-04-13, 11:17
Administrator
647 posts

Registered:
Nov 2008
d4rin wrote:
overflow wrote:
JohnNy_cz wrote:
overflow wrote:
because then on this case the playe would:
a) defend himself


Welcome to the civilized world, where people prove someone is guilty, and not the other way, as proving that you're innocent is often impossible.

More reading: http://en.wikipedia.org/wiki/Legal_burden_of_proof
"the necessity of proof always lies with the person who lays charges."


Oh shit. I thought we were still monkeys.


Technically, We are all Monkeys.


DANCE MONKEYS DANCE
2013-04-13, 11:18
Administrator
647 posts

Registered:
Nov 2008
https://www.youtube.com/watch?v=XD6-rcxMiw0
  64 posts on 3 pages  First page123Last page