GM/PM protection

06/17/2010 19:26 daniel7851109#1
is there a way i can make GM/PM trade people stuff pk people and do other things like a normal player ?
06/17/2010 20:07 ~Master#2
I've seen it in this thread before [Only registered and activated users can see links. Click Here To Register...]

If you can't find it there , I can explain to you how its done in tanel's source
06/17/2010 20:38 daniel7851109#3
Quote:
Originally Posted by ~Master View Post
I've seen it in this thread before [Only registered and activated users can see links. Click Here To Register...]

If you can't find it there , I can explain to you how its done in tanel's source
well can it be removed can u explain to me please
06/17/2010 20:42 .Summer#4
try search in future thanks :)
06/17/2010 20:46 ~Master#5
1- To make it possible for GM/PM to pk:
Open Character.cs

Remove this part
Code:
if(!MyClient.GM)
                            foreach (Character C in World.H_Chars.Values)
                            {
                                if (C.Alive && C != this)
                                {
                                    if (MyMath.PointDistance(Loc.X, Loc.Y, C.Loc.X, C.Loc.Y) <= Dist)
                                        if (C.PKAble(PKMode, this) && !SU.PlayerTargets.Contains(C) && !World.NoPKMaps.Contains(Loc.Map))
                                            SU.PlayerTargets.Add(C, SU.GetDamage(C));
                                }
Open Attack.cs

Remove this part
Code:
 if (PossChar != null)
                        if (GC.GM)
                            return;
Open Skill.cs

Remove this part
Code:
if (User.MyClient.GM && C.EntityID == User.EntityID || !User.MyClient.GM)
Also remove this part
Code:
if (User.MyClient.GM)
                        {
                            if (C.EntityID != User.EntityID)
                            {
                                continue;
                            }
                        }
2-To make it possible to make GM/PM Trade normal :
Open Trade.cs

Replace the whole code with this one
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NewestCOServer.Game;

namespace NewestCOServer.PacketHandling
{
    public class Trade
    {
        static void CancelTrade(Main.GameClient C)
        {
            if (C.MyChar.Trading)
            {
                Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
                if (Who != null)
                {
                    Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
                    Who.Trading = false;
                    Who.TradingWith = 0;
                    Who.TradeSide.Clear();
                    Who.TradingCPs = 0;
                    Who.TradingSilvers = 0;
                    Who.ClickedOK = false;
                    Who.Silvers = Who.Silvers;//update the silvers
                    Who.CPs = Who.CPs;//update the cps
                    Who.MyClient.AddSend(Packets.ChatMessage(Who.MyClient.MessageID, "SYSTEM", Who.Name, "Trading failed!", 2005, 0));
                }
                C.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
                C.MyChar.Trading = false;
                C.MyChar.TradingWith = 0;
                C.MyChar.TradeSide = new System.Collections.ArrayList(20);
                C.MyChar.TradingCPs = 0;
                C.MyChar.TradingSilvers = 0;
                C.MyChar.ClickedOK = false;
                C.MyChar.CPs = C.MyChar.CPs;//update the cps
                C.MyChar.Silvers = C.MyChar.Silvers;//update the silvers
                C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "Trading failed!", 2005, 0));
            }
        }
        public static void Handle(Main.GameClient C, byte[] Data)
        {
            uint UID = BitConverter.ToUInt32(Data, 4);
            byte Type = Data[8];

            switch (Type)
            {
                case 1:
                    {
                        Character Who = (Character)World.H_Chars[UID];
                        if (Who != null && !Who.Trading)
                        {
                            if (!C.MyChar.Trading)
                            {
                                if (Who.EntityID != C.MyChar.TradingWith)
                                {
                                    C.MyChar.TradingWith = UID;
                                    if (Who.EntityID == C.MyChar.TradingWith && Who.TradingWith == C.MyChar.EntityID)
                                    {
                                        Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 3));
                                        C.AddSend(Packets.TradePacket(Who.EntityID, 3));
                                        C.MyChar.Trading = true;
                                        Who.Trading = true;
                                        break;
                                    }
                                    else
                                    {
                                        C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Request for trading has been sent out.", 2005, 0));
                                        Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 1));
                                    }
                                }
                                if (Who.EntityID == C.MyChar.TradingWith && Who.TradingWith == C.MyChar.EntityID)
                                {
                                    Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.EntityID, 3));
                                    C.AddSend(Packets.TradePacket(Who.EntityID, 3));
                                    C.MyChar.Trading = true;
                                    Who.Trading = true;
                                }
                            }
                            else
                                C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Close the current trade before you take another one.", 2005, 0));
                        }
                        else
                            C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]The target is trading with someone else.", 2005, 0));

                        break;
                    }
                case 2:
                    {
                        CancelTrade(C);
                        break;
                    }
                case 6:
                    {
                        Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
                        if (Who != null)
                        {
                            if (C.MyChar.TradeSide.Count < 20)
                            {
                                if (Who.Inventory.Count + C.MyChar.TradeSide.Count < 40)
                                {
                                    Game.Item I = C.MyChar.FindInvItem(UID);
                                    if (!I.FreeItem)
                                    {
                                        Who.MyClient.AddSend(Packets.TradeItem(I));
                                        C.MyChar.TradeSide.Add(I.UID);
                                    }
                                    else
                                    {
                                        C.AddSend(Packets.TradePacket(UID, 11));
                                        C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Cannot trade items made with gm commands.", 2005, 0));
                                    }
                                }
                                else
                                {
                                    C.AddSend(Packets.TradePacket(UID, 11));
                                    C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]Your trade partner can't hold any more items.", 2005, 0));
                                    Who.MyClient.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "[Trade]The one your trading with cant add anymore items on the table because you have no room in your inventory.", 2005, 0));
                                }
                            }

                        }
                        break;
                    }
                case 7:
                    {
                        C.MyChar.TradingSilvers = UID;
                        Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
                        Who.MyClient.AddSend(Packets.TradePacket(UID, 8));

                        break;
                    }
                case 13:
                    {
                        C.MyChar.TradingCPs = UID;
                        Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];
                        Who.MyClient.AddSend(Packets.TradePacket(UID, 12));

                        break;
                    }
                case 10:
                    {
                        Character Who = (Character)World.H_Chars[C.MyChar.TradingWith];

                        if (Who != null && Who.ClickedOK)
                        {
                                if (C.MyChar.Silvers >= C.MyChar.TradingSilvers && C.MyChar.CPs >= C.MyChar.TradingCPs && Who.Silvers >= Who.TradingSilvers && Who.CPs >= Who.TradingCPs)
                                {
                                    Who.MyClient.AddSend(Packets.TradePacket(C.MyChar.TradingWith, 5));
                                    C.AddSend(Packets.TradePacket(C.MyChar.EntityID, 5));

                                    Who.Silvers += C.MyChar.TradingSilvers;
                                    Who.Silvers -= Who.TradingSilvers;
                                    C.MyChar.Silvers += Who.TradingSilvers;
                                    C.MyChar.Silvers -= C.MyChar.TradingSilvers;

                                    Who.CPs += C.MyChar.TradingCPs;
                                    Who.CPs -= Who.TradingCPs;
                                    C.MyChar.CPs += Who.TradingCPs;
                                    C.MyChar.CPs -= C.MyChar.TradingCPs;


                                    foreach (uint Id in C.MyChar.TradeSide)
                                    {
                                        Game.Item I = C.MyChar.FindInvItem(Id);
                                        Who.AddItem(I);
                                        C.MyChar.RemoveItem(I);
                                    }
                                    foreach (uint Id in Who.TradeSide)
                                    {
                                        Game.Item I = Who.FindInvItem(Id);
                                        C.MyChar.AddItem(I);
                                        Who.RemoveItem(I);
                                    }

                                    Who.Trading = false;
                                    Who.TradingWith = 0;
                                    Who.TradeSide = new System.Collections.ArrayList(20);
                                    Who.TradingCPs = 0;
                                    Who.TradingSilvers = 0;
                                    Who.ClickedOK = false;
                                    Who.MyClient.AddSend(Packets.ChatMessage(Who.MyClient.MessageID, "SYSTEM", Who.Name, "Trading succeeded!", 2005, 0));
                                    C.MyChar.Trading = false;
                                    C.MyChar.TradingWith = 0;
                                    C.MyChar.TradeSide = new System.Collections.ArrayList(20);
                                    C.MyChar.TradingCPs = 0;
                                    C.MyChar.TradingSilvers = 0;
                                    C.MyChar.ClickedOK = false;
                                    C.AddSend(Packets.ChatMessage(C.MessageID, "SYSTEM", C.MyChar.Name, "Trading succeeded!", 2005, 0));
                                }
                                else
                                    CancelTrade(C);  
                            } 
                        else
                        {
                            C.MyChar.ClickedOK = true;
                            Who.MyClient.AddSend(Packets.TradePacket(0, 10));
                        }

                        break;
                    }
            }
        }
    }
}
06/17/2010 20:49 .Summer#6
you should have let him learned it by himself.
he will become alot better, then.
06/17/2010 20:53 ~Master#7
He asked for help on my chatbox .
06/17/2010 20:56 .Summer#8
I mean. Just tell him what to put.
Then let him figure things out by him self.
Then help him, when he gets stucked.
(ex. on tv).
He will learn alot more from that.
This is just copy + paste, wich he wont learn anything from :)
06/17/2010 21:37 daniel7851109#9
Quote:
Originally Posted by .Summer View Post
I mean. Just tell him what to put.
Then let him figure things out by him self.
Then help him, when he gets stucked.
(ex. on tv).
He will learn alot more from that.
This is just copy + paste, wich he wont learn anything from :)
well im havving error with the trade.cs im trying to figure out my self :)
so its just not copy and paste.



Yay:) i fixed the trade.cs all by my self :)
06/17/2010 21:41 .Summer#10
Is good to see :)
06/18/2010 06:41 Arcо#11
Quote:
Originally Posted by .Summer View Post
you should have let him learned it by himself.
he will become alot better, then.
He did a good enough job helping the member(Kudos to ~Master for doing so), if you have anything else to say to him leave it to private message.