Jump to content

Jedi Academy turned 20 this year! We celebrated in a ton of different ways: mod contest, server event, podcast, etc. Thank you to all who have been a part of this game for the last two decades. Check out the anniversary content!

Read more

Welcome to JKHub

This community is dedicated to the games Star Wars: Jedi Outcast (2002) and Jedi Academy (2003). We host over 3,000 mods created by passionate fans around the world, and thousands of threads of people showcasing their works in progress and asking for assistance. From mods to art to troubleshooting help, we probably have it. If we don't, request or contribute!

Get started

This game turned 20 years old this year, and it is still one of the greatest Star Wars games of all time. If you're new or returning from a long hiatus, here are the basics of getting started with Star Wars Jedi Knight Jedi Academy in 2023.

Read more

Making Chat Distance Based


Fighter

You may want to make chat distance based instead of global for various reasons. Maybe you're making some kind of RP or RPG mod or something else. Whatever the reason may be, let's begin.

 

1. Open the SDK. Open the file g_cmds.c located in the Game(serverside) portion of the code. (The serverside might also be called JK2game in your SDK).

 

2. Search for the function G_Say. (Not G_SayTo)

 

3. Near the beginning of the function, declare an int like so:

int distance = 0;

As you can maybe tell, this int will be used for the maximum distance a person's chat can be heard from their location.

 

4. In the same function, search for

case SAY_ALL:

At the end of this case statement (before the break; of course) add this:

distance = 600;

replacing 600 with whatever you want to be the maximum distance a message can be heard from.

According to @@eezstreet: "52 units = roughly 1 meter".

 

5. At the end of the function, take a look at this:

for (j = 0; j < level.maxclients; j++) {
other = &g_entities[j];
G_SayTo( ent, other, mode, color, name, text, locMsg );
}

Change it to the following so that it checks the distance to all players on the server from you to them and shows them your message if they're in range:

for (j = 0; j < level.maxclients; j++) {
other = &g_entities[j];
if ( mode == SAY_ALL )
{
if ( Distance( ent->client->ps.origin, other->client->ps.origin ) <= distance )
{
G_SayTo( ent, other, mode, color, name, text, locMsg );
}
else
continue;
}
else
G_SayTo( ent, other, mode, color, name, text, locMsg );
}

And you're all set! Have fun!

 

Note: I adapted this from my own way of doing this which includes some other stuff. If you experience any problems using this, be sure to post a comment so we can try and figure it out.

 

Some things to try on your own:

  • Make distance based chat toggleable
  • Make a command that lets admins see out of range chat

User Feedback

Recommended Comments

There are no comments to display.



Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...