Řetězec nemá správný vstupní formát – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Řetězec nemá správný vstupní formát – .NET – Fórum – Programujte.comŘetězec nemá správný vstupní formát – .NET – Fórum – Programujte.com

 

Mutagen0
Super člen
22. 8. 2012   #1
-
0
-

Zdravím, mám tu problem s tímto kódem, bohužel nevím kde je rpoblém, protože Debugger nemůžu použít a ani nevím na jakým řádku nebo tak, ale podle syntaxe apod to je všechno okey.

	public void Autoloot()
        {
            #region Itemy
            string[] Items = new string[43];
            Items[0] = "0x1BC4,0x1BC5,0x07EA";
            Items[1] = "0x26C2,null,0x0809";
            Items[2] = "0x0E89,0x0E8A,9x9455";
            Items[3] = "0x0F50,0x0F4F,0x0810";
            Items[4] = "0x1412,0x1419,0x0BB6";
            Items[5] = "0x1413,null,0x0BB6";
            Items[6] = "0x1415,0x1416,0x0BB6";
            Items[7] = "0x1411,0x141A,0x0BB6";
            Items[8] = "0x1417,0x1410,0x0BB6";
            Items[9] = "0x1414,0x1418,0x0BB6";
            Items[10] = "0x1B76,0x1B77,0x0BB6";
            Items[11] = "0x1DB9,0x1DBA,0x07E9";
            Items[12] = "0x13C7,null,0x07E9";
            Items[13] = "0x13CC,0x13CC,0x07E9";
            Items[14] = "0x13CB,0x13D2,0x07E9";
            Items[15] = "0x13CD,0x13C5,0x07E9";
            Items[16] = "0x13C6,0x13CE,0x07E9";
            Items[17] = "0x0DF1,0x0DF0,0x07AD";
            Items[18] = "0x1549,null,0x08A2";
            Items[19] = "0x2B70,null,0x023D";
            Items[20] = "0x108A,null,null";
            Items[21] = "0x1088,0x1085,null";
            Items[22] = "0x1086,null,null";
            Items[23] = "0x1087,null,null";
            Items[24] = "0x1BC3,null,0x07EB";
            Items[25] = "0x1BC4,0x1BC5,0x07EB";
            Items[26] = "0x140B,0x140A,0x079A";
            Items[27] = "0x13EC,0x13ED,0x079A";
            Items[28] = "0x13F0,0x13F1,0x079A";
            Items[29] = "0x13EE,0x13EF,0x079A";
            Items[30] = "0x13EB,0x13F2,0x079A";
            Items[31] = "0x140B,0x140A,0x04D2";
            Items[32] = "0x13EC,0x13ED,0x04D2";
            Items[33] = "0x13F0,0x13F1,0x04D2";
            Items[34] = "0x13EE,0x13EF,0x04D2";
            Items[35] = "0x13EB,0x13F2,0x04D2";
            Items[36] = "0x1DB9,0x1DBA,0x0810";
            Items[37] = "0x13C7,null,0x0810";
            Items[38] = "0x13CC,0x13CC,0x0810";
            Items[39] = "0x13CB,0x13D2,0x0810";
            Items[40] = "0x13CD,0x13C5,0x0810";
            Items[41] = "0x13C6,0x13CE,0x0810";
            Items[42] = "0x0E76,null,null";
            #endregion
            #region Kosti
            ushort[] Kosti = new ushort[9];
            Kosti[0] = 0x0ECA;
            Kosti[1] = 0x0ECB;
            Kosti[2] = 0x0ECC;
            Kosti[3] = 0x0ECD;
            Kosti[4] = 0x0ECE;
            Kosti[5] = 0x0ECF;
            Kosti[6] = 0x0ED0;
            Kosti[7] = 0x0ED1;
            Kosti[8] = 0x0ED2;
            #endregion

            Kelevar.RegisterMoveItem("mut");

            if (World.Player.Layers[Layer.Mount].Exist)
            {
                UO.UseObject(World.Player.Serial);
                UO.Wait(100);
            }
            UOItem Corpse = new UOItem(Aliases.GetObject("lastcoprse"));

            //UO.WaitTargetObject(Corpse.Serial);
            //UO.UseObject(0x40372FC8);
            //UO.Wait(100);

            for (int i = 0; i < Kosti.Length; i++)
            {
                UOItem Bones = new UOItem(Kosti[i]);
                if (World.Ground.FindType(Kosti[i]).Amount > 0 && Bones.Distance < 3)
                {
                    Bones.Use();
                    UO.AddObject("lastbones", Bones.Serial);
                }
            }

            UOItem LootCorpse = new UOItem(Aliases.GetObject("lastcorpse"));

            for (int i = 0; i < Items.Length; i++)
            {
                string Type_one = Items[i].Split(',')[0];
                string Type_two = Items[i].Split(',')[1];
                string Type_col = Items[i].Split(',')[2];

                #region Dve_Type_S_Barvou
                if (Type_one != "null" && Type_two != "null" && Type_col != "null")
                {
                    for (int a = 0; a < LootCorpse.AllItems.Count(ushort.Parse(Type_one), ushort.Parse(Type_col)); a++)
                    {
                        UOItem Item = new UOItem(LootCorpse.AllItems.FindType(ushort.Parse(Type_one), ushort.Parse(Type_col)));
                        Kelevar.MoveItemPause(Item.Serial, Item.Amount, World.Player.Backpack, 500);
                        UO.Wait(500);
                    }
                    for (int a = 0; a < LootCorpse.AllItems.Count(ushort.Parse(Type_two), ushort.Parse(Type_col)); a++)
                    {
                        UOItem Item = new UOItem(LootCorpse.AllItems.FindType(ushort.Parse(Type_two), ushort.Parse(Type_col)));
                        Kelevar.MoveItemPause(Item.Serial, Item.Amount, World.Player.Backpack, 500);
                        UO.Wait(500);
                    }
                }
                #endregion

                #region Dve_Type_Bez_Barvy
                if (Type_one != "null" && Type_two != "null" && Type_col == "null")
                {
                    for (int a = 0; a < LootCorpse.AllItems.Count(ushort.Parse(Type_one)); a++)
                    {
                        UOItem Item = new UOItem(LootCorpse.AllItems.FindType(ushort.Parse(Type_one)));
                        Kelevar.MoveItemPause(Item.Serial, Item.Amount, World.Player.Backpack, 500);
                        UO.Wait(500);
                    }
                    for (int a = 0; a < LootCorpse.AllItems.Count(ushort.Parse(Type_two)); a++)
                    {
                        UOItem Item = new UOItem(LootCorpse.AllItems.FindType(ushort.Parse(Type_two)));
                        Kelevar.MoveItemPause(Item.Serial, Item.Amount, World.Player.Backpack, 500);
                        UO.Wait(500);
                    }
                }
                #endregion

                #region Jedno_Type_S_Barvou
                if (Type_one != "null" && Type_two == "null" && Type_col != "null")
                {
                    for (int a = 0; a < LootCorpse.AllItems.Count(ushort.Parse(Type_one), ushort.Parse(Type_col)); a++)
                    {
                        UOItem Item = new UOItem(LootCorpse.AllItems.FindType(ushort.Parse(Type_one), ushort.Parse(Type_col)));
                        Kelevar.MoveItemPause(Item.Serial, Item.Amount, World.Player.Backpack, 500);
                        UO.Wait(500);
                    }
                }
                #endregion

                #region Jedno_Type_Bez_Barvy
                if (Type_one != "null" && Type_two == "null" && Type_col == "null")
                {
                    for (int a = 0; a < LootCorpse.AllItems.Count(ushort.Parse(Type_one)); a++)
                    {
                        UOItem Item = new UOItem(LootCorpse.AllItems.FindType(ushort.Parse(Type_one)));
                        Kelevar.MoveItemPause(Item.Serial, Item.Amount, World.Player.Backpack, 500);
                        UO.Wait(500);
                    }
                }
                #endregion

            }
        }

jenom vím, že se to dostane na kód s rozdělením stringu -> Sem

string Type_one = Items[i].Split(',')[0];
string Type_two = Items[i].Split(',')[1];
string Type_col = Items[i].Split(',')[2];

Rozdělí to dobře, ale dál už to napíše tu hlášku, viz název vlákna ...

Děkuji moc za pomoc

Nahlásit jako SPAM
IP: 89.190.90.–
ingiraxo+15
Grafoman
22. 8. 2012   #2
-
0
-

tu chybu to musí u něčeho napsat, prostě to debugni znova... většina funkcí jsou pravděpodobně tvoje a není ani vidět jak jsou stavěný a co dělaj.. takže sem dej přesně těch pár řádků, který vyhazujou chybu

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Mutagen0
Super člen
22. 8. 2012   #3
-
0
-

#2 ingiraxo
Jak jsem psal nemam možnost debuggnout protože to není jako exe soubor ale jako kód do hry ... Neboli compiler nemůžu používat ve visualku, ale compiler je ten rpogram do čeho to píšu vlastně, Visualko poižívám jen na zvyraznění syntaxi apod (prostě reference DLL) Jak sem řekl, dostane se to po to roždělení do různých stringu až pak dál už to nic neudělá, jen vypíše tu hlášku ...

Nahlásit jako SPAM
IP: 89.190.90.–
ingiraxo+15
Grafoman
22. 8. 2012   #4
-
0
-

pokud tohle máš v libce a hra jí jen používá, tak to neznamená, že to nejde debugnout ale... Vsualko ti normálně musí ukázat kde přesně to hodí chybu

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Mutagen0
Super člen
22. 8. 2012   #5
-
0
-

#4 ingiraxo
Právě, že ne ... Já to vůbec nedebuguju ... Já to jen ukládám, prostě ve visuálu píšu kódy, když dopíšu dám CTRL+S a pak ve hře zmáčknu na compile a ve hře i spustím. Visuálko neukazuje žádný errory ten ErrorList je uplně čistej právě. prostě když to spustím, tak ten kód projede, ale zasekne se to někdě jak jsem psal u tohodle

string Type_one = Items[i].Split(',')[0];
string Type_two = Items[i].Split(',')[1];
string Type_col = Items[i].Split(',')[2];

tohle ještě se provede, ale dál už prostě ne ...

Nahlásit jako SPAM
IP: 89.190.90.–
ingiraxo+15
Grafoman
22. 8. 2012   #6
-
0
-

tak to tim pádem neumíš debugovat.. na nějakej ErrorList se vykašli v tomhle případě, ti je víceméně kničemu... musíš manuálně a není problém z aplikace vlézt do libky, ve který je chybnej kód

krom toho libku musíš skompilovat než spuštíš aplikaci, která jí používá, tady ti neštačí jen uložení

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Mutagen0
Super člen
22. 8. 2012   #7
-
0
-

#6 ingiraxo
Problém není v libce nebo tak ... Problem je tady v kódu, nevím co s tím, hra by mě měla ukázat pokud tam je rpoblem ukazat ale neukazalo to, jenom až když to spustím, takže právě nevím co s tím, možná se to jen špatně přetypuje ze stringu na ushort nebo tak ... Nevím právě ...

Nahlásit jako SPAM
IP: 89.190.90.–
ingiraxo+15
Grafoman
22. 8. 2012   #8
-
0
-

no jak myslíš... v každým případě je to nutný v debugu krokovat, aby jsi zjistil kde je chyba a tvrdit tady, že to nejde je blbost

já nevim jak to máš postavený, ale je úplně jedno jestli je to v libce nebo v tý aplikaci, důležitý je, že když nevíš vůbec kde je chyba, tak je nutný si to pomalu krokovat dokud to nespadne.. a prostě se pomalu dopracovat k řešení problému

s tímhle ti tady nikdo nepomůže, protože většina je tvůj kód a ani ty sám nevíš kde máš hledat... takže jednoduchá rada - debugni si to :)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Evzen+2
Návštěvník
23. 8. 2012   #9
-
0
-

Ahoj,

koukám na tu diskuzi a musím více méně souhlasit s Ingiraxem. 

Dle kódu vidím, že pracuješ na prográmku ala "Yoko Injection" pro hru UO na Kelevaru. Kdysi dávno jsem ultimu taky hrával a psával jsem tuny skriptů pro yoko. 

Celé mi to přijde jako když hráč se rozhodne napsat si lepší prográmek, než jsou ty stávající a nesystematicky lepí řádky   kódu a doufá, že ono to "nějak" klapne. Samozřejmě, proč ne, třeba tě to nakonec uchvátí a vrhneš se na programování na profesionální dráze.

Ale, nejprve by bylo určitě dobrý seznámit se s jazykem jako takovým, tutoriálů a knížek je na světě nepočítaně. 

Pokud chceš psát program, tak jak již Ingiraxo psal, určitě je nutné mít možnost debuggovat kód. Neříkám, že musíš vyloženě využívat Debugger, nevím jak je to s tím provozem přes UO, nicméně aspoň výpisy do konzole, popř. do souboru aby sis sám mohl vyzkoušet, jestli to či ono má na výstupu, to co ty očekáváš. Takový logování.

Když už něco sesmolíš a ono to nefunguje, tak aspoň zkus zapátrat sám po příčině než to hned odešleš na fórko. Jak už ti "něco" chybku vypsalo, tedy že "Řetězec nemá správný vstupní formát", tak jako první zapátrám po řetězcích v tvém kódu. 

Na začátku chytneš item např.: "0x1BC4,0x1BC5,0x07EA", rozparsuješ ho, v tom nevidím problém až na to, že já bych to rozparsoval jednou a pak už přistupovat k již vytvořenému poli nežli 3x za sebou parsovat ten samý řetězec, ale to vedlejší. Pak se snažíš převézt hexadecimální zápis v řetězci (pokud není nulové) na ushort (UInt16).

Tohle místo se mi nezdálo hned při průletu zdrojákem.

Zkus si založit nějaký testovací projekt bokem a zkus toto:

    public class Program
    {
        public static void Main(string[] args)
        {
            string Type_one = "0x1BC4";
            ushort u = ushort.Parse(Type_one); 
        } 
    }

Vylítne ti výjimka FormatException: Input string was not in a correct format.

Neboli česky to samý, co máš  v nadpisu.

Provedeme malou modifikaci:

    public class Program
    {
        public static void Main(string[] args)
        {
            string Type_one = "0x1BC4";
            ushort u = Convert.ToUInt16(Type_one, 16);
            Console.WriteLine(u);

            if (u == 0x1BC4)
                Console.WriteLine("stejne");
        } 
    }

A, chyba odstraněna.

P.S.: Programátor se ve většině času nezabývá psaním kódu, ale naopak odstraňování chyb v rozsáhlém zdrojovém kódu. Důležitý je si umět poradit ;)

Evžen

Nahlásit jako SPAM
IP: 193.179.183.–
Mutagen0
Super člen
23. 8. 2012   #10
-
0
-

#9 Evzen
Páni opravdu to funguje. Díky moc :) ...

Jinak pár drobnosti ... Ano hraju na kelevaru a i jinde, ale na tom nesejde ... Program ala "Yoko Injection" už je napsanej a je o dost lepší a stabilnější jak cely Yoko, jen bohužel nějak mi nejde zprovoznit Client větší jak 5 a nevím proč ... možná to je tím že client < 6 pošílají 4byte při logovaní a 6 > posílají jen 1 byte ... tudíž by to asi chtělo udělat novou komunikaci, a do toho se mi fakt už nechce ... Jinak k tomu programu, píše se do něj v C# a Boo, a jak jsem se zmínil, tak je stabilnější a zvládne lepší vychytávky ... Třeba napřímo posílaní packetu na server, editace packetu co ti příjde apod. A hlavně co Yoko nezvládne je to, že dokáže mít pustěný scripty na pozadí. Např "procenta nad hráčema kolik jim zbývají, nebo prostě nějakou tabulku s udajema o něčem (viz obr dole)", adod ... Je toho moc, i ten nejskušenjší yokař měl docela problémy se pro to naučit psát. A za ten rpogram jsem opravdu rád.

Tu tabulku můžeš vidět pod báglem.

S pozdravem, Mutagen. A ještě jednou Díky.

Nahlásit jako SPAM
IP: 89.190.90.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 54 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý