Thread: Keyring
View Single Post
  #4  
Old 09-29-2008, 07:17 AM
Angelox
AX Classic Developer
 
Join Date: May 2006
Location: filler
Posts: 2,049
Default

Here's a fix for what I think were non working clicky-portals - what would happen is, for instance if I clicked on the zin to chariasis, I'd get the 'locked' message and zone anyways (any clicky zone that required a key would return 'locked' and port you anyway);

in doors.cpp at around line 287 replace this;
Code:
    if (opentype == 58 && strncmp(dest_zone,"NONE",strlen("NONE")) != 0 ){ // Teleport door!
        if ( strncmp(dest_zone,zone_name,strlen(zone_name)) == 0) {
  			//dunno why, but this dosent seem to work all the time:
            //sender->GMMove(dest_x,dest_y,dest_z);
           	sender->MovePC(dest_x, dest_y, dest_z, dest_heading);
        }
        else {
           	sender->MovePC(dest_zone, dest_x, dest_y, dest_z, dest_heading);
        }
    }
}
with this;

Code:
    if (opentype == 58 && strncmp(dest_zone,"NONE",strlen("NONE")) != 0 ){ // Teleport door! 
        if (( strncmp(dest_zone,zone_name,strlen(zone_name)) == 0) && (keyneeded && keyneeded == playerkey)) {
		sender->KeyRingAdd(playerkey);
           	sender->MovePC(dest_x, dest_y, dest_z, dest_heading);
	}
        if (( strncmp(dest_zone,zone_name,strlen(zone_name)) == 0) && (!keyneeded)) {
           	sender->MovePC(dest_x, dest_y, dest_z, dest_heading);
	}
       	else if (( !IsDoorOpen() || opentype == 58 ) && (keyneeded && keyneeded == playerkey)) {
             	sender->KeyRingAdd(playerkey);
		sender->MovePC(dest_zone, dest_x, dest_y, dest_z, dest_heading);
	}
       	if (( !IsDoorOpen() || opentype == 58 ) && (!keyneeded)) {  
    		sender->MovePC(dest_zone, dest_x, dest_y, dest_z, dest_heading);
  }
 }
}
I tested under many circumstances (PoK stone, Charasis, Paineel entrance, FrozenShadow mirrors, etc.) , seems to work ok.
You need '#gm off' to see keys work properly
Reply With Quote