Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6 Miksi toinen koodi toimii ja toinen ei? :(

feltsu [01.12.2009 10:41:26]

#

Tää siis formilla weaponshop:

Option Explicit

Private Sub btnBuyWeapon_Click()

    Dim i As Integer
    Dim a As Integer

    For i = 0 To lstWeapons.ListIndex - 1
    Next i

        a = MsgBox("Are you sure you want to buy " & WeaponData(i).WeapName & " for " & WeaponData(i).WeapValue & " gold pieces?", vbYesNo)
            If a = vbYes Then
                frmInventory.lstPlayerWeapons.AddItem WeaponData(i).WeapName
            Else:
                MsgBox "I'm sorry to hear that"
                Exit Sub
            End If

End Sub

Private Sub lstWeapons_Click()

    Dim i As Integer

    For i = 0 To lstWeapons.ListIndex
        If lstWeapons.Selected(i) Then
            lblWeaponDesc.Caption = WeaponData(i).WeapDesc & vbCrLf
            lblWeaponDesc.Caption = lblWeaponDesc.Caption & "Price: " & WeaponData(i).WeapValue
        End If
    Next i

End Sub

Ja tää on formilla inventory:

Private Sub lstPlayerWeapons_Click()

    Dim i As Integer

    For i = 0 To lstPlayerWeapons.ListIndex
        If lstPlayerWeapons.Selected(i) Then
            lblPlayerItemDesc.Caption = WeaponData(i).WeapName & vbCrLf & _
            lblPlayerItemDesc.Caption = lblPlayerItemDesc.Caption & "Value: " & WeaponData(i).WeapValue
        End If
    Next i

End Sub

Private Sub btnEquipWeapon_Click()

    Dim j As Integer

    For j = 0 To lstPlayerWeapons.ListIndex - 1
    Next j

        If PlayerData.EquippedWeapon = "Nothing" Then
            PlayerData.EquippedWeapon = WeaponData(j).WeapName
            PlayerData.MinDamage = WeaponData(j).WeapMinDam
            PlayerData.MaxDamage = WeaponData(j).WeapMaxDam
            PlayerData.Accuracy = PlayerData.Accuracy + WeaponData(j).WeapAcc
            PlayerData.Str = PlayerData.Str + WeaponData(j).WeapStr
            PlayerData.Dex = PlayerData.Dex + WeaponData(j).WeapDex
            PlayerData.Con = PlayerData.Con + WeaponData(j).WeapCon
            PlayerData.Wis = PlayerData.Wis + WeaponData(j).WeapWis
            PlayerData.Cha = PlayerData.Cha + WeaponData(j).WeapCha
        Else:
            MsgBox ("You already have an equipped weapon!")
        End If

    PlayerUpdate

End Sub

Private Sub btnRemoveWeapon_Click()

    Dim i As Integer

    For i = 0 To lstPlayerWeapons.ListIndex - 1
    Next i

        If Not PlayerData.EquippedWeapon = "Nothing" Then
            PlayerData.EquippedWeapon = "Nothing"
            PlayerData.Accuracy = 100
            PlayerData.MinDamage = 1
            PlayerData.MaxDamage = 2
            PlayerData.Str = PlayerData.Str - WeaponData(i).WeapStr
            PlayerData.Dex = PlayerData.Dex - WeaponData(i).WeapDex
            PlayerData.Con = PlayerData.Con - WeaponData(i).WeapCon
            PlayerData.Wis = PlayerData.Wis - WeaponData(i).WeapWis
            PlayerData.Cha = PlayerData.Cha - WeaponData(i).WeapCha
        Else:
            MsgBox ("You don't have any weapon equipped!")
        End If
        PlayerUpdate

End Sub

Niin muuten toi kyllä toimii mut jos ostan vaikka short swordin joka on tokana kaupassa olevassa listassa niin kaikki on ihan ok vieläpä tuolla inventory formilla... Siihen asti ku klikkaan btnEquippia, siinä vaiheessa heittää jotain randomia, joskus equipped weapon on rapier (joka on neljäs kaupan listassa) ja joskus se on dagger (ensimmäisenä kaupan listassa), mut ei osu kohalle se equ minkä "oon kaupasta" sattunu valitsemaan... Oon aivan täysin ymmälläni! Kamppaillu asian kanssa jo liian kauan huoh..

-Feltsu

EDIT: Joo sain kaikkein alkuperäisimmän ongelmani mitä tässä kyselin niin "toimimaan" koska kun se lähti toimimaan niin tämä yllä oleva ongelma ilmeni, huoh, ei taida olla vaan koodaus kaikille prkl :(

EDIT: Jotain pientä muunnellu, lisää infoa jne.

feltsu [01.12.2009 11:47:15]

#

En kerenny enää muokkaamaan edellistä viestiä, mut ilmeni vielä semmoinen että jostain syystä tuo label tuolla inventoryssäkin näyttää jotain ihan outoa.. siinä lukee vaan False. Niin ja otin tuon if lauseen siitä pois eli koodi tällä hetkellä seuraavanlainen:

Private Sub lstPlayerWeapons_Click()

    Dim i As Integer

    For i = 0 To lstPlayerWeapons.ListIndex
        lblPlayerItemDesc.Caption = WeaponData(i).WeapName & vbCrLf & _
        lblPlayerItemDesc.Caption = lblPlayerItemDesc.Caption & "Value: " & WeaponData(i).WeapValue
    Next i

End Sub

feltsu [01.12.2009 13:32:22]

#

Ok, ongelma melkein ylipäästy :) Pitää tallentaa ostettujen kamojen tiedot ensin "välimuuttujiin" ja sitä kautta sitte lähen rakentamaan :) Katsotaan jos en saa toimii niin pitää itkee lisää apua.

-Feltsu

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta