The easiest though most time-consuming way I've found so far is to manually go in and add each patch. The problem with the patches out there are that they rely on you using the base code, so after you install one patch, the rest cannot be automatically used, anyway, as the line numbers no longer match with what the patchcode says to use.
For the patch files, they have one or more parts that look kinda like this: (between the ================ lines)
======================================================
diff -ur Rom24/src/act_info.c rom24_colour_v2.0/src/act_info.c
--- Rom24/src/act_info.c Thu Jul 18 13:43:13 1996
+++ rom24_colour_v2.0/src/act_info.c Sun May 3 18:23:44 1998
@@ -1035,21 +1035,22 @@
if ( arg1[0] == '\0' || !str_cmp( arg1, "auto" ) )
{
/* 'look' or 'look auto' */
- send_to_char( ch->in_room->name, ch );
+ sprintf( buf, "{s%s", ch->in_room->name );
+ send_to_char( buf, ch );
if (IS_IMMORTAL(ch) && (IS_NPC(ch) || IS_SET(ch->act,PLR_HOLYLIGHT)))
{
- sprintf(buf," [Room %d]",ch->in_room->vnum);
+ sprintf(buf," {r[{RRoom %d{r]",ch->in_room->vnum);
send_to_char(buf,ch);
}
- send_to_char( "\n\r", ch );
+ send_to_char( "{x\n\r", ch );
if ( arg1[0] == '\0'
|| ( !IS_NPC(ch) && !IS_SET(ch->comm, COMM_BRIEF) ) )
{
- send_to_char( " ",ch);
- send_to_char( ch->in_room->description, ch );
+ sprintf( buf, "{S %s{x", ch->in_room->description );
+ send_to_char( buf, ch );
}
if ( !IS_NPC(ch) && IS_SET(ch->act, PLR_AUTOEXIT) )
======================================================
It doesn't have the =========== lines in it, I just used and will use those to show you what it looks like.
You can open the patches in something like notepad, and then view it.
The header of each indivudual part in the file:
========================================
diff -ur Rom24/src/act_info.c rom24_colour_v2.0/src/act_info.c
--- Rom24/src/act_info.c Thu Jul 18 13:43:13 1996
+++ rom24_colour_v2.0/src/act_info.c Sun May 3 18:23:44 1998
========================================
shows you what filename you need to be editing, in this example, it's act_info.c
The parts with the @@ symbols shows where the patch would have originally tried to make changes
========================================
@@ -1035,21 +1035,22 @@
========================================
would have been at line 1035
It's always good to try and use these numbers as a guide to show you where you should be looking, though after a few patches, these numbers may be so far off that they're not useful anymore, and it might be more worthwhile to search for the bits of code that it's asking you to change...
Now, to the changes:
=======================================
@@ -1035,21 +1035,22 @@
if ( arg1[0] == '\0' || !str_cmp( arg1, "auto" ) )
{
/* 'look' or 'look auto' */
- send_to_char( ch->in_room->name, ch );
+ sprintf( buf, "{s%s", ch->in_room->name );
+ send_to_char( buf, ch );
if (IS_IMMORTAL(ch) && (IS_NPC(ch) || IS_SET(ch->act,PLR_HOLYLIGHT)))
{
=======================================
^This is the first set of changes in my example above.
=======================================
@@ -1035,21 +1035,22 @@
if ( arg1[0] == '\0' || !str_cmp( arg1, "auto" ) )
{
/* 'look' or 'look auto' */
=======================================
This bit of text tells you where you should be looking, you need to find the line that has
if ( arg1[0] == '\0' || !str_cmp( arg1, "auto" ) )
on it, then follow down until you're AFTER the line with
/* 'look' or 'look auto' */
That's where the first changes will be made.
If there is a -, it means remove that line (it gives the text on the line that needs to be removed, also)
If there is a +, it means add that line (it gives the text on the line that needs to be added, also)
If there is no -/+ beside the line, it isn't added or removed, it's used to show you what you should see on the lines before or after the lines of changes you made.
Let me try to do this as an example
The original code for the change above is:
==========================================================
if ( arg1[0] == '\0' || !str_cmp( arg1, "auto" ) )
{
/* 'look' or 'look auto' */
send_to_char( ch->in_room->name, ch );
if (IS_IMMORTAL(ch) && (IS_NPC(ch) || IS_SET(ch->act,PLR_HOLYLIGHT)))
{
==========================================================
AFTER the changes, it should look like this
==========================================================
if ( arg1[0] == '\0' || !str_cmp( arg1, "auto" ) )
{
/* 'look' or 'look auto' */
sprintf( buf, "{s%s", ch->in_room->name );
send_to_char( buf, ch );
if (IS_IMMORTAL(ch) && (IS_NPC(ch) || IS_SET(ch->act,PLR_HOLYLIGHT)))
{
==========================================================
You continue down the file, making all the changes it shows you to make.
Things from one @@ area to the next should all be in a straight line down the code.
The next @@ means there's a jump in the code that has no changes made to it.
When you hit a new diff area, it means you're done with the current file you were working on, and the new file to have changes made to it are listed in that diff part, as it was in the first.
I used Lope's color code patch for the example above.
I, myself, have manually added Lope's color code patch, and a copyover patch that Erwin Andreasen provided on a website somewhere. Both patches work just fine and dandy.
I know my way of explaining can be confusing, but hopefully what I said will help you anyway. I recommend just reading the patch files in notepad, and perhaps you'll get an idea of how to add them manually. I figured it out without any faqs to do so, heh, didn't have internet at the time, but it's easy to understand once you do a few line changes. |