Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Dodawanie pkt buttonami


Rekomendowane odpowiedzi

Opublikowano

@wasta, teraz zacząłem dodawać ten kod do swojego i patrze, że ty jakoś inaczej ten inputy zrobiłeś i nie mam pomysłu jak je dodać po swojemu, zapomniałem wspomnieć, że każy input ma też swoją domyślną wartość 1-3 maja wartosc 20 a 4-7 maja wartosc 10 do ktorej dodaje sie wlasnie tamta wartosc przez buttony ;/

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

ref

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

O ile dobrze zrozumiałem:

1. Wyjściowy stan to  input 1 do 3 = 20, input 4 do 7 = 10.

2. Do tych wartości możemy dodać łącznie 1+4*nr_zakresu.

3. Maksymalna sumaryczna ilość punktów we wszystkich inputach to: 100+1+4*nr_zakresu.

4. Minimalna sumaryczna ilość punktów we wszystkich inputach to zero.

Jeżeli to są właściwe założenia, to kod może wyglądać tak:

#include <GUIConstantsEx.au3>

Dim $aInput[8][5]      ;tabela z uchwytami i nazwami inputów
Dim $iII=7             ;ilość inputów
Dim $iIZ=100           ;ilość zakresów
Dim $aLimit[$iII+1]    ;tablica limitów w inputach

;ilość inputów wpisana do tabel
$aInput[0][0] = $iII
$aLimit[0] = $iII
;nazwy inputów
$aInput[1][3] = "Cecha 1"
$aInput[2][3] = "Cecha 2"
$aInput[3][3] = "Cecha 3"
$aInput[4][3] = "Cecha 4"
$aInput[5][3] = "Cecha 5"
$aInput[6][3] = "Cecha 6"
$aInput[7][3] = "Cecha 7"

;wartości początkowe w inputach
$aInput[1][4] = 20
$aInput[2][4] = 20
$aInput[3][4] = 20
$aInput[4][4] = 10
$aInput[5][4] = 10
$aInput[6][4] = 10
$aInput[7][4] = 10
$iPunktyStart = $aInput[1][4]+$aInput[2][4]+$aInput[3][4]+$aInput[4][4]+$aInput[5][4]+$aInput[6][4]+$aInput[7][4]

GUICreate("Mój skrypt z Inputami")
For $i=1 To $iII
   $aInput[$i][1] = GUICtrlCreateInput($aInput[$i][4], 120, 20+($i-1)*30, 100, 25, 0x800)
   $aInput[$i][2] = GUICtrlCreateUpdown($aInput[$i][1])
   GUICtrlCreateLabel($aInput[$i][3], 50, 20+($i-1)*30)
Next

$hInput_Z = GUICtrlCreateInput(1, 120, 260, 50, 25, 0x800)
$hUpDown_Z = GUICtrlCreateUpdown($hInput_Z)
GUICtrlSetLimit($hUpDown_Z, $iIZ, 1)
GUICtrlCreateLabel("Nr zakresu:", 50, 260)
$hLab1 = GUICtrlCreateLabel("Ilość punktów do rozdania: 5     ", 50, 290)
$hLab2 = GUICtrlCreateLabel("Pozostało do rozdania:     5     ", 50, 310)
$hButton = GUICtrlCreateButton("KONIEC", 180, 360)

GUISetState()

$iLimitMem=0
Do
   $iLimit = $iPunktyStart + 1 + 4*GUICtrlRead($hInput_Z)
   If $iLimit<>$iLimitMem Then GUICtrlSetData($hLab1, "Ilość punktów do rozdania: " & $iLimit-$iPunktyStart)
   If $iLimit<$iLimitMem Then ClearInput($aInput)
   $iSuma = Suma($aInput)
   For $i=1 To $iII
      $aLimit[$i]=$iLimit - $iSuma + GUICtrlRead($aInput[$i][1])
   Next
   SetLimit($aLimit)
   GUICtrlSetData($hLab2, "Pozostało do rozdania:       " & $iLimit - $iSuma)
   $iLimitMem = $iLimit
   Sleep(20)
   $msg = GUIGetMsg()
Until $msg=$GUI_EVENT_CLOSE Or $msg=$hButton

MsgBox(64, "Ustawiono:", GUICtrlRead($aInput[1][1]) & @LF & _
                         GUICtrlRead($aInput[2][1]) & @LF & _
                         GUICtrlRead($aInput[3][1]) & @LF & _
                         GUICtrlRead($aInput[4][1]) & @LF & _
                         GUICtrlRead($aInput[5][1]) & @LF & _
                         GUICtrlRead($aInput[6][1]) & @LF & _
                         GUICtrlRead($aInput[7][1]))
;----------------------------------------------------------------------
Func Suma($aInput)  ;sumowanie wartości w inputach
   Local $iSuma
   For $i=1 To $aInput[0][0]
      $iSuma += GUICtrlRead($aInput[$i][1])
   Next
   Return $iSuma
EndFunc

Func SetLimit($aLimit)    ;ustawianie limitu w inputach
   For $i=1 To $aLimit[0]
      GUICtrlSetLimit($aInput[$i][2], $aLimit[$i], 0)
   Next
EndFunc

Func ClearInput($aInput)    ;zerowanie wartości w inputach
   For $i=1 To $aInput[0][0]
      GUICtrlSetData($aInput[$i][1], $aInput[$i][4])
   Next
EndFunc
Opublikowano

 

O ile dobrze zrozumiałem:

1. Wyjściowy stan to  input 1 do 3 = 20, input 4 do 7 = 10.

2. Do tych wartości możemy dodać łącznie 1+4*nr_zakresu.

3. Maksymalna sumaryczna ilość punktów we wszystkich inputach to: 100+1+4*nr_zakresu.

4. Minimalna sumaryczna ilość punktów we wszystkich inputach to zero.

Jeżeli to są właściwe założenia, to kod może wyglądać tak:

#include <GUIConstantsEx.au3>

Dim $aInput[8][5]      ;tabela z uchwytami i nazwami inputów
Dim $iII=7             ;ilość inputów
Dim $iIZ=100           ;ilość zakresów
Dim $aLimit[$iII+1]    ;tablica limitów w inputach

;ilość inputów wpisana do tabel
$aInput[0][0] = $iII
$aLimit[0] = $iII
;nazwy inputów
$aInput[1][3] = "Cecha 1"
$aInput[2][3] = "Cecha 2"
$aInput[3][3] = "Cecha 3"
$aInput[4][3] = "Cecha 4"
$aInput[5][3] = "Cecha 5"
$aInput[6][3] = "Cecha 6"
$aInput[7][3] = "Cecha 7"

;wartości początkowe w inputach
$aInput[1][4] = 20
$aInput[2][4] = 20
$aInput[3][4] = 20
$aInput[4][4] = 10
$aInput[5][4] = 10
$aInput[6][4] = 10
$aInput[7][4] = 10
$iPunktyStart = $aInput[1][4]+$aInput[2][4]+$aInput[3][4]+$aInput[4][4]+$aInput[5][4]+$aInput[6][4]+$aInput[7][4]

GUICreate("Mój skrypt z Inputami")
For $i=1 To $iII
   $aInput[$i][1] = GUICtrlCreateInput($aInput[$i][4], 120, 20+($i-1)*30, 100, 25, 0x800)
   $aInput[$i][2] = GUICtrlCreateUpdown($aInput[$i][1])
   GUICtrlCreateLabel($aInput[$i][3], 50, 20+($i-1)*30)
Next

$hInput_Z = GUICtrlCreateInput(1, 120, 260, 50, 25, 0x800)
$hUpDown_Z = GUICtrlCreateUpdown($hInput_Z)
GUICtrlSetLimit($hUpDown_Z, $iIZ, 1)
GUICtrlCreateLabel("Nr zakresu:", 50, 260)
$hLab1 = GUICtrlCreateLabel("Ilość punktów do rozdania: 5     ", 50, 290)
$hLab2 = GUICtrlCreateLabel("Pozostało do rozdania:     5     ", 50, 310)
$hButton = GUICtrlCreateButton("KONIEC", 180, 360)

GUISetState()

$iLimitMem=0
Do
   $iLimit = $iPunktyStart + 1 + 4*GUICtrlRead($hInput_Z)
   If $iLimit<>$iLimitMem Then GUICtrlSetData($hLab1, "Ilość punktów do rozdania: " & $iLimit-$iPunktyStart)
   If $iLimit<$iLimitMem Then ClearInput($aInput)
   $iSuma = Suma($aInput)
   For $i=1 To $iII
      $aLimit[$i]=$iLimit - $iSuma + GUICtrlRead($aInput[$i][1])
   Next
   SetLimit($aLimit)
   GUICtrlSetData($hLab2, "Pozostało do rozdania:       " & $iLimit - $iSuma)
   $iLimitMem = $iLimit
   Sleep(20)
   $msg = GUIGetMsg()
Until $msg=$GUI_EVENT_CLOSE Or $msg=$hButton

MsgBox(64, "Ustawiono:", GUICtrlRead($aInput[1][1]) & @LF & _
                         GUICtrlRead($aInput[2][1]) & @LF & _
                         GUICtrlRead($aInput[3][1]) & @LF & _
                         GUICtrlRead($aInput[4][1]) & @LF & _
                         GUICtrlRead($aInput[5][1]) & @LF & _
                         GUICtrlRead($aInput[6][1]) & @LF & _
                         GUICtrlRead($aInput[7][1]))
;----------------------------------------------------------------------
Func Suma($aInput)  ;sumowanie wartości w inputach
   Local $iSuma
   For $i=1 To $aInput[0][0]
      $iSuma += GUICtrlRead($aInput[$i][1])
   Next
   Return $iSuma
EndFunc

Func SetLimit($aLimit)    ;ustawianie limitu w inputach
   For $i=1 To $aLimit[0]
      GUICtrlSetLimit($aInput[$i][2], $aLimit[$i], 0)
   Next
EndFunc

Func ClearInput($aInput)    ;zerowanie wartości w inputach
   For $i=1 To $aInput[0][0]
      GUICtrlSetData($aInput[$i][1], $aInput[$i][4])
   Next
EndFunc

 

Zaraz to sprawdzę, bo nie wiem czy dobrze zrozumiałem to co napisałeś :D

{Domyślnie inputy od 1 do 3 miały mieć wartość 20 a od 4-7 wartość 10 i tyle :D}

 

Teraz mam pytanie jeszcze czy mógł byś zrobić te inputy tak normalnie jak np. to

$hp = GUICtrlCreateInput("20", 96, 16, 49, 21)

 

Bo to co mam to jest taki kalkulator i on zlicza te 7 inputow + dodaje inne do niego które mam, i tam podaje zmienna $hp a tutaj nie bardzo wiem co podać.

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Z tego co napisałeś to $hp to uchwyt do kontrolki INPUT.

W moim kodzie te uchwyty są zapisane w tablicy $aInput.

Ogólnie tablica zawiera następujące informacje w poszczególnych komórkach:

$aInput[0][0] = ilość inputów

$aInput[nr_inputa][1] = uchwyt do inputa

$aInput[nr_inputa][2] = uchwyt do przycisków góra/dół

$aInput[nr_inputa][3] = opis obok inputa

$aInput[nr_inputa][4] = początkowa wartość w inputach

gdzie nr_inputa jest od 1 do 7.

 

I tak dla pierwszego inputa uchwyt jest w komórce $aInput[1][1], dla drugiego w komórce $aInput[2][1] ...... dla 7 $aInput[7][1].

 

We fragmencie:

MsgBox(64, "Ustawiono:", GUICtrlRead($aInput[1][1]) & @LF & _
                         GUICtrlRead($aInput[2][1]) & @LF & _
                         GUICtrlRead($aInput[3][1]) & @LF & _
                         GUICtrlRead($aInput[4][1]) & @LF & _
                         GUICtrlRead($aInput[5][1]) & @LF & _
                         GUICtrlRead($aInput[6][1]) & @LF & _
                         GUICtrlRead($aInput[7][1]))

masz właśnie odczytanie i wyświetlenie wartości z wszystkich inputów.

 

To wyjaśnienie powinno ci chyba wystarczyć.

Jeżeli nie, to pytaj.

Opublikowano

Z tego co napisałeś to $hp to uchwyt do kontrolki INPUT.

W moim kodzie te uchwyty są zapisane w tablicy $aInput.

Ogólnie tablica zawiera następujące informacje w poszczególnych komórkach:

$aInput[0][0] = ilość inputów

$aInput[nr_inputa][1] = uchwyt do inputa

$aInput[nr_inputa][2] = uchwyt do przycisków góra/dół

$aInput[nr_inputa][3] = opis obok inputa

$aInput[nr_inputa][4] = początkowa wartość w inputach

gdzie nr_inputa jest od 1 do 7.

 

I tak dla pierwszego inputa uchwyt jest w komórce $aInput[1][1], dla drugiego w komórce $aInput[2][1] ...... dla 7 $aInput[7][1].

 

We fragmencie:

MsgBox(64, "Ustawiono:", GUICtrlRead($aInput[1][1]) & @LF & _
                         GUICtrlRead($aInput[2][1]) & @LF & _
                         GUICtrlRead($aInput[3][1]) & @LF & _
                         GUICtrlRead($aInput[4][1]) & @LF & _
                         GUICtrlRead($aInput[5][1]) & @LF & _
                         GUICtrlRead($aInput[6][1]) & @LF & _
                         GUICtrlRead($aInput[7][1]))

masz właśnie odczytanie i wyświetlenie wartości z wszystkich inputów.

 

To wyjaśnienie powinno ci chyba wystarczyć.

Jeżeli nie, to pytaj.

 

No ok ale jak mam teraz podać zmienną input 1 czyli hp do tego kalkulatora? Bo ja mam coś takiego, że jest te 7 inputów i mam swoje comboxoy z inputami które mają wartości swoje i wtedy dzieje się coś takiego $hp + $ArmorHP się sumuje i wyświetla i nadal nie kapuje jak wyświetlić teraz ten domyślny input jak ty zrobiłeś. Coś takiego ma być? $aInput[1] + $ArmorHP? Czy jak zmienie to $aInput[1] na $hp będzie działać?

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Nie tak.

Napisałeś, że $hp = GUICtrlCreateInput("20", 96, 16, 49, 21) - czyli, że $hp jest uchwytem do kontrolki.

Teraz piszesz, że wykonujesz dodawanie $hp + $ArmorHP.

To jest kompletnie bez sensu. Uchwyt to nie jakaś wartość, to identyfikator jakiegoś obiektu (np. kontrolki INPUT).

Dodawanie czegokolwiek do uchwytu jest zupełnie pozbawione sensu. W ten sposób nie otrzymamy żadnego sensownego wyniku.

To tak jakbyś do nazwy ulicy chciał dodać 10.

Sens ma tylko dodawanie do zawartości inputa, a tą odczytujemy funkcją GUICtrlRead, której argunetem musi być uchwyt. Dla przykładu, jeżeli chcemy dodać zmienną $ArmorHP do zawartości pierwszego inputa, to napiszemy:

GUICtrlRead($aInput[1][1]) + $ArmorHP

do drugiego:

GUICtrlRead($aInput[2][1]) + $ArmorHP

.

.

.

do siudmego:

GUICtrlRead($aInput[7][1]) + $ArmorHP

 

Czy teraz już jasne?

Opublikowano

Nie tak.

Napisałeś, że $hp = GUICtrlCreateInput("20", 96, 16, 49, 21) - czyli, że $hp jest uchwytem do kontrolki.

Teraz piszesz, że wykonujesz dodawanie $hp + $ArmorHP.

To jest kompletnie bez sensu. Uchwyt to nie jakaś wartość, to identyfikator jakiegoś obiektu (np. kontrolki INPUT).

Dodawanie czegokolwiek do uchwytu jest zupełnie pozbawione sensu. W ten sposób nie otrzymamy żadnego sensownego wyniku.

To tak jakbyś do nazwy ulicy chciał dodać 10.

Sens ma tylko dodawanie do zawartości inputa, a tą odczytujemy funkcją GUICtrlRead, której argunetem musi być uchwyt. Dla przykładu, jeżeli chcemy dodać zmienną $ArmorHP do zawartości pierwszego inputa, to napiszemy:

GUICtrlRead($aInput[1][1]) + $ArmorHP

do drugiego:

GUICtrlRead($aInput[2][1]) + $ArmorHP

.

.

.

do siudmego:

GUICtrlRead($aInput[7][1]) + $ArmorHP

 

Czy teraz już jasne?

 

Nadal nie rozumiem jak zmienić te inputy zrobione po twojemu na tak jak moje wyglądają :D

Patrz mam coś takiego:

$hp = GUICtrlCreateInput("20", 96, 16, 49, 21)

 

I to jest zmienna $hp o wartości 20 do tej zmiennej są przypisane inne itemu które maja swoje wartości w pliku ini, oraz dodawane jest to $shelm_hp = GUICtrlCreateInput("0", 296, 40, 41, 21) [gdzie 0 jest wartością, którą zmienia użytkownik]

i to wykonuje się to tak wyswietlajac wynik w msgboxie. oczywiście jest tego więcej to tylko przykłady

 

 MsgBox(0, "", "HP: " & $calcHP & 0 + $calcHelmHP & @CRLF & _

   

I ja bym chciał żeby te inputy może wygladaly tak jak bys mogl zmienić bo ja nie wiem jak to zrobić :/ u mnie one wygladaja tak tylko ze wtedy do nich nie mogę przypisac twojego kodu (znaczy nie wiem jak go przypisac)

 

$Group1 = GUICtrlCreateGroup("Group1", 0, 0, 230, 225)

$hp = GUICtrlCreateInput("20", 96, 16, 49, 21)

$HPp = GUICtrlCreateLabel("Zdrowie", 8, 16, 42, 17, $SS_CENTERIMAGE)

$Button90 = GUICtrlCreateButton("-", 64, 16, 27, 21, BitOR($BS_CENTER,$BS_TOP))

$Button1 = GUICtrlCreateButton("+", 152, 16, 27, 21, BitOR($BS_CENTER,$BS_TOP))

$MP = GUICtrlCreateLabel("Mana", 8, 40, 31, 17, $SS_CENTERIMAGE)

$Button2 = GUICtrlCreateButton("-", 64, 40, 27, 21, BitOR($BS_CENTER,$BS_TOP))

$mana = GUICtrlCreateInput("20", 96, 40, 49, 21)

$Button3 = GUICtrlCreateButton("+", 152, 40, 27, 21, BitOR($BS_CENTER,$BS_TOP))

$Label1 = GUICtrlCreateLabel("Kondycja", 8, 64, 48, 17, $SS_CENTERIMAGE)

$Label2 = GUICtrlCreateLabel("Sila", 8, 88, 21, 17, $SS_CENTERIMAGE)

$Label3 = GUICtrlCreateLabel("Zrecznosc", 8, 112, 54, 17, $SS_CENTERIMAGE)

$Label4 = GUICtrlCreateLabel("Moc", 8, 136, 25, 17, $SS_CENTERIMAGE)

$Label5 = GUICtrlCreateLabel("Wiedza", 8, 160, 40, 17, $SS_CENTERIMAGE)

$Button4 = GUICtrlCreateButton("-", 64, 64, 27, 21, BitOR($BS_CENTER,$BS_TOP))

$Button5 = GUICtrlCreateButton("-", 64, 88, 27, 21, BitOR($BS_CENTER,$BS_TOP))

$kondycja = GUICtrlCreateInput("20", 96, 64, 49, 21)

$sila = GUICtrlCreateInput("10", 96, 88, 49, 21)

$zrecznosc = GUICtrlCreateInput("10", 96, 112, 49, 21)

$moc = GUICtrlCreateInput("10", 96, 136, 49, 21)

$wiedza = GUICtrlCreateInput("10", 96, 160, 49, 21)

 

Tam gdzie jest +/- to są butony, które miały dodawać pkt.

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Napisałęś:

$hp = GUICtrlCreateInput("20", 96, 16, 49, 21)

 

I to jest zmienna $hp o wartości 20 do tej zmiennej są przypisane inne itemu które maja swoje wartości w pliku ini, oraz dodawane jest to $shelm_hp = GUICtrlCreateInput("0", 296, 40, 41, 21) [gdzie 0 jest wartością, którą zmienia użytkownik]

 

Jeszcze raz tłumaczę, że w zmiennej $hp nie będziesz miał wartości 20. Funkcja GUICtrlCreateInput nie zwraca zawartości pola edycyjnego inputa!!! Ona zwraca uchwyt tego inputa, czyli jego identyfikator. Jeżeli chcesz poznać zawartość inputa musisz użyć funkcji GUICtrlRead z argumentem, którym jest uchwyt do danego inputa.

 

Poniższe funkcje zwracają ci zawartości poszczególnych inputów:

GUICtrlRead($aInput[1][1]) - zawartość pierwszego inputa
GUICtrlRead($aInput[2][1]) 
GUICtrlRead($aInput[3][1])
GUICtrlRead($aInput[4][1])
GUICtrlRead($aInput[5][1])
GUICtrlRead($aInput[6][1])
GUICtrlRead($aInput[7][1]) - zawartość siódmego inputa

I na tych wartościach możesz wykonywać dowolne działania matematyczne.

 

Treść w labelach przy poszczególnych inputach masz zdefiniowane w tym fragmencie:

$aInput[1][3] = "Cecha 1" - label przy pierwszym inpucie
$aInput[2][3] = "Cecha 2"
$aInput[3][3] = "Cecha 3"
$aInput[4][3] = "Cecha 4"
$aInput[5][3] = "Cecha 5"
$aInput[6][3] = "Cecha 6"
$aInput[7][3] = "Cecha 7" - label przy siódmym inpucie

Więc możesz je pozmieniać w zależności od potrzeb.

 

Wartości początkowe w inputach masz zdefiniowane dla kolejnych inputów:

$aInput[1][4] = 20
$aInput[2][4] = 20
$aInput[3][4] = 20
$aInput[4][4] = 10
$aInput[5][4] = 10
$aInput[6][4] = 10
$aInput[7][4] = 10

Też możesz zmieniać te wartości.

Buttony +/- nie są potrzebne.

 

Jeżeli nie odpowiadają ci położenia inputów to zamiast:

GUICreate("Mój skrypt z Inputami")
For $i=1 To $iII
   $aInput[$i][1] = GUICtrlCreateInput($aInput[$i][4], 120, 20+($i-1)*30, 100, 25, 0x800)
   $aInput[$i][2] = GUICtrlCreateUpdown($aInput[$i][1])
   GUICtrlCreateLabel($aInput[$i][3], 50, 20+($i-1)*30)
Next

możesz indywidualnie definiować każdy input, jak np. poniżej:

GUICreate("Mój skrypt z Inputami")

;pierwszy input
$aInput[1][1] = GUICtrlCreateInput($aInput[1][4], 120, 20, 100, 25, 0x800)
$aInput[1][2] = GUICtrlCreateUpdown($aInput[1][1])
GUICtrlCreateLabel($aInput[1][3], 50,20)

;drugi input
$aInput[2][1] = GUICtrlCreateInput($aInput[2][4], 120, 50, 100, 25, 0x800)
$aInput[2][2] = GUICtrlCreateUpdown($aInput[2][1])
GUICtrlCreateLabel($aInput[2][3], 50,50)
;
;itd...........
;
;siódmy input
$aInput[7][1] = GUICtrlCreateInput($aInput[7][4], 120, 200, 100, 25, 0x800)
$aInput[7][2] = GUICtrlCreateUpdown($aInput[7][1])
GUICtrlCreateLabel($aInput[7][3], 50,200)

Nie wiem co jeszcze mógłbym ci prościej opisać.

Opublikowano

Napisałęś:

$hp = GUICtrlCreateInput("20", 96, 16, 49, 21)

 

I to jest zmienna $hp o wartości 20 do tej zmiennej są przypisane inne itemu które maja swoje wartości w pliku ini, oraz dodawane jest to $shelm_hp = GUICtrlCreateInput("0", 296, 40, 41, 21) [gdzie 0 jest wartością, którą zmienia użytkownik]

 

Jeszcze raz tłumaczę, że w zmiennej $hp nie będziesz miał wartości 20. Funkcja GUICtrlCreateInput nie zwraca zawartości pola edycyjnego inputa!!! Ona zwraca uchwyt tego inputa, czyli jego identyfikator. Jeżeli chcesz poznać zawartość inputa musisz użyć funkcji GUICtrlRead z argumentem, którym jest uchwyt do danego inputa.

 

Poniższe funkcje zwracają ci zawartości poszczególnych inputów:

GUICtrlRead($aInput[1][1]) - zawartość pierwszego inputa

GUICtrlRead($aInput[2][1]) 

GUICtrlRead($aInput[3][1])

GUICtrlRead($aInput[4][1])

GUICtrlRead($aInput[5][1])

GUICtrlRead($aInput[6][1])

GUICtrlRead($aInput[7][1]) - zawartość siódmego inputa

I na tych wartościach możesz wykonywać dowolne działania matematyczne.

 

Treść w labelach przy poszczególnych inputach masz zdefiniowane w tym fragmencie:

$aInput[1][3] = "Cecha 1" - label przy pierwszym inpucie

$aInput[2][3] = "Cecha 2"

$aInput[3][3] = "Cecha 3"

$aInput[4][3] = "Cecha 4"

$aInput[5][3] = "Cecha 5"

$aInput[6][3] = "Cecha 6"

$aInput[7][3] = "Cecha 7" - label przy siódmym inpucie

Więc możesz je pozmieniać w zależności od potrzeb.

 

Wartości początkowe w inputach masz zdefiniowane dla kolejnych inputów:

$aInput[1][4] = 20
$aInput[2][4] = 20
$aInput[3][4] = 20
$aInput[4][4] = 10
$aInput[5][4] = 10
$aInput[6][4] = 10
$aInput[7][4] = 10

Też możesz zmieniać te wartości.

Buttony +/- nie są potrzebne.

 

Jeżeli nie odpowiadają ci położenia inputów to zamiast:

GUICreate("Mój skrypt z Inputami")
For $i=1 To $iII
   $aInput[$i][1] = GUICtrlCreateInput($aInput[$i][4], 120, 20+($i-1)*30, 100, 25, 0x800)
   $aInput[$i][2] = GUICtrlCreateUpdown($aInput[$i][1])
   GUICtrlCreateLabel($aInput[$i][3], 50, 20+($i-1)*30)
Next

możesz indywidualnie definiować każdy input, jak np. poniżej:

GUICreate("Mój skrypt z Inputami")

;pierwszy input
$aInput[1][1] = GUICtrlCreateInput($aInput[1][4], 120, 20, 100, 25, 0x800)
$aInput[1][2] = GUICtrlCreateUpdown($aInput[1][1])
GUICtrlCreateLabel($aInput[1][3], 50,20)

;drugi input
$aInput[2][1] = GUICtrlCreateInput($aInput[2][4], 120, 50, 100, 25, 0x800)
$aInput[2][2] = GUICtrlCreateUpdown($aInput[2][1])
GUICtrlCreateLabel($aInput[2][3], 50,50)
;
;itd...........
;
;siódmy input
$aInput[7][1] = GUICtrlCreateInput($aInput[7][4], 120, 200, 100, 25, 0x800)
$aInput[7][2] = GUICtrlCreateUpdown($aInput[7][1])
GUICtrlCreateLabel($aInput[7][3], 50,200)

Nie wiem co jeszcze mógłbym ci prościej opisać.

 

No tak input nie zwraca wartości zapomniałem dodać, że mam jeszcze odczytywanie jej ^^

 

" Local $calcHP = GUICtrlRead($hp) "

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

ref czy ktoś może mi to zrobić w normalnych inputach tak jak ja mam? ^^ Żebym mógł ustawiać pozycje każdego oddzielnie itp.

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Przecież masz normalne inputy i możesz każdy ustawiać oddzielnie.

Nie bardzo rozumiem problemu jaki posiadasz.

Po zastąpieni pętli oddzielnymi definicjami inputów (tak jak podałem ci w poprzednim wpisie) możesz je rozmieścić dowolnie, możesz je dowolnie opisać labelami i nadać im dowolne wartości wyjściowe.

 

Zapamiętanie danych wszystkich inputów w jednej tablicy ma tą miłą cechę, że łatwo zapanować nad nimi w przypadku gdy jest ich dużo i trzeba coś zmienić. Wtedy zmieniasz w jednym miejscu, a nie szukasz po kodzie gdzie coś jeszce trzeba zmienić. To szczególnie ważne dla dużych projektów.

W twoim kodzie jest po prostu bałagan i chaos.

Opublikowano

Dobra powiem wprost nie rozumiem tych towich inputów  czy jak to tam nie ogarniam tego, ja mam zrobione to tak i chciałbym żeby to tak było ale nie wiem jak to pozmieniac

 

$hp = GUICtrlCreateInput("20", 96, 16, 49, 21)
$HPp = GUICtrlCreateLabel("Zdrowie", 8, 16, 42, 17, $SS_CENTERIMAGE)
$Button90 = GUICtrlCreateButton("-", 64, 16, 27, 21, BitOR($BS_CENTER,$BS_TOP))
$Button1 = GUICtrlCreateButton("+", 152, 16, 27, 21, BitOR($BS_CENTER,$BS_TOP))
$MP = GUICtrlCreateLabel("Mana", 8, 40, 31, 17, $SS_CENTERIMAGE)
$Button2 = GUICtrlCreateButton("-", 64, 40, 27, 21, BitOR($BS_CENTER,$BS_TOP))
$mana = GUICtrlCreateInput("20", 96, 40, 49, 21)
$Button3 = GUICtrlCreateButton("+", 152, 40, 27, 21, BitOR($BS_CENTER,$BS_TOP))
$Label1 = GUICtrlCreateLabel("Kondycja", 8, 64, 48, 17, $SS_CENTERIMAGE)
$Label2 = GUICtrlCreateLabel("Sila", 8, 88, 21, 17, $SS_CENTERIMAGE)
$Label3 = GUICtrlCreateLabel("Zrecznosc", 8, 112, 54, 17, $SS_CENTERIMAGE)
$Label4 = GUICtrlCreateLabel("Moc", 8, 136, 25, 17, $SS_CENTERIMAGE)
$Label5 = GUICtrlCreateLabel("Wiedza", 8, 160, 40, 17, $SS_CENTERIMAGE)
$Button4 = GUICtrlCreateButton("-", 64, 64, 27, 21, BitOR($BS_CENTER,$BS_TOP))
$Button5 = GUICtrlCreateButton("-", 64, 88, 27, 21, BitOR($BS_CENTER,$BS_TOP))
$kondycja = GUICtrlCreateInput("20", 96, 64, 49, 21)
$sila = GUICtrlCreateInput("10", 96, 88, 49, 21)
$zrecznosc = GUICtrlCreateInput("10", 96, 112, 49, 21)
$moc = GUICtrlCreateInput("10", 96, 136, 49, 21)
$wiedza = GUICtrlCreateInput("10", 96, 160, 49, 21)

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano
#include <GUIConstantsEx.au3>

Dim $aInput[8][5]      ;tabela z uchwytami i nazwami inputów
Dim $iII = 7           ;ilość inputów
Dim $iIZ = 100         ;ilość zakresów
Dim $aLimit[$iII+1]    ;tablica limitów w inputach

;ilość inputów wpisana do tabel
$aInput[0][0] = $iII
$aLimit[0] = $iII

;nazwy inputów
$aInput[1][3] = "Zdrowie"
$aInput[2][3] = "Mana"
$aInput[3][3] = "Kondycja"
$aInput[4][3] = "Siła"
$aInput[5][3] = "Zręczność"
$aInput[6][3] = "Moc"
$aInput[7][3] = "Wiedza"

;wartości początkowe w inputach
$aInput[1][4] = 20   ;początkowa wartość dla zdrowia
$aInput[2][4] = 20   ;początkowa wartość dla many
$aInput[3][4] = 20   ;początkowa wartość dla kondycji
$aInput[4][4] = 10   ;początkowa wartość dla siły
$aInput[5][4] = 10   ;początkowa wartość dla zręczności
$aInput[6][4] = 10   ;początkowa wartość dla mocy
$aInput[7][4] = 10   ;początkowa wartość dla wiedzy
$iPunktyStart = $aInput[1][4]+$aInput[2][4]+$aInput[3][4]+$aInput[4][4]+$aInput[5][4]+$aInput[6][4]+$aInput[7][4]

GUICreate("Mój skrypt z Inputami")   ;tworzenie okna GUI

;tworzenie inputów z cechami
For $i=1 To $iII
   $aInput[$i][1] = GUICtrlCreateInput($aInput[$i][4], 120, 20+($i-1)*30, 70, 25, 0x00800800)
   $aInput[$i][2] = GUICtrlCreateUpdown($aInput[$i][1])
   GUICtrlCreateLabel($aInput[$i][3], 50, 20+($i-1)*30)
Next

;tworzenie inputu z zakresami
$hInput_Z = GUICtrlCreateInput(1, 120, 260, 50, 25, 0x00800800)
$hUpDown_Z = GUICtrlCreateUpdown($hInput_Z)
GUICtrlSetLimit($hUpDown_Z, $iIZ, 1)
GUICtrlCreateLabel("Nr zakresu:", 50, 260)
$hLab1 = GUICtrlCreateLabel("Ilość punktów do rozdania: 5     ", 50, 290)
$hLab2 = GUICtrlCreateLabel("Pozostało do rozdania:     5     ", 50, 310)

$hButton = GUICtrlCreateButton("  KONIEC  ", 180, 360, -1, -1, -1, 1) 

GUISetState()

$iLimitMem=0
Do
   $iLimit = $iPunktyStart + 1 + 4*GUICtrlRead($hInput_Z)
   If $iLimit<>$iLimitMem Then GUICtrlSetData($hLab1, "Ilość punktów do rozdania: " & $iLimit-$iPunktyStart)
   If $iLimit<$iLimitMem Then ClearInput($aInput)
   $iSuma = Suma($aInput)
   For $i=1 To $iII
      $aLimit[$i]=$iLimit - $iSuma + GUICtrlRead($aInput[$i][1])
   Next
   SetLimit($aLimit)
   GUICtrlSetData($hLab2, "Pozostało do rozdania:       " & $iLimit - $iSuma)
   $iLimitMem = $iLimit
   Sleep(20)
   $msg = GUIGetMsg()
Until $msg=$GUI_EVENT_CLOSE Or $msg=$hButton

MsgBox(64, "Ustawiono:", $aInput[1][3] & @ & @ & GUICtrlRead($aInput[1][1]) & @LF & _ ;tu są punkty zdrowia GUICtrlRead($aInput[1][1]
                         $aInput[2][3] & @ & @ & GUICtrlRead($aInput[2][1]) & @LF & _ ;tu są punkty many
                         $aInput[3][3] & @ & @ & GUICtrlRead($aInput[3][1]) & @LF & _ ;tu są punkty kondycji
                         $aInput[4][3] & @ & @ & GUICtrlRead($aInput[4][1]) & @LF & _ ;tu są punkty siły
                         $aInput[5][3] & @ &        GUICtrlRead($aInput[5][1]) & @LF & _ ;tu są punkty zręczności
                         $aInput[6][3] & @ & @ & GUICtrlRead($aInput[6][1]) & @LF & _ ;tu są punkty mocy
                         $aInput[7][3] & @ & @ & GUICtrlRead($aInput[7][1]))          ;tu są punkty wiedzy





;----------------------------------------------------------------------
Func Suma($aInput)  ;sumowanie wartości w inputach
   Local $iSuma
   For $i=1 To $aInput[0][0]
      $iSuma += GUICtrlRead($aInput[$i][1])
   Next
   Return $iSuma
EndFunc

Func SetLimit($aLimit)    ;ustawianie limitu w inputach
   For $i=1 To $aLimit[0]
      GUICtrlSetLimit($aInput[$i][2], $aLimit[$i], 0)
   Next
EndFunc

Func ClearInput($aInput)    ;zerowanie wartości w inputach
   For $i=1 To $aInput[0][0]
      GUICtrlSetData($aInput[$i][1], $aInput[$i][4])
   Next
EndFunc

Wstawiłem twoje nazwy, dodałem dodatkowe komentarze.

Jak w dalszej części programu potrzebujesz się dowiedzieć ile masz np. puntów many, to piszesz:

$iPunktyMany = GUICtrlRead($aInput[2][1])

a punkty mocy to:

$iPunktyMocy = GUICtrlRead($aInput[6][1])

Ot i cała filozofia.

 

Dostajesz przejrzysty, elegancki i skomentowany kod. Jak teraz nie wyczaisz, to już nie wiem.

 

Poczytaj coś o tablicach, bo chyba z tym masz kłopot: https://pl.wikibooks.org/wiki/AutoIt/Tablice

Opublikowano

Dobra jutro se to rozkminie do końca, to wyświetlanie w msgboxie nie potrzebne mi bo już je mam, do all stat

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...