Пример #1
0
        //*********************************************************************************************
        // GiveTradeTo
        // Entrega itens da troca para determinado jogador
        //*********************************************************************************************
        public static void GiveTradeTo(int index, int intrade)
        {
            //EXTEND
            if (Extensions.ExtensionApp.ExtendMyApp
                    (MethodBase.GetCurrentMethod().Name, index, intrade) != null)
            {
                return;
            }

            //CÓDIGO
            if (PStruct.tempplayer[index].TradeG > 0)
            {
                PlayerRelations.GivePlayerGold(intrade, PStruct.tempplayer[index].TradeG);
            }

            for (int i = 1; i < Globals.MaxTradeOffers; i++)
            {
                if ((PStruct.tradeslot[index, i].item != Globals.NullItem) && (!String.IsNullOrEmpty(PStruct.tradeslot[index, i].item)))
                {
                    string[] splititem = PStruct.tradeslot[index, i].item.Split(',');

                    int itemNum   = Convert.ToInt32(splititem[1]);
                    int itemType  = Convert.ToInt32(splititem[0]);
                    int itemValue = Convert.ToInt32(splititem[2]);
                    int itemRefin = Convert.ToInt32(splititem[3]);
                    int itemExp   = Convert.ToInt32(splititem[4]);

                    InventoryRelations.GiveItem(intrade, itemType, itemNum, itemValue, itemRefin, itemExp);

                    PStruct.tradeslot[index, i].item = Globals.NullItem;
                }
            }
        }
Пример #2
0
        //*********************************************************************************************
        // CanPlayerMove / Revisto pela última vez em 01/08/2016, criado por Allyson S. Bacon
        // Verifica se determinado jogador pode se mover no contexto em que está atualmente
        //*********************************************************************************************
        public static bool CanPlayerMove(int index, byte Dir, int x = 0, int y = 0)
        {
            //EXTEND
            if (Extensions.ExtensionApp.ExtendMyApp
                    (MethodBase.GetCurrentMethod().Name, index, Dir, x, y) != null)
            {
                return(Convert.ToBoolean(Extensions.ExtensionApp.ExtendMyApp
                                             (MethodBase.GetCurrentMethod().Name, index, Dir, x, y)));
            }

            //CÓDIGO
            int map = Convert.ToInt32(PStruct.character[index, PStruct.player[index].SelectedChar].Map);

            if (x <= 0 || y <= 0)
            {
                x = Convert.ToInt32(PStruct.character[index, PStruct.player[index].SelectedChar].X);
                y = Convert.ToInt32(PStruct.character[index, PStruct.player[index].SelectedChar].Y);
            }

            //Tentamos nos mover
            switch (Dir)
            {
            case 8:
                if (y - 1 < 0)
                {
                    return(false);
                }
                if (Convert.ToBoolean(MStruct.tile[map, x, y].UpBlock) == false)
                {
                    return(false);
                }
                if (Convert.ToBoolean(MStruct.tile[map, x, y - 1].DownBlock) == false)
                {
                    return(false);
                }
                if ((MStruct.tile[map, x, y - 1].Data1 == "3") || (MStruct.tile[map, x, y - 1].Data1 == "10"))
                {
                    return(false);
                }
                if (MStruct.tile[map, x, y - 1].Data1 == "21")
                {
                    if (!PlayerRelations.IsPlayerPremmy(index))
                    {
                        PlayerMove(index, Convert.ToByte(Convert.ToInt32(MStruct.tile[map, x, y - 1].Data2)));
                        return(false);
                    }
                }
                break;

            case 2:
                if (y + 1 > 14)
                {
                    return(false);
                }
                if (Convert.ToBoolean(MStruct.tile[map, x, y].DownBlock) == false)
                {
                    return(false);
                }
                if (Convert.ToBoolean(MStruct.tile[map, x, y + 1].UpBlock) == false)
                {
                    return(false);
                }
                if ((MStruct.tile[map, x, y + 1].Data1 == "3") || (MStruct.tile[map, x, y + 1].Data1 == "10"))
                {
                    return(false);
                }
                if (MStruct.tile[map, x, y + 1].Data1 == "21")
                {
                    if (!PlayerRelations.IsPlayerPremmy(index))
                    {
                        PlayerMove(index, Convert.ToByte(Convert.ToInt32(MStruct.tile[map, x, y + 1].Data2)));
                        return(false);
                    }
                }
                break;

            case 4:
                if (x - 1 < 0)
                {
                    return(false);
                }
                if (Convert.ToBoolean(MStruct.tile[map, x, y].LeftBlock) == false)
                {
                    return(false);
                }
                if (Convert.ToBoolean(MStruct.tile[map, x - 1, y].RightBlock) == false)
                {
                    return(false);
                }
                if ((MStruct.tile[map, x - 1, y].Data1 == "3") || (MStruct.tile[map, x - 1, y].Data1 == "10"))
                {
                    return(false);
                }
                if (MStruct.tile[map, x - 1, y].Data1 == "21")
                {
                    if (!PlayerRelations.IsPlayerPremmy(index))
                    {
                        PlayerMove(index, Convert.ToByte(Convert.ToInt32(MStruct.tile[map, x - 1, y].Data2)));
                        return(false);
                    }
                }
                break;

            case 6:
                if (x + 1 > 19)
                {
                    return(false);
                }
                if (Convert.ToBoolean(MStruct.tile[map, x, y].RightBlock) == false)
                {
                    return(false);
                }
                if (Convert.ToBoolean(MStruct.tile[map, x + 1, y].LeftBlock) == false)
                {
                    return(false);
                }
                if ((MStruct.tile[map, x + 1, y].Data1 == "3") || (MStruct.tile[map, x + 1, y].Data1 == "10"))
                {
                    return(false);
                }
                if (MStruct.tile[map, x + 1, y].Data1 == "21")
                {
                    if (!PlayerRelations.IsPlayerPremmy(index))
                    {
                        PlayerMove(index, Convert.ToByte(Convert.ToInt32(MStruct.tile[map, x + 1, y].Data2)));
                        return(false);
                    }
                }
                break;

            default:
                WinsockAsync.Log(String.Format("Direção nula"));
                break;
            }

            return(true);
        }
Пример #3
0
        //*********************************************************************************************
        // PartyShareExp / Revisto pela última vez em 01/08/2016, criado por Allyson S. Bacon
        // Divide a Exp para determinado grupo baseado no atacante
        //*********************************************************************************************
        public static void PartyShareExp(int Attacker, int Victim, int Map)
        {
            //EXTEND
            if (Extensions.ExtensionApp.ExtendMyApp
                    (MethodBase.GetCurrentMethod().Name, Attacker, Victim, Map) != null)
            {
                return;
            }

            //CÓDIGO
            int NpcX    = NStruct.tempnpc[Map, Victim].X;
            int NpcY    = NStruct.tempnpc[Map, Victim].Y;
            int PlayerX = Convert.ToInt32(PStruct.character[Attacker, PStruct.player[Attacker].SelectedChar].X);
            int PlayerY = Convert.ToInt32(PStruct.character[Attacker, PStruct.player[Attacker].SelectedChar].Y);

            //PARTY EXP
            int partynum = PStruct.tempplayer[Attacker].Party;

            //Damos xp ao jogador e mostramos a xp ganha
            if (partynum > 0)
            {
                int memberscount = PartyRelations.GetPartyMembersCount(partynum);
                for (int i = 1; i <= memberscount; i++)
                {
                    int memberindex = PStruct.partymembers[partynum, i].index;
                    if (PStruct.character[memberindex, PStruct.player[memberindex].SelectedChar].Map == PStruct.character[Attacker, PStruct.player[Attacker].SelectedChar].Map)
                    {
                        //Tem grupo para dividir a exp
                        //Adiciona uma kill se houver uma quest para esse npc
                        for (int g = 1; g < Globals.MaxQuestGivers; g++)
                        {
                            for (int q = 1; q < Globals.MaxQuestPerGiver; q++)
                            {
                                //Prevent
                                if ((String.IsNullOrEmpty(MStruct.quest[g, q].type)) && (PStruct.queststatus[memberindex, g, q].status > 0))
                                {
                                    PStruct.queststatus[memberindex, g, q].status = 0; return;
                                }

                                //Execute
                                if ((PStruct.queststatus[memberindex, g, q].status == 1) && (Convert.ToInt32(MStruct.quest[g, q].type.Split('|')[0]) > 0))
                                {
                                    for (int k = 1; k < Globals.MaxQuestKills; k++)
                                    {
                                        if (MStruct.questkills[g, q, k].monstername == NStruct.npc[Map, Victim].Name)
                                        {
                                            if (PStruct.questkills[memberindex, g, q, k].kills < MStruct.questkills[g, q, k].value)
                                            {
                                                PStruct.questkills[memberindex, g, q, k].kills += 1;
                                                SendData.Send_ActionMsg(memberindex, lang.quest_defeat + " " + MStruct.questkills[g, q, k].monstername + " " + PStruct.questkills[memberindex, g, q, k].kills + "/" + MStruct.questkills[g, q, k].value, Globals.ColorGreen, NpcX, NpcY, 0, PStruct.character[Attacker, PStruct.player[Attacker].SelectedChar].Dir);
                                                SendData.Send_QuestKill(memberindex, g, q, k);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        int exp = NStruct.npc[Map, Victim].Exp;
                        if (PlayerRelations.IsPlayerPremmy(memberindex))
                        {
                            exp = Convert.ToInt32(exp * 1.5);
                        }
                        PlayerRelations.GivePlayerExp(memberindex, exp);
                    }
                }
            }
            //Não tem grupo para dividir a exp
            else
            {
                //Adiciona uma kill se houver uma quest para esse npc
                for (int g = 1; g < Globals.MaxQuestGivers; g++)
                {
                    for (int q = 1; q < Globals.MaxQuestPerGiver; q++)
                    {
                        //Prevent
                        if ((String.IsNullOrEmpty(MStruct.quest[g, q].type)) && (PStruct.queststatus[Attacker, g, q].status > 0))
                        {
                            PStruct.queststatus[Attacker, g, q].status = 0; return;
                        }

                        //Execute
                        if ((PStruct.queststatus[Attacker, g, q].status == 1) && (Convert.ToInt32(MStruct.quest[g, q].type.Split('|')[0]) > 0))
                        {
                            for (int k = 1; k < Globals.MaxQuestKills; k++)
                            {
                                if (MStruct.questkills[g, q, k].monstername == NStruct.npc[Map, Victim].Name)
                                {
                                    if (PStruct.questkills[Attacker, g, q, k].kills < MStruct.questkills[g, q, k].value)
                                    {
                                        PStruct.questkills[Attacker, g, q, k].kills += 1;
                                        SendData.Send_ActionMsg(Attacker, lang.quest_defeat + " " + MStruct.questkills[g, q, k].monstername + " " + PStruct.questkills[Attacker, g, q, k].kills + "/" + MStruct.questkills[g, q, k].value, Globals.ColorGreen, NpcX, NpcY, 0, PStruct.character[Attacker, PStruct.player[Attacker].SelectedChar].Dir);
                                        SendData.Send_QuestKill(Attacker, g, q, k);
                                    }
                                }
                            }
                        }
                    }
                }
                int exp = NStruct.npc[Map, Victim].Exp;
                if (PlayerRelations.IsPlayerPremmy(Attacker))
                {
                    exp = Convert.ToInt32(exp * 1.5);
                }
                PlayerRelations.GivePlayerExp(Attacker, exp);
            }
        }