Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C# (http://www.go4expert.com/forums/c-sharp/)
-   -   BeginInvoke help please (http://www.go4expert.com/forums/begininvoke-help-please-t28088/)

Shokarta 25Mar2012 21:12

BeginInvoke help please
 
Hey, Ive got this problem:

Line 20 (LOOT_FromContainer(container);) I need that to use as Invoke, because the process I want to exec takes some time, so ServerMessageHandler wont handle it...

If i just simply rewrite that line to LOOT_FromContainer.BeginInvoke(container); then i have this error:

error CS0119: 'LOOT.LOOT_FromContainer(Phoenix.Serial)' is a 'method', which is not valid in the given context

Im new in C#, came from PHP, and about Invoke I dont know much realy :). Ive been trying to sort this out for a coupe of days, not even google helped...

I would appriciate some explanation with the code what would work :). Thanks

Code:

      [ServerMessageHandler(0x3C)]
        public CallbackResult ContainerContains(byte[] data, CallbackResult prevResult)
        {
        PacketReader reader = new PacketReader(data);
        reader.Skip(3);
       
        ushort len = reader.ReadUInt16();
        for (int i = 0; i < len; i++)
        {
            Serial serial = (Serial)(reader.ReadUInt32());
            ushort graphic = (ushort)(reader.ReadUInt16());
           
            reader.Skip(7);
           
            Serial container = (Serial)(reader.ReadUInt32());
            ushort color = (ushort)(reader.ReadUInt16());
           
            if (((int)graphic == 0x0E76) && ((int)color == 0x049A))
            {
              LOOT_FromContainer.BeginInvoke(container);
            }
        }
        return CallbackResult.Normal;
        }

     
      [Command]
      public static void LOOT_FromContainer(Serial target)
      {
        UOItem lootCorpse = new UOItem(target);
            if (lootCorpse.Graphic == 0x2006)
            {
                if (((draw == 1) && (World.Player.Backpack.AllItems.Count(draw_knife[0], draw_knife[1]) > 0)) || (World.Player.Layers[Layer.RightHand].Exist))
                {
                    if ((lootCorpse.Amount != 400) && (lootCorpse.Amount != 401))
                    {
                        if (draw == 0)
                        {
                            UO.WaitTargetObject(lootCorpse);
                            UO.UseObject(World.Player.Layers[Layer.RightHand].Serial);
                        }
                        else
                        {
                            UO.WaitTargetObject(lootCorpse);
                            UO.UseType(draw_knife[0], draw_knife[1]);
                        }
                        UO.Wait(500);
                    }
                }
                else
            {
                  UO.Print("Neni cim rezat, pouze lootim");
            }

                for (int i = 0; i < loot.Length; i++)
                {
              if (lootCorpse.Items.Count(loot[i][0], loot[i][1]) > 0)
                    {
                  if (loot[i][2] == 1)
                  {
                    if (loot[i][4] == 1)
                    {
                        UO.MoveItem(lootCorpse.Items.FindType(loot[i][0], loot[i][1]), 0, Aliases.GetObject("loot_bag"), loot[i][5], loot[i][6]);
                          UO.Wait(200);
                    }
                    else
                    {
                        UO.MoveItem(lootCorpse.Items.FindType(loot[i][0], loot[i][1]), 0, World.Player.Backpack);
                            UO.Wait(200);
                    }
                  }
                    }
                }
            }
      }



All times are GMT +5.5. The time now is 19:30.