Post: ActionSender class for PI based servers
05-13-2015, 11:12 PM #1
Vesia
Haxor!
(adsbygoogle = window.adsbygoogle || []).push({}); This is the action sender class that I made for my old PI server. I only made it for preference reasons, nothing really new or special. Tired of all those sendFraeblabla crap in playerassistant. Of course from this, you can do something like

    
public void stringColor(String message, int color) {
getActionSener().sendStringColor(message, color);
}


    
private Client client;

public Client getClient() {
return client;
}

private ActionSender actionSender = new ActionSender(this);

/**
* Get ActionSender
*
* @return
*/

public ActionSender getActionSender() {
return actionSender;
}



    
package org.rs2.network;

import org.rs2.Constants;
import org.rs2.PlayerConstants;
import org.rs2.model.container.ItemContainer;
import org.rs2.model.entity.players.Player;
import org.rs2.model.items.Item;
import org.rs2.util.Misc;



public class ActionSender {

/**
* The player
*/

private Player player;

/**
* Creates the action for the player
* @param player
*/

public ActionSender(Player player) {
this.player = player;
}

/**
* Sends a chat interface
* @param chatInterfacId The chat interface id being sent
* @return the instance ActionSender
*/

public ActionSender sendChatInterface(int chatInterfaceId) {
player.getClient().getOutStream().createFrame(164);
player.getClient().getOutStream().writeWordBigEndian_dup(chatInterfaceId);
player.getClient().flushOutStream();
return this;
}

/**
* Sends a message in the chat area
* @param message The message being sent
* @return the instance ActionSender
*/

public ActionSender sendMessage(String message) {
if (player.getClient().getOutStream() != null) {
player.getClient().getOutStream().createFrameVarSize(253);
player.getClient().getOutStream().writeString(message);
player.getClient().getOutStream().endFrameVarSize();
}
return this;
}

/**
* Sends a config id
* @param configId
* @param state
* @return the instance ActionSender
*/

public ActionSender sendConfig(int configId, int state) {
player.getClient().getOutStream().createFrame(36);
player.getClient().getOutStream().writeWordBigEndian(configId);
player.getClient().getOutStream().writeByte(state);
player.getClient().flushOutStream();
return this;
}

/**
* Displays the "Input amount" interface.
*
* @param interfaceId
* @param itemid
* @return the instance ActionSender
*/

public ActionSender sendInputInterface(int interfaceId, int itemId) {
if (itemId > 0 || interfaceId > 0) {
player.setEnterXInterfaceId(interfaceId);
player.setEnterXItemId(itemId);
}
player.getClient().getOutStream().createFrame(27);
player.getClient().flushOutStream();
return this;
}

/**
* Displays a hint icon.
*
* @param entityType 1 for players, 10 for npcs
* @param entityIndex the entity's index
* @return the instance ActionSender
*/

public ActionSender sendHintIcon(int entityType, int entityIndex) {
player.getClient().getOutStream().createFrame(254);
player.getClient().getOutStream().writeByte(entityType);
player.getClient().getOutStream().writeWord(entityIndex);
player.getClient().getOutStream().write3Byte(0);
return this;
}

/**
* Sends the players head model to an interface
* @param interfaceId
* @return the instance ActionSender
*/

public ActionSender sendHeadInterface(int interfaceId) {
player.getClient().getOutStream().createFrame(185);
player.getClient().getOutStream().writeWordBigEndianA(interfaceId);
return this;
}

/**
* Sets an interface's model animation.
* @param interfaceId
* @param animationId
* @return the instance ActionSender
*/

public ActionSender sendInterfaceModelAnimation(int interfaceId, int animationId) {
player.getClient().getOutStream().createFrame(200);
player.getClient().getOutStream().writeWord(interfaceId);
player.getClient().getOutStream().writeWord(animationId);
player.getClient().flushOutStream();
return this;
}

/**
* Sets the offset for drawing of an interface.
* @param xOffset
* @param yOffset
* @param interfaceId
* @return the instance ActionSender
*/

public ActionSender sendInterfaceOffset(int xOffset, int yOffset, int interfaceId) {
player.getClient().getOutStream().createFrame(70);
player.getClient().getOutStream().writeWord(xOffset);
player.getClient().getOutStream().writeWordBigEndian(yOffset);
player.getClient().getOutStream().writeWordBigEndian(interfaceId);
player.getClient().flushOutStream();
return this;
}

/**
* Displays a normal interface.
* @param interfaceId
* @return the instance ActionSender
*/

public ActionSender sendInterface(int interfaceId) {
player.getClient().getOutStream().createFrame(97);
player.getClient().getOutStream().writeWord(interfaceId);
player.getClient().flushOutStream();
return this;
}

/**
* Sends items to an interface
* @param interfaceId
* @param slot
* @param column
* @param amount
* @return the instance ActionSender
*/

public ActionSender sendInventoryItem(int id, int slot, int column, int amount) {
player.getClient().getOutStream().createFrameVarSizeWord(34);
player.getClient().getOutStream().writeWord(column);
player.getClient().getOutStream().writeByte(4);
player.getClient().getOutStream().writeDWord(slot);
player.getClient().getOutStream().writeWord(id+1);
player.getClient().getOutStream().writeByte(amount);
player.getClient().getOutStream().endFrameVarSizeWord();
return this;
}

/**
* Displays an interface over the sidebar area.
* @param interfaceId
* @param overlayId
* @return the instance ActionSender
*/

public ActionSender sendInventoryOverlay(int interfaceId, int overlayId) {
player.getClient().getOutStream().createFrame(24Cool Man (aka Tustin);
player.getClient().getOutStream().writeWordA(interfaceId);
player.getClient().getOutStream().writeWord(overlayId);
player.getClient().flushOutStream();
return this;
}

/**
* Sends the item container
* @param ItemContainer
* @return the instance ActionSender
*/

public ActionSender sendItemContainer(ItemContainer container) {
if (player.getClient().getOutStream() != null && player.getClient() != null) {
player.getClient().getOutStream().createFrameVarSizeWord(53);
player.getClient().getOutStream().writeWord(container.interfaceId());
player.getClient().getOutStream().writeWord(container.getItems().length);
for (Item item : container.getItems()) {
if (item.getAmount() > 254) {
player.getClient().getOutStream().writeByte(255);
player.getClient().getOutStream().writeDWord_v2(item.getAmount());
} else {
player.getClient().getOutStream().writeByte(item.getAmount());
}
player.getClient().getOutStream().writeWordBigEndianA(item.getId());
}
player.getClient().getOutStream().endFrameVarSizeWord();
player.getClient().flushOutStream();
}
return this;
}

/**
* Displays an item model inside an interface.
* @param interfaceId
* @param zoom
* @param itemId
* @return the instance ActionSender
*/

public ActionSender sendItemOnInterface(int interfaceId, int zoom, int itemId) {
player.getClient().getOutStream().createFrame(246);
player.getClient().getOutStream().writeWordBigEndian(interfaceId);
player.getClient().getOutStream().writeWord(zoom);
player.getClient().getOutStream().writeWord(itemId);
player.getClient().flushOutStream();
return this;
}

/**
* Sends a link
* @param link
* @return the instance ActionSender
*/

public ActionSender sendLink(String link) {
player.getClient().getOutStream().createFrameVarSizeWord(187);
player.getClient().getOutStream().writeString(link);
return this;
}

/**
* Creates an arrow at a specific location<br>
* Positions<br>
* 2 - Middle <br>
* 3 - West<br>
* 4 - East<br>
* 5 - South<br>
* 6 - North<br>
* @param position
* @param x
* @param y
* @param height
* @return the instance ActionSender
*/

public ActionSender sendHintIcon(int position, int x, int y, int height) {
player.getClient().getOutStream().createFrame(254);
player.getClient().getOutStream().writeByte(position);
player.getClient().getOutStream().writeWord(x);
player.getClient().getOutStream().writeWord(y);
player.getClient().getOutStream().writeByte(height);
return this;
}

/**
* Loads a new map region.
* @return the instance ActionSender
*/

public ActionSender loadMapRegion() {
player.getClient().getOutStream().createFrame(73);
player.getClient().getOutStream().writeWordA(player.mapRegionX + 6);
player.getClient().getOutStream().writeWord(player.mapRegionY + 6);
player.getClient().flushOutStream();
return this;
}

/**
* Unknown function<br>
* Used in the PrivateMessaging class<br>
* logIntoPM() and updatePM<br>
* @param username
* @param world
* @return the instance ActionSender
*/

public ActionSender sendMessageServer(long username, int world) {
if (world != 0) {
world += 9;
} else if (!Constants.WORLD_LIST_FIX) {
world += 1;
}
player.getClient().getOutStream().createFrame(50);
player.getClient().getOutStream().writeQWord(username);
player.getClient().getOutStream().writeByte(world);
player.getClient().flushOutStream();
return this;
}

/**
* Sets the mini map's state.<br>
* 0 - Active: Clickable and viewable.<br>
* 1 - Locked: viewable but not clickable<br>
* 2 - Blacked-out: Minimap is replaced with black background<br>
* @param state
* @return the instance ActionSender
*/

public ActionSender sendMinimapState(int state) {
player.getClient().getOutStream().createFrame(99);
player.getClient().getOutStream().writeByte(state);
player.getClient().flushOutStream();
return this;
}

/**
* Shows the player that they are in a multi-combat zone.
* @param icon
* @return the instance ActionSender
*/

public ActionSender sendMultiIcon(int icon) {
player.getClient().outStream.createFrame(61);
player.getClient().outStream.writeByte(icon);
//player.getPA().requestUpdates();
return this;
}

/**
* Place the head of an NPC on an interface
* @param npcId
* @param interfaceId
* @return the instance ActionSender
*/
public ActionSender sendNpcHeadOnInterface(int npcId, int interfaceId) {
player.getClient().getOutStream().createFrame(75);
player.getClient().getOutStream().writeWordBigEndianA(npcId);
player.getClient().getOutStream().writeWordBigEndianA(interfaceId);
player.getClient().flushOutStream();
return this;
}

/**
* Send object
* @param objectId
* @param objectX
* @param objectY
* @param z
* @param face
* @param objectType
* @return the instance ActionSender
*/

public ActionSender sendObject(int objectId, int objectX, int objectY, int z, int face, int objectType) {
if (player.heightLevel != z) {
return this;
}
player.getClient().getOutStream().createFrame(85);
player.getClient().getOutStream().writeByteC(objectY - (player.getMapRegionY() * Cool Man (aka Tustin));
player.getClient().getOutStream().writeByteC(objectX - (player.getMapRegionX() * Cool Man (aka Tustin));
player.getClient().getOutStream().createFrame(101);
player.getClient().getOutStream().writeByteC((objectType << 2) + (face & 3));
player.getClient().getOutStream().writeByte(0);

if (objectId != -1) {
player.getClient().getOutStream().createFrame(151);
player.getClient().getOutStream().writeByteS(0);
player.getClient().getOutStream().writeWordBigEndian(objectId);
player.getClient().getOutStream().writeByteS((objectType << 2) + (face & 3));
}
player.getClient().flushOutStream();
return this;
}

/**
* Sends an option<br>
* Unknown parameters
* @param i
* @param l
* @param option
* @return the instance ActionSender
*/

public ActionSender sendOption(int i, int l, String option) {
player.getClient().getOutStream().createFrameVarSize(104);
player.getClient().getOutStream().writeByteC(i);
player.getClient().getOutStream().writeByteA(l);
player.getClient().getOutStream().writeString(option);
player.getClient().getOutStream().endFrameVarSize();
player.getClient().flushOutStream();
return this;
}

/**
* Sends the player's membership status and their<br>
* current index on the server's player list.<br>
* Unused because everyone should be member and<br>
* Have access to member item<br>
* Flags:<br>
* 1 - Members<br>
* 0 - Free
* @param flag
* @return the instance ActionSender
*/

public ActionSender sendPlayerInitialization() {
player.getClient().getOutStream().createFrame(249);
player.getClient().getOutStream().writeByteA(1);
player.getClient().getOutStream().writeWordBigEndianA(player.getIndex());
return this;
}


/**
* Sends a private message to another player.
* @param username
* @param right
* @param message
* @param size
* @return the instance ActionSender
*/

public ActionSender sendPrivateMessage(long username, int rights, byte[] message, int size) {
player.getClient().getOutStream().createFrameVarSize(196);
player.getClient().getOutStream().writeQWord(username);
player.getClient().getOutStream().writeDWord(player.lastChatId++);
player.getClient().getOutStream().writeByte(rights);
player.getClient().getOutStream().writeBytes(message, size, 0);
player.getClient().getOutStream().endFrameVarSize();
player.getClient().flushOutStream();
return this;
}

/**
* Friends list load status.
* @param status
* @return the instance ActionSender
*/

public ActionSender sendPrivateMessageStatus(int status) {
player.getClient().getOutStream().createFrame(221);
player.getClient().getOutStream().writeByte(status);
player.getClient().flushOutStream();
return this;
}

/**
* Removes the current displayed interface
* @retuen the instance ActionSender
*/

public ActionSender sendRemoveInterface() {
player.getClient().getOutStream().createFrame(219);
player.getClient().flushOutStream();
return this;
}

/**
* Resets the camera position
* @return the instance ActionSender
*/

public ActionSender sendResetCamera() {
player.getClient().getOutStream().createFrame(107);
player.getClient().flushOutStream();
return this;
}

/**
* Sends a skill level to the player.getClient().
* @param skill
* @param level
* @param experience
* @return the instance ActionSender
*/
public ActionSender sendSkillLevel(int skill, int level, int experience) {
player.getClient().getOutStream().createFrame(134);
player.getClient().getOutStream().writeByte(skill);
player.getClient().getOutStream().writeDWord_v1(experience);
player.getClient().getOutStream().writeByte(level);
player.getClient().flushOutStream();
return this;
}

/**
* Starts playing a song.
* @param songId
* @return the instance ActionSender
*/

public ActionSender sendSong(int songId) {
player.getClient().getOutStream().createFrame(74);
player.getClient().getOutStream().writeWordBigEndian(songId);
return this;
}



/**
* Outputs a send packet which is built from the data
* params provided towards a connected user client channel.
* @param id The identification number of the sound.
* @param volume The volume amount of the sound (1-100)
* @param delay The delay (0 = immediately 30 = 1/2cycle 60=full cycle) before
* the sound plays.
*/

public ActionSender sendSound(int id, int volume, int delay) {
try {
player.getClient().getOutStream().createFrame(174);
player.getClient().getOutStream().writeWord(id);
player.getClient().getOutStream().writeByte(volume);
player.getClient().getOutStream().writeWord(delay);
} catch (Exception e) {
e.printStackTrace();
}
return this;
}

/**
* Outputs a send packet which is built from the data
* params provided towards a connected user client channel.
* @param id The identification number of the sound.
* @param volume The volume amount of the sound (1-100)
*/

public ActionSender sendSound(int id, int volume) {
sendSound(id, volume, 0);
return this;
}

/**
* Outputs a send packet which is built from the data
* params provided towards a connected user client channel.
* @param id The identification number of the sound.
*/

public ActionSender sendSound(int id) {
sendSound(id, 100);
return this;
}

/**
* Play sounds
* @param SOUNDID : ID
* @param delay : SOUND DELAY
*/
public ActionSender playSound(int soundId, int delay) {
if (PlayerConstants.SOUND) {
if (player.getClient() != null) {
if (PlayerConstants.SOUND_VOLUME >= 0) {
if (Misc.goodDistance(player.getX(), player.getY(), player.getX(), player.getY(), 2)) {
System.out.println("Playing sound "+player.getUsername()+", Id: "+soundId+", Vol: "+PlayerConstants.SOUND_VOLUME);
player.getClient().getOutStream().createFrame(174);
player.getClient().getOutStream().writeWord(soundId);
player.getClient().getOutStream().writeByte(PlayerConstants.SOUND_VOLUME);
player.getClient().getOutStream().writeWord(delay);
}
}
}

}
return this;
}


/**
* Changes the color of interface text
* @param stringId
* @param color
* @return the instance ActionSender
*/

public ActionSender sendStringColor(int stringId, int color) {
player.getClient().getOutStream().createFrame(122);
player.getClient().getOutStream().writeWordBigEndianA(stringId);
player.getClient().getOutStream().writeWordBigEndianA(color);
return this;
}

/**
* Attaches text to an interface
* @param message
* @param stringId
* @return the instance ActionSender
*/

public ActionSender sendString(String message, int stringId) {
if(!player.getClient().checkPacket126Update(message, stringId)) {
int bytesSaved = (message.length() + 4);
return null;
}
if(player.getClient().getOutStream() != null && player.getClient() != null ) {
player.getClient().getOutStream().createFrameVarSizeWord(126);
player.getClient().getOutStream().writeString(message);
player.getClient().getOutStream().writeWordA(stringId);
player.getClient().getOutStream().endFrameVarSizeWord();
player.getClient().flushOutStream();
}
return this;
}


/**
* Draws an interface over the tab area.
* @param tabId
* @return the instance ActionSender
*/

public ActionSender sendInterfaceOverTab(int tabId) {
player.getClient().getOutStream().createFrame(106);
player.getClient().getOutStream().writeByteC(tabId);
player.getClient().flushOutStream();
return this;
}

/**
* Queues a song to be played next.
* @param songId
* @param songDelay
* @return the instance ActionSender
*/

public ActionSender sendQueueSong(int songId, int songDelay) {
player.getClient().getOutStream().createFrame(121);
player.getClient().getOutStream().writeWordBigEndian(songId);
player.getClient().getOutStream().writeWordBigEndian(songDelay);
player.getClient().flushOutStream();
return this;
}

/**
* Sends an interface while walking
* @param interfaceId
* @return the instance ActionSender
*/

public ActionSender sendWalkableInterface(int interfaceId) {
player.getClient().getOutStream().createFrame(20Cool Man (aka Tustin);
player.getClient().getOutStream().writeWordBigEndian_dup(interfaceId);
player.getClient().flushOutStream();
return this;
}

/**
*
* @param name
* @param message
* @param clan
* @param rights
* @return the instance ActionSender
*/

public ActionSender sendClanMessage(String name, String message, String clan, int rights) {
player.getClient().getOutStream().createFrameVarSizeWord(217);
player.getClient().getOutStream().writeString(name);
player.getClient().getOutStream().writeString(message);
player.getClient().getOutStream().writeString(clan);
player.getClient().getOutStream().writeWord(rights);
player.getClient().getOutStream().endFrameVarSize();
return this;
}


}

(adsbygoogle = window.adsbygoogle || []).push({});

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo