Irschendwie funzt des net

Antworten
Nachricht
Autor
Chat Noir
Junior Mitglied
Beiträge: 75
Registriert: 16 Jan 2007 02:36

Irschendwie funzt des net

#1 Beitrag von Chat Noir » 27 Jun 2008 18:12

Wie die Überschrift schon sagt: Ich habs getestet und ich kann mich auch einloggen, aber der Palanthir zeigt mir nur ein schwarzes Bild :-( Also, meinen Cursor sehe ich und sonst nix....
Woran liegt das?
Gibt es irgendwo ein Tutorial? Hilfe !!! :h1:

Danke für jegeliche Hilfe, ich bin am verzweifeln :-)
Bild

Chat Noir
Junior Mitglied
Beiträge: 75
Registriert: 16 Jan 2007 02:36

#2 Beitrag von Chat Noir » 08 Jul 2008 21:23

Gibt es eventuell irgendwo eine Anelitung, wie ich den Palanthir zum Laufen bekomme?
Wäre klasse ;-)
Im Moment kann ich mich zwar einloggen, sehe aber einen schwarzen Bildschirm...Die Pfade und angaben ahbe ich x-Mal gecheckt, daran kann es nicht liegen. Also, was mache ich falsch...Einmal Palnthir für Dummies bitte ;-)
Bild

nazghul

#3 Beitrag von nazghul » 08 Jul 2008 21:37

zumindest unter Sphere muss eine spezielle Unterstützung für Palanthir-Packets eingebaut sein. Oder war früher zumindest so. Waren ein paar einfache PACKET-Commands, gescriptet. Weiss ja nicht was Ihr für Zeug benutzt.

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#4 Beitrag von Daskaras » 08 Jul 2008 23:01

nope, falsch.
die packete waren lediglich für die ingame darstellung des zwerges.
geht auch ohne. zumindestens hab ich ihn ohne zum laufen gebracht unter sphere.
eigentlich auch ohne probleme.
installiert und eingelogt.
ging ohne probleme wie gesagt.

Chat Noir
Junior Mitglied
Beiträge: 75
Registriert: 16 Jan 2007 02:36

#5 Beitrag von Chat Noir » 08 Jul 2008 23:02

Also wir benutzen RunUO 2.0, brauchts da auch was zur Unterstützung...?
Bild

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#6 Beitrag von Daskaras » 08 Jul 2008 23:05

dazu kann ich nichts sagen.
muss wohl varan direkt. weil mittelerde lief ja unter runuo.
aber ich empfehle dir, den clienten nicht zu nutzen für deinen freeshard.
er ist einfach nicht ausgereift genug.
auch wenn die features einfach klasse sind.
wäre halt schön, wenn sich noch jemand damit befassen und das ding endlich zum ende bringen würde.

nazghul

#7 Beitrag von nazghul » 08 Jul 2008 23:57

Ich hab da

Code: Alles auswählen

PACKET245=f_palanthir_packet_filter
und

Code: Alles auswählen

[FUNCTION f_palanthir_packet_filter]
IF ( <LOCAL> != 0f5 )
//IF ( <LOCAL> != 091 )
SERV.LOG Palanthir packet filter intercepted a wrong packet (<HVAL <LOCAL>>, Len: <EVAL <LOCAL>>)
RETURN 0
ENDIF

LOCAL.LENGHT = ( <LOCAL> | (<LOCAL> * 256) )

//IF (<LOCAL> != <HVAL <LOCAL>>)
//SERV.LOG Mismatch in reported/effective Lenght (<LOCAL> - <HVAL <LOCAL>>)
//RETURN 1
//ENDIF

LOCAL.OLDOBJ = <OBJ>
OBJ = <LOCAL>

IF ( <LOCAL> == 5 ) // MacAddress
LOCAL.MACADDRESS = <LOCAL>:<LOCAL>:<LOCAL>:<LOCAL>:<LOCAL>:<LOCAL>
SERV.LOG MacAddress packet received. Mac: <LOCAL>.
IF (<OBJ>)
OBJ.CTAG.PALANTHIR_MACADDR = <LOCAL>
ENDIF
ELSEIF ( <LOCAL> == 7 ) // Palanthir Version
LOCAL.REPORTEDVERSION = ( (<LOCAL> | (<LOCAL> * 256)) | (( <LOCAL> | (<LOCAL> * 256)) * 65536) )
SERV.LOG Client version packet received. Version: <EVAL <LOCAL>>.
IF (<OBJ>)
OBJ.CTAG.PALANTHIR_VERSION = <EVAL <LOCAL>>
ENDIF
ELSE
SERV.LOG Unknown Palanthir subtype packet ( <HVAL <LOCAL>> )
ENDIF

OBJ = <LOCAL>
RETURN 1
packet 0xF5 ist in meinen Docs nicht definiert, also keine Ahnung, was es bewirken soll

Allerdings bekomme ich auch nur einen schwarzen Bildschirm nach der Shardauswahl. Der Server sagt
23:55:3b:Client connected [Total:1] ('192.168.0.254' 1/1)
23:55:3b:Login 'straycat'
23:55:ERROR:straycat (3b):Bad Msg(91) Eat 65 bytes, prv=0f0, type=4
während der Client schon vorher in der Console nach
8.7.2008 23:55:17:901: Loading Scripts
8.7.2008 23:55:18:354: 101 Weapons loaded.
8.7.2008 23:55:18:979: Show Window
8.7.2008 23:55:28:979: Pythonengine: discarding packet
nichts mehr ausgibt. Da der Server sein erstes "Disconnected" erst gibt, wenn ich den Client beende, liegt der Schluss nahe, dass Palanthir das von OSI abgeguckte Sphere-Verhalten (Shardliste senden, Trennungsaufforderung senden, dann verbinde dich mit dem Shard neu) nicht mag :)

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#8 Beitrag von Daskaras » 09 Jul 2008 15:16

glaub da fehlt noch etwas vom code oder?
steht meines wissens noch im sphereforum unter scripte und könnte der zwergencode sein (größenansicht damit änderbar).
hab meinen palanthier clienten letzte woche gelöscht, da ich ihn lange nicht mehr benutzt habe.
die letzte nutzung war auch mit einer älteren sphere version.
müßte ich jetzt lügen aber 6 monate isses sicherlich schon her.


[edit]
ja vom code fehlt noch ein teil und ist der zwergencode :)

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#9 Beitrag von Daskaras » 09 Jul 2008 15:25

ich erinnere mich an irgendeine einstellung im config fenster des clienten. hatte was mit uncrypt/crypt des clienten zu tun, damit ich überhaupt auf meiner sphere einlogen konnte.
müßte dazu das ganze nochmal mit anschauen. vielleicht fällt es mir ein.
eventuell klappt es morgen bei mir, da ich heute nicht mehr nach hause komme

Chat Noir
Junior Mitglied
Beiträge: 75
Registriert: 16 Jan 2007 02:36

#10 Beitrag von Chat Noir » 09 Jul 2008 15:37

*anmerk* Ich bin immer noch bei RunUO, bei Sphere habe ich noch weniger Plan ;-)
Bild

Nobby

#11 Beitrag von Nobby » 16 Apr 2009 11:13

Sorry for digging up such an old topic but... was this problem ever resolved?

IthronNorui
Senior Mitglied
Beiträge: 142
Registriert: 24 Jun 2005 17:00
Wohnort: NRW
Kontaktdaten:

#12 Beitrag von IthronNorui » 16 Apr 2009 11:25

never tested, but maybe this can solve your problem (this code is from the uome projekt). Please make Backups!


add to Server Source, File Network/Packets.cs:

Before (in the end of the file) Add

Code: Alles auswählen

    public sealed class PalanthirWindowMobilePacket : Packet
    {
        public PalanthirWindowMobilePacket(Mobile to, Mobile targ)
            : base(0xF5)
        {
            byte[] buf;
            EnsureCapacity(512);
            m_Stream.Write((byte)0x14);
            m_Stream.Write((int)targ.Serial);

            string name, title, profile;
            byte percent;

            name = (targ.Name != null ? targ.Name : string.Empty);
            title = (targ.Title != null ? targ.Title : string.Empty);
            profile = (targ.Profile != null ? targ.Profile : string.Empty);
            percent = (byte)((targ.Hits * 100) / targ.HitsMax);

            buf = System.Text.Encoding.UTF8.GetBytes(name);
            m_Stream.Write((byte)buf.Length);
            m_Stream.Write(buf, 0, buf.Length);

            buf = System.Text.Encoding.UTF8.GetBytes(title);
            m_Stream.Write((byte)buf.Length);
            m_Stream.Write(buf, 0, buf.Length);

            buf = System.Text.Encoding.UTF8.GetBytes(profile);
            m_Stream.Write((ushort)buf.Length);
            m_Stream.Write(buf, 0, buf.Length);

            m_Stream.Write(percent);
        }
    }

    public sealed class PalanthirWindowItemPacket : Packet
    {
        public PalanthirWindowItemPacket(PlayerMobile mob, Item itm)
            : base(0xF5)
        {
            byte[] buf;
            EnsureCapacity(100);
            m_Stream.Write((byte)0x15);
            m_Stream.Write((int)itm.Serial);

            if (itm.Name != null && itm.Name.Length > 0)
            {
                m_Stream.Write((uint)0xFFFFFFFF);
                buf = System.Text.Encoding.UTF8.GetBytes(itm.Name);
                m_Stream.Write((byte)buf.Length);
                m_Stream.Write(buf, 0, buf.Length);
            }
            else
            {
                m_Stream.Write(itm.LabelNumber);
            }

            m_Stream.Write((ushort)itm.Amount);
            m_Stream.Write((ushort)(itm.PileWeight / 100));
            //m_Stream.Write((ushort)(itm.PileVolume / 100)); // no idea
            m_Stream.Write((ushort)0); //replaced for PileVolume

            buf = System.Text.Encoding.UTF8.GetBytes(itm.Name); //usually its the Description in the ME Source, but this doesn't exists by default
            m_Stream.Write((ushort)buf.Length);
            m_Stream.Write(buf, 0, buf.Length);
        }
    }


Add to Server Source, File Network/PacketHandlers.cs

Under

Code: Alles auswählen

Register( 0xD7,   0,  true, new OnPacketReceive( EncodedCommand ) );
Add

Code: Alles auswählen

Register( 0xF5, 0, false, new OnPacketReceive( OnMEPacketReceive) );
Before (in the end of the file) Add

Code: Alles auswählen

public static void OnMEPacketReceive(NetState state, PacketReader pvSrc)
        {
            PlayerMobile mob = state.Mobile as PlayerMobile;
            switch (pvSrc.ReadByte())
            { // subtype
                case 0x05: // MAC-Address
                    // Does not used by default
                    //MACAddress addr = new MACAddress(new byte[] {
                    //                                                pvSrc.ReadByte(), 
                    //                                                pvSrc.ReadByte(), 
                    //                                                pvSrc.ReadByte(), 
                    //                                                pvSrc.ReadByte(), 
                    //                                                pvSrc.ReadByte(), 
                    //                                                pvSrc.ReadByte()
                    //                                            });

                    //if (MACAddressFirewall.Instance.Check(addr))
                    //{ // MAC-Address Check
                    //    state.Send(new MERequestClientVersion());
                    //    AccountLog.Log(AccountLogType.AccountLoginAddressInfo, state.Account, state.Address.ToString(), addr.ToString());
                    //}
                    //else
                    //{
                    //    AccountLogin_ReplyRej(state, ALRReason.Blocked);
                    //    AccountLog.Log(AccountLogType.AccountLoginReject_MACBlock, state.Account);
                    //    return;
                    //}

                    break;

                case 0x07: // ClientVersion Response
                    //Allow all client versions
                    //uint clientversion = pvSrc.ReadUInt32();
                    //if (clientversion < Server.ME.Config.RequiredClientVersion)
                    //{
                    //    AccountLogin_ReplyRej(state, ALRReason.ClientVersion);
                    //    return;
                    //}

                    AccountLogin_ReplyAck(state);

                    break;

                case 0x09:
                    {// Kampfsystem
                        //No Idea how its done by ME, I hope it works without this code
                        //switch (pvSrc.ReadByte())
                        //{ // SubSub-Type
                        //    case 0x02: // FightGumpResponse
                        //        // mob.FightingHandler.Trefferzone = (Server.ME.Engines.Fighting.Trefferzone)pvSrc.ReadByte(); // Trefferzone
                        //        pvSrc.ReadByte();
                        //        mob.FightingHandler.OffensiveReg = pvSrc.ReadByte(); // OffensivReg
                        //        mob.FightingHandler.SpeedReg = pvSrc.ReadByte(); // SpeedReg
                        //        mob.FightingHandler.AvoidParryReg = pvSrc.ReadByte();

                        //        mob.Ausdauer -= 2;

                        //        break;

                        //    case 0x04: // OpenFightGumpRequest
                        //        mob.Send(new MEOpenFightGump(mob, null, true, false, false, false));

                        //        break;
                        //}

                        break;
                    }

                case 0x13: // PalanthirWindow-Request
                    Serial serial = (Serial)pvSrc.ReadInt32();

                    if (serial.IsItem)
                    {
                        Item itm = World.FindItem(serial);
                        if (itm != null && !(itm is Static))
                            state.Send(new PalanthirWindowItemPacket(state.Mobile, itm));
                    }
                    else if (serial.IsMobile)
                    {
                        Mobile targ = World.FindMobile(serial);
                        if (targ != null)
                            state.Send(new PalanthirWindowMobilePacket(state.Mobile, targ));
                    }
                    break;
            }
        }

Nobby

#13 Beitrag von Nobby » 17 Apr 2009 14:45

Will try that... well...at least will give this info to smbdy who knows a bit about the stuff... Thx : )

Gizmo

#14 Beitrag von Gizmo » 26 Okt 2009 18:08

Vorweg: Ich verwemde den RunUO 2.0 Final Server (Code). Will ich diese Änderungen so übernehmen, wird mir beim compilieren folgender Fehler angezeigt:
Network\Packets.cs(4114,40): error CS0246: Der Typ- oder Namespacename
PlayerMobile konnte nicht gefunden werden. (Fehlt eine using-Direktive
oder ein Assemblyverweis?)
Funktioniert das nicht mit dem 2.0er Server? Bzw. gibts da eine Anpassung? Auf runuo.com gibts da noch keine Lösung.

IthronNorui
Senior Mitglied
Beiträge: 142
Registriert: 24 Jun 2005 17:00
Wohnort: NRW
Kontaktdaten:

#15 Beitrag von IthronNorui » 27 Okt 2009 15:41

Das Problem ist das uome den gesamten Source in einem Projekt hatte und nicht die Unterscheidung Server.exe und Scripts hatte..

Du kannst aber einfach ne virtuelle Methode in Mobile.cs machen und diese in PlayerMobile einfach überschreiben.. dann musst du nur in dem oben stehenden Source alles von PlayerMobile auf Mobile ändern.

Antworten