Enter to Job NPC problem

gettign some error

[12:34:26] Python Error: invalid literal for int() with base 10: 'Purchase/Sellthiefjobitem'

[12:34:26] Script: Command not found [inject_jobNpc,Smuggler Isutade,Purchase/Sellthiefjobitem]

Argumant:
inject_jobNpc,Smuggler Isutade,Purchase/ Sell thief job item

Code:

def inject_jobNpc(args):
    t = args[1]
    if t:
        npcs = get_npcs()
        for key, npc in npcs.items():
            if npc['name'] == args[1] or npc['servername'] == args[1]:
                log("Plugin: Selecting NPC ["+args[1]+"]")
				# NPC found, select it
                inject_joymax(0x7045, struct.pack('<I', key), False)
                #log(str(key)) # 822
                #log(str(npc)) # {'name': 'Smuggler Isutade', 'servername': 'NPC_KT_COMMERCE2', 'model': 35157}
				# Start a timer to NPC in 2.0 seconds
                #log(str(args[2]))
                Timer(2.0, inject_joymax, (0x7046,struct.pack('<IBI', key, 3, int(args[2])),False)).start()
                return 
        log('Plugin: NPC not found. Wrong NPC name or servername')
    else:
        log('Plugin: NPC data not found. Wrong npc name or servername')

Not finished and will require 23.3.0 for get_npc_goods when it’s officially released.

https://projecthax.gitbook.io/phbot-plugins/phbot-api/npc

Script usage:

npc_select,Herbalist Yangyun
npc_enter,Herbalist Yangyun
npc_buy,Herbalist Yangyun,HP Recovery Herb,50
npc_exit,Herbalist Yangyun
from phBot import *
import struct

def get_npc(name):
	npcs = get_npcs()
	for k, v in npcs.items():
		if v['name'].lower() == args[1].lower():
			return (k, v)
	return None

def get_npc_item(model, item):
	goods = get_npc_goods(model)
	if goods:
		for p, s in goods.items():
			for _s, i in s.items():
				if i['name'].lower() == item.lower():
					return (p, _s)
	return None

def npc_select(args):
	if len(args) == 2:
		n = get_npc(args[1])
		if n:
			inject_joymax(0x7045, struct.pack('I', n[0]), False)
			return 2
	return 0

def npc_enter(args):
	if len(args) == 2:
		n = get_npc(args[1])
		if n:
			inject_joymax(0x7046, struct.pack('IB', n[0], 1), False)
			return 2
	return 0

def npc_buy(args):
	if len(args) == 4:
		n = get_npc(args[1])
		if n:
			goods = get_npc_item(n[1]['model'], args[2])
			if goods:
				packet = struct.pack('B', 8)
				packet += struct.pack('B', goods[0]) 		# page
				packet += struct.pack('B', goods[1]) 		# slot
				packet += struct.pack('H', int(args[3]))	# quantity
				packet += struct.pack('I', n[0]) 			# npc
				inject_joymax(0x7046, packet, False)
				return 2
	return 0

def npc_exit(args):
	if len(args) == 2:
		n = get_npc(args[1])
		if n:
			inject_joymax(0x704B, struct.pack('I', n[0]), False)
			return 2
	return 0

log('[%s] Loaded' % __name__)
1 Like

[00:28:07] Komut: [npc_select,Specialty Shop Elder Leegak] Komut bulunamadı

[00:28:08] Python Hatası: name ‘args’ is not defined

[00:28:08] Komut: [npc_enter,Specialty Shop Elder Leegak] Komut bulunamadı

[00:28:08] Python Hatası: name ‘args’ is not defined

[00:28:08] Komut: [npc_buy,Specialty Shop Elder Leegak,Saddle,50] Komut bulunamadı

[00:28:09] Python Hatası: name ‘args’ is not defined

[00:28:09] Komut: [npc_exit,Specialty Shop Elder Leegak] Komut bulunamadı

where is error exists

As Ryan wrote already it isn´t finished and require a new bot version which isn´t out yet…

whats wrong? i have copy code in my function and looks like well.

npc_select,Smuggler Isutade
npc_enter,Smuggler Isutade
npc_buy,Smuggler Isutade,Beginner Warrior Outfit (M),1
npc_exit,Smuggler Isutade

[14:49:14] Python Error: name 'args' is not defined

[14:49:14] Script: Command not found [npc_select,Smuggler Isutade]

[14:49:14] Python Error: name 'args' is not defined

[14:49:14] Script: Command not found [npc_enter,Smuggler Isutade]

[14:49:15] Python Error: name 'args' is not defined

[14:49:15] Script: Command not found [npc_buy,Smuggler Isutade,Beginner Warrior Outfit (M),1]

[14:49:15] Python Error: name 'args' is not defined

[14:49:15] Script: Command not found [npc_exit,Smuggler Isutade]

You’re using 23.3.0? I have not tested it at all so it probably doesn’t work yet.

yes version 23.3.0

@Ryan When u can try it?

what about test code?

and joined_game() now supporting anymore?

not working. i try to load also config file

def joined_game():
     log("asdasd")

again ignoring :unamused:

update!

Try to do python from condition part and also dm me

there is no section for buy suit. did u check before condiition? :smiley:

@Ryan

get_npc returning wrong npc name and can’t enter npc

Change this:

image

nothing changed. if arround not any npc this returning npc and selecting but cant enter. if i do return none its not selecting true npc

def get_npc(args):
	npcs = get_npcs()
	for k, v in npcs.items():
		if v['name'] == args[1] or v['servername'] == args[1]:
			return (k, v)
	return (k, v)

ur code not working and i cant fix it but u not fixing to! Why?

You’re not changing it to what would fix it.

if v['name'].lower() == name.lower():

now just selecting npc but cant enter

Script: Command not found [npc_buy,Smuggler Isutade,Beginner Thief Outfit (M),1]

Script: Command not found [npc_exit,Smuggler Isutade]