Jobsecure Auto Reply Party Number - Help

image
Hello everyone , There is blocking during the Trade. The bot is asking us a question. Press e and send me the party number of the character named “blabla” from the party viewing area. Is there a plugin for this?
I saw a few plugins. But I don’t have enough python knowledge to edit.I need your help.
@Ryan

I examined all the topics but I couldn’t see what I wanted. I cannot establish logic in programming. Bot have to press the E key of the bot to break the user’s name in the chat section, then find this username in the party section and send that person’s party number to the person named JobSecure.

Leaving it here to spread knowledge.

from phBot import *
from threading import Timer
import phBotChat
import struct
import re

pName = 'JobSecure'
pVersion = '0.0.2'
#pUrl = 'https://raw.githubusercontent.com/JellyBitz/phBot-xPlugins/master/JobSecure.py'

# ______________________________ Initializing ______________________________ #

BOT_NAME = "JobSecure"

# Globals
findMasterName = None

# ______________________________ Methods ______________________________ #

# Request party match data
def Inject_RequestPartyMatch(pageIndex=0):
	p = struct.pack('B',pageIndex)
	inject_joymax(0x706C,p,False)

# ______________________________ Events ______________________________ #

# All chat messages received are sent to this function
def handle_chat(t,player,msg):
	# Check if is bot system nickname
	if player == BOT_NAME:
		# Asking press E
		if "E'ye bas." in msg:
			Inject_RequestPartyMatch()
		else:
			# Check if is asking for party match
			check = re.search(r'Write me PartyNo of ([a-zA-Z0-9_]*)',msg)
			if check:
				# Start scanning party match list to find the player
				global findMasterName
				findMasterName = check[1]
				log("Plugin: Starting Party Match scanner for \""+findMasterName+"\"...")
				Inject_RequestPartyMatch()

# All packets received from Silkroad will be passed to this function
# Returning True will keep the packet and False will not forward it to the game server
def handle_joymax(opcode,data):
	# SERVER_PARTY_MATCH_LIST_RESPONSE
	if opcode == 0xB06C:
		global findMasterName
		# Check if is scannnig
		if findMasterName:
			# Check success
			if data[0] != 1:
				log("Plugin: Party match request error!")
				findMasterName = None
				return True

			# The cursor to read the packet properly
			packetIndex = 1

			# page match setup
			pageCount = data[packetIndex]
			packetIndex+=1
			pageIndex = data[packetIndex]
			packetIndex+=1
			partyCount = data[packetIndex]
			packetIndex+=1

			log("Plugin: Scanning Party Match ("+str(pageIndex+1)+"/"+str(pageCount)+")...")
			partyNumber = None
			# Check match by match
			for i in range(partyCount):
				number = struct.unpack_from("<I",data,packetIndex)[0]
				packetIndex+=8
				# Extract master name
				masterNameLength = struct.unpack_from('<H',data,packetIndex)[0]
				packetIndex+=2
				masterName = struct.unpack_from('<'+str(masterNameLength)+'s',data,packetIndex)[0].decode('cp1252')
				packetIndex+=masterNameLength

				# Check the master name
				if findMasterName == masterName:
					partyNumber = number
					break

				# skip data
				packetIndex+=6
				titleLength = struct.unpack_from('<H',data,packetIndex)[0]
				packetIndex+=titleLength+2

			# Check if party has been found
			if partyNumber == None:
				nextPage = pageIndex+1
				if nextPage < pageCount:
					# wait 1 second to request the next page
					Timer(1.0,Inject_RequestPartyMatch(nextPage)).start()
				else:
					log("Plugin: Party Match with \""+findMasterName+"\" as master doesn't exists")
					findMasterName = None
			else:
				log("Plugin: Party Match #"+str(partyNumber)+" from \""+findMasterName+"\"")
				# Stop process
				findMasterName = None
				# Answering to the bot
				phBotChat.Private(BOT_NAME,str(partyNumber))
	return True

# Plugin loaded
log('Plugin: '+pName+' v'+pVersion+' succesfully loaded')

One year had this system till this days? coincidence? hmm…

6 Likes

Sometimes its better not… :stuck_out_tongue: