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

[Gra]Gra Bez Nazwy


Rekomendowane odpowiedzi

Opublikowano

Siema,

Pisałem sobie w wolnym czasie taką gierkę. Z założenia miało się chodzić po katakumbach i rozwalać potworki. Jednak z powodu braku czasu i chęci (pierwszy raz bardziej tych drugich :P ) nie dokończyłem gry. Daję ją tutaj, ponieważ komuś może się zachcieć dokończyć ją, albo napisać własną grę, ale nie będzie wiedział jak zacząć :) Edytor jest chyba gotowy z tego co pamiętam, a gra tak w 50% :) Czyli system EQ, chodzenie, zapisywanie mapy, wczytywanie, grafika są gotowe :)

Obecnie miałem robić cały system walki, ale wena się skończyła i przestałem pisać :(

 

Kod gry:

#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <File.au3>

Global $mode = "mapa"; tryb gry
Global $can_attack = 1; mozliwosc atakowania (klikanie w menu walki)
Global $map_id = "0"; id obecnej mapy
Global $MenuMouse = "eq"; tryb kursora (eq/sell)
Global $NowMonster = 0

Dim $Temple[14][9][8]; [X][Y][obiekt, wejscie_gora, wejscie_prawo, wejscie_dol, wejscie_lewo, id _potwora, id_skrzyni, fabuła]

Dim $Last_temple[2]; ostatnio odwiedzona komnata

Dim $Player[17]; [obrazek, X, Y, gold, hp, mana, str, vit, int, dex, bron, pancerz, helm, buty, nick, lvl, stats point]
$Player[14] = "Ziomek"; nick

;~ Dim $Monster[10][2]; [iD] [HP, DMG]

Dim $EQ[8][4][2]; [0-7 pionowo w eq][0-3 kategorie (weapons, armors, magic, other)][iD Itemu, obrazek]
Dim $WearPosition[4][2] = [[273, 160],[350, 160],[350, 250],[350, 83]];bronXY, armorXY, nogiXY, helmXY
Dim $WearEQImage[4] = [0, 0, 0, 0]; handle obrazkow noszonych itemow

$GUI = GUICreate("Gra by hfaua", 700, 500);GUI
GUISetBkColor(0x324043); kolor tla
GUISetState(); ustawia status GUI na @SW_SHOW

_Game_Start(); funkcja zaczynajaca gre

; WSZYSTKIE GUIREGISTERMSG'e
GUIRegisterMsg(0x000F, "WM_PAINT"); WM_PAINT
GUIRegisterMsg(0x0100, "WM_KEYDOWN"); KEYDOWN
GUIRegisterMsg(0x0201, "WM_LBUTTONDOWN"); WM_LBUTTONDOWN

;PETLA WHILE
While 1
Sleep(10)
If GUIGetMsg() = -3 Then _EXIT_Game(); jesli kliknie krzyzyk to exit
WEnd

Func _Game_Start()
_GDIPlus_Startup(); startuje GDIPlus
_Game_Create("mapa"); tworzy mapę
_Game_Create("panel"); tworzy panel dolny
_Game_Create("player"); tworzy gracza
_Game_Create("menu");tworzy menu
_Game_Create("walka"); tworzy menu walki
_Game_LoadMonsters(); ładuje potworki
_Player_LoadStats(); ustawia parametry gracza
_EQ_LoadEQ(); laduje eq z pliku
_Refresh_Screen(); odswierza obraz
EndFunc   ;==>_Game_Start

Func _Player_LoadStats()
$Player_File = FileOpen("Data\" & $Player[14] & "\Player.plr", 0)

For $i = 1 To UBound($Player) - 1
	$Player[$i] = FileReadLine($Player_File, $i)
Next
FileClose($Player_File)

If Not (($Temple[$Player[1]][$Player[2]][1] = 1) Or ($Temple[$Player[1]][$Player[2]][2] = 1) Or ($Temple[$Player[1]][$Player[2]][3] = 1) Or ($Temple[$Player[1]][$Player[2]][4] = 1)) Then
	For $x = 0 To 13
		For $y = 0 To 8
			If ($Temple[$x][$y][1] = 1) Or ($Temple[$x][$y][2] = 1) Or ($Temple[$x][$y][3] = 1) Or ($Temple[$x][$y][4] = 1) Then
				$Player[1] = $x
				$Player[2] = $y
				ExitLoop
			EndIf
		Next
	Next
EndIf
If $Player[10] <> 0 Then _EQ_WearWeapon($Player[10])
For $i = 11 To 13
	If $Player[$i] <> 0 Then _EQ_WearArmour($Player[$i], $i - 10)
Next

Return 1
EndFunc   ;==>_Player_LoadStats

Func _Player_Add_Atr($i)
If $Player[16] > 0 Then
	$Player[$i + 5] += 1
	$Player[16] -= 1
	_Refresh_Screen()
	ToolTip("dodales do " & $i)
EndIf
EndFunc   ;==>_Player_Add_Atr

Func _Walka_Show($i)
;ZMIANA TRYBU ODSWIERZANIA
$mode = "walka"
_Refresh_Screen()
EndFunc   ;==>_Walka_Show

Func _Walka_Skrzynia($i)

EndFunc   ;==>_Walka_Skrzynia

Func _Walka_Fabula($i)

EndFunc   ;==>_Walka_Fabula

Func _Fight_AttckPlayer($MonsterID)
Local $MonsterAttack = 0, $PlayerArmor = 0

$MonsterAttack = _Fight_GetMonster_DMG($MonsterID)

$PlayerArmor += $Player[11]
$PlayerArmor += $Player[12]
$PlayerArmor += $Player[13]

If $MonsterAttack < $PlayerArmor Then
	$DMG = 10
Else
	$DMG = $MonsterAttack - $PlayerArmor
EndIf

$Player[4] -= $DMG

Return 1
EndFunc   ;==>_Fight_AttckPlayer

Func _Fight_AttackMonster($MonsterID)
Local $PlayerAttack = 0, $MonsterArmor = 0, $DMG = 0

If $Player[10] <> "" Then $PlayerAttack += _EQ_GetDMG($Player[10])

$MonsterArmor = _Fight_GetMonster_Armor($MonsterID)

If $PlayerAttack < $MonsterArmor Then
	$DMG = 10
Else
	$DMG = $PlayerAttack - $MonsterArmor
EndIf

$Monster[$MonsterID][0] -= $DMG

;~ 	MsgBox(0, "ATAK i DEF", $PlayerAttack & @CRLF & $MonsterArmor)
;~ 	MsgBox(0, "HP POTWORA", $Monster[$MonsterID][1])
;~ 	MsgBox(0, "DMG", $DMG)

_Refresh_Screen()

_Fight_CheckFight($MonsterID)
_Fight_AttckPlayer($MonsterID)
_Fight_CheckFight($MonsterID)

Return 1
EndFunc   ;==>_Fight_AttackMonster

Func _Fight_CheckFight($MonsterID)
If $Monster[$MonsterID][0] <= 0 Then _Fight_EndFight(1, $MonsterID)
If $Player[4] <= 0 Then _Fight_EndFight(0, $MonsterID)
EndFunc   ;==>_Fight_CheckFight


Func _Fight_EndFight($Wynik, $MonsterID)

EndFunc   ;==>_Fight_EndFight

Func _Fight_AttackBySpell($SpellID)
Local $DMG = 0

Switch $SpellID
	Case 1
		$DMG = 10
	Case 2
		$DMG = 30
	Case 3
		$DMG = 60
EndSwitch

Return 1
EndFunc   ;==>_Fight_AttackBySpell

Func _Fight_GetMonster_Armor($MonsterID)
Return $Monster[$MonsterID][0]
EndFunc   ;==>_Fight_GetMonster_Armor

Func _Fight_GetMonster_DMG($MonsterID)
Return $Monster[$MonsterID][1]
EndFunc   ;==>_Fight_GetMonster_DMG

Func _Menu_Show()
;ZMIANA TRYBU ODSWIERZANIA
$mode = "menu"
_Refresh_Screen()

;ZAKTUALIZOWANIE EKWIPUNKU
_EQ_Dispose()
_EQ_AddItemsToInventory()
EndFunc   ;==>_Menu_Show

Func _EQ_GetArmor($ItemID, $ItemType)
Local $Armor = 0

Switch $ItemType
	Case 1
		Switch $ItemID
			Case "1000"
				$Armor = 100
		EndSwitch
	Case 2
		Switch $ItemID
			Case "1200"
				$Armor = 10
			Case "1201"
				$Armor = 15
			Case "1202"
				$Armor = 20
			Case "1203"
				$Armor = 25
			Case "1204"
				$Armor = 50
		EndSwitch
	Case 3
		Switch $ItemID
			Case "1400"
				$Armor = 5
			Case "1401"
				$Armor = 8
			Case "1402"
				$Armor = 10
			Case "1403"
				$Armor = 12
			Case "1404"
				$Armor = 20
			Case "1405"
				$Armor = 50
		EndSwitch
EndSwitch

Return $Armor
EndFunc   ;==>_EQ_GetArmor

Func _EQ_GetDMG($ItemID)
Local $DMG = 0

Switch $ItemID
	Case "0001"
		$DMG = 10
	Case "0002"
		$DMG = 20
	Case "0003"
		$DMG = 30
	Case "0004"
EndSwitch

Return $DMG
EndFunc   ;==>_EQ_GetDMG

Func _EQ_UseItem($IndexEQ, $Type)
$ItemID = $EQ[$IndexEQ][$Type][0]

If Not ($ItemID = 0) Then
	Switch $Type
		Case 0
			$ItemIndex = _EQ_CheckEQ(0)

			If $ItemIndex <> -1 Then
				If $Player[10] <> 0 Then
					_EQ_DeleteItemFromPlayer(0)
					_EQ_CreateItem($Player[10], 0, $ItemIndex)
				EndIf

				$Player[10] = $ItemID
				_EQ_WearWeapon($ItemID)
				_EQ_DeleteItemFromInventory($IndexEQ, 0)
			Else
				If $Player[10] = 0 Then
					$Player[10] = $ItemID
					_EQ_WearWeapon($ItemID)
					_EQ_DeleteItemFromInventory($IndexEQ, 0)
				Else
					MsgBox(16, "Błąd!", "Nie możesz smienić broni. Brak miejsca w EQ!")
				EndIf
			EndIf

		Case 1
			If $ItemID <> 0 Then
				Select
					Case ($ItemID > 999) And ($ItemID < 1200)
						$SubType = 1

					Case ($ItemID > 1199) And ($ItemID < 1400)
						$SubType = 2

					Case ($ItemID > 1399) And ($ItemID < 1600)
						$SubType = 3
					Case Else
						$SubType = -1
				EndSelect

				$ItemIndex = _EQ_CheckEQ(1)

				If ($Player[$SubType + 10] <> 0) Then
					If $ItemIndex <> -1 Then
						_EQ_DeleteItemFromPlayer($SubType)
						_EQ_CreateItem($Player[$SubType + 10], 1, $ItemIndex)
						$Player[$SubType + 10] = $ItemID
						_EQ_WearArmour($ItemID, $SubType)
						_EQ_DeleteItemFromInventory($IndexEQ, $Type)
					Else
						MsgBox(16, "Błąd!", "Nie możesz Zmienić zbroi. Brak miejsca w EQ!" & _EQ_CheckEQ(1))
					EndIf
				Else
					$Player[$SubType + 10] = $ItemID
					_EQ_WearArmour($ItemID, $SubType)
					_EQ_DeleteItemFromInventory($IndexEQ, $Type)
				EndIf
			EndIf
		Case 2
			If $Player[4] < 100 Then
				If $ItemID = 2001 Then
					_EQ_UsePotion_HP()
					_EQ_DeleteItemFromInventory($IndexEQ, $Type)
				EndIf
			EndIf
			If $Player[5] < 100 Then
				If $ItemID = 2000 Then
					_EQ_UsePotion_MP()
					_EQ_DeleteItemFromInventory($IndexEQ, $Type)
				EndIf
			EndIf

		Case 3
			ToolTip("Użyłeś klucza!")
	EndSwitch
EndIf

;~ 	_EQ_SortItems(1)

Return 1
EndFunc   ;==>_EQ_UseItem

Func _EQ_SellItem($ItemIndex, $Type)
_EQ_DeleteItemFromInventory($ItemIndex, $Type)
$Player[3] += 1000
EndFunc   ;==>_EQ_SellItem

Func _EQ_SetSellMouse()
If $MenuMouse = "sell" Then
	$MenuMouse = "eq"
Else
	$MenuMouse = "sell"
EndIf
EndFunc   ;==>_EQ_SetSellMouse

Func _EQ_DestroyEQ()

EndFunc   ;==>_EQ_DestroyEQ

Func _EQ_CreateItem($ItemID, $Type, $ItemIndex)
If Not ($ItemIndex = -1) Then
	$EQ[$ItemIndex][$Type][0] = $ItemID
	$EQ[$ItemIndex][$Type][1] = _GDIPlus_ImageLoadFromFile("Img\Items\" & $ItemID & ".png")
	_GDIPlus_GraphicsDrawImageRect($Menu_graphic, $EQ[$ItemIndex][$Type][1], 487 + $Type * 51, 62 + $ItemIndex * 51, 50, 50)

	Return 1
Else
	Return 0
EndIf
EndFunc   ;==>_EQ_CreateItem

Func _EQ_CheckEQ($Type)
Local $ItemIndex = -1

For $i = 0 To 7
	If ($EQ[$i][$Type][0] = 0) Or ($EQ[$i][$Type][0] = 0000) Or ( Not (FileExists("Img\Items\" & $EQ[$i][$Type][0] & ".png"))) Then
		$ItemIndex = $i
		ExitLoop
	EndIf
Next

Return $ItemIndex
EndFunc   ;==>_EQ_CheckEQ

Func _EQ_DeleteItemFromPlayer($ItemIndex)
If $WearEQImage[$ItemIndex] <> 0 Then
	_GDIPlus_ImageDispose($WearEQImage[$ItemIndex])
	$WearEQImage[$ItemIndex] = 0
	_Refresh_Screen()
	Return 1
Else
	Return 1
EndIf
EndFunc   ;==>_EQ_DeleteItemFromPlayer

Func _EQ_WearWeapon($ItemID)
$WearEQImage[0] = _GDIPlus_ImageLoadFromFile("Img\Items\" & $ItemID & ".png")
_GDIPlus_GraphicsDrawImageRect($Menu_graphic, $WearEQImage[0], $WearPosition[0][0], $WearPosition[0][1], 50, 50)

Return 1
EndFunc   ;==>_EQ_WearWeapon

Func _EQ_WearArmour($ItemID, $SubType)
$WearEQImage[$SubType] = _GDIPlus_ImageLoadFromFile("Img\Items\" & $ItemID & ".png")
_GDIPlus_GraphicsDrawImageRect($Menu_graphic, $WearEQImage[$SubType], $WearPosition[$SubType][0], $WearPosition[$SubType][1], 50, 50)

Return 1
EndFunc   ;==>_EQ_WearArmour

Func _EQ_DeleteItemFromInventory($id, $Type)
_GDIPlus_ImageDispose($EQ[$id][$Type][1])
$EQ[$id][$Type][1] = 0
$EQ[$id][$Type][0] = 0
_Refresh_Screen()

Return 1
EndFunc   ;==>_EQ_DeleteItemFromInventory

;~ Func _EQ_SortItems($Type)

;~ 	Return 1
;~ EndFunc   ;==>_EQ_SortItems

Func _EQ_AddItemsToInventory()
For $q = 0 To 3
	For $e = 0 To 7
		$EQ[$e][$q][1] = _GDIPlus_ImageLoadFromFile("Img\Items\" & $EQ[$e][$q][0] & ".png")
		_GDIPlus_GraphicsDrawImageRect($Menu_graphic, $EQ[$e][$q][1], 487 + $q * 51, 62 + $e * 51, 50, 50)
	Next
Next

Return 1
EndFunc   ;==>_EQ_AddItemsToInventory

Func _EQ_Dispose()
For $q = 0 To 3
	For $e = 0 To 7
		_GDIPlus_ImageDispose($EQ[$e][$q][1])
	Next
Next

Return 1
EndFunc   ;==>_EQ_Dispose

Func _EQ_UsePotion_HP()
$Player[5] = 100
ToolTip("Uleczyłes sie!")
EndFunc   ;==>_EQ_UsePotion_HP

Func _EQ_UsePotion_MP()
$Player[4] = 100
ToolTip("Masz FULL many!")
EndFunc   ;==>_EQ_UsePotion_MP

Func _EQ_LoadEQ()
Local $EQ_File, $id = 1

$EQ_File = FileOpen("Data\" & $Player[14] & "\eq.dat", 0)
For $q = 0 To 3
	For $e = 0 To 7
		$line = FileReadLine($EQ_File, $id)
		$EQ[$e][$q][0] = $line
		$id += 1
	Next
Next
FileClose($EQ_File)
EndFunc   ;==>_EQ_LoadEQ

Func _Game_LoadMonsters()
Local $id = 0

$MonsterFile = FileOpen("Resources\Monsters.mst", 0)

For $y = 0 To 8
	For $x = 0 To 13
		If $Temple[$x][$y][5] <> "" Then
			$Monster[$id][0] = FileReadLine($MonsterFile, (2 * $Temple[$x][$y][5]) + 1);HP
			$Monster[$id][1] = FileReadLine($MonsterFile, (2 * $Temple[$x][$y][5]) + 2);DMG
		EndIf
	Next
Next


FileClose($MonsterFile)

Return 1
EndFunc   ;==>_Game_LoadMonsters

Func _Game_Create($element)
Switch $element
	Case "player"
		;TWORZENIE OBRAZKA GRACZA
		$Player[0] = _GDIPlus_ImageLoadFromFile("Img\player.png")
		_GDIPlus_GraphicsDrawImageRect($Graphic, $Player[0], $Player[1], $Player[2], 50, 50)

	Case "mapa"
		Local $id = 1

		Global $Graphic = _GDIPlus_GraphicsCreateFromHWND($GUI); tworzy grafikę

		;WCZYTYWANIE MAPY Z PLIKU *.MAP
		If Not (FileExists("Data\" & $Player[14] & "\Mapa.map")) Then
			MsgBox(16, "Błąd!", "Nie mozna wczytać tej mapy!")
			;back to menu
		Else
			Local $MonsterCount = 0

			$file = FileOpen("Data\" & $Player[14] & "\Mapa.map", 0)
;~ 				$file = FileOpen("Maps\Map_0.map", 0)

			For $y = 0 To 8
				For $x = 0 To 13
					;WCZYTANIE WEJSC I WYJSC Z KOMNATY
					$linia = FileReadLine($file, $id)
					$wejscia = StringMid($linia, 1, 4)

					;ZAŁADOWANIE OBRAZKA O PODANYCH ATRYBUTACH
					If $wejscia = "" Then
						$Temple[$x][$y][0] = _GDIPlus_ImageLoadFromFile("Img\Temple\Komnata_0000.jpg")
					Else
						$Temple[$x][$y][0] = _GDIPlus_ImageLoadFromFile("Img\Temple\Komnata_" & $wejscia & ".jpg")
					EndIf

					_GDIPlus_GraphicsDrawImageRect($Graphic, $Temple[$x][$y][0], $x * 50, $y * 50, 50, 50); rysuje komnaty

					;DODATKOWE INFORMACJE ODNOSNIE KOMNATY
					$Temple[$x][$y][1] = StringMid($linia, 1, 1);wyjscie gora
					$Temple[$x][$y][2] = StringMid($linia, 2, 1);wyjscie prawo
					$Temple[$x][$y][3] = StringMid($linia, 3, 1);wyjscie dol
					$Temple[$x][$y][4] = StringMid($linia, 4, 1);wyjscie lewo

					$Temple[$x][$y][5] = StringMid($linia, 5, 1);wrog
					$Temple[$x][$y][6] = StringMid($linia, 6, 1);skrzynia
					$Temple[$x][$y][7] = StringMid($linia, 7, 1);fabula

					If $Temple[$x][$y][5] <> "" Then $MonsterCount += 1

					$id += 1; ID wzrasta o 1
				Next
			Next

			Global $Monster[$MonsterCount][2];[iD][HP, DMG]
		EndIf

	Case "panel"
		;PANEL
		Global $Panel = _GDIPlus_ImageLoadFromFile("Img\Panel.png"); ładuje obrazek panelu
		_GDIPlus_GraphicsDrawImageRect($Graphic, $Panel, 0, 450, 700, 50); rysuje obrazek panelu

		$MP_string = _GDIPlus_GraphicsDrawString($Graphic, $Player[5], 301, 469)
		$HP_string = _GDIPlus_GraphicsDrawString($Graphic, $Player[4], 207, 469)
		$GOLD_string = _GDIPlus_GraphicsDrawString($Graphic, $Player[3], 65, 468)

	Case "walka"
		;TWORZENIE NOWEJ GRAFIKI
		Global $Walka_graphic = _GDIPlus_GraphicsCreateFromHWND($GUI)

		Global $Tlo = _GDIPlus_ImageLoadFromFile("Img\Fight\Tlo.png")
		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $Tlo, 0, 0, 700, 500)

		;MENU
		Global $Menu = _GDIPlus_ImageLoadFromFile("Img\Fight\Menu.png")
		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $Menu, 0, 100, 150, 300)

		;GRACZ
		Global $Player_img = _GDIPlus_ImageLoadFromFile("Img\Fight\Player.png")
		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $Player_img, 150, 50, 200, 400)

		;PASEK HP GRACZA
		Global $HP_progress_player = _GDIPlus_ImageLoadFromFile("Img\Fight\HP.png")
		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $HP_progress_player, 25, 25, 100, 20)

		;PASEK MANY GRACZA
		Global $MP_progress_player = _GDIPlus_ImageLoadFromFile("Img\Fight\MP.png")
		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $MP_progress_player, 25, 50, 100, 20)


		;WROG
		Global $Enemy_img = _GDIPlus_ImageLoadFromFile("Img\Fight\Enemy.png")
		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $Enemy_img, 350, 50, 200, 400)

		;PASEK HP WROGA
		Global $HP_progress_enemy = _GDIPlus_ImageLoadFromFile("Img\Fight\HP.png")
		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $HP_progress_enemy, 575, 25, 100, 20)

		;PASEK MANY WROGA
		Global $MP_progress_enemy = _GDIPlus_ImageLoadFromFile("Img\Fight\MP.png")
		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $MP_progress_enemy, 575, 50, 100, 20)
	Case "menu"
		;TWORZENIE NOWEJ GRAFIKI
		Global $Menu_graphic = _GDIPlus_GraphicsCreateFromHWND($GUI)

		;MENU POSTACI
		Global $Menu_postaci = _GDIPlus_ImageLoadFromFile("Img\Menu\menu.png")
		_GDIPlus_GraphicsDrawImageRect($Menu_graphic, $Menu_postaci, 0, 0, 700, 500)

		;STRINGI
		_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[14], 50, 42, "Arial", 12);NICK
		_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[15], 50, 105, "Arial", 12);LVL
		_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[6], 50, 168, "Arial", 12);STR
		_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[7], 50, 231, "Arial", 12);VIT
		_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[8], 50, 294, "Arial", 12);INT
		_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[9], 50, 357, "Arial", 12);DEX
		_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[16], 190, 400, "Arial", 12);STAT POINTS
EndSwitch
EndFunc   ;==>_Game_Create

Func _Game_Wstecz()
$mode = "mapa"
_Refresh_Screen()
EndFunc   ;==>_Game_Wstecz

Func WM_PAINT($hwnd, $msg, $wParam, $lParam)
_Refresh_Screen()

Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_PAINT

Func WM_KEYDOWN($hwnd, $msg, $znak, $lParam)
;~ 	ConsoleWrite(Hex($znak) & @CRLF)

If Hex($znak) = "00000023" Then _EXIT_Game(); END
If Chr(Dec(Hex($znak))) = "I" Then
	If $mode = "mapa" Then _Menu_Show()
EndIf

Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_KEYDOWN

Func WM_LBUTTONDOWN($hwnd, $msg, $lParam, $wParam)
$x = _WinAPI_LoWord($wParam); pobiera parametr loword z $WParam
$y = _WinAPI_HiWord($wParam); pobiera parametr hiword z $WParam

If $mode = "mapa" Then

	$tmp = $x;zaokragal do 50
	If Not ($tmp < 50) Then;zaokragal do 50
		Do;zaokragal do 50
			$tmp -= 50;zaokragal do 50
		Until $tmp < 50;zaokragal do 50
	EndIf;zaokragal do 50
	$x -= $tmp;zaokragal do 50

	$tmp = $y;zaokragal do 50
	If Not ($tmp < 50) Then;zaokragal do 50
		Do;zaokragal do 50
			$tmp -= 50;zaokragal do 50
		Until $tmp < 50;zaokragal do 50
	EndIf;zaokragal do 50
	$y -= $tmp;zaokragal do 50

	$x /= 50; ustawia $x jako wspolrzedna
	$y /= 50; ustawia $y jako wspolrzedna

	If ((($x >= 0) And ($x <= 13)) And (($y >= 0) And ($y <= 8))) Then; sprawdza czy kliknal w mape
		If (($x = $Player[1] - 1) And ($y = $Player[2])) Or (($x = $Player[1]) And ($y = $Player[2] - 1)) Or (($x = $Player[1] + 1) And ($y = $Player[2])) Or (($x = $Player[1]) And ($y = $Player[2] + 1)) Then; sprawdza czy kliknal w komnate obok

			$ok = False; ustawia pozwolenie na poruszenie sie na False (0)

			If (($x = $Player[1] - 1) And ($y = $Player[2])) Then; jesli to jest komnata na lewo
				If ($Temple[$x][$y][2] = "1") And ($Temple[$Player[1]][$Player[2]][4] = "1") Then $ok = True; jesli jest wejscie z dwoch stron to moze wejsc
			EndIf

			If (($x = $Player[1]) And ($y = $Player[2] - 1)) Then; jesli to jest komnata na gorze
				If ($Temple[$x][$y][3] = "1") And ($Temple[$Player[1]][$Player[2]][1] = "1") Then $ok = True; jesli jest wejscie z dwoch stron to moze wejsc
			EndIf

			If (($x = $Player[1] + 1) And ($y = $Player[2])) Then; jesli to jest komnata na prawo
				If ($Temple[$x][$y][4] = "1") And ($Temple[$Player[1]][$Player[2]][2] = "1") Then $ok = True; jesli jest wejscie z dwoch stron to moze wejsc
			EndIf

			If (($x = $Player[1]) And ($y = $Player[2] + 1)) Then; jesli to jest komnata na dole
				If ($Temple[$x][$y][1] = "1") And ($Temple[$Player[1]][$Player[2]][3] = "1") Then $ok = True; jesli jest wejscie z dwoch stron to moze wejsc
			EndIf

;~ 				$ok = True

			If $ok Then; jesli ma pozwolenie na wejscie to...

				$Last_temple[0] = $Player[1]; ostatnia komnata X
				$Last_temple[1] = $Player[2]; ostatnia komnata Y

				$Player[1] = $x; ustawia wspolrzedne obecnej komnaty
				$Player[2] = $y; ustawia wspolrzedne obecnej komnaty

				If $Temple[$x][$y][5] > 0 Then _Walka_Show($Temple[$x][$y][5]); jesli jest potwor to z nim walczy
				If $Temple[$x][$y][6] > 0 Then _Walka_Skrzynia($Temple[$x][$y][6]); jesli jest skrzynia to otwiera
				If $Temple[$x][$y][7] > 0 Then _Walka_Fabula($Temple[$x][$y][7]); jesli ta komnata to watek fabuly to go odtwarza

				_Refresh_Screen(); odswierza ekran
			EndIf
		ElseIf ($x = $Player[1]) And ($y = $Player[2]) Then
			_Menu_Show()
		Else
			ToolTip($x & ", " & $y & @CRLF & $Player[1] & ", " & $Player[2])
		EndIf
	EndIf

ElseIf $mode = "walka" Then

	If $can_attack Then
		If ($x > 10 And $x < 130) Then
			If ($y > 110 And $y < 160) Then; KLIKA ATAK
				$NowMonster = $Temple[$Player[1]][$Player[2]][5]
				_Fight_AttackMonster($Temple[$Player[1]][$Player[2]][5])
			ElseIf ($y > 169 And $y < 219) Then; KLIKA CZAR I
				_Fight_AttackBySpell(1)
			ElseIf ($y > 228 And $y < 278) Then; KLIKA CZAR II
				_Fight_AttackBySpell(2)
			ElseIf ($y > 287 And $y < 337) Then; KLIKA CZAR III
				_Fight_AttackBySpell(3)
			ElseIf ($y > 346 And $y < 396) Then; KLIKA UCIECZKE
				$Player[1] = $Last_temple[0]
				$Player[2] = $Last_temple[1]
				_Game_Wstecz()
			EndIf
		EndIf
	EndIf

ElseIf $mode = "menu" Then

	;BUTTON SELL
	If (($x > 234 And $x < 289) And ($y > 435 And $y < 491)) Then _EQ_SetSellMouse()

	;BUTTON WSTECZ
	If (($x > 33 And $x < 182) And ($y > 427 And $y < 483)) Then _Game_Wstecz()

	;BUTTONY ATRYBUTY
	If ($x > 10 And $x < 31) Then
		If ($y > 165 And $y < 186) Then _Player_Add_Atr(1); SILA
		If ($y > 227 And $y < 248) Then _Player_Add_Atr(2); WITALNOSC
		If ($y > 287 And $y < 308) Then _Player_Add_Atr(3); INTELIGENCJA
		If ($y > 350 And $y < 371) Then _Player_Add_Atr(4); ZRECZNOSC
	EndIf

	;EKWIPUNEK

	If $y > 62 And $y < 468 Then
		$y -= 62

		$tmp = $y;zaokragal do 50
		If Not ($tmp < 51) Then;zaokragal do 50
			Do;zaokragal do 50
				$tmp -= 51;zaokragal do 50
			Until $tmp < 51;zaokragal do 50
		EndIf;zaokragal do 50
		$y -= $tmp;zaokragal do 50
		$y /= 51

		If $x > 487 And $x < 537 Then; kliknal w weapons
			If $MenuMouse = "eq" Then
				_EQ_UseItem($y, 0); uzywa weapons nr. $y
			ElseIf $MenuMouse = "sell" Then
				_EQ_SellItem($y, 0)
			EndIf
		ElseIf $x > 538 And $x < 588 Then; kliknal w armors
			If $MenuMouse = "eq" Then
				_EQ_UseItem($y, 1); uzywa armors nr. $y
			ElseIf $MenuMouse = "sell" Then
				_EQ_SellItem($y, 1)
			EndIf
		ElseIf $x > 589 And $x < 639 Then; kliknal w magic
			If $MenuMouse = "eq" Then
				_EQ_UseItem($y, 2); uzywa magic nr. $y
			ElseIf $MenuMouse = "sell" Then
				_EQ_SellItem($y, 2)
			EndIf
		ElseIf $x > 640 And $x < 690 Then; kliknal w other
			If $MenuMouse = "eq" Then
				_EQ_UseItem($y, 3); uzywa other nr. $y
			ElseIf $MenuMouse = "sell" Then
				_EQ_SellItem($y, 3)
			EndIf
		EndIf

	EndIf
EndIf
EndFunc   ;==>WM_LBUTTONDOWN

Func _Refresh_Screen()
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_UPDATENOW)

If $mode = "mapa" Then

	;TEMPLE
	For $y = 0 To 8
		For $x = 0 To 13
			_GDIPlus_GraphicsDrawImageRect($Graphic, $Temple[$x][$y][0], $x * 50, $y * 50, 50, 50); rysuje komnaty
		Next
	Next

	;PLAYER
	_GDIPlus_GraphicsDrawImageRect($Graphic, $Player[0], $Player[1] * 50, $Player[2] * 50, 50, 50)

	;PANEL
	_GDIPlus_GraphicsDrawImageRect($Graphic, $Panel, 0, 450, 700, 50)

	$MP_string = _GDIPlus_GraphicsDrawString($Graphic, $Player[5], 301, 469)
	$HP_string = _GDIPlus_GraphicsDrawString($Graphic, $Player[4], 207, 469)
	$GOLD_string = _GDIPlus_GraphicsDrawString($Graphic, $Player[3], 65, 468)

ElseIf $mode = "walka" Then

	;WALKA
	_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $Tlo, 0, 0, 700, 500) ;TLO
	_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $Menu, 0, 100, 150, 300) ;MENU
	_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $Player_img, 150, 50, 200, 400) ;PLAYER
	_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $HP_progress_player, 25, 25, $Player[4], 20) ;HP_PLAYER
	_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $MP_progress_player, 25, 50, $Player[5], 20) ;MP_PLAYER
	_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $Enemy_img, 350, 50, 200, 400) ;WROG
	_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $HP_progress_enemy, 575, 25, $Monster[$NowMonster][0], 20) ;HP_WROG
;~ 		_GDIPlus_GraphicsDrawImageRect($Walka_graphic, $MP_progress_enemy, 575, 50, 100, 20) ;MP_WROG

ElseIf $mode = "menu" Then
	_GDIPlus_GraphicsDrawImageRect($Menu_graphic, $Menu_postaci, 0, 0, 700, 500)

	;RYSUJE EQ NA POSTACI
	For $i = 0 To 3
		If $WearEQImage[$i] <> 0 Then _GDIPlus_GraphicsDrawImageRect($Menu_graphic, $WearEQImage[$i], $WearPosition[$i][0], $WearPosition[$i][1], 50, 50)
	Next

	For $q = 0 To 3
		For $e = 0 To 7
			If $EQ[$e][$q][1] <> 0 Then _GDIPlus_GraphicsDrawImageRect($Menu_graphic, $EQ[$e][$q][1], 487 + $q * 51, 62 + $e * 51, 50, 50)
		Next
	Next

	;STRINGI
	_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[14], 50, 42, "Arial", 12);NICK
	_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[15], 50, 105, "Arial", 12);LVL
	_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[6], 50, 168, "Arial", 12);STR
	_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[7], 50, 231, "Arial", 12);VIT
	_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[8], 50, 294, "Arial", 12);INT
	_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[9], 50, 357, "Arial", 12);DEX
	_GDIPlus_GraphicsDrawString($Menu_graphic, $Player[16], 190, 400, "Arial", 12);STAT POINTS
EndIf

_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_VALIDATE)
EndFunc   ;==>_Refresh_Screen

Func _EXIT_Game()
_EXIT_Save()
_EXIT_GraphicsDispose()

Exit

Return 1
EndFunc   ;==>_EXIT_Game

Func _EXIT_Save()
Local $data = ""

;EQ
$EQ_File = FileOpen("Data\" & $Player[14] & "\eq.dat", 2)
$data = ""
For $q = 0 To 3
	For $e = 0 To 7
		$data &= $EQ[$e][$q][0] & @LF
	Next
Next
FileWrite($EQ_File, $data)
FileClose($EQ_File)

;MAPA
$Map_File = FileOpen("Data\" & $Player[14] & "\Mapa.map", 2)

$data = ""
For $y = 0 To 8
	For $x = 0 To 13
		$data &= $Temple[$x][$y][1] & $Temple[$x][$y][2] & $Temple[$x][$y][3] & $Temple[$x][$y][4]
		If $Temple[$x][$y][5] <> "" Then $data &= $Temple[$x][$y][5]
		$data &= @LF
	Next
Next
FileWrite($Map_File, $data)
FileClose($Map_File)

;PLAYER
$Player_File = FileOpen("Data\" & $Player[14] & "\Player.plr", 2)
$data = ""
For $i = 1 To UBound($Player) - 1
	$data &= $Player[$i] & @LF
Next
FileWrite($Player_File, $data)
FileClose($Player_File)

Return 1
EndFunc   ;==>_EXIT_Save

Func _EXIT_GraphicsDispose()
;MAPA
;komnaty
For $y = 0 To 8
	For $x = 0 To 13
		_GDIPlus_ImageDispose($Temple[$x][$y][0])
	Next
Next
;player
_GDIPlus_ImageDispose($Player[0])
;panel
_GDIPlus_ImageDispose($Panel)

;EQ
For $q = 0 To 3
	For $e = 0 To 7
		_GDIPlus_ImageDispose($EQ[$e][$q][1])
	Next
	_GDIPlus_ImageDispose($WearEQImage[$q])
Next

;WALKA
_GDIPlus_ImageDispose($Tlo)
_GDIPlus_ImageDispose($Player_img)
_GDIPlus_ImageDispose($Enemy_img)
_GDIPlus_ImageDispose($HP_progress_player)
_GDIPlus_ImageDispose($HP_progress_enemy)
_GDIPlus_ImageDispose($MP_progress_player)
_GDIPlus_ImageDispose($MP_progress_enemy)

;GRAPHICS
_GDIPlus_GraphicsDispose($Graphic)
_GDIPlus_GraphicsDispose($Walka_graphic)
_GDIPlus_GraphicsDispose($Menu_graphic)

_GDIPlus_Shutdown()

Return 1
EndFunc   ;==>_EXIT_GraphicsDispose

 

 

Edytor:

#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <GUIComboBox.au3>
#include <GUIButton.au3>
#include <GUIEdit.au3>
#include <GUIListView.au3>
#include <File.au3>

Dim $Radio[16]
Dim $Obrazek[16] = ["0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"]
Dim $Mapa[14][9][6]; [X][Y][obrazek, wejscia, wrog, skrzynia, skrzynia - wiadomosc, fabula]

Global $Zaznaczony = -1
Global $id_map = 0

Global $Image_option, $X_option = 0, $Y_option = 0

Global $Skrzynia_button = 0
Global $Fabula_button = 0
Global $Wrog_combo = 0

_GDIPlus_Startup()

;MAPA
$GUI = GUICreate("Edytor by hfaua", 700, 450, 500)
GUISetBkColor(0xFFFFFF, $GUI)
$Graphic = _GDIPlus_GraphicsCreateFromHWND($GUI)
GUISetState(@SW_SHOW, $GUI)

;OPCJE
$Option = GUICreate("Option", 200, 200, 50, 50, -1, $WS_EX_TOOLWINDOW, $GUI)
GUISetBkColor(0xFFFFFF, $Option)
$Graphic_opt = _GDIPlus_GraphicsCreateFromHWND($Option)
_GDIPlus_GraphicsDrawString($Graphic_opt, "Enemy", 140, 100)
_GDIPlus_GraphicsDrawString($Graphic_opt, "Chest", 140, 130)
_GDIPlus_GraphicsDrawString($Graphic_opt, "Fable", 140, 165)
_GDIPlus_GraphicsDrawString($Graphic_opt, "X:	0", 20, 60)
_GDIPlus_GraphicsDrawString($Graphic_opt, "Y:	0", 20, 75)
GUISetState(@SW_SHOW, $Option)

;FABULA
$Fabula_GUI = GUICreate("Fabuła", 400, 400, Default, Default, -1, $WS_EX_TOOLWINDOW, $Option)
$Message_fabula = _GUICtrlEdit_Create($Fabula_GUI, "Narazie tylko wiadomosc", 10, 10, 380, 21, BitOR($ES_CENTER, $ES_AUTOVSCROLL))
$Save_button_fabula = _GUICtrlButton_Create($Fabula_GUI, "Save", 10, 40, 380, 350)
GUISetState(@SW_HIDE, $Fabula_GUI)

;SKRZYNIA
$Skrzynia_GUI = GUICreate("Skrzynia", 120, 105, Default, Default, -1, $WS_EX_TOOLWINDOW, $Option)
$Item_Id_skrzynia = _GUICtrlEdit_Create($Skrzynia_GUI, "", 10, 10, 60, 21, BitOR($ES_CENTER, $ES_AUTOVSCROLL))
$Message_skrzynia = _GUICtrlEdit_Create($Skrzynia_GUI, "", 10, 40, 100, 21, BitOR($ES_CENTER, $ES_AUTOVSCROLL))
$Save_button_skrzynia = _GUICtrlButton_Create($Skrzynia_GUI, "Save", 10, 70, 100, 30)
GUISetState(@SW_HIDE, $Skrzynia_GUI)

;PANEL STEROWANIA
$Panel_sterowania = GUICreate("Panel sterowania", 245, 40, 400, 20, -1, $WS_EX_TOOLWINDOW, $GUI)
$New_button = _GUICtrlButton_Create($Panel_sterowania, "New", 5, 10, 75, 25)
$Load_button = _GUICtrlButton_Create($Panel_sterowania, "Load", 85, 10, 75, 25)
$Save_button = _GUICtrlButton_Create($Panel_sterowania, "Save", 165, 10, 75, 25)
GUISetState(@SW_SHOW, $Panel_sterowania)

;TOOLBOX
$ToolBox = GUICreate("Tools", 220, 220, 50, 400, -1, $WS_EX_TOOLWINDOW, $GUI)
GUISetBkColor(0xFFFFFF, $ToolBox)
_CreateButtons()
GUISetState(@SW_SHOW, $ToolBox)

GUIRegisterMsg(0x0201, "Click")
GUIRegisterMsg(0x0100, "key")
GUIRegisterMsg(0x000F, "WM_PAINT")
GUIRegisterMsg(0x0111, "WM_COMMAND")

While 1
If GUIGetMsg() = -3 Then Exit
WEnd

Func show_option($x, $y)
$X_option = $x
$Y_option = $y

_GDIPlus_GraphicsClear($Graphic_opt, 0xFFFFFFFF)

If $Mapa[$X_option][$Y_option][0] = "" Then
	If $Skrzynia_button <> 0 Then _GUICtrlButton_Destroy($Skrzynia_button)
	If $Fabula_button <> 0 Then _GUICtrlButton_Destroy($Fabula_button)
	If $Wrog_combo <> 0 Then _GUICtrlComboBox_Destroy($Wrog_combo)
	GUISetState(@SW_SHOW, $Option)

	$Image_option = 0
Else
	$Image_option = $Mapa[$X_option][$Y_option][0]
	_GDIPlus_GraphicsDrawImageRect($Graphic_opt, $Image_option, 75, 25, 50, 50)

	$Wrog_combo = _GUICtrlComboBox_Create($Option, "", 15, 100, 120, 20)
;~ 		_GUICtrlComboBox_AddString($Wrog_combo, "Wybierz wroga")
	For $i = 0 To 9
		_GUICtrlComboBox_AddString($Wrog_combo, $i)
	Next
;~ 		_GUICtrlComboBox_SetCurSel($Wrog_combo, 0)
	$Skrzynia_button = _GUICtrlButton_Create($Option, "Create", 15, 125, 120, 30)
	$Fabula_button = _GUICtrlButton_Create($Option, "Create", 15, 160, 120, 30)

	;USTAWIENIE WROGA
	_GUICtrlComboBox_SetCurSel($Wrog_combo, $Mapa[$X_option][$Y_option][2])

	;BUTTON
	_GUICtrlButton_Enable($Skrzynia_button, 1)
	_GUICtrlButton_Enable($Fabula_button, 1)

	;STRINGI
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Enemy", 140, 100)
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Chest", 140, 130)
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Fable", 140, 165)
EndIf

refresh_opcje()
EndFunc   ;==>show_option

Func _CreateButtons()
$x = 0
$y = 0

For $i = 0 To 15
	$Radio[$i] = GUICtrlCreateButton("", $x * 55, $y * 55, 55, 55, BitOR($BS_PUSHLIKE, $BS_BITMAP))
	_GUICtrlButton_SetImage($Radio[$i], "Img\Editor\Komnata_" & $Obrazek[$i] & ".bmp")

	$x += 1
	If $x = 4 Then
		$x = 0
		$y += 1
	EndIf
Next
EndFunc   ;==>_CreateButtons

Func show_fabula($x, $y)
GUISetState(@SW_SHOW, $Fabula_GUI)

_GUICtrlEdit_SetText($Message_fabula, $Mapa[$X_option][$Y_option][5])
EndFunc   ;==>show_fabula

Func show_skrzynia($x, $y)
GUISetState(@SW_SHOW, $Skrzynia_GUI)

_GUICtrlEdit_SetText($Item_Id_skrzynia, $Mapa[$X_option][$Y_option][3])
_GUICtrlEdit_SetText($Message_skrzynia, $Mapa[$X_option][$Y_option][4])
EndFunc   ;==>show_skrzynia

Func WM_COMMAND($hwnd, $msg, $wParam, $lParam)
$hiword = _WinAPI_HiWord($wParam)

Switch $hwnd
	Case $ToolBox
		For $i = 0 To 15
			If $lParam = GUICtrlGetHandle($Radio[$i]) Then
				If $hiword = $BN_CLICKED Then
					$Zaznaczony = $i
				EndIf
			EndIf
		Next

	Case $Option
		If ($lParam = $Skrzynia_button) And ($hiword = $BN_CLICKED) Then
			show_skrzynia($X_option, $Y_option)
		ElseIf ($lParam = $Fabula_button) And ($hiword = $BN_CLICKED) Then
			show_fabula($X_option, $Y_option)
		EndIf
		If $X_option > -1 Then
			If ($lParam = $Wrog_combo) And ($hiword = $CBN_SELCHANGE) Then
				$Mapa[$X_option][$Y_option][2] = _GUICtrlComboBox_GetEditText($Wrog_combo)
			EndIf
			$Mapa[$X_option][$Y_option][2] = _GUICtrlComboBox_GetEditText($Wrog_combo)
			MsgBox(0, "1", $Mapa[$X_option][$Y_option][2])
		EndIf

	Case $Panel_sterowania
		If $hiword = $BN_CLICKED Then
			Switch $lParam
				Case $New_button
					new_map()
				Case $Load_button
					load_map()
				Case $Save_button
					save_map()
			EndSwitch
		EndIf

	Case $Skrzynia_GUI
		If $hiword = $BN_CLICKED Then
			If $lParam = $Save_button_skrzynia Then
				save_skrzynia()
			EndIf
		EndIf

	Case $Fabula_GUI
		If ($lParam = $Save_button_fabula) And ($hiword = $BN_CLICKED) Then
			save_fabula()
		EndIf
EndSwitch

Return 'GUI_RUNDEFMSG'
EndFunc   ;==>WM_COMMAND

Func save_fabula()
$Mapa[$X_option][$Y_option][5] = _GUICtrlEdit_GetText($Message_fabula)

GUISetState(@SW_HIDE, $Fabula_GUI)
EndFunc   ;==>save_fabula

Func save_skrzynia()
$Mapa[$X_option][$Y_option][3] = _GUICtrlEdit_GetText($Item_Id_skrzynia)
$Mapa[$X_option][$Y_option][4] = _GUICtrlEdit_GetText($Message_skrzynia)

GUISetState(@SW_HIDE, $Skrzynia_GUI)
EndFunc   ;==>save_skrzynia

Func new_map()
ToolTip("Tworzenie nowej mapy...")

For $y = 0 To 8
	For $x = 0 To 13
		For $i = 0 To 4
			$Mapa[$x][$y][$i] = 0
		Next
	Next
Next

;KASOWANIE POPRZEDNIEJ GRAFIKI
_GDIPlus_GraphicsDispose($Graphic)
delete_map()

;TWORZENIE NOWEJ GRAFIKI
$Graphic = _GDIPlus_GraphicsCreateFromHWND($GUI)

_GDIPlus_GraphicsClear($Graphic)
GUISetBkColor(0xFFFFFF, $GUI)

ToolTip("")
EndFunc   ;==>new_map

Func load_map()
Local $id_line = 1

ToolTip("Wczytywanie mapy...")

;WYBÓR PLIKU
$load_file = FileOpenDialog("Wczytywanie mapy...", "\Maps\", "Map Files (*.map)|Wszystkie (*.*)")
$file = FileOpen($load_file)

If $file <> -1 Then
	;KASOWANIE MAPY
	delete_map()

	;TWORZENIE NOWEJ GRAFIKI
	$Graphic = _GDIPlus_GraphicsCreateFromHWND($GUI)

	;PRZENIESIENIE MAPY DO EDYTORA
	For $y = 0 To 8
		For $x = 0 To 13
			;CZYTANIE LINII
			$linia = FileReadLine($file, $id_line)
			$id_line += 1

			;ZAPISANIE WEJSC I WROGOW
			$Mapa[$x][$y][1] = StringMid($linia, 1, 4);wejscie
			$Mapa[$x][$y][2] = StringMid($linia, 5, 1);wrog

			;TWORZENIE OBRAZKA Z KOMNATA

			$Mapa[$x][$y][0] = _GDIPlus_ImageLoadFromFile("..\Img\Temple\Komnata_" & $Mapa[$x][$y][1] & ".jpg")
			_GDIPlus_GraphicsDrawImageRect($Graphic, $Mapa[$x][$y][0], $x * 50, $y * 50, 50, 50)
		Next
	Next
EndIf

ToolTip("")
EndFunc   ;==>load_map

Func save_map()
Local $1 = 0, $2 = 0, $3 = 0, $4 = 0

ToolTip("Zapisywanie mapy...")

;TWORZY NASTEPNA W KOLEJNOSCI MAPE
For $i = 0 To 99
	If Not (FileExists("Maps\Map_" & $i & ".map")) Then
		$id_map = $i
		ExitLoop
	EndIf
Next

;TWORZY PLIK
_FileCreate("Maps\Map_" & $id_map & ".map")

;OTWIERA PLIK Z NOWA MAPA
$map_file = FileOpen("Maps\Map_" & $id_map & ".map", 2)

;TWORZY WPISY DLA WSZYSTKICH KOMNAT
For $y = 0 To 8
	For $x = 0 To 13

		If $Mapa[$x][$y][1] = "" Then; jesli jest puste

			;SPRAWDZA CZY KOMNATA NA GORZE MA DO NIEJ WEJSCIE
			If Not ($y = 0) Then
				If StringMid($Mapa[$x][$y - 1][1], 3, 1) = "1" Then
					$1 = 1
				EndIf
			EndIf

			;SPRAWDZA CZY KOMNATA NA DOLE MA DO NIEJ WEJSCIE
			If Not ($y = 8) Then
				If StringMid($Mapa[$x][$y + 1][1], 1, 1) = "1" Then
					$3 = 1
				EndIf
			EndIf

			;SPRAWDZA CZY KOMNATA PO PRAWEJ MA DO NIEJ WEJSCIE
			If Not ($x = 13) Then
				If StringMid($Mapa[$x + 1][$y][1], 4, 1) = "1" Then
					$2 = 1
				EndIf
			EndIf

			;SPRAWDZA CZY KOMNATA PO LEWEJ MA DO NIEJ WEJSCIE
			If Not ($x = 0) Then
				If StringMid($Mapa[$x - 1][$y][1], 2, 1) = "1" Then
					$4 = 1
				EndIf
			EndIf

			;ZAPISUJE WEJSCIE W MAPIE
			$Mapa[$x][$y][1] = $1 & $2 & $3 & $4

			;CZYSCI ZMIENNE ODPOWIADAJACE ZA WEJSCIA
			$1 = 0
			$2 = 0
			$3 = 0
			$4 = 0

		EndIf

		;TWORZY WPIS O DANEJ KOMNACIE
		$data = ""
		$data &= $Mapa[$x][$y][1];wejscia
		$data &= $Mapa[$x][$y][2];wrog
		$data &= @LF

		;ZAPISUJE DANA KOMNATE DO PLIKU
		FileWrite($map_file, $data)
	Next
Next
ToolTip("")
EndFunc   ;==>save_map

Func Click($hwnd, $msg, $wParam, $lParam)
Local $tmp

If $hwnd = $GUI Then
	$x = _WinAPI_LoWord($lParam)
	$y = _WinAPI_HiWord($lParam)

	$tmp = $x;zaokragal do 50

	If Not ($tmp < 50) Then;zaokragal do 50
		Do;zaokragal do 50
			$tmp -= 50;zaokragal do 50
		Until $tmp < 50;zaokragal do 50
	EndIf;zaokragal do 50
	$x -= $tmp;zaokragal do 50

	$tmp = $y;zaokragal do 50
	If Not ($tmp < 50) Then;zaokragal do 50
		Do;zaokragal do 50
			$tmp -= 50;zaokragal do 50
		Until $tmp < 50;zaokragal do 50
	EndIf;zaokragal do 50
	$y -= $tmp;zaokragal do 50

	$x /= 50; ustawia $x jako wspolrzedna
	$y /= 50; ustawia $y jako wspolrzedna

	If $Zaznaczony >= 0 Then
		If $Mapa[$x][$y][0] <> 0 Then
			_GDIPlus_ImageDispose($Mapa[$x][$y][0])
			_CreateMapElement($x, $y, $Zaznaczony)
		Else
			_CreateMapElement($x, $y, $Zaznaczony)
		EndIf

		refresh_screen()

		_GUICtrlButton_SetCheck($Radio[$Zaznaczony], $BST_UNCHECKED)
		$Zaznaczony = -1
	EndIf

	show_option($x, $y)

;~ 		ToolTip("X: " & $x & @CRLF & "Y: " & $y)
EndIf

Return 'GUI_RUNDEFMSG'
EndFunc   ;==>Click

Func _CreateMapElement($x, $y, $id)
_GDIPlus_ImageDispose($Mapa[$x][$y][0])

$Mapa[$x][$y][1] = $Obrazek[$id]
$Mapa[$x][$y][0] = _GDIPlus_ImageLoadFromFile("Img\Temple\Komnata_" & $Obrazek[$id] & ".jpg")
_GDIPlus_GraphicsDrawImageRect($Graphic, $Mapa[$x][$y][0], $x * 50, $y * 50, 50, 50)
EndFunc   ;==>_CreateMapElement

Func key($hwnd, $msg, $wParam, $lParam)

ConsoleWrite(Chr(Dec(Hex($wParam))))

If ($hwnd = $GUI) Or ($hwnd = $ToolBox) Or ($hwnd = $Panel_sterowania) Then
	If Hex($wParam) = "00000023" Then Exit; END
EndIf

If ($hwnd = $GUI) Or ($hwnd = $ToolBox) Then
	$znak = Chr(Dec(Hex($wParam)))

	If $znak > 0 And $znak <= 9 Then
		$Zaznaczony = $znak - 1
	Else

		Switch $znak
			Case "0"
				$Zaznaczony = 9
			Case "Q"
				$Zaznaczony = 10
			Case "W"
				$Zaznaczony = 11
			Case "E"
				$Zaznaczony = 12
			Case "R"
				$Zaznaczony = 13
			Case "T"
				$Zaznaczony = 14
			Case "Y"
				$Zaznaczony = 15
		EndSwitch

	EndIf

EndIf

Return 'GUI_RUNDEFMSG'
EndFunc   ;==>key

Func WM_PAINT($hwnd, $msg, $wParam, $lParam)
refresh_screen()
EndFunc   ;==>WM_PAINT

Func refresh_screen()
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_UPDATENOW)

;MAPA
For $y = 0 To 8
	For $x = 0 To 13
		_GDIPlus_GraphicsDrawImageRect($Graphic, $Mapa[$x][$y][0], $x * 50, $y * 50, 50, 50)
	Next
Next

If $Mapa[$X_option][$Y_option][0] <> "" Then
	;STRINGI
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Enemy", 140, 100)
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Chest", 140, 130)
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Fable", 140, 165)
EndIf

;OBRAZEK W OPCJACH
_GDIPlus_GraphicsDrawImageRect($Graphic_opt, $Image_option, 75, 25, 50, 50)

;X, Y
_GDIPlus_GraphicsDrawString($Graphic_opt, "X:	" & $X_option, 20, 35)
_GDIPlus_GraphicsDrawString($Graphic_opt, "Y:	" & $Y_option, 20, 50)

_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_VALIDATE)

Return 'GUI_RUNDEFMSG'
EndFunc   ;==>refresh_screen

Func refresh_opcje()
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_UPDATENOW)
If $Mapa[$X_option][$Y_option][0] <> "" Then
	;STRINGI
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Enemy", 140, 100)
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Chest", 140, 130)
	_GDIPlus_GraphicsDrawString($Graphic_opt, "Fable", 140, 165)
EndIf

;OBRAZEK W OPCJACH
_GDIPlus_GraphicsDrawImageRect($Graphic_opt, $Image_option, 75, 25, 50, 50)

;X, Y
_GDIPlus_GraphicsDrawString($Graphic_opt, "X:	" & $X_option, 20, 35)
_GDIPlus_GraphicsDrawString($Graphic_opt, "Y:	" & $Y_option, 20, 50)

_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_VALIDATE)

Return 'GUI_RUNDEFMSG'
EndFunc   ;==>refresh_opcje

Func delete_map()
;CZYSZCZENIE DOTYCHCZASOWEJ MAPY
_GDIPlus_GraphicsClear($Graphic)
_GDIPlus_GraphicsDispose($Graphic)

For $y = 0 To 8
	For $x = 0 To 13
		_GDIPlus_ImageDispose($Mapa[$x][$y][0])
	Next
Next
EndFunc   ;==>delete_map

 

 

Teraz download całej reszty (grafika, pliki mapek, jakiś seve chyba i BackUp'y):

http://www.speedyshare.com/files/27156481/GRA.7z

I na specjalne życzenie Zip:

http://www.speedyshare.com/files/27157772/GRA.zip

Skan:

http://www.virustotal.com/file-scan/report.html?id=27a54c6e975a70387c1629a3f2b9bc621b5bf27ab51d3de214ab40794ca49560-1299009994

 

Jeśli ktoś dokończy mógłby tutaj wstawić, żebyśmy ocenili ;)

 

Pozdrawiam i życzę miłego pisania, hfaua B)

 

PS. Tak wiem 4ggre5510n jest tu pełno błędów, ale mi się już nie chciało poprawiać :P

PPS. Właśnie się dowiedziałem, że jest error :P Wystarczy skopiować kod gry z tego tematu i wkleić do pliku rpg.au3 ;)

Opublikowano

ja pieprze ..

 

co ty masz z tym .7z ?

 

dawaj poporstu .zip i chuj.

 

A tak musze sciągać jakieś badziewie tylko po to by otworzyć twoją gierke

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

To nie otwieraj...

Używam 7zipa, bo mi wygodniej :)

Otwiera Zipy, rar;y i 7zipy, więc obłsuguje mi też ten "badziewny" format :)

Instalka 7zipa ma 1MB...

 

#EDIT

7zip -> 200kb

zip -> 1,4Mb

 

#EDIT 2

Proszę oto zip:

http://www.speedyshare.com/files/27157772/GRA.zip

 

#EDIT 3

Temu z niego korzystam :)

http://pl.wikipedia.org/wiki/7zip

Opublikowano

nie mam nic do tego z czego ty korzystasz, ale jak udostępniasz coś innym to dawaj to w przyjaznym formacie który nie wymaga ściągania nowych narzędzi.

 

 

 

Dlatego udostępnia się pliki .mp3, a nie .ogg, mimo że .ogg mają lepszą kompresje

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

7z jest coraz bardziej popularny, więc założyłem, że większa większość będzie miała 7zipa :)

Poza tym z przyzwyczajenia skompresowałem do tego formatu :)

 

No ale piszcie jak się podoba i ew. błędy :P

Opublikowano

jak dla mnie trochę bez sensu.

Odpalam, nie wiem o co chodzi ,klikam strzałki, WSAD- nic się nie dzieje

 

Klikam w coś , pojawia się jakieś brzydkie okno coś mnie bije, klikam w atak, czar, nie widzę żadnej reakcji, ale bo kliku kliknieciach znika

 

Potem znowu klikam gdzieś na mape i pojawia mi się eq, z którym nie mam pojęcia co zrobić, ba, nawet nie wiem jak to wyłączyć, wkurwiam się i wyłączam.

 

 

Ogółem do dupy.

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

Nie napisałem, że sterowanie myszką :)

Jeśli klikniesz na mapie w swojego ludzika to się EQ włącza. Klikniesz na jakiś przedmiot w EQ to go zakładasz :) Sprzedawać można klikając najpierw na $.

Mapkę możesz se sam zrobić to nie będzie tego bicia :) Akurat się zapisało, że koło Ciebie są potworki, ponieważ robiłem atak :) Nie pisałem, że to gra do grania, bo nie dokończona :P Tyle napisałem i mi się znudziło. To nawet nie jest wersja BETA :P Może jakieś błędy w kodzie, a nie narzekanie, że nie wiesz o co chodzi...

Opublikowano

Za dużo kodu, żeby doszukiwać się błędów.

 

Linijka do mnie w pierwszym poście mnie rozbawiła xD

 

Rozumiem, że to dopiero szkielet... Tylko, że AutoIt nie nadaje się w ogóle do gier :|

 

Ale fajnie, że ktoś ogarnął wreszcie GDIP :]

 

http://armorgames.com/play/10373/hack-slash-crawl

Może to trochę głupota porównywać .au3 do Flasha... No ale właśnie to Flash służy do takich zabawek...

 

Proejkt fajny, pluski lecą, ale...

chciało ci się? :}

http://demotywatory.pl/2372074/Chcialo-ci-sie

Ta sygnatura jest pusta.

Opublikowano

Szczerze to na początku niezbyt :P

Ale jak już opanowałem GDI, GuiRegisterMsg i mi zaczęło wychodzić to pomyślałem, że napisze coś większego :)

 

Może to trochę głupota porównywać .au3 do Flasha... No ale właśnie to Flash służy do takich zabawek...

Wiem :) Ta gierka to w sumie taki plagiat :P Bo grałem w coś podobnego właśnie we Flashu i chciałem zobaczyć czy napiszę coś takiego :]

  • 1 miesiąc temu...
Opublikowano

No z kodu zapowiada się dobrze...

A możecie zruploadować linki bo wygasły :(

LEAGUE OF LEGENDS

EU Nordic and East: Bambus3k 30lv ON KARTHUS FOREVER

EU West: xspellmasterx 30lv off

Aktualnie stawiam serwer mc.

  • 5 tygodni później...
Opublikowano

Prosz..

http://www.speedyshare.com/files/28567824/GRA.zip

Albe wysyłam ostatni raz, bo mi się już nie chce tego szukać pół h na dysku :P

  • 2 tygodnie później...
  • 1 miesiąc temu...
Opublikowano

7z jest coraz bardziej popularny, więc założyłem, że większa większość będzie miała 7zipa :)

Poza tym z przyzwyczajenia skompresowałem do tego formatu :)

 

No ale piszcie jak się podoba i ew. błędy :P

 

 

'File not found' zmień linki to ci odpowiem(jakbyś mógł)

  • 1 miesiąc temu...
Opublikowano

Download nie działa.

Plus

aaaa

I minus

Plus i minus to jedyne

Plus i minus to jedyne co widzę

Plus i minus to jedyne co słyszę

Plus i minus to jedyne czym żyjeWolę być -- Więc daj mi minus

Życie, życie nasze składa się z krótkich momentów

Cudownych chwil czy przykrych incydentów

Niczego nie przegapię, wszystkie je łapię

Korzystam z talentu, przelewam go na papier

Więc łapię chwile ulotne jak ulotka

Ulotne chwile łapię jak fotka

Dbam, by chwile ulotne jak notka

Nie uleciały jak ulotna plotka

W niepamięć... Każdy gest i każde zdanie

Obrazy przed oczami zawieszone jak na ścianie

Piort 'Magik' Łuszcz

  • 8 miesięcy temu...
  • 2 tygodnie później...

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...