示例#1
0
        public void ListClients(MapClient sclient)
        {
            string message = "";
            int    i       = 0;

            foreach (Client j in this.clients.Values)
            {
                if (j.GetType() != typeof(MapClient))
                {
                    continue;
                }
                MapClient temp = (MapClient)j;
                if (temp.Char == null)
                {
                    continue;
                }
                message += (temp.Char.name + " ");
                if ((i % 4) == 0 && i != 0)
                {
                    sclient.SendMessage("Saga", message);
                    message = "";
                }
                i++;
            }
            if (message != "")
            {
                sclient.SendMessage("Saga", message);
            }
        }
示例#2
0
        public static Assembly CompileScript(string[] Source, CodeDomProvider Provider, MapClient client)
        {
            //ICodeCompiler compiler = Provider.;
            CompilerParameters parms = new CompilerParameters();
            CompilerResults    results;

            // Configure parameters
            parms.CompilerOptions         = "/target:library /optimize";
            parms.GenerateExecutable      = false;
            parms.GenerateInMemory        = true;
            parms.IncludeDebugInformation = true;
            parms.ReferencedAssemblies.Add("System.dll");
            parms.ReferencedAssemblies.Add("SagaLib.dll");
            parms.ReferencedAssemblies.Add("SagaDB.dll");
            parms.ReferencedAssemblies.Add("SagaMap.exe");
            // Compile
            results = Provider.CompileAssemblyFromFile(parms, Source);
            if (results.Errors.Count > 0)
            {
                foreach (CompilerError error in results.Errors)
                {
                    if (client != null)
                    {
                        client.SendMessage("Saga", "Compile Error:" + error.ErrorText);
                        client.SendMessage("Saga", "File:" + error.FileName + ":" + error.Line);
                    }
                    Logger.ShowError("Compile Error:" + error.ErrorText, null);
                    Logger.ShowError("File:" + error.FileName + ":" + error.Line, null);
                }
                return(null);
            }
            //get a hold of the actual assembly that was generated
            return(results.CompiledAssembly);
        }
示例#3
0
        public void PerformTrade()
        {
            ActorPC target = (ActorPC)C.map.GetActor(I.TradeTarget);

            if (!Config.Instance.AllowGMTrade && (C.Char.GMLevel > 2 || target.GMLevel > 2))
            {
                C.SendMessage("Saga", "GMs are not allowed to trade");
                return;
            }
            else
            {
                //Swap the items and money
                if (target == null)
                {
                    return;
                }
                if (C.TradeMoney > 0)
                {
                    if (I.zeny >= C.TradeMoney)
                    {
                        target.zeny += (uint)C.TradeMoney;
                        I.zeny      -= (uint)C.TradeMoney;
                        if (C.Char.GMLevel > 2 || target.GMLevel > 2)
                        {
                            Logger.gmlogger.WriteLog(C.Char.name + "->" + target.name + " | " + C.TradeMoney + "(zeny)");
                        }
                    }
                    else
                    {
                        C.SendTradeResult(TradeResults.NOT_ENOUGH_MONEY);
                        return;
                    }
                }

                foreach (Item SwapItem in C.TradeItems.Keys)
                {
                    SwapItem.stack = C.TradeItems[SwapItem];
                    C.map.AddItemToActor(target, SwapItem, ITEM_UPDATE_REASON.OTHER);
                    C.map.RemoveItemFromActorPC(I, SwapItem.id, SwapItem.stack, ITEM_UPDATE_REASON.OTHER);
                    if (C.Char.GMLevel > 2 || target.GMLevel > 2)
                    {
                        Logger.gmlogger.WriteLog(C.Char.name + "->" + target.name + " | " + SwapItem.id);
                    }
                }

                if (target.TradeStatus == TradeStatus.TRADE_CONFIRM)
                {
                    target.e.PerformTrade();
                }

                C.SendTradeResult(TradeResults.SUCCESS);
                C.ResetTradeItems(1);
                C.ResetTradeStatus(1);
            }
        }
示例#4
0
 public void ListClientsAndInfo(MapClient sclient)
 {
     foreach (Client i in this.clients.Values)
     {
         if (i.GetType() != typeof(MapClient))
         {
             continue;
         }
         MapClient client = (MapClient)i;
         if (client.Char == null)
         {
             continue;
         }
         sclient.SendMessage("Saga", "Char: " + client.Char.name + " Map: " + client.Char.mapID + " x:" + client.Char.x + " y:" + client.Char.y + " z:" + client.Char.z);
     }
 }
示例#5
0
 public void ListClients(MapClient sclient)
 {
     string message = "";
     int i = 0;
     foreach (Client j in this.clients.Values)
     {
         if (j.GetType() != typeof(MapClient)) continue;
         MapClient temp = (MapClient)j;
         if (temp.Char == null) continue;
         message += (temp.Char.name + " ");
         if ((i % 4) == 0 && i != 0)
         {
             sclient.SendMessage("Saga", message);
             message = "";
         }
         i++;
     }
     if(message != "")
         sclient.SendMessage("Saga", message);
 }       
示例#6
0
 public void ListClientsAndInfo(MapClient sclient)
 {
     foreach (Client i in this.clients.Values)
     {
         if (i.GetType() != typeof(MapClient)) continue;
         MapClient client = (MapClient)i;
         if (client.Char == null) continue;
         sclient.SendMessage("Saga", "Char: " + client.Char.name + " Map: " + client.Char.mapID + " x:" + client.Char.x + " y:" + client.Char.y + " z:" + client.Char.z);
     }
 }