It is currently 16 Apr 2024, 17:12
   
Text Size

[VB]Mordor Clone - my journey

by Salbei

Moderators: Salbei, CCGHQ Admins

Re: [VB]Mordor Clone - my journey

Postby Huggybaby » 08 Apr 2011, 04:46

Salbei would be crazy to pass up that offer. :supz:
User avatar
Huggybaby
Administrator
 
Posts: 3205
Joined: 15 Jan 2006, 19:44
Location: Finally out of Atlanta
Has thanked: 696 times
Been thanked: 594 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 08 Apr 2011, 05:15

Yeah i noticed that "Strength / Strenght" misspelling a while ago.

Thought that it won´t matter at the .INI files since you usually don´t get to see those.
Unfortunately the exact spelling is needed for large parts of the game. I can´t blindly search/replace the word without messing up anything - and THEN i would be in trouble.Especially because most of my "labels" share the misspelling. It would completely mess everything up.

The "train" window still got it wrong (ingame). Gonna fix that during the weekend, otherwise i might miss some code that is watching out for to the selection of the word "Strenght" instead of "Strength".

Won´t have much free time today but already planned a bit ahead what to code/fix during the weekend.
There are also some issues with the "Ring" slots. (Ring1/Ring2 while the "slotname" is "Ring". There are a few bugs while equipping/un-equipping Rings.

---
Yesterday i saw my Game at a 15" Monitor (Windows XP), some things look weird (fonts etc).
Personally i am developing this with a 22"Monitor (Windows7).
Gonna have to use some larger fonts, guess a lot of people are using a 1024*768 resolution, and it was quite tough to read the small fonts.
I should replace the "Fixed Size" Window status too.

---
Also i´m not really happy with the way combat works right now. Might rewrite it,i need more time to think about how it is supposed to work before i start to mess with the already "working" code.

lord of 13 wrote:If you post your code, I'll be happy to take a look at it for performance bottlenecks.
I appreciate the offer.
Right now i am able to pinpoint what is causing it(the Update Inventory).
At the start of the game, and whenever your inventory changes (loot,buy / sell things). The code for that "Update" is not optimal at all. Definitely going to re-code that section during the weekend.

That specific part is quite complex. (multiple arrays and for/next).
Explanation:
The Button "ButtonUpdateInventory" is not visible , whenever i have to update the inventory i just let the game "click" it for me. That happens quite a few times. Right now i don´t know a better way to execute multiple lines of code "on demand".
labelxxx = displayed text (except ID, that stays hidden)
checkxxx = check boxes
INI.Wertlesen = reads inside the ini at the given location
INI.Wertschreiben = writes to the ini at the given location

Some "If" parts could have been avoided by a simple "Else"

In hindsight i should just have started with id/slot 0 instead of 1. Would have saved me the "dummy" array entries. There are only 25 inventoryslots , the last item at the array is always a dummy item and will never be used.



updateinventory | Open
Code: Select all
Private Sub ButtonUpdateInventory_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonUpdateInventory.Click
        Dim INI As New INIDatei, Player As String
        Dim groupitemslot() As Control = New Control() {LabelItemslot1, _
                                                       LabelItemslot2, _
                                                       LabelItemslot3, _
                                                       LabelItemslot4, _
                                                       LabelItemslot5, _
                                                       LabelItemslot6, _
                                                       LabelItemslot7, _
                                                       LabelItemslot8, _
                                                       LabelItemslot9, _
                                                       LabelItemslot10, _
                                                       LabelItemslot11, _
                                                       LabelItemslot12, _
                                                       LabelItemslot13, _
                                                       LabelItemslot14, _
                                                       LabelItemslot15, _
                                                       LabelItemslot16, _
                                                       LabelItemslot17, _
                                                       LabelItemslot18, _
                                                       LabelItemslot19, _
                                                       LabelItemslot20, _
                                                       LabelItemslot21, _
                                                       LabelItemslot22, _
                                                       LabelItemslot23, _
                                                       LabelItemslot24, _
                                                       LabelItemslot25, _
                                                            LabelItemslot26}

        Dim groupid() As Control = New Control() {LabelItemID1, _
                                                       LabelItemID2, _
                                                       LabelItemID3, _
                                                       LabelItemID4, _
                                                       LabelItemID5, _
                                                       LabelItemID6, _
                                                       LabelItemID7, _
                                                       LabelItemID8, _
                                                       LabelItemID9, _
                                                       LabelItemID10, _
                                                       LabelItemID11, _
                                                       LabelItemID12, _
                                                       LabelItemID13, _
                                                       LabelItemID14, _
                                                       LabelItemID15, _
                                                       LabelItemID16, _
                                                       LabelItemID17, _
                                                       LabelItemID18, _
                                                       LabelItemID19, _
                                                       LabelItemID20, _
                                                       LabelItemID21, _
                                                       LabelItemID22, _
                                                       LabelItemID23, _
                                                       LabelItemID24, _
                                                       LabelItemID25, _
                                                            LabelItemslot26}

        Dim groupitemname() As Control = New Control() {LabelItemName1, _
                                                       LabelItemName2, _
                                                       LabelItemName3, _
                                                       LabelItemName4, _
                                                       LabelItemName5, _
                                                       LabelItemName6, _
                                                       LabelItemName7, _
                                                       LabelItemName8, _
                                                       LabelItemName9, _
                                                       LabelItemName10, _
                                                       LabelItemName11, _
                                                       LabelItemName12, _
                                                       LabelItemName13, _
                                                       LabelItemName14, _
                                                       LabelItemName15, _
                                                       LabelItemName16, _
                                                       LabelItemName17, _
                                                       LabelItemName18, _
                                                       LabelItemName19, _
                                                       LabelItemName20, _
                                                       LabelItemName21, _
                                                       LabelItemName22, _
                                                       LabelItemName23, _
                                                       LabelItemName24, _
                                                       LabelItemName25, _
                                                            LabelItemslot26}

        Dim groupreq() As CheckBox = New CheckBox() {CheckReq1, _
                                                       CheckReq2, _
                                                       CheckReq3, _
                                                       CheckReq4, _
                                                       CheckReq5, _
                                                       CheckReq6, _
                                                       CheckReq7, _
                                                       CheckReq8, _
                                                       CheckReq9, _
                                                       CheckReq10, _
                                                       CheckReq11, _
                                                       CheckReq12, _
                                                       CheckReq13, _
                                                       CheckReq14, _
                                                       CheckReq15, _
                                                       CheckReq16, _
                                                       CheckReq17, _
                                                       CheckReq18, _
                                                       CheckReq19, _
                                                       CheckReq20, _
                                                       CheckReq21, _
                                                       CheckReq22, _
                                                       CheckReq23, _
                                                       CheckReq24, _
                                                       CheckReq25, _
                                                            CheckDummy}

        Dim groupequip() As CheckBox = New CheckBox() {CheckEquip1, _
                                                       CheckEquip2, _
                                                       CheckEquip3, _
                                                       CheckEquip4, _
                                                       CheckEquip5, _
                                                       CheckEquip6, _
                                                       CheckEquip7, _
                                                       CheckEquip8, _
                                                       CheckEquip9, _
                                                       CheckEquip10, _
                                                       CheckEquip11, _
                                                       CheckEquip12, _
                                                       CheckEquip13, _
                                                       CheckEquip14, _
                                                       CheckEquip15, _
                                                       CheckEquip16, _
                                                       CheckEquip17, _
                                                       CheckEquip18, _
                                                       CheckEquip19, _
                                                       CheckEquip20, _
                                                       CheckEquip21, _
                                                       CheckEquip22, _
                                                       CheckEquip23, _
                                                       CheckEquip24, _
                                                       CheckEquip25, _
                                                            CheckDummy}


        Dim grouptrade() As CheckBox = New CheckBox() {CheckTrade1, _
                                                       CheckTrade2, _
                                                       CheckTrade3, _
                                                       CheckTrade4, _
                                                       CheckTrade5, _
                                                       CheckTrade6, _
                                                       CheckTrade7, _
                                                       CheckTrade8, _
                                                       CheckTrade9, _
                                                       CheckTrade10, _
                                                       CheckTrade11, _
                                                       CheckTrade12, _
                                                       CheckTrade13, _
                                                       CheckTrade14, _
                                                       CheckTrade15, _
                                                       CheckTrade16, _
                                                       CheckTrade17, _
                                                       CheckTrade18, _
                                                       CheckTrade19, _
                                                       CheckTrade20, _
                                                       CheckTrade21, _
                                                       CheckTrade22, _
                                                       CheckTrade23, _
                                                       CheckTrade24, _
                                                       CheckTrade25, _
                                                            CheckDummy}

        INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Player.ini"
        Player = CStr(INI.WertLesen("Setup", "name"))

        TableInventory.Visible = False

        For i = 1 To 26

            'vorbereitung. was soll angezeigt werden ?
            groupitemname(i - 1).Visible = False
            groupid(i - 1).Visible = False
            groupequip(i - 1).Visible = False
            groupreq(i - 1).Visible = False
            groupreq(i - 1).Enabled = False
            grouptrade(i - 1).Visible = False

            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Player.ini"
            groupitemslot(i - 1).Text = INI.WertLesen(Player, "itemslot" & (i))
            groupid(i - 1).Text = INI.WertLesen(Player, "itemid" & (i))


            If CStr(groupitemslot(i - 1).Text) = "Empty" Then
                groupitemslot(i - 1).Visible = False
                groupreq(i - 1).Visible = False
                groupequip(i - 1).Visible = False
                groupitemname(i - 1).Visible = True
                grouptrade(i - 1).Visible = False
            Else
                groupitemslot(i - 1).Visible = True
                groupreq(i - 1).Visible = True
                groupequip(i - 1).Visible = True
                groupitemname(i - 1).Visible = True
                grouptrade(i - 1).Visible = True
            End If


            'nachdem der itemslot bestimmt wurde und die ids ermittelt (bereits geschehen)
            'finde den itemnamen

            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Items.ini"
            groupitemname(i - 1).Text = INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "name")

            If CStr(groupitemslot(i - 1).Text) = "Hand1" Then
                groupitemname(i - 1).Text = INI.WertLesen(groupitemslot(i - 1).Text & "." & groupid(i - 1).Text, "name")
            ElseIf CStr(groupitemslot(i - 1).Text) = "Hand2" Then
                groupitemname(i - 1).Text = INI.WertLesen(groupitemslot(i - 1).Text & "." & groupid(i - 1).Text, "name")
            End If

            'schauen ob bereits etwas equipped wurde, entsprechende checkbox aktivieren
            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Player.ini"

            If INI.WertLesen(Player, "equipped" & (i)) > "0" Then
                groupequip(i - 1).Checked = True
                If groupitemslot(i - 1).Text = "Hand1" Then
                    INI.WertSchreiben(Player, "hand1", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Hand2" Then
                    INI.WertSchreiben(Player, "hand2", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Helm" Then
                    INI.WertSchreiben(Player, "helm", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Torso" Then
                    INI.WertSchreiben(Player, "torso", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Arms" Then
                    INI.WertSchreiben(Player, "arms", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Legs" Then
                    INI.WertSchreiben(Player, "legs", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Boots" Then
                    INI.WertSchreiben(Player, "boots", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Cloak" Then
                    INI.WertSchreiben(Player, "cloak", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Belt" Then
                    INI.WertSchreiben(Player, "belt", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Amulet" Then
                    INI.WertSchreiben(Player, "amulet", groupid(i - 1).Text)
                ElseIf groupitemslot(i - 1).Text = "Ring" Then
                    INI.WertSchreiben(Player, "ring1", groupid(i - 1).Text)
                End If
            End If
            'nun wird geschaut ob die requirements des items erreicht wurden um es anlegen zu können
            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Items.ini"

            If groupitemslot(i - 1).Text = "Hand1" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & "." & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text <= "0" Then
                    LabelLvlReq.Text = "0"
                End If
                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Hand2" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & "." & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If
                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Helm" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Torso" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Arms" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Hands" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Legs" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Boots" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Cloak" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Belt" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Amulet" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            ElseIf groupitemslot(i - 1).Text = "Ring" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text < "0" Then
                    LabelLvlReq.Text = "0"
                End If

                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            End If

            'sollen items getraded werden ?
            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Player.ini"

            If INI.WertLesen(Player, "trade" & (i)) > "0" Then
                grouptrade(i - 1).Visible = True
                grouptrade(i - 1).Enabled = True
            End If

        Next i

        TableInventory.Visible = True

        'Equipped Items auslesen und updaten
        ButtonRefreshEquipment_Click(Nothing, New System.EventArgs)

    End Sub
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby lord of 13 » 08 Apr 2011, 16:39

Alright. So...

- Why not create a method UpdateInventory? It can do the same things... and you can call it without going through the Windows Forms library.
Code: Select all
Private Sub UpdateInventory()

    End Sub
- You continuously read INI values from disk instead of consolidating related info into their own container class. Maybe you can create something like this...

  • Class Player
    • String Name
    • Item Hand1
    • Item Hand2
    • ...
    • Public Sub SaveToINI(ByVal iniPath As String)
  • Class Item
    • String Name
    • 'Item details! and info
    • Public Static Sub LoadFromINI(ByVal iniPath As String) As Item
  • Class ItemManager
    • String Name
    • 'Item details! and info
    • Public Sub GetItem(ByVal itemName As String, ByVal itemID As String) As Item
as a code framework. Right now there's a LOT going on in your one function, and your arrays of Controls could be split up into smaller, more manageable methods.

- OK... so now, onto the smaller optimizations.
Optimizations | Open
- The If/ElseIf block that begins with
Code: Select all
If groupitemslot(i - 1).Text = "Hand1" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & "." & groupid(i - 1).Text, "reqlvl")
has each body statement do exactly the same thing. Rewrite it to use the Or logical operator and chain together the checks into one statement.
Code: Select all
If groupitemslot(i - 1).Text = "Hand1" [b]Or groupitemslot(i - 1).Text = "Hand2"[b] Then 'And ETC
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & "." & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text <= "0" Then
                    LabelLvlReq.Text = "0"
                End If
                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
EndIf
This has the added benefit of improving readability and reducing code redundancy, making future changes easier. :D
-
Code: Select all
ButtonRefreshEquipment_Click(Nothing, New System.EventArgs)
. Rewrite this into a function as well. Makes your life simpler and easier... not to mention faster.
-
Code: Select all
If groupitemslot(i - 1).Text = "Hand1" Then
                    INI.WertSchreiben(Player, "hand1", groupid(i - 1).Text)
. This If-ElseIf block can just be simplified to...
Code: Select all
Dim keyName as String
                Dim keyName As String
                keyName = groupitemslot(i - 1).Text.ToLower()
                If (keyName = "ring") Then
                    keyName = "ring1"
                End If
Not that much faster... but it is easier to read and more manageable.
- Do you really need all of the CStr calls with [varName].Text? The Text property is a String anyhow...
Ex:
Code: Select all
 If [b]CStr([/b]groupitemslot(i - 1).Text[b])[/b] = "Empty"
- Also, you don't need to do this
Code: Select all
groupitemname(i - 1).Visible = False
            groupid(i - 1).Visible = False
            groupequip(i - 1).Visible = False
            groupreq(i - 1).Visible = False
            grouptrade(i - 1).Visible = False

            groupreq(i - 1).Enabled = False
since you do more-or-less the exact same thing with your If statement. You just need to keep around
Code: Select all
groupreq(i - 1).Enabled = False
Alright, so that's what I got off of a quick read. Keep in mind that I've never actually coded VB... I write C# and I used to code in a Basic-like language called AutoIt3 when I was 11 or so. The AutoIt experience and Bing (and Bing translator!) helped me understand the syntax.
However, you seem unfamiliar with logical expressions and basic methods such as ToLower(). Odd, for someone who's been coding ManaLink for so long. Have you only recently begun to learn VB?

PS: A bonus... the rewritten code
UpdateInventory | Open
Code: Select all
Private Function UpdateInventory()
        Dim INI As New INIDatei, Player As String
        Dim groupitemslot() As Control = New Control() {LabelItemslot1, _
                                                       LabelItemslot2, _
                                                       LabelItemslot3, _
                                                       LabelItemslot4, _
                                                       LabelItemslot5, _
                                                       LabelItemslot6, _
                                                       LabelItemslot7, _
                                                       LabelItemslot8, _
                                                       LabelItemslot9, _
                                                       LabelItemslot10, _
                                                       LabelItemslot11, _
                                                       LabelItemslot12, _
                                                       LabelItemslot13, _
                                                       LabelItemslot14, _
                                                       LabelItemslot15, _
                                                       LabelItemslot16, _
                                                       LabelItemslot17, _
                                                       LabelItemslot18, _
                                                       LabelItemslot19, _
                                                       LabelItemslot20, _
                                                       LabelItemslot21, _
                                                       LabelItemslot22, _
                                                       LabelItemslot23, _
                                                       LabelItemslot24, _
                                                       LabelItemslot25, _
                                                            LabelItemslot26}

        Dim groupid() As Control = New Control() {LabelItemID1, _
                                                       LabelItemID2, _
                                                       LabelItemID3, _
                                                       LabelItemID4, _
                                                       LabelItemID5, _
                                                       LabelItemID6, _
                                                       LabelItemID7, _
                                                       LabelItemID8, _
                                                       LabelItemID9, _
                                                       LabelItemID10, _
                                                       LabelItemID11, _
                                                       LabelItemID12, _
                                                       LabelItemID13, _
                                                       LabelItemID14, _
                                                       LabelItemID15, _
                                                       LabelItemID16, _
                                                       LabelItemID17, _
                                                       LabelItemID18, _
                                                       LabelItemID19, _
                                                       LabelItemID20, _
                                                       LabelItemID21, _
                                                       LabelItemID22, _
                                                       LabelItemID23, _
                                                       LabelItemID24, _
                                                       LabelItemID25, _
                                                            LabelItemslot26}

        Dim groupitemname() As Control = New Control() {LabelItemName1, _
                                                       LabelItemName2, _
                                                       LabelItemName3, _
                                                       LabelItemName4, _
                                                       LabelItemName5, _
                                                       LabelItemName6, _
                                                       LabelItemName7, _
                                                       LabelItemName8, _
                                                       LabelItemName9, _
                                                       LabelItemName10, _
                                                       LabelItemName11, _
                                                       LabelItemName12, _
                                                       LabelItemName13, _
                                                       LabelItemName14, _
                                                       LabelItemName15, _
                                                       LabelItemName16, _
                                                       LabelItemName17, _
                                                       LabelItemName18, _
                                                       LabelItemName19, _
                                                       LabelItemName20, _
                                                       LabelItemName21, _
                                                       LabelItemName22, _
                                                       LabelItemName23, _
                                                       LabelItemName24, _
                                                       LabelItemName25, _
                                                            LabelItemslot26}

        Dim groupreq() As CheckBox = New CheckBox() {CheckReq1, _
                                                       CheckReq2, _
                                                       CheckReq3, _
                                                       CheckReq4, _
                                                       CheckReq5, _
                                                       CheckReq6, _
                                                       CheckReq7, _
                                                       CheckReq8, _
                                                       CheckReq9, _
                                                       CheckReq10, _
                                                       CheckReq11, _
                                                       CheckReq12, _
                                                       CheckReq13, _
                                                       CheckReq14, _
                                                       CheckReq15, _
                                                       CheckReq16, _
                                                       CheckReq17, _
                                                       CheckReq18, _
                                                       CheckReq19, _
                                                       CheckReq20, _
                                                       CheckReq21, _
                                                       CheckReq22, _
                                                       CheckReq23, _
                                                       CheckReq24, _
                                                       CheckReq25, _
                                                            CheckDummy}

        Dim groupequip() As CheckBox = New CheckBox() {CheckEquip1, _
                                                       CheckEquip2, _
                                                       CheckEquip3, _
                                                       CheckEquip4, _
                                                       CheckEquip5, _
                                                       CheckEquip6, _
                                                       CheckEquip7, _
                                                       CheckEquip8, _
                                                       CheckEquip9, _
                                                       CheckEquip10, _
                                                       CheckEquip11, _
                                                       CheckEquip12, _
                                                       CheckEquip13, _
                                                       CheckEquip14, _
                                                       CheckEquip15, _
                                                       CheckEquip16, _
                                                       CheckEquip17, _
                                                       CheckEquip18, _
                                                       CheckEquip19, _
                                                       CheckEquip20, _
                                                       CheckEquip21, _
                                                       CheckEquip22, _
                                                       CheckEquip23, _
                                                       CheckEquip24, _
                                                       CheckEquip25, _
                                                            CheckDummy}


        Dim grouptrade() As CheckBox = New CheckBox() {CheckTrade1, _
                                                       CheckTrade2, _
                                                       CheckTrade3, _
                                                       CheckTrade4, _
                                                       CheckTrade5, _
                                                       CheckTrade6, _
                                                       CheckTrade7, _
                                                       CheckTrade8, _
                                                       CheckTrade9, _
                                                       CheckTrade10, _
                                                       CheckTrade11, _
                                                       CheckTrade12, _
                                                       CheckTrade13, _
                                                       CheckTrade14, _
                                                       CheckTrade15, _
                                                       CheckTrade16, _
                                                       CheckTrade17, _
                                                       CheckTrade18, _
                                                       CheckTrade19, _
                                                       CheckTrade20, _
                                                       CheckTrade21, _
                                                       CheckTrade22, _
                                                       CheckTrade23, _
                                                       CheckTrade24, _
                                                       CheckTrade25, _
                                                            CheckDummy}

        INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Player.ini"
        Player = INI.WertLesen("Setup", "name")

        TableInventory.Visible = False

        For i = 1 To 26

            'vorbereitung. was soll angezeigt werden ?
            groupreq(i - 1).Enabled = False

            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Player.ini"
            groupitemslot(i - 1).Text = INI.WertLesen(Player, "itemslot" & (i))
            groupid(i - 1).Text = INI.WertLesen(Player, "itemid" & (i))


            If CStr(groupitemslot(i - 1).Text) = "Empty" Then
                groupitemslot(i - 1).Visible = False
                groupreq(i - 1).Visible = False
                groupequip(i - 1).Visible = False
                groupitemname(i - 1).Visible = True
                grouptrade(i - 1).Visible = False
            Else
                groupitemslot(i - 1).Visible = True
                groupreq(i - 1).Visible = True
                groupequip(i - 1).Visible = True
                groupitemname(i - 1).Visible = True
                grouptrade(i - 1).Visible = True
            End If


            'nachdem der itemslot bestimmt wurde und die ids ermittelt (bereits geschehen)
            'finde den itemnamen

            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Items.ini"
            groupitemname(i - 1).Text = INI.WertLesen(groupitemslot(i - 1).Text & groupid(i - 1).Text, "name")

            If groupitemslot(i - 1).Text = "Hand1" Or groupitemslot(i - 1).Text = "Hand2" Then
                groupitemname(i - 1).Text = INI.WertLesen(groupitemslot(i - 1).Text & "." & groupid(i - 1).Text, "name")
            End If

            'schauen ob bereits etwas equipped wurde, entsprechende checkbox aktivieren
            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Player.ini"

            If INI.WertLesen(Player, "equipped" & (i)) > "0" Then
                groupequip(i - 1).Checked = True
                Dim keyName As String
                keyName = groupitemslot(i - 1).Text.ToLower()
                If (keyName = "ring") Then
                    keyName = "ring1"
                End If
            End If
            'nun wird geschaut ob die requirements des items erreicht wurden um es anlegen zu können
            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Items.ini"

            If groupitemslot(i - 1).Text = "Hand1" Or groupitemslot(i - 1).Text = "Hand2" Or groupitemslot(i - 1).Text = "Hands" Or groupitemslot(i - 1).Text = "Helm" Or groupitemslot(i - 1).Text = "Torso" Or groupitemslot(i - 1).Text = "Arms" Or groupitemslot(i - 1).Text = "Legs" Or groupitemslot(i - 1).Text = "Boots" Or groupitemslot(i - 1).Text = "Cloak" Or groupitemslot(i - 1).Text = "Belt" Or groupitemslot(i - 1).Text = "Amulet" Or groupitemslot(i - 1).Text = "Ring" Then
                LabelLvlReq.Text = LabelPlayerlevel.Text - INI.WertLesen(groupitemslot(i - 1).Text & "." & groupid(i - 1).Text, "reqlvl")
                If LabelLvlReq.Text = "0" Then
                    LabelLvlReq.Text = "1"
                End If
                If LabelLvlReq.Text <= "0" Then
                    LabelLvlReq.Text = "0"
                End If
                If LabelLvlReq.Text > "0" Then
                    groupreq(i - 1).Checked = True
                End If
            End If

            'sollen items getraded werden ?
            INI.Pfad = My.Application.Info.DirectoryPath & "\Data\Database\Player.ini"

            If INI.WertLesen(Player, "trade" & (i)) > "0" Then
                grouptrade(i - 1).Visible = True
                grouptrade(i - 1).Enabled = True
            End If

        Next i

        TableInventory.Visible = True

        'Equipped Items auslesen und updaten
        RefreshEquipment()
    End Function
><><><><><><><
Currently developing Mindgames, for playing a rules-enforced game of MtG.
RECENT PROJECTS
->XMLScript
->Zwiel Platformer
User avatar
lord of 13
DEVELOPER
 
Posts: 79
Joined: 06 Jan 2010, 01:36
Has thanked: 0 time
Been thanked: 0 time

Re: [VB]Mordor Clone - my journey

Postby Salbei » 09 Apr 2011, 03:25

I am really grateful for the opportunity to learn "new" things from a more experienced Developer (like you are).

I´m still learning "new" techniques almost daily since i am currently quite inexperienced with VB (or coding in general).
It simply have not thought about creating separate classes and read from there (instead of the HD).
I need to "toy around" with this a bit to get used to it, and to find the proper places to apply this knowledge.

I knew "OR" existed, but didn´t quite "get it to work" the way i would have wanted it.
Your example was a huge help to understand the way this is supposed to be used.

Thanks a lot for your effort.
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby MageKing17 » 09 Apr 2011, 21:09

Salbei wrote:Yeah i noticed that "Strength / Strenght" misspelling a while ago.

Thought that it won´t matter at the .INI files since you usually don´t get to see those.
Unfortunately the exact spelling is needed for large parts of the game. I can´t blindly search/replace the word without messing up anything - and THEN i would be in trouble.Especially because most of my "labels" share the misspelling. It would completely mess everything up.
Oh dear, oh dear, oh dear...

If correcting a typo like this requires you to "search/replace the word", you have done something wrong. If you have a whole bunch of string literals in the middle of your code, you are doing something wrong. Even if only for internationalization (translating the game into other languages), you need to be able to quickly change all the visible text without recompiling the code.

On the other hand, how could doing a search&replace to turn "Strenght" into "Strength" possibly mess anything up? What unrelated thing could it possibly accidentally mess up?
User avatar
MageKing17
Programmer
 
Posts: 473
Joined: 12 Jun 2008, 20:40
Has thanked: 5 times
Been thanked: 9 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 10 Apr 2011, 05:50

I already fixed the misspellings ingame.( took less than a minute)

They are still around at the ini files - i might aswell have named those xyz333 and it would still work - it is just easier for me to remember a "word".Replacing those would force me to re-test already working functions all over again and right now i just don´t have the time for that.

Keep in mind that i don´t have years of coding experience and that this is pretty much my first project beside tutorial ones. English is not my native language so those things will just happen.

A lot of Labels,checkboxes and other things share the misspelling (you won´t see those), from those i do several things like calculating multiplicators - damage etc. Renaming those would be a nightmare because they are getting used all over the place.

---

I´ve been re-working the combat system (mainly needed to implement combat spells later).
For the past 2 days i´m trying to implement a "initiative" system. It is a lot harder than i thought it would be. I needed to completely start from scratch after the method i had in mind didn´t work the way i wanted it (after hours and hours of coding).
The other method is about to be "finished". Really need to clean up a bit in there ... i am sure i made this one a lot harder than it needed to be, but i am happy that i got it to work on my own.
The combat section is a mess right now, it is quite confusing even to myself, the "old" version working with a timer and a fixed attack order was a lot simpler, but did not allow the player to interact much.

The new system feels more "turn based" and not as hectic.
I now have the opportunity to implement combat "styles" , magic and other things due to the changes.

I also toyed around with the colors a bit (won´t stay like that!) - things like changing the backcolor of the "active" player/monster at the initiative order. Hope i can fix the few new remaining bugs related to the new system.

Gonna take a while till i release a new version. I´m still not 100% happy with the way combat works and need to toy around with a few ideas.

My confidence took quite a hit when i realized that the reworked combat attempt couldn´t work the way i planned it out. Lost focus and couldn´t really concentrate on solutions. Took the rest of the day off (yesterday) and enjoyed the weekend. It´s pointless to force me to "work" on this when i can´t focus.
Turned out to be a good decision. Came up with a fresh idea today that worked right away.

The new Mapeditor should also be very handy for fine-tuning everything later. Should be quite easy to update this with new things. Prolly going to add a way to edit Monsterspawns (beside the location) in there soon.
Depends on my schedule.
I´m very happy that it worked as planned without much trouble.

Would be great if i could just drag/drop the items from one field to another (directly on the map). Didn´t quite understand how to do it.Well that is just a question of (free) time :P
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 11 Apr 2011, 12:18

Update:


New Features:
-almost completely reworked the way combat works.Been also toying around with the backgroundcolors.
Please let me know if the window is too large for your screen resolution.

-combat is now initiative based.
Before the actual combat begins a random number between 1 and your actual Dexterity will determine your initiative (same for the mobs).
Then a "roundbased" combat will take place. The first one on the initiative list will strike first, then the seconds etc.
This list is visible at the bottom right corner of the combat window. Sou you can see who attacks next and can strategically adept your target choice.
When everybody performed their attack a new round starts (initiative won´t change during combat, so the first one on the list will attack first , the second one after that and so on.).
Dead Monsters will be removed from the list as soon as they die.

-the active player will get highlighted during combat. So if Monster3 is about to attack then the background of everything related to that monster will get highlighted in a different color.

-included a few messageboxes during combat, after combat (what you gained from that encounter) and reworked the "lootmessage".

-fixed a few minor bugs.

Known bugs:
-Equipped Ringslot issues(didn´t have time to fix this yet).
-Map related issues (you have to LEAVE a field to get the effect, not exactly sure how to fix this without adding like 200 lines of code yet.)
-statpoints seem to change (just visually) when you train a skill. Noticed that while capturing the video.
This should be easy to fix (got a good idea why that is happening).

Note:
The mapeditor is included (inside the Data folder)

Video:


Download:
http://rapidshare.com/files/456903022/Sal__s_Dungeon__Beta__20110411.rar (1.75MB)
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 12 Apr 2011, 07:53

#1
Today i am working on a "Retreat" system (to flee from combat).

You only get the option to "retreat" during your "turn". You can NOT attack while trying to retreat.
It "costs" you at least 1 turn to retreat (the one turn where you choose to retreat).

At the beginning of your next turn a message will let you know if you managed to flee or not.
A random number between 1 and 100 will be generated. That number minus the amount of attackers and plus your total Dexterity will be checked. If that number is higher than 50 you manage to flee (you won´t gain experience,gold or items!) and the combat ends.
Otherwise you will have the option to flee again or fight normally.

You get the option to Retreat only during your turn.

(finished the implementation by now, just need to fine tune the needed minimum number to flee).

#2
Next thing on my list is the "dead player" scenario.
Right now players can´t "die" (when their hp drops below "1", nothing happens).
I really had to wait to implement this because the combat system was not always working. Since i can safely say that the basic combat should be bulletproof by now i can get into this (quite important) aspect of the game.

There are a few logical things i have to tell the game that are not obvious:

1)If the Players minimal hp drops below "1" the Player is dead. I need to change the player status as soon as that is happening, otherwise the player might "regenerate" or get healed before the check is being made.(check)
1a) The dead Players hp is "0". Otherwise the hp bar will throw error messages. (check)
1b) Dead players should not have mana (for spells etc. otherwise they might be able to cast spells etc.)
So instead of telling every single spell to watch out for the player status (dead/alive) i am going to handle it this way. Also after reviving the Char should need some time to "Regenerate" first. Just makes sense to me.(check)

2)The player may not move while being dead. (check)(control table will not be visible)
2a)The player may not fight / trade while being dead (this should be covered by 2.)(check)(control table will not be visible)
2b)The Player may not cast spells (should be covered by 1b)(check)(control table will not be visible)
2c)The Player may not use items (Healing Potions etc, not implemented yet)(check) (control table will not be visible)
2d)The Player may not equip/unequip items (Currently there are no "bonuses" like +hp or +con implemented, sooner or later they will be)(check)
3)The Player may not Regenerate hp/mp while being dead.(check)
4)The Player needs to know that he died (Messagebox) (check)
5)Dead Players may not be able to "log" into the game(optional) (check)(You get a message and the game closes after "loading" the character.)
6)Save the location of the corpse (check)(location will be saved at the playerlist.ini)

Those should be the first things i need to do.

Now i need to find a way to "do" something with the dead player.First i need to retrieve the corpse.
1)Other Players/Characters may find the dead Players corpse(check)
2)Other Players/Characters may revive the dead Player with a Spell / Scroll (not implemented)
3)Other Players/Characters may "carry" the dead Player to a nearby Town(check)
4)Other Players/Characters may hire "Rescuers" (in Town) to find the corpse and bring it to town (for gold)(check) (you may send rescuers from any town if there is a corpse at the playerlist)

After that i need to implement ways to "revive" the dead Player.
1)Revive at Town (for gold)(check) (morgue is enabled at the town where the corpse was brought to)
2)Revive by Spell: (need to implement spells first).

Whenever the corpse is "moved" i need to save that. Also when the Player is no longer dead i need to change their status again.
---
As you see this is actually a lot more complex than you might have thought in the first place.
I am sure that i haven´t even listed everything.
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 13 Apr 2011, 13:36

Wrote a little tool to rename files (lots of them at once).
Learned a lot about reading out lists etc. and "browsing" through the computer.
This knowledge will be mad useful.
I can now rework the inventory and other things to be "better".

Also the tool itself is actually quite nice (used it to rename 600ish avi files to get the playlist in order).It can be used for all sorts of extensions.

http://www.salbei.spacequadrat.de/vb/Renamer.rar

You just need to place the tool inside the folder with the target files (can´t accidentally rename things you don´t want to this way).Should be really straight forward to use.
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 14 Apr 2011, 09:03

Completed the work on the "dead" player thing (for now - there are still no spells /scrolls etc available. Sooner or later i would have to adjust this).

The mapeditor now lets you manually edit monsterspawns / the monsters stats.
Either doubleclick the "Spawnposition" or click the "Edit Spawn" Button that should appear after selecting a spawnposition.

---
I got a couple ideas on how to individualize mobs. Gonna try to implement those changes today.

Update:

Champions:
Champions got drastically increased base hp. However they deal the same damage as normal monsters.
It is wise to attack them last.

There is a 25% chance that the first Monster is a champion.
If the first monster is a champion then there is a 20% chance that the second Monster is a champion.
If the second monster is a champion then there is a 15% chance that the third Monster is a champion.
if the third monster is a champion then there is a 10% chance that the fourth Monster is a champion.(should be really rare)

Killing Champions increase your chance to find an item and grant additional Gold/Xp (compared to a normal Monster).

Minions:
Minions got drastically decreased base hp. However they deal the same damage as normal monsters.
It is wise to attack them first.

There is a 95% chance that the tenth Monster is a minion.
There is a 90% chance that the ninth Monster is a minion.
There is a 85% chance that the eighth Monster is a minion.
There is a 80% chance that the seventh Monster is a minion.
There is a 75% chance that the sixth Monster is a minion.
There is a 70% chance that the fifth Monster is a minion.

Killing Minions decreases your chance to find an item and grand less Gold/Xp (compared to a normal Monster).

Normal Monsters are neither Champions nor Minions and should be the most common encounter.
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 15 Apr 2011, 07:42

Today i am rewriting the Inventory.

The old code was way too clumsy and and the inventory looked horrible ingame (and also caused a "slowdown" while the inventory was updating).You had empty spaces when you sold an item etc. I really didn´t like that.
Also once you got like 20+ items it was very confusing because of the massive information all in one spot.

I´ve learned to avoid this by my "renamer" project and now am ready to apply the "new" knowledge of reading out specific items inside a list.

The "new" Inventory should be very userfriendly. I am especially looking forward to the "sort" function.

A single listbox will enlist all items (you can even sort it or just show single items to compare them).
I am still going to use a ton of labels(3 per item =75) and update those, but they won´t be visible.
I wanted to use classes for this first, but i figured out that this would be overkill.I only need to access these just once (or maybe twice after selling).

So i readout the ini file ONCE, name the labels after the items and thats it and update the individual label if needed ... not clumsy 200+ read/write processes.

I am doing this to prevent the mistake i did at the old inventory version where the has to read an ini file over and over again multiple times (was causing the slowdown).
This way the listbox reads the labels - and the labels just change when the actual item is changing.


This is a very important change that just had to be made.
I just didn´t knew it better when i initially coded the inventory - even though i noticed the problems related to it.

Update:
Finished rewriting this and am VERY happy with the result.
Equipping/Unequipping can now be done by just a single Button(instead of a million checkboxes).
The code itself is "clear" and optimized (as it should be).
The "slowdown" is now gone (as expected) and the inventory no longer "overflows" you with tons of information.

Image

I just need to add minor things now (check if you are allowed to equip the item, and add a "*equipped*" to the item name if it is the case.).
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 16 Apr 2011, 19:08

Fine tuned the Inventory(you may now "examine" the selected item).

Further ideas for the Inventory:
Intelligence based "itemnames names" (aka identifying).
Won´t work on this since there are more important things to do right now.

The reworked Inventory should be fully functional now.

I have started to rewrite the "sell" merchant in town from scratch (simply won´t work anymore due to the inventory changes). Should be almost identical to the "buy" routine (visually).
However - the code used for the sell merchant is a lot more elegant (been reading out most of the data from the "mainwindow" instead of the ini files).
I keep learning new "techniques" automatically just by coding itself (trying more efficient commands) and am happy to apply or even improve them.

Code: Select all
        For i = 0 To 24

            If ListBoxSell.SelectedItem.ToString = groupstatslabelitemname(i).Text Then
                If groupstatslabelitemslot(i).Text = "Hand1" Or groupstatslabelitemslot(i).Text = "Hand2" Then
                    LabelItemvalue.Text = INI.WertLesen(ComboBoxType.SelectedItem.ToString & "." & groupstatslabelitemid(i).Text.ToString, "value")
                Else
                    LabelItemvalue.Text = INI.WertLesen(ComboBoxType.SelectedItem.ToString & groupstatslabelitemid(i).Text.ToString, "value")
                End If

            End If
        Next i

        ButtonSell.Visible = True
        LabelItemvalue.Visible = True
Sell Merchant:
You choose an itemslot
Now everything in there that is NOT equipped will be displayed inside a list.
Select the item you want to sell - you may now "sell" the item.
You gain Gold, loose the item and the Item goes into the individual towns "buy" inventory.

I also fixed the few remaining bugs i remembered (also found/fixed few passages that caused the inventory to not update correct).Most of those could have been avoided by NOT coding when i lack concentration.
I am already trying to not "force" things to happen, but this habit is quite hard to shake off. Usually i want to finish what i have started at the same day - even if it means to spend many hours for that.
Near the end of those sessions i tend to do mistakes (some of those stay unnoticed for days).
And trying to find those mistakes after a couple days can be REALLY hard.
It takes a lot more time to fix those "stupid" mistakes than to code entire new sections, and thus i really need to force myself to stop my coding session after noticing a lack of concentration (or at least take a break).

Currently still working on the "sell" merchant and most likely going to release the next version tomorrow. (Should be complete by now, once again this is quite complex so finding/fixing bugs is quite time intensive.)

---

Working "alone" on a huge project like this can sometimes be frustrating.
I really wish i had a few people to report bugs or work on the "easier" development parts (images,sounds, work on the map , name monsters / items ... it is a long list^^) by now.
Already tried to "recruit" a few people, but the general interest in the project does not seem to be high enough (right now).
Can´t blame anyone for it - there is still so much left to do.
I am also aware that my broken English "text-walls" i keep producing are not that appealing as well :) Those help me to recap the progress and thus keep my motivation up - and if there really is someone out there who is willing to read them, so be it :)

I am seeing this topic as a kind of "baby picture album" - gonna be interesting to watch in the future.

On the other hand there is next to no pressure on my shoulders right now - i can always take a "day off" if i don´t feel like doing anything.
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 17 Apr 2011, 16:57

Spend most of my day contacting various Artists to request permission to use their work today.
Since there are still a few major bugs (related to the reworked inventory / sell merchant / revive system) left i have decided to not throw another release out there.

Didn´t do much beside fixing bugs otherwise today.
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

Re: [VB]Mordor Clone - my journey

Postby Huggybaby » 18 Apr 2011, 02:20

You will eventually find help if you are persistent. There may be other forums where people who like dungeon crawling hang out, and they should be made aware of your project also. Maybe someone can point us in the right direction.
User avatar
Huggybaby
Administrator
 
Posts: 3205
Joined: 15 Jan 2006, 19:44
Location: Finally out of Atlanta
Has thanked: 696 times
Been thanked: 594 times

Re: [VB]Mordor Clone - my journey

Postby Salbei » 18 Apr 2011, 13:29

Well i´ve figured out that at this point the game IS playable, but not enjoyable.Too many things are still missing so calling it a "Beta" version was a bit too hasty.
I just scared off the few people who downloaded the "test versions".
I should be more careful what to release. I´ve already got a topic at another forum, but - to be honest - the game doesn´t look "appealing" enough as it is right now.

So back to the roots, i´m first including something new and then fix something old (to keep the motivation up).

---

Today i am preparing to implement "buffs" and "debuffs".
This is will cover a huge part of "non-straight-forward damage spells" and should be the first thing you are able to spend your mana on.
I doubt that i will be able to finish this today, but i am trying to get as much done as possible (if my concentration allows me to).
Retired a long time ago. I will not reply.
User avatar
Salbei
DEVELOPER
 
Posts: 1053
Joined: 04 Jun 2009, 10:58
Location: Germany
Has thanked: 3 times
Been thanked: 2 times

PreviousNext

Return to [VB]Mordor Clone

Who is online

Users browsing this forum: No registered users and 4 guests


Who is online

In total there are 4 users online :: 0 registered, 0 hidden and 4 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 4 guests

Login Form