eleria Posted April 29, 2008 Share Posted April 29, 2008 (edited) Hi i'm quite new to autoit (in fact it's the first time I really tried to write a real code) This was done with my little logic and the help file. I'm co-directing a very new project l2csp(lineage 2 community spawn project) which basicly provides a spawn table which aims to be very organized (split by geo-regions) and very close to the official lineage2 ones. That's why I am writing a tool tohelp me not lose time in dozens of other programs to manipulate my data! I'd like to know which parts could be improved and how. Thank you in advance ^^ CODE#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Dim $auth, $geo, $desc, $file, $x1, $y1, $x2, $y2,$out, $quer, $ver Dim $x11, $y11, $x21, $y21 $read = Fileread(".\header.txt") $ver = @YEAR & "." & @MON & "." & @MDAY $gui = GUICreate("Eleria's SwissKnife", 426, 241, 330, 229) $group1 = GUICtrlCreateGroup("SQL_Creator", 8, 8, 409, 137) $x1_ = GUICtrlCreateInput("x1", 16, 32, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL)) $x2_ = GUICtrlCreateInput("x2", 16, 56, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL)) $y1_ = GUICtrlCreateInput("y1", 80, 32, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL)) $y2_ = GUICtrlCreateInput("y2", 80, 56, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL)) $auth_ = GUICtrlCreateInput("Author", 344, 32, 65, 21) $quer_ = GUICtrlCreateEdit("Querries", 144, 32, 193, 65, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL)) $create = GUICtrlCreateButton("Create", 216, 104, 41, 25, 0) $geo_ = GUICtrlCreateInput("Geo-Region", 344, 56, 65, 21) $desc_ = GUICtrlCreateInput("Description", 344, 80, 65, 21) $out_ = GUICtrlCreateInput("Filename", 48, 112, 57, 21) $group2 = GUICtrlCreateGroup("Geo_Region_Coordinates", 8, 152, 409, 81) $x11_ = GUICtrlCreateInput("x1", 224, 168, 89, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY)) $y11_ = GUICtrlCreateInput("y1", 320, 168, 89, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY)) $x21_ = GUICtrlCreateInput("x2", 224, 200, 89, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY)) $y21_ = GUICtrlCreateInput("y2", 320, 200, 89, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY)) $geox_ = GUICtrlCreateInput("Geo_y", 24, 184, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER)) $geoy_ = GUICtrlCreateInput("Geo_x", 96, 184, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER)) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $create $auth = GuiCtrlRead ($auth_) $geo = GuiCtrlRead ($geo_) $x1 = GuiCtrlRead ($x1_) $y1 = GuiCtrlRead ($y1_) $x2 = GuiCtrlRead ($x2_) $y2 = GuiCtrlRead ($y2_) $out = GuiCtrlRead ($out_) $desc = GuiCtrlRead ($desc_) $quer = GuiCtrlRead ($quer_) $read = StringReplace($read, "%auth%", $auth) $read = StringReplace($read, "%geo%", $geo) $read = StringReplace($read, "%x1%", $x1) $read = StringReplace($read, "%y1%", $y1) $read = StringReplace($read, "%x2%", $x2) $read = StringReplace($read, "%y2%", $y2) $read = StringReplace($read, "%out%", $out) $read = StringReplace($read, "%desc%", $desc) $read = StringReplace($read, "%quer%", $quer) $read = StringReplace($read, "%ver%", $ver) If FileExists($out) Then FileDelete ($out) EndIf FileWrite ($out & ".sql", $read) Case $geox_ $geox = GuiCtrlRead ($geox_) $x11 = ($geox - 20) * 32768 $x21 = ($geox - 19) * 32768 GUICtrlSetData ($x11_, $x11) GUICtrlSetData ($x21_, $x21) Case $geoy_ $geoy = GuiCtrlRead ($geoy_) $y11 = ($geoy - 18) * 32768 $y21 = ($geoy - 17) * 32768 GUICtrlSetData ($y21_, $y21) GUICtrlSetData ($y11_, $y11) EndSwitch WEnd Also this is what the header.txt file looks like: CODE-- ---------------------------------------------------------------------------- -- -- DB Patch file for region %geo% -- version %ver% -- By %auth% -- -- ---------------------------------------------------------------------------- -- -- Notes: -- -- a) This file contains *ONLY* 'L2Monster' type spawn data! -- -- This file *DOES NOT CREATE* a 'spawnlist' table. -- -- c) You *MUST* use it on an existing 'spawnlist' table. Preferably, -- -- from a clean table generated from the L2JFree SVN 'spawnlist.sql' -- -- CT1 DataPack script. A table built using my latest spawn list -- -- "header" script is also OK. But be warned that, such method will only -- -- load the non-'L2Monster' spawns for the world + each patch file you -- -- run. I highly recomend using the script versions designed for clean -- -- install of my spawn data instead. They are much faster, because -- -- they do not scan the table for removal of, all the old 'L2Monster' -- -- type spawns in the region. -- ---------------------------------------------------------------------------- -- ---------------------------------------------------------------------------- -- %desc% -- Geo: %geo% -- -- ---------------------------------------------------------------------------- -- Remove 'L2Monster' type spawns from region %geo% DELETE FROM `spawnlist` WHERE spawnlist.locx >= %x1% AND spawnlist.locy >= %y1% AND spawnlist.locx < %x2% AND spawnlist.locy < %y2% AND EXISTS ( SELECT * FROM npc n WHERE n.type = "L2Monster" AND spawnlist.npc_templateid = n.idTemplate ); -- Add the new 'L2Monster' type spawns to region %geo% INSERT INTO `spawnlist` ( location, count, npc_templateid, locx, locy, locz, randomx, randomy, heading, respawn_delay, loc_id, periodOfDay ) VALUES %quer% What it does : One part is for replacing values from a header file and adding the sql querries, then the other part is for calculating geo-region boundaries used in the SQL DELETE function... Edited April 29, 2008 by eleria Link to comment Share on other sites More sharing options...
martin Posted April 29, 2008 Share Posted April 29, 2008 Hi i'm quite new to autoit (in fact it's the first time I really tried to write a real code)This was done with my little logic and the help file.I'm co-directing a very new project l2csp(lineage 2 community spawn project) which basicly provides a spawn table which aims to be very organized (split by geo-regions) and very close to the official lineage2 ones.That's why I am writing a tool tohelp me not lose time in dozens of other programs to manipulate my data!I'd like to know which parts could be improved and how.Thank you in advance ^^CODE#include <ButtonConstants.au3>#include <EditConstants.au3>#include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>Dim $auth, $geo, $desc, $file, $x1, $y1, $x2, $y2,$out, $quer, $verDim $x11, $y11, $x21, $y21$read = Fileread(".\header.txt")$ver = @YEAR & "." & @MON & "." & @MDAY$gui = GUICreate("Eleria's SwissKnife", 426, 241, 330, 229)$group1 = GUICtrlCreateGroup("SQL_Creator", 8, 8, 409, 137)$x1_ = GUICtrlCreateInput("x1", 16, 32, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))$x2_ = GUICtrlCreateInput("x2", 16, 56, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))$y1_ = GUICtrlCreateInput("y1", 80, 32, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))$y2_ = GUICtrlCreateInput("y2", 80, 56, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))$auth_ = GUICtrlCreateInput("Author", 344, 32, 65, 21)$quer_ = GUICtrlCreateEdit("Querries", 144, 32, 193, 65, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL))$create = GUICtrlCreateButton("Create", 216, 104, 41, 25, 0)$geo_ = GUICtrlCreateInput("Geo-Region", 344, 56, 65, 21)$desc_ = GUICtrlCreateInput("Description", 344, 80, 65, 21)$out_ = GUICtrlCreateInput("Filename", 48, 112, 57, 21)$group2 = GUICtrlCreateGroup("Geo_Region_Coordinates", 8, 152, 409, 81)$x11_ = GUICtrlCreateInput("x1", 224, 168, 89, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))$y11_ = GUICtrlCreateInput("y1", 320, 168, 89, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))$x21_ = GUICtrlCreateInput("x2", 224, 200, 89, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))$y21_ = GUICtrlCreateInput("y2", 320, 200, 89, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))$geox_ = GUICtrlCreateInput("Geo_y", 24, 184, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER))$geoy_ = GUICtrlCreateInput("Geo_x", 96, 184, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER))GUISetState(@SW_SHOW)While 1$nMsg = GUIGetMsg()Switch $nMsgCase $GUI_EVENT_CLOSEExitCase $create $auth = GuiCtrlRead ($auth_) $geo = GuiCtrlRead ($geo_) $x1 = GuiCtrlRead ($x1_) $y1 = GuiCtrlRead ($y1_) $x2 = GuiCtrlRead ($x2_) $y2 = GuiCtrlRead ($y2_) $out = GuiCtrlRead ($out_) $desc = GuiCtrlRead ($desc_) $quer = GuiCtrlRead ($quer_) $read = StringReplace($read, "%auth%", $auth) $read = StringReplace($read, "%geo%", $geo) $read = StringReplace($read, "%x1%", $x1) $read = StringReplace($read, "%y1%", $y1) $read = StringReplace($read, "%x2%", $x2) $read = StringReplace($read, "%y2%", $y2) $read = StringReplace($read, "%out%", $out) $read = StringReplace($read, "%desc%", $desc) $read = StringReplace($read, "%quer%", $quer) $read = StringReplace($read, "%ver%", $ver) If FileExists($out) Then FileDelete ($out) EndIf FileWrite ($out & ".sql", $read) Case $geox_ $geox = GuiCtrlRead ($geox_) $x11 = ($geox - 20) * 32768 $x21 = ($geox - 19) * 32768 GUICtrlSetData ($x11_, $x11) GUICtrlSetData ($x21_, $x21) Case $geoy_ $geoy = GuiCtrlRead ($geoy_) $y11 = ($geoy - 18) * 32768 $y21 = ($geoy - 17) * 32768 GUICtrlSetData ($y21_, $y21) GUICtrlSetData ($y11_, $y11) EndSwitchWEndAlso this is what the header.txt file looks like:CODE-- ------------------------------------------------------------------------------ -- DB Patch file for region %geo% -- version %ver% -- By %auth% ---- ------------------------------------------------------------------------------ -- Notes:-- -- a) This file contains *ONLY* 'L2Monster' type spawn data!-- -- This file *DOES NOT CREATE* a 'spawnlist' table.-- -- c) You *MUST* use it on an existing 'spawnlist' table. Preferably,-- -- from a clean table generated from the L2JFree SVN 'spawnlist.sql'-- -- CT1 DataPack script. A table built using my latest spawn list-- -- "header" script is also OK. But be warned that, such method will only-- -- load the non-'L2Monster' spawns for the world + each patch file you-- -- run. I highly recomend using the script versions designed for clean-- -- install of my spawn data instead. They are much faster, because-- -- they do not scan the table for removal of, all the old 'L2Monster'-- -- type spawns in the region.-- ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ %desc% -- Geo: %geo% ---- ------------------------------------------------------------------------------ Remove 'L2Monster' type spawns from region %geo%DELETE FROM `spawnlist` WHERE spawnlist.locx >= %x1% AND spawnlist.locy >= %y1% AND spawnlist.locx < %x2% AND spawnlist.locy < %y2% AND EXISTS ( SELECT * FROM npc n WHERE n.type = "L2Monster" AND spawnlist.npc_templateid = n.idTemplate );-- Add the new 'L2Monster' type spawns to region %geo%INSERT INTO `spawnlist` ( location, count, npc_templateid, locx, locy, locz, randomx, randomy, heading, respawn_delay, loc_id, periodOfDay ) VALUES%quer%What it does : One part is for replacing values from a header file and adding the sql querries, then the other part is for calculating geo-region boundaries used in the SQL DELETE function...I would recommend using labels for your input boxes rather than indicating their function with an initial string. Once data has been entered you don't know which box to use without the labels. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
zorphnog Posted April 29, 2008 Share Posted April 29, 2008 You don't necessarily have to have a header.txt. You could write the entire file from within the script. Although, if you are constantly changing/updating the header file then your way is fine. I'd also use some error checking on your file operations (i.e. make sure FileRead was successful otherwise you'll end up creating a blank file). Link to comment Share on other sites More sharing options...
eleria Posted April 29, 2008 Author Share Posted April 29, 2008 Alright New version : CODE#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Dim $read, $auth, $geo, $desc, $file, $x1, $y1, $x2, $y2,$out, $quer, $ver Dim $x11, $y11, $x21, $y21 $read = FileRead(".\header") If (@error = 1) then Msgbox (0,"ERROR", "Could not open header file!") Exit Endif $ver = @YEAR & "." & @MON & "." & @MDAY $gui = GUICreate("Eleria's SwissKnife", 426, 306, 330, 229) $Group1 = GUICtrlCreateGroup("SQL_Creator", 8, 0, 409, 177) $x1_ = GUICtrlCreateInput("", 16, 40, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER)) $x2_ = GUICtrlCreateInput("", 16, 88, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER)) $y1_ = GUICtrlCreateInput("", 80, 40, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER)) $y2_ = GUICtrlCreateInput("", 80, 88, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER)) $auth_ = GUICtrlCreateInput("", 344, 40, 65, 21) $quer_ = GUICtrlCreateEdit("", 144, 40, 193, 65, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL)) $create = GUICtrlCreateButton("create", 204, 120, 57, 33, 0) $geo_ = GUICtrlCreateInput("", 344, 88, 65, 21) $desc_ = GUICtrlCreateInput("", 344, 136, 65, 21) $out_ = GUICtrlCreateInput("", 48, 136, 57, 21) $Label1 = GUICtrlCreateLabel("Author", 360, 20, 35, 17) $Label2 = GUICtrlCreateLabel("Region", 360, 68, 38, 17) $Label3 = GUICtrlCreateLabel("Details", 360, 116, 36, 17, $SS_CENTER) $Label4 = GUICtrlCreateLabel("Filename", 52, 116, 50, 17, $SS_CENTER) $Label5 = GUICtrlCreateLabel("x1", 40, 20, 15, 17) $Label6 = GUICtrlCreateLabel("y1", 104, 20, 15, 17) $Label7 = GUICtrlCreateLabel("y2", 104, 68, 15, 17) $Label8 = GUICtrlCreateLabel("x2", 40, 68, 15, 17) $Label9 = GUICtrlCreateLabel("SQL querries", 200, 20, 65, 17) $Group2 = GUICtrlCreateGroup("Geo_Region_Coordinates", 8, 184, 289, 113) $x11_ = GUICtrlCreateInput("", 156, 216, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY)) $y11_ = GUICtrlCreateInput("", 228, 216, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY)) $x21_ = GUICtrlCreateInput("", 156, 264, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY)) $y21_ = GUICtrlCreateInput("", 228, 264, 57, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY)) $geox_ = GUICtrlCreateInput("", 72, 216, 33, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER)) $geoy_ = GUICtrlCreateInput("", 72, 264, 33, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_NUMBER)) $Label43 = GUICtrlCreateLabel("Geo_x", 32, 216, 35, 17) $Label12 = GUICtrlCreateLabel("x2", 176, 244, 15, 17) $Label13 = GUICtrlCreateLabel("x1", 176, 196, 15, 17) $Label14 = GUICtrlCreateLabel("y1", 248, 196, 15, 17) $Label15 = GUICtrlCreateLabel("y2", 248, 244, 15, 17) $Label10 = GUICtrlCreateLabel("Geo_y", 32, 264, 35, 17) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $create $read = FileRead(".\header") $auth = GuiCtrlRead ($auth_) $geo = GuiCtrlRead ($geo_) $x1 = GuiCtrlRead ($x1_) $y1 = GuiCtrlRead ($y1_) $x2 = GuiCtrlRead ($x2_) $y2 = GuiCtrlRead ($y2_) $out = GuiCtrlRead ($out_) $desc = GuiCtrlRead ($desc_) $quer = GuiCtrlRead ($quer_) $read = StringReplace($read, "%auth%", $auth) $read = StringReplace($read, "%geo%", $geo) $read = StringReplace($read, "%x1%", $x1) $read = StringReplace($read, "%y1%", $y1) $read = StringReplace($read, "%x2%", $x2) $read = StringReplace($read, "%y2%", $y2) $read = StringReplace($read, "%out%", $out) $read = StringReplace($read, "%desc%", $desc) $read = StringReplace($read, "%quer%", $quer) $read = StringReplace($read, "%ver%", $ver) If FileExists($out & ".sql") Then FileDelete ($out & ".sql") EndIf FileWrite ($out & ".sql", $read) Case $geox_ $geox = GuiCtrlRead ($geox_) $x11 = ($geox - 20) * 32768 $x21 = ($geox - 19) * 32768 GUICtrlSetData ($x11_, $x11) GUICtrlSetData ($x21_, $x21) Case $geoy_ $geoy = GuiCtrlRead ($geoy_) $y11 = ($geoy - 18) * 32768 $y21 = ($geoy - 17) * 32768 GUICtrlSetData ($y21_, $y21) GUICtrlSetData ($y11_, $y11) EndSwitch WEnd Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now