Beispiel #1
0
        internal static void Packet_QuestMessage(ref byte[] data)
        {
            ByteStream buffer = new ByteStream(data);

            QuestNum         = buffer.ReadInt32();
            QuestMessage     = buffer.ReadString().Trim();
            QuestMessage     = QuestMessage.Replace("$playername$", C_Player.GetPlayerName(C_Variables.Myindex));
            QuestNumForStart = buffer.ReadInt32();

            UpdateQuestChat = true;

            buffer.Dispose();
        }
Beispiel #2
0
        public static void Packet_Visit(ref byte[] data)
        {
            int        i      = 0;
            ByteStream buffer = new ByteStream(data);

            i = buffer.ReadInt32();

            C_Variables.DialogType = C_Constants.DialogueTypeVisit;

            C_Variables.DialogMsg1 = "You have been invited to visit " + C_Player.GetPlayerName(i).Trim() + "'s house.";
            C_Variables.DialogMsg2 = "";
            C_Variables.DialogMsg3 = "";

            buffer.Dispose();

            C_Variables.UpdateDialog = true;
        }
Beispiel #3
0
        // ////////////////////////
        // // Visual Interaction //
        // ////////////////////////

        internal static void LoadQuestlogBox()
        {
            int questNum = 0;
            int curTask  = 0;
            int I        = 0;

            if (SelectedQuest == 0)
            {
                return;
            }

            for (I = 1; I <= MaxQuests; I++)
            {
                if (QuestNames[SelectedQuest].Trim() == Quest[I].Name.Trim())
                {
                    questNum = I;
                }
            }

            if (questNum == 0)
            {
                return;
            }

            curTask = C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].ActualTask;

            if (curTask >= Quest[questNum].Task.Length)
            {
                return;
            }

            //Quest Log (Main Task)
            QuestTaskLogText = Quest[questNum].QuestLog.Trim();

            //Actual Task
            QuestTaskLogText = Quest[questNum].Task[curTask].TaskLog.Trim();

            //Last dialog
            if (C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].ActualTask > 1)
            {
                if (System.Convert.ToString(Quest[questNum].Task[curTask - 1].Speech).Trim().Length > 0)
                {
                    QuestDialogText = System.Convert.ToString(System.Convert.ToString(Quest[questNum].Task[curTask - 1].Speech).Trim().Replace("$playername$", C_Player.GetPlayerName(C_Variables.Myindex)));
                }
                else
                {
                    QuestDialogText = System.Convert.ToString(Quest[questNum].Chat[1].Replace("$playername$", C_Player.GetPlayerName(C_Variables.Myindex))).Trim();
                }
            }
            else
            {
                QuestDialogText = System.Convert.ToString(Quest[questNum].Chat[1].Replace("$playername$", C_Player.GetPlayerName(C_Variables.Myindex))).Trim();
            }

            //Quest Status
            if (C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].Status == (int)Enums.QuestStatusType.Started)
            {
                QuestStatus2Text    = Strings.Get("quests", "queststarted");
                AbandonQuestText    = Strings.Get("quests", "questcancel");
                AbandonQuestVisible = true;
            }
            else if (C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].Status == (int)Enums.QuestStatusType.Completed)
            {
                QuestStatus2Text    = Strings.Get("quests", "questcomplete");
                AbandonQuestVisible = false;
            }
            else
            {
                QuestStatus2Text    = "???";
                AbandonQuestVisible = false;
            }

            switch (Quest[questNum].Task[curTask].TaskType)
            {
            //defeat x amount of Npc
            case (int)Enums.QuestType.Slay:
                int    curCount_1  = C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].CurrentCount;
                int    maxAmount_1 = Quest[questNum].Task[curTask].Amount;
                string npcName_1   = Types.Npc[Quest[questNum].Task[curTask].Npc].Name;
                ActualTaskText = Strings.Get("quests", "questgoslay", curCount_1, maxAmount_1, npcName_1);                 //"Defeat " & CurCount & "/" & MaxAmount & " " & NpcName
                break;

            //gather x amount of items
            case (int)Enums.QuestType.Collect:
                int    curCount_2  = C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].CurrentCount;
                int    maxAmount_2 = Quest[questNum].Task[curTask].Amount;
                string itemName_1  = Types.Item[Quest[questNum].Task[curTask].Item].Name;
                ActualTaskText = Strings.Get("quests", "questgocollect", curCount_2, maxAmount_2, itemName_1);                 //"Collect " & CurCount & "/" & MaxAmount & " " & ItemName
                break;

            //go talk to npc
            case (int)Enums.QuestType.Talk:
                string npcName_2 = Types.Npc[Quest[questNum].Task[curTask].Npc].Name;
                ActualTaskText = Strings.Get("quests", "questtalkto", npcName_2);                 //"Go talk to  " & NpcName
                break;

            //reach certain map
            case (int)Enums.QuestType.Reach:
                string mapName = C_Types.MapNames[Quest[questNum].Task[curTask].Map];
                ActualTaskText = Strings.Get("quests", "questgoto", mapName);                 //"Go to " & MapName
                break;

            case (int)Enums.QuestType.Give:
                //give x amount of items to npc
                string npcName_3   = Types.Npc[Quest[questNum].Task[curTask].Npc].Name;
                int    curCount_3  = C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].CurrentCount;
                int    maxAmount_3 = Quest[questNum].Task[curTask].Amount;
                string itemName_2  = Types.Item[Quest[questNum].Task[curTask].Item].Name;
                ActualTaskText = Strings.Get("quests", "questgive", npcName_3, itemName_2, curCount_3, maxAmount_3);                 //"Give " & NpcName & " the " & ItemName & CurCount & "/" & MaxAmount & " they requested"
                break;

            //defeat certain amount of players
            case (int)Enums.QuestType.Kill:
                int curCount_4  = C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].CurrentCount;
                int maxAmount_4 = Quest[questNum].Task[curTask].Amount;
                ActualTaskText = Strings.Get("quests", "questkill", curCount_4, maxAmount_4);                 //"Defeat " & CurCount & "/" & MaxAmount & " Players in Battle"
                break;

            //go collect resources
            case (int)Enums.QuestType.Gather:
                int    curCount     = C_Types.Player[C_Variables.Myindex].PlayerQuest[questNum].CurrentCount;
                int    maxAmount_5  = Quest[questNum].Task[curTask].Amount;
                string resourceName = Types.Resource[Quest[questNum].Task[curTask].Resource].Name;
                ActualTaskText = Strings.Get("quests", "questgather", curCount, maxAmount_5, resourceName);                 //"Gather " & CurCount & "/" & MaxAmount & " " & ResourceName
                break;

            //fetch x amount of items from npc
            case (int)Enums.QuestType.Fetch:
                string npcName   = Types.Item[Quest[questNum].Task[curTask].Npc].Name;
                int    maxAmount = Quest[questNum].Task[curTask].Amount;
                string itemName  = Types.Item[Quest[questNum].Task[curTask].Item].Name;
                ActualTaskText = Strings.Get("quests", "questfetch", itemName, maxAmount, npcName);                 //"Fetch " & ItemName & "X" & MaxAmount & " from " & NpcName
                break;

            default:
                //ToDo
                ActualTaskText = "errr...";
                break;
            }

            //Rewards
            QuestRewardsText = new string[Quest[questNum].RewardCount + 1 + 1];
            for (I = 1; I <= Quest[questNum].RewardCount; I++)
            {
                QuestRewardsText[I] = Types.Item[Quest[questNum].RewardItem[I]].Name + " X" + Conversion.Str(Quest[questNum].RewardItemAmount[I]);
            }
            QuestRewardsText[I] = Conversion.Str(Quest[questNum].RewardExp) + " EXP";
        }
        internal static void DrawParty()
        {
            int    I         = 0;
            int    x         = 0;
            int    y         = 0;
            int    barwidth  = 0;
            int    playerNum = 0;
            string theName   = "";

            Rectangle[] rec = new Rectangle[2];

            // render the window

            // draw the bars
            if (Party.Leader > 0)             // make sure we're in a party
            {
                // draw leader
                playerNum = Party.Leader;
                // name
                theName = C_Player.GetPlayerName(playerNum).Trim();
                // draw name
                y = 100;
                x = 10;
                C_Text.DrawText(x, y, theName, SFML.Graphics.Color.Yellow, SFML.Graphics.Color.Black, C_Graphics.GameWindow);

                // draw hp
                if (C_Types.Player[playerNum].Vital[(byte)Enums.VitalType.HP] > 0)
                {
                    // calculate the width to fill
                    barwidth = System.Convert.ToInt32(C_Types.Player[playerNum].Vital[(byte)Enums.VitalType.HP] / (C_Player.GetPlayerMaxVital(playerNum, Enums.VitalType.HP)) * 64);
                    // draw bars
                    rec[1] = new Rectangle(x, y, barwidth, 6);
                    RectangleShape rectShape = new RectangleShape(new Vector2f(barwidth, 6))
                    {
                        Position  = new Vector2f(x, y + 15),
                        FillColor = SFML.Graphics.Color.Red
                    };
                    C_Graphics.GameWindow.Draw(rectShape);
                }
                // draw mp
                if (C_Types.Player[playerNum].Vital[(byte)Enums.VitalType.MP] > 0)
                {
                    // calculate the width to fill
                    barwidth = System.Convert.ToInt32(C_Types.Player[playerNum].Vital[(byte)Enums.VitalType.MP] / (C_Player.GetPlayerMaxVital(playerNum, Enums.VitalType.MP)) * 64);
                    // draw bars
                    rec[1] = new Rectangle(x, y, barwidth, 6);
                    RectangleShape rectShape2 = new RectangleShape(new Vector2f(barwidth, 6))
                    {
                        Position  = new Vector2f(x, y + 24),
                        FillColor = SFML.Graphics.Color.Blue
                    };
                    C_Graphics.GameWindow.Draw(rectShape2);
                }

                // draw members
                for (I = 1; I <= Constants.MAX_PARTY_MEMBERS; I++)
                {
                    if (Party.Member[I] > 0)
                    {
                        if (Party.Member[I] != Party.Leader)
                        {
                            // cache the index
                            playerNum = Party.Member[I];
                            // name
                            theName = C_Player.GetPlayerName(playerNum).Trim();
                            // draw name
                            y = 100 + ((I - 1) * 30);

                            C_Text.DrawText(x, y, theName, SFML.Graphics.Color.White, SFML.Graphics.Color.Black, C_Graphics.GameWindow);
                            // draw hp
                            y = 115 + ((I - 1) * 30);

                            // make sure we actually have the data before rendering
                            if (C_Player.GetPlayerVital(playerNum, Enums.VitalType.HP) > 0 && C_Player.GetPlayerMaxVital(playerNum, Enums.VitalType.HP) > 0)
                            {
                                barwidth = System.Convert.ToInt32(C_Types.Player[playerNum].Vital[(byte)Enums.VitalType.HP] / (C_Player.GetPlayerMaxVital(playerNum, Enums.VitalType.HP)) * 64);
                            }
                            rec[1] = new Rectangle(x, y, barwidth, 6);
                            RectangleShape rectShape = new RectangleShape(new Vector2f(barwidth, 6))
                            {
                                Position  = new Vector2f(x, y),
                                FillColor = SFML.Graphics.Color.Red
                            };
                            C_Graphics.GameWindow.Draw(rectShape);
                            // draw mp
                            y = 115 + ((I - 1) * 30);
                            // make sure we actually have the data before rendering
                            if (C_Player.GetPlayerVital(playerNum, Enums.VitalType.MP) > 0 && C_Player.GetPlayerMaxVital(playerNum, Enums.VitalType.MP) > 0)
                            {
                                barwidth = System.Convert.ToInt32(C_Types.Player[playerNum].Vital[(byte)Enums.VitalType.MP] / (C_Player.GetPlayerMaxVital(playerNum, Enums.VitalType.MP)) * 64);
                            }
                            rec[1] = new Rectangle(x, y, barwidth, 6);
                            RectangleShape rectShape2 = new RectangleShape(new Vector2f(barwidth, 6))
                            {
                                Position  = new Vector2f(x, y + 8),
                                FillColor = SFML.Graphics.Color.Blue
                            };
                            C_Graphics.GameWindow.Draw(rectShape2);
                        }
                    }
                }
            }
        }