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…