mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Fixed the bug where an NPC would show up on an item dialogue
Refactored both item and double item dialogues
This commit is contained in:
parent
300b714048
commit
7c74bfcb71
4 changed files with 73 additions and 71 deletions
|
|
@ -172,7 +172,7 @@ public class IslwynDialogue extends DialoguePlugin {
|
||||||
stage = 21;
|
stage = 21;
|
||||||
break;
|
break;
|
||||||
case 21:
|
case 21:
|
||||||
interpreter.sendDoubleItemMessage(RovingElves.CRYSTAL_BOW_FULL, RovingElves.CRYSTAL_SHIELD_FULL, "Islwyn shows you a crystal bow and a crystal shield.");
|
interpreter.sendDoubleItemMessage(RovingElves.CRYSTAL_BOW_FULL.getId(), RovingElves.CRYSTAL_SHIELD_FULL.getId(), "Islwyn shows you a crystal bow and a crystal shield.");
|
||||||
stage = 22;
|
stage = 22;
|
||||||
break;
|
break;
|
||||||
case 22:
|
case 22:
|
||||||
|
|
|
||||||
|
|
@ -1842,8 +1842,8 @@ fun sendItemDialogue(player: Player, item: Any, message: String) {
|
||||||
*/
|
*/
|
||||||
fun sendDoubleItemDialogue(player: Player, item1: Any, item2: Any, message: String) {
|
fun sendDoubleItemDialogue(player: Player, item1: Any, item2: Any, message: String) {
|
||||||
when (item1) {
|
when (item1) {
|
||||||
is Item -> player.dialogueInterpreter.sendDoubleItemMessage(item1, item2 as Item, message)
|
is Item -> player.dialogueInterpreter.sendDoubleItemMessage(item1, item2 as Item, *splitLines(message))
|
||||||
is Int -> player.dialogueInterpreter.sendDoubleItemMessage(item1, item2 as Int, message)
|
is Int -> player.dialogueInterpreter.sendDoubleItemMessage(item1, item2 as Int, *splitLines(message))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -326,61 +326,37 @@ public final class DialogueInterpreter {
|
||||||
* @param itemId The item id.
|
* @param itemId The item id.
|
||||||
*/
|
*/
|
||||||
public Component sendItemMessage(int itemId, String... messages) {
|
public Component sendItemMessage(int itemId, String... messages) {
|
||||||
if(1 <= messages.length && messages.length < 4) {
|
// Select interface based on number of messages - 241 (1 line) to 244 (4 lines)
|
||||||
ArrayList<String> packedMessages = new ArrayList();
|
int interfaceId = 240 + messages.length;
|
||||||
for(int i = 0; i < messages.length/2; i++) {
|
|
||||||
packedMessages.add(messages[i] + "<br>" + messages[i+1]);
|
|
||||||
}
|
|
||||||
if(messages.length % 2 == 1) {
|
|
||||||
packedMessages.add(messages[messages.length-1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
int interfaceId = 241 + (packedMessages.size() - 1);
|
|
||||||
player.getInterfaceManager().openChatbox(interfaceId);
|
player.getInterfaceManager().openChatbox(interfaceId);
|
||||||
player.getPacketDispatch().sendItemOnInterface(itemId, 1, interfaceId, 1);
|
player.getPacketDispatch().sendInterfaceConfig(interfaceId, 1, false);
|
||||||
ItemDefinition itemDef = ItemDefinition.forId(itemId);
|
player.getPacketDispatch().sendInterfaceConfig(interfaceId, 2, false);
|
||||||
player.getPacketDispatch().sendAngleOnInterface(interfaceId, 1, itemDef.getModelZoom() / 2, itemDef.getModelRotationX(), itemDef.getModelRotationY());
|
// Hide or empty the title, since double item messages do not have them. (Child 3)
|
||||||
player.getPacketDispatch().sendString("", interfaceId, 3);
|
player.getPacketDispatch().sendString("", interfaceId, 3);
|
||||||
for(int i = 0; i < packedMessages.size(); i++) {
|
// Loop and print messages on Child 4,5,6,7 based on messages count.
|
||||||
//System.out.printf("sendItemMessage[%d]: %s\n", i, packedMessages[i]);
|
for(int i = 0; i < messages.length; i++) {
|
||||||
player.getPacketDispatch().sendString(packedMessages.get(i), interfaceId, 4+i);
|
player.getPacketDispatch().sendString(messages[i], interfaceId, 4+i);
|
||||||
}
|
|
||||||
} else {
|
|
||||||
int interfaceId = 131;
|
|
||||||
//int interfaceId = 173;
|
|
||||||
//int interfaceId = 519;
|
|
||||||
//int interfaceId = 757;
|
|
||||||
//int interfaceId = 760;
|
|
||||||
player.getInterfaceManager().openChatbox(interfaceId);
|
|
||||||
String message = messages[0];
|
|
||||||
for (int i = 1; i < messages.length; i++) {
|
|
||||||
message += "<br>" + messages[i];
|
|
||||||
}
|
|
||||||
switch(interfaceId) {
|
|
||||||
case 131:
|
|
||||||
player.getPacketDispatch().sendString(message, 131, 1);
|
|
||||||
player.getPacketDispatch().sendItemOnInterface(itemId, 1, 131, 2);
|
|
||||||
break;
|
|
||||||
case 173:
|
|
||||||
player.getPacketDispatch().sendString(message, 173, 4);
|
|
||||||
player.getPacketDispatch().sendString("", 173, 3);
|
|
||||||
player.getPacketDispatch().sendItemOnInterface(itemId, 1, 173, 1);
|
|
||||||
break;
|
|
||||||
case 519:
|
|
||||||
player.getPacketDispatch().sendString(message, 519, 1);
|
|
||||||
player.getPacketDispatch().sendItemOnInterface(itemId, 1, 519, 0);
|
|
||||||
break;
|
|
||||||
case 757:
|
|
||||||
player.getPacketDispatch().sendString(message, 757, 2);
|
|
||||||
player.getPacketDispatch().sendString("", 757, 1);
|
|
||||||
player.getPacketDispatch().sendItemOnInterface(itemId, 1, 757, 0);
|
|
||||||
break;
|
|
||||||
case 760:
|
|
||||||
player.getPacketDispatch().sendString(message, 760, 0);
|
|
||||||
player.getPacketDispatch().sendItemOnInterface(itemId, 1, 760, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// Set the first Item (child 1)
|
||||||
|
ItemDefinition itemDef = ItemDefinition.forId(itemId);
|
||||||
|
player.getPacketDispatch().sendItemOnInterface(itemId, 1, interfaceId, 2);
|
||||||
|
player.getPacketDispatch().sendAngleOnInterface(interfaceId, 2, itemDef.getModelZoom() / 2, itemDef.getModelRotationX(), itemDef.getModelRotationY());
|
||||||
|
player.getPacketDispatch().sendRepositionOnInterface(interfaceId, 2, 45, 46);
|
||||||
|
// Hide the second item which seems to be used for double items (child 1)
|
||||||
|
player.getPacketDispatch().sendInterfaceConfig(interfaceId, 1, true);
|
||||||
|
// These are old interfaces which made no sense to use them.
|
||||||
|
// player.getPacketDispatch().sendString(message, 131, 1);
|
||||||
|
// player.getPacketDispatch().sendItemOnInterface(itemId, 1, 131, 2);
|
||||||
|
// player.getPacketDispatch().sendString(message, 173, 4);
|
||||||
|
// player.getPacketDispatch().sendString("", 173, 3);
|
||||||
|
// player.getPacketDispatch().sendItemOnInterface(itemId, 1, 173, 1);
|
||||||
|
// player.getPacketDispatch().sendString(message, 519, 1);
|
||||||
|
// player.getPacketDispatch().sendItemOnInterface(itemId, 1, 519, 0);
|
||||||
|
// player.getPacketDispatch().sendString(message, 757, 2);
|
||||||
|
// player.getPacketDispatch().sendString("", 757, 1);
|
||||||
|
// player.getPacketDispatch().sendItemOnInterface(itemId, 1, 757, 0);
|
||||||
|
// player.getPacketDispatch().sendString(message, 760, 0);
|
||||||
|
// player.getPacketDispatch().sendItemOnInterface(itemId, 1, 760, 1);
|
||||||
return player.getInterfaceManager().getChatbox();
|
return player.getInterfaceManager().getChatbox();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -395,23 +371,40 @@ public final class DialogueInterpreter {
|
||||||
* Send a message with an item next to it.
|
* Send a message with an item next to it.
|
||||||
* @param message The message.
|
* @param message The message.
|
||||||
*/
|
*/
|
||||||
public Component sendDoubleItemMessage(int first, int second, String message) {
|
public Component sendDoubleItemMessage(int first, int second, String... message) {
|
||||||
player.getInterfaceManager().openChatbox(131);
|
return sendDoubleItemMessage(new Item(first), new Item(second), message);
|
||||||
player.getPacketDispatch().sendString(message, 131, 1);
|
|
||||||
player.getPacketDispatch().sendItemOnInterface(first, 1, 131, 0);
|
|
||||||
player.getPacketDispatch().sendItemOnInterface(second, 1, 131, 2);
|
|
||||||
return player.getInterfaceManager().getChatbox();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a message with an item next to it.
|
* Send a message with two items next to it.
|
||||||
* @param message The message.
|
* Note that interface 241 to 244 contains 2 childs for images, which is used for sendDoubleItemMessage.
|
||||||
|
* @param first The first item to display.
|
||||||
|
* @param second The second item to display.
|
||||||
|
* @param messages The array of messages, one message per line.
|
||||||
*/
|
*/
|
||||||
public Component sendDoubleItemMessage(Item first, Item second, String message) {
|
public Component sendDoubleItemMessage(Item first, Item second, String... messages) {
|
||||||
player.getInterfaceManager().openChatbox(131);
|
// Select interface based on number of messages - 241 (1 line) to 244 (4 lines)
|
||||||
player.getPacketDispatch().sendString(message, 131, 1);
|
int interfaceId = 240 + messages.length;
|
||||||
player.getPacketDispatch().sendItemOnInterface(first.getId(), first.getAmount(), 131, 0);
|
player.getInterfaceManager().openChatbox(interfaceId);
|
||||||
player.getPacketDispatch().sendItemOnInterface(second.getId(), second.getAmount(), 131, 2);
|
player.getPacketDispatch().sendInterfaceConfig(interfaceId, 1, false);
|
||||||
|
player.getPacketDispatch().sendInterfaceConfig(interfaceId, 2, false);
|
||||||
|
// Hide or empty the title, since double item messages do not have them.
|
||||||
|
player.getPacketDispatch().sendString("", interfaceId, 3);
|
||||||
|
// Loop and print messages on child 4,5,6,7 based on messages count.
|
||||||
|
for(int i = 0; i < messages.length; i++) {
|
||||||
|
player.getPacketDispatch().sendString(messages[i], interfaceId, 4+i);
|
||||||
|
}
|
||||||
|
// Set the first item
|
||||||
|
ItemDefinition itemDef = ItemDefinition.forId(first.getId());
|
||||||
|
player.getPacketDispatch().sendItemOnInterface(first.getId(), first.getAmount(), interfaceId, 1);
|
||||||
|
player.getPacketDispatch().sendAngleOnInterface(interfaceId, 1, (int)(itemDef.getModelZoom() / 1.5), itemDef.getModelRotationX(), itemDef.getModelRotationY());
|
||||||
|
player.getPacketDispatch().sendRepositionOnInterface(interfaceId, 1, 40, 40);
|
||||||
|
// Set the second items
|
||||||
|
ItemDefinition itemDef2 = ItemDefinition.forId(second.getId());
|
||||||
|
player.getPacketDispatch().sendItemOnInterface(second.getId(), second.getAmount(), interfaceId, 2);
|
||||||
|
player.getPacketDispatch().sendAngleOnInterface(interfaceId, 2, (int)(itemDef2.getModelZoom() / 1.5), itemDef2.getModelRotationX(), itemDef2.getModelRotationY());
|
||||||
|
player.getPacketDispatch().sendRepositionOnInterface(interfaceId, 2, 60, 65);
|
||||||
|
|
||||||
return player.getInterfaceManager().getChatbox();
|
return player.getInterfaceManager().getChatbox();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -525,19 +518,24 @@ public final class DialogueInterpreter {
|
||||||
if (expression == -1) {
|
if (expression == -1) {
|
||||||
expression = FacialExpression.HALF_GUILTY.getAnimationId();
|
expression = FacialExpression.HALF_GUILTY.getAnimationId();
|
||||||
}
|
}
|
||||||
|
player.getInterfaceManager().openChatbox(interfaceId);
|
||||||
|
player.getPacketDispatch().sendInterfaceConfig(interfaceId, 1, true);
|
||||||
|
player.getPacketDispatch().sendInterfaceConfig(interfaceId, 2, false);
|
||||||
player.getPacketDispatch().sendAnimationInterface(expression, interfaceId, 2);
|
player.getPacketDispatch().sendAnimationInterface(expression, interfaceId, 2);
|
||||||
player.getPacketDispatch().sendItemOnInterface(-1, 1, interfaceId, 1);
|
player.getPacketDispatch().sendItemOnInterface(-1, 1, interfaceId, 1);
|
||||||
if (npc) {
|
if (npc) {
|
||||||
|
player.getPacketDispatch().sendItemOnInterface(-1, 1, interfaceId, 1);
|
||||||
|
player.getPacketDispatch().sendRepositionOnInterface(interfaceId, 2, 45, 45);
|
||||||
player.getPacketDispatch().sendNpcOnInterface(npcId, interfaceId, 2);
|
player.getPacketDispatch().sendNpcOnInterface(npcId, interfaceId, 2);
|
||||||
player.getPacketDispatch().sendString(NPCDefinition.forId(npcId).getName(), interfaceId, 3);
|
player.getPacketDispatch().sendString(NPCDefinition.forId(npcId).getName(), interfaceId, 3);
|
||||||
} else {
|
} else {
|
||||||
|
player.getPacketDispatch().sendRepositionOnInterface(interfaceId, 2, 426, 45); // 423 is 47 * 9
|
||||||
player.getPacketDispatch().sendPlayerOnInterface(interfaceId, 2);
|
player.getPacketDispatch().sendPlayerOnInterface(interfaceId, 2);
|
||||||
player.getPacketDispatch().sendString(player.getUsername(), interfaceId, 3);
|
player.getPacketDispatch().sendString(player.getUsername(), interfaceId, 3);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < messages.length; i++) {
|
for (int i = 0; i < messages.length; i++) {
|
||||||
player.getPacketDispatch().sendString(doSubstitutions(player, messages[i]), interfaceId, (i + 4));
|
player.getPacketDispatch().sendString(doSubstitutions(player, messages[i]), interfaceId, (i + 4));
|
||||||
}
|
}
|
||||||
player.getInterfaceManager().openChatbox(interfaceId);
|
|
||||||
player.getPacketDispatch().sendInterfaceConfig(player.getInterfaceManager().getChatbox().getId(), 3, false);
|
player.getPacketDispatch().sendInterfaceConfig(player.getInterfaceManager().getChatbox().getId(), 3, false);
|
||||||
return player.getInterfaceManager().getChatbox();
|
return player.getInterfaceManager().getChatbox();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -224,6 +224,10 @@ public final class PacketDispatch {
|
||||||
PacketRepository.send(DisplayModel.class, new DisplayModelContext(player, ModelType.MODEL, modelID,zoom,interfaceId,childId,new Object()));
|
PacketRepository.send(DisplayModel.class, new DisplayModelContext(player, ModelType.MODEL, modelID,zoom,interfaceId,childId,new Object()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendRepositionOnInterface(int interfaceId, int childId, int positionX, int positionY){
|
||||||
|
PacketRepository.send(RepositionChild.class, new ChildPositionContext(player, interfaceId, childId, positionX, positionY));
|
||||||
|
}
|
||||||
|
|
||||||
public void sendAngleOnInterface(int interfaceId, int childId, int zoom, int pitch, int yaw){
|
public void sendAngleOnInterface(int interfaceId, int childId, int zoom, int pitch, int yaw){
|
||||||
PacketRepository.send(InterfaceSetAngle.class, new DefaultContext(player, pitch, zoom, yaw, interfaceId, childId));
|
PacketRepository.send(InterfaceSetAngle.class, new DefaultContext(player, pitch, zoom, yaw, interfaceId, childId));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue