Otomatik mesaj atma hakkında

Merhaba;

Python hakkında desteğinize ihtiyacım olacaktı. Aşağıda bir örnek kod paylaşacağım bu kodlama bir karakterin Datasındaki EXP bölümünü PM yoluyla bir oyuncuya gönderiyor kodan anlaşıldığı gibi. Lakin ihtiyacımız olan aslında karakter datadaki exp değil bir Party Maching bölümü dediğim party listesi var ve o listede party numaraları yazmaktadır. Sistem kodlamada belirtilen “JobSecure” kişiye bu sefer herhangi bir kullanıcının party numarası atmamızı istiyor kişinin ismini party listesinde seçip karşısında belirtilen party numarasını mesaj yoluyla “JobSecure” adlı kulanıcıya iletmemizi istiyor.

Bunu çözmek mümkün müdür acaba yardımınızı rica ederim. Aşağıda party listesi ile alakalı 2 adet kod vereceğim işe yarar gibi görünüyor.
"
CLIENT_PARTY_MATCH_REQUEST = 0x706C
SERVER_PARTY_MATCH_RESPONSE = 0xB06C
"

"
from phBot import *
import phBotChat
import struct
import json
import os
from random import randint
from time import sleep

def handle_joymax(opcode, data):

if opcode == 0x3026: # Chat Message
    # Packet index
    index = 0
    # Message type: All or Party or Private
    if data[index] == 0x01 or data[index] == 0x02 or data[index] == 0x04:
        # Parse nick of character
        Character = "[JobSecure]"
        if data[index] != 0x01:
            index += 1
            CharacterLength = struct.unpack_from('<H', data, index)[0]
            index += 2
            Character = struct.unpack_from('<' + str(CharacterLength) + 's', data, index)[0].decode('cp1252')
            index += CharacterLength
        if Character == "[JobSecure]":
             # Load and search command message
             MessageLength = struct.unpack_from('<H', data, index)[0]
             index += 2
             Message = struct.unpack_from('<' + str(MessageLength * (2 if get_encoding() == 'utf-16le' else 1)) + 's', data, index)[0].decode(get_encoding())
             if "?" in Message: # soru geliyor
            
                cevap = ""
            
                for c in reversed(Message):
                    if c != "(get_character_data()[“job_current_exp”])":
                        cevap += c
                    else:
                        break
                
                cevap = cevap[::-1].replace("get_character_data()[“job_current_exp”])")
                #log(cevap)
                
                qeqo = "ds:" + cevap
                #log(str(phBotChat.All(qeqo)))
                
                sleep(randint(10,100))
                
                Packet = bytearray()
                Packet.append(0x01)
                Packet.append(0x00)
                Packet = Packet + struct.pack('<H', len(qeqo))
                Packet = Packet + qeqo.encode('ascii')
                
                inject_joymax(0x7025, Packet, False)
            
return True






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

Selam,

Ne karakteri? Ne partisi? Party matching nedir? Party numarasi ne ise yarar? Ne mesaji atiyoruz?

Soruyu spesifik bir kutuphane veya servisin teknik destek kismina yazar gibi yazmissin, ama burasi genel bir programlama forumu. Karakter dediginde Unicode karakteri, parti dediginde ofis partisi anlamamamiz icin hic bir sebep yok (verilmemis).

(Calismayan) ornek koddan anladigim kadariyla binary bir protokol decode ediliyor. Protokolun ismi, cismi nedir? Spesifikasyonlarini nerede bulabiliyoruz? Hic olmadi, su fonksiyona gelen bir ornek data da mi yok? Ya calisan bir kod ornegi?

2 Beğeni