TwistedXion

Help with game

2 posts in this topic

#1 ·  Posted

Ok so I'm making a game in auto it and I need some help with optimizing the code(making it shorter/faster or better ways of doing things) and if you could when you make suggestions please explain why you suggest those changes as I'm very new to autoit and am doing this project just to learn more about the language (first computer language I have ever tried to learn)

thanks for any help in advance, also you may need to uncomment the #requireAdmin as it does need to make a dir to save a .ini file where all the info about your character.

 

ps I know it's not much of a game but I have only been working on the code for a few hours and I will be adding a lot more stuff, so this is by no mean finished. 

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
;~ #RequireAdmin
Global $nClickButtonCount = 0
Global $pDamage = 0
Global $bDamage = 0
Global $fPath = @AppDataCommonDir & "\Fantom\Path"
Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
Global $cTName = IniRead($fPath & "\" & "InFo", "Name", "ToonName", "")
Global $cUName = IniRead($fPath & "\" & "InFo", "Name", "UserName", "")

#Region ### START mm GUI section ###
$mm = GUICreate("MainMenu", 238, 199, 337, 189)
$tName = GUICtrlCreateInput($cTName, 64, 64, 113, 21)
$uName = GUICtrlCreateInput($cUName, 64, 120, 113, 21)
GUICtrlCreateLabel("ToonName", 90, 40, 57, 17)
GUICtrlCreateLabel("UserName", 91, 96, 54, 17)
$Enter = GUICtrlCreateButton("Enter", 90, 151, 57, 41)
GUISetState(@SW_SHOW, $mm)
#EndRegion ### START mm GUI section ###

#Region ### START Town GUI section ###
$Town = GUICreate("Town", 387, 316, 396, 122)
$TGroup1 = GUICtrlCreateGroup("", 0, 0, 385, 313)
$TButton1 = GUICtrlCreateButton("Inn", 8, 8, 57, 33)
$TButton2 = GUICtrlCreateButton("Wild", 320, 8, 57, 33)
$TButton3 = GUICtrlCreateButton("Gen store", 8, 48, 57, 33)
GUISetState(@SW_HIDE, $Town)
#EndRegion ### START Town GUI section ###

#Region ### START Wild GUI section ###
$Wild = GUICreate("Wild", 387, 316, 396, 122)
$WGroup1 = GUICtrlCreateGroup("", 0, 0, 385, 313)
$WButton1 = GUICtrlCreateButton("Town", 8, 8, 57, 33)
$WButton2 = GUICtrlCreateButton("Fight", 320, 8, 57, 33)
GUISetState(@SW_HIDE, $Wild)
#EndRegion ### START Wild GUI section ###

#Region ### START Fight GUI section ###
$Fight = GUICreate("Fight", 390, 319, 396, 122)
$listview = GUICtrlCreateListView("Your Damage | Eneime Damage | Your HP | Eneime HP", 2, 146, 386, 150)
$Progress1 = GUICtrlCreateProgress(8, 32, 185, 25)
$Progress2 = GUICtrlCreateProgress(200, 32, 185, 25)
$YourHP = GUICtrlCreateLabel("YourHP", 8, 8, 41, 17)
$EneimeHP = GUICtrlCreateLabel("EneimeHP", 200, 8, 56, 17)
$Start = GUICtrlCreateButton("Start", 158, 80, 73, 41)
$Attack = GUICtrlCreateButton("Attack", 158, 80, 73, 41)
GUISetState(@SW_HIDE, $Fight)
#EndRegion ### START Fight GUI section ###

#Region ### START Inn GUI section ###
$Inn = GUICreate("Inn", 390, 319, 396, 122)
$hpdisplay = GUICtrlCreateLabel("You have " & $pGold & " gold", 16, 8, 100, 100)
$fullH = GUICtrlCreateButton("Heal", 8, 111, 73, 57)
$drink = GUICtrlCreateButton("Drink", 120, 111, 73, 57)
$eat = GUICtrlCreateButton("eat", 232, 111, 73, 57)
$bttown = GUICtrlCreateButton("town", 8, 250, 73, 57)
$fRHP = GUICtrlCreateLabel("Fully Restore HP", 0, 96, 83, 17)
$aHPlDam = GUICtrlCreateLabel("Adds more HP" & @LF & "lowers Dammage", 232, 80, 83, 30)
$Label1 = GUICtrlCreateLabel("Add more Dammage" & @LF & "Lower HP", 120, 80, 100, 30)
GUISetState(@SW_HIDE, $Inn)
#EndRegion ### START Inn GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Enter
            $iniTName = GUICtrlRead($tName)
            $iniUName = GUICtrlRead($uName)
            DirCreate($fPath)
            IniWrite($fPath & "\" & "InFo", "Name", "ToonName", $iniTName)
            IniWrite($fPath & "\" & "InFo", "Name", "UserName", $iniUName)
            GUIDelete($mm)
            GUISetState(@SW_SHOW, $Town)
        Case $TButton2
            GUISetState(@SW_HIDE, $Town)
            GUISetState(@SW_SHOW, $Wild)
        Case $WButton1
            GUISetState(@SW_HIDE, $Wild)
            GUISetState(@SW_SHOW, $Town)
        Case $WButton2
            GUISetState(@SW_HIDE, $Wild)
            GUISetState(@SW_SHOW, $Fight)
        Case $Start
            GUICtrlDelete($Start)
            GUISetState(@SW_SHOW)
            Start()
        Case $Attack
            Dice()
        Case $TButton1
            GUISetState(@SW_HIDE, $Town)
            GUISetState(@SW_SHOW, $Inn)
        Case $bttown
            GUISetState(@SW_HIDE, $Inn)
            GUISetState(@SW_SHOW, $Town)
        Case $fullH
            GUICtrlSetData($Progress1, 100)
            If $pGold >= 100 Then
                IniWrite($fPath & "\" & "InFo", "Item", "Gold", $pGold - 100)
                $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
                GUICtrlSetData($hpdisplay, "You have " & $pGold & " gold")
            Else
                MsgBox(1, "Sorry", "You do not have enough gold for that action", 1)
            EndIf
    EndSwitch
WEnd

Func Start()
    GUICtrlSetData($Progress1, 100)
    GUICtrlRead($Progress1)
    GUICtrlSetData($Progress2, 100)
    GUICtrlRead($Progress2)
EndFunc   ;==>Start

Func Dice()
    Global $pDamage = Random(1, 20, 1)
    Global $bDamage = Random(1, 20, 1)
    Global $gGold = Random(0, 50, 1)
    Damage()
EndFunc   ;==>Dice

Func Damage()
    $cpHP = GUICtrlRead($Progress1)
    $cbHP = GUICtrlRead($Progress2)
    $pHP = $cpHP - $bDamage
    $bHP = $cbHP - $pDamage
    GUICtrlSetData($Progress1, $pHP)
    GUICtrlSetData($Progress2, $bHP)
    GUICtrlRead($Progress1)
    GUICtrlRead($Progress2)
    $listview = GUICtrlCreateListView("Your Damage | Eneime Damage | Your HP | Eneime HP", 2, 146, 386, 150)
    GUICtrlCreateListViewItem($pDamage & "|" & $bDamage & "|" & $pHP & "|" & $bHP, $listview)

    If $pHP <= 0 And $bHP <= 0 Then
        IniWrite($fPath & "\" & "InFo", "Item", "Gold", $pGold + $gGold)
        GUICtrlDelete($listview)
        GUISetState(@SW_HIDE, $Fight)
        GUISetState(@SW_SHOW, $Town)
        Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
        MsgBox(1, "Draw", "You Draw..." & @LF & "You get " & $gGold & " gold" & @LF & " you now have " & $pGold)
        GUICtrlSetData($Progress2, 100)
    ElseIf $bHP <= 0 Then
        IniWrite($fPath & "\" & "InFo", "Item", "Gold", $pGold + $gGold)
        GUICtrlDelete($listview)
        GUISetState(@SW_HIDE, $Fight)
        GUISetState(@SW_SHOW, $Town)
        Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
        MsgBox(1, "Win", "You win..." & @LF & "You get " & $gGold & " gold" & @LF & " you now have " & $pGold)
        GUICtrlSetData($Progress2, 100)
    ElseIf $pHP <= 0 Then

        GUICtrlDelete($listview)
        GUISetState(@SW_HIDE, $Fight)
        GUISetState(@SW_SHOW, $Town)
        GUICtrlSetData($Progress2, 100)
        Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
        MsgBox(1, "Death", "You died...")
        $t = MsgBox(4, "Dead", "Would you like to revive")

        If $t = 6 Then
            $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
            If $pGold < 25 Then
                GUICtrlSetData($Progress1, 75)
            Else
                $pGold = $pGold - 25
                GUICtrlSetData($Progress1, 100)
                Global $pGold = IniRead($fPath & "\" & "InFo", "Item", "Gold", "1000")
                IniWrite($fPath & "\" & "InFo", "Item", "Gold", $pGold + $gGold)
                MsgBox(1, "Revived", "Your new gold amount is " & $pGold)
            EndIf

        ElseIf $t = 7 Then
            Exit
        EndIf
    EndIf
EndFunc   ;==>Damage

 

1 person likes this

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Your game is neat.

I'd like to show off some skills with graphics.  If you are interested in graphics you might be able to learn from these scripts.

There is a bug with loading world chunks too often, but that aside this code runs a pretty smooth world environment in AutoIt.

 

Have a look here.

http://songersoft.com/programming/dw3_remake/dw3_remake_about.phtml

The map editor script has all of this code.

Edited by Xandy

I am not a lawyer.  (-_-) Xandy About  (^o^) Discord - Xandy Programmer

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • VaishnaviBUtpat
      By VaishnaviBUtpat
      <!DOCTYPE html> <html lang="en" xml:lang="en" style="height: 100%;" xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <style> * { margin: 0; padding: 0; } .th-lk { color: #3665d0; font-family: Arial; font-size: small; text-decoration: none; } .th-lk { vertical-align: 0px; } .th-menu2 .th-lk { line-height: 2em; margin-bottom: 0px; margin-right: 0px; overflow: hidden; padding: 0; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; width: 100%; } .th-menu2 .th-lk { color: black; font-weight: bold; } .th-menu2 > li > .th-lk { display: block; padding-left: 8px; width: auto; } .th-menu2 .th-menu2-sub-item .th-lk, .th-menu2 .th-menu2-sub-item-hov .th-lk { margin-right: 20px; } .th-menu2-sub-item { position: relative !important; } .th-menu2 .th-menu2-item, .th-menu2 .th-menu2-item-hov, .th-menu2 .th-menu2-sub-item, .th-menu2 .th-menu2-sub-item-hov { background-repeat: repeat-x; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-top-style: solid; border-top-width: 1px; height: 2em; list-style: none; margin-bottom: 0px; padding: 0; width: 100%; } .th-menu2 .th-menu2-item, .th-menu2 .th-menu2-item-hov, .th-menu2 .th-menu2-sub-item, .th-menu2 .th-menu2-sub-item-hov { background-color: #ECECEC; background-image: url(sap_skins/default/styling/lshape/chg_butt_det_nav.gif); border-left-color: #d3d1ce; border-right-color: #d3d1ce; border-top-color: #d3d1ce; border-top-width: 0px; } .th-menu2 { border: 0 solid black; left: 0px; list-style: none; margin: 0; padding: 0; position: relative; } .th-menu2 { z-index: 10006; } .th-menu2 { background-color: white; } div { zoom: 1; } .th-sc-content { left: 0px; position: absolute; top: 0px; } .th-sc-container { left: 0px; overflow: hidden; position: relative; top: 0px; } .th-sc-top { position: relative; } .th-sc-top, .th-sc-content, .th-sc-container, .th-sc-buttondown, .th-sc-buttonup { width: 172px; } .th-sc-buttonup, .th-sc-container { z-index: 10101; } .th-sc-top { z-index: 10100; } body, td, th { font-family: Arial,Helvetica,sans-serif; font-size: small; } .th-l-navcontainer, .th_l_downcontainer { border-right-style: solid; border-right-width: 1px; width: 172px; } .th-l-navcontainer, .th_l_downcontainer { background-color: white; border-right-color: #d3d1ce; } body, html { margin: 0px; border: 0; margin: 0; } </style> </head> <body><form name="myFormId" id="myFormId" action="/sap(ZT1TVVJEWDFWVFVsOWZYMTlmTWpNNU9UWmZXWTlwZG5telZ1RGhBSUFBQ3Nyc2tBPT0=)/bc/bsp/sap/crm_ui_frame/BSPWDApplication.do?sap-client=100&amp;sap-language=EN&amp;sap-domainrelax=min" method="post" target="WorkAreaFrame2"><div class="th-ajax-area" id="rootAreaDiv"><div id="C1_W1_V2" tgt="" dhe="false"><table width="100%" style="table-layout: fixed;" cellspacing="0" cellpadding="0"><tbody><tr><td><table width="100%" style="table-layout: fixed;" cellspacing="0" cellpadding="0"><tbody><tr valign="top"><td class="th-l-navcontainer" id="th_l_navcontainer"><div class="th-sc-top" id="C1_W1_V2_thescroll" style="height: 786px;"><div class="th-sc-container" id="C1_W1_V2_thescroll_scbox" style="height: 786px;"><div class="th-sc-content" id="C1_W1_V2_thescroll_sccontent"><div class="th-ajax-area" id="C1_W1_V2_$navbar"><div id="C7_W35_V36" tgt="" dhe="true" excevt="" intevt="c:C7_W35_V36:C1_W1_V2_C7_W35_V36_MainNavigationLinks.do;" automode="true"><div class="th-ajax-area" id="C1_W1_V2_C7_W35_V36_MainNavigationLinks.do"><ul class="th-menu2" id="C7_W35_V36_mainmenu" style="width: 171px;"><li class="th-menu2-sub-item"><a title="Sales Cycle" class="th-lk" id="C7_W35_V36_UTL-SLS" onclick="htmlbSubmitLib('htmlb',this,'thtmlb:link:click:0','myFormId','C7_W35_V36_UTL-SLS','UTL\x2dSLS\x2dWC',0);return false" onfocus="thSaveKbFocus(this);" oncontextmenu="return false;" href="javascript:void(0)">Sales Cycle</a></li></ul></div></div></div></div></div></div></td></tr></tbody></table></td></tr></tbody></table></div></div></form></body> </html> How to capture above HTML element using AutoIT
    • cu0x
      By cu0x
      Hello guys,
       
      im trying to solved a problem that I have.
       
      Need to get some chinese text from an old Wise script, and in the wise file says f.e. Ù×÷ϵͳ¡£ ÇëÉý¼¶Ä. Is there any way to convert it to traditional chinese?
       
      Already tryied the following code...
       
      #include <MsgBoxConstants.au3> Example() Func Example() ; Define the string that will be converted later. ; NOTE: This string may show up as ?? in the help file and even in some editors. ; This example is saved as UTF-8 with BOM. It should display correctly in editors ; which support changing code pages based on BOMs. Local Const $sString = "Ù×÷ϵͳ¡£ ÇëÉý¼¶Ä" ; Temporary variables used to store conversion results. $dBinary will hold ; the original string in binary form and $sConverted will hold the result ; afte it's been transformed back to the original format. Local $dBinary = Binary(""), $sConverted = "" ; Convert the original UTF-8 string to an ANSI compatible binary string. $dBinary = StringToBinary($sString) ; Convert the ANSI compatible binary string back into a string. $sConverted = BinaryToString($dBinary) ; Display the resulsts. Note that the last two characters will appear ; as ?? since they cannot be represented in ANSI. DisplayResults($sString, $dBinary, $sConverted, "ANSI") ; Convert the original UTF-8 string to an UTF16-LE binary string. $dBinary = StringToBinary($sString, 2) ; Convert the UTF16-LE binary string back into a string. $sConverted = BinaryToString($dBinary, 2) ; Display the resulsts. DisplayResults($sString, $dBinary, $sConverted, "UTF16-LE") ; Convert the original UTF-8 string to an UTF16-BE binary string. $dBinary = StringToBinary($sString, 3) ; Convert the UTF16-BE binary string back into a string. $sConverted = BinaryToString($dBinary, 3) ; Display the resulsts. DisplayResults($sString, $dBinary, $sConverted, "UTF16-BE") ; Convert the original UTF-8 string to an UTF-8 binary string. $dBinary = StringToBinary($sString, 4) ; Convert the UTF8 binary string back into a string. $sConverted = BinaryToString($dBinary, 4) ; Display the resulsts. DisplayResults($sString, $dBinary, $sConverted, "UTF8") EndFunc ;==>Example ; Helper function which formats the message for display. It takes the following parameters: ; $sOriginal - The original string before conversions. ; $dBinary - The original string after it has been converted to binary. ; $sConverted- The string after it has been converted to binary and then back to a string. ; $sConversionType - A human friendly name for the encoding type used for the conversion. Func DisplayResults($sOriginal, $dBinary, $sConverted, $sConversionType) MsgBox($MB_SYSTEMMODAL, "", "Original:" & @CRLF & $sOriginal & @CRLF & @CRLF & "Binary:" & @CRLF & $dBinary & @CRLF & @CRLF & $sConversionType & ":" & @CRLF & $sConverted) EndFunc ;==>DisplayResults Thanks a lot!
    • nacerbaaziz
      By nacerbaaziz
      Hi dear
      I want create retractable bar using autoit
      I tried creating slider, but there's a problem with screen reader for the blind, so is there another retractable tape?
      It is advisable to not accept dragging with the keybord only with  mouse
      note:
      This bar is needed in the process of raising and lowering the volume
      I hope that there is a solution to do that
      i waiting your responses.
      Thanks in advance to all members and administrators
    • XanzyX
      By XanzyX
      Is there a function out there that will edit an existing file witha a "Save" and "Cancel" at the bottom?
      Example: Funcrion("TestFile.txt")
    • rte7
      By rte7
      Hello. We work with the BMC Remedy site to manage incidents and would like to automate the processes of clicking through this button code:
      <a href="javascript:" class="btn btn3d menu" style="top:21; left:184; width:21; height:21;"> <img class="btnimg" src="../../../../resources/images/mt_sprites.gif" alt="menu category issue" title=""> </a> I use firefox with mozrepl and autoit with include FF.au3
      I need your help
      I read the topic https://www.autoitscript.com/forum/topic/95595-ffau3-v0601b-10/ but I could not run the code from the listed commands
      ...
      It is necessary to press the button and from the list of the menu of cahorsations to select the item = "zone of trust abonent"
      Screen # 1 http://joxi.ru/52aJK7bh4a7ypA or below.
      1) Press button
      <a href="javascript:" class="btn btn3d menu" style="top:21; left:184; width:21; height:21;"> <img class="btnimg" src="../../../../resources/images/mt_sprites.gif" alt="menu category issue" title=""> </a>
      2) After pressing the button, I need to choose in this menu of 4 items to select an item called "zone of trust abonent", Screen # 2 - http://joxi.ru/p27gwQKHo71VQ2
      html code table items
      <table class="MenuTable" cellpadding="0" cellspacing="0" style="width: 179px;"> <tbody class="MenuTableBody"> <tr class="MenuTableRow"> <td class="MenuEntryName" nowrap="">zone of trust abonent</td> <td class="MenuEntryNoSub" arvalue="zone of trust abonent"></td> </tr> <tr class="MenuTableRow"><td class="MenuEntryName" nowrap="">zone of trust operator</td> <td class="MenuEntryNoSub" arvalue="zone of trust operator"></td> </tr> <tr class="MenuTableRow"><td class="MenuEntryName" nowrap="">zone of trust third operator</td> <td class="MenuEntryNoSub" arvalue="zone of trust third operator"></td></tr> <tr class="MenuTableRow"><td class="MenuEntryNameHover" nowrap="">No settings</td> <td class="MenuEntryNoSubHover" arvalue="No settings"></td> </tr> </tbody> </table>
       
       
      More in detail, I choose from the menu item "zone of trust abonent" Screen # 3 - http://joxi.ru/GrqVq4ZIQEPW4m

       
      3) The choice is made, Screen # 4 http://joxi.ru/v297w6aC3PovLr
      <textarea class="text sr " wrap="off" id="arid_WIN_0_1000002488" cols="20" maxlen="60" style="top:21; left:0; width:179; height:21;" armenu="CFG:PRC:CategoryHPD-Res-T1-Q" mstyle="2" arautoc="1" arautocmb="1" arautocak="0" arautoctt="400" rows="1"> </textarea>
       
      It's all. I would be very grateful to you =) !!!!!!!!!!
      Here are more detailed codes in the attachment. 
      button1.txt
      menu - table.txt
      all.txt