Browse Source

Set up project

mikedungviet 2 years ago
parent
commit
ae7a9ca5a8
100 changed files with 1191 additions and 0 deletions
  1. 11 0
      actingCareer.qproj
  2. 47 0
      actingCareer/mod_actingCareer.qsps
  3. 44 0
      actingCareer/mod_actingCareer_readme.qsps
  4. 9 0
      actingCareer/mod_actingCareer_saveupdater.qsps
  5. 35 0
      actingCareer/mod_actingCareer_setup.qsps
  6. 38 0
      build.sh
  7. 537 0
      tools/Get Image Paths.ahk
  8. 108 0
      tools/Move Image Files.ahk
  9. 56 0
      tools/Move or Rename Missing Image Files.ahk
  10. BIN
      tools/Move or Rename Missing Image Files.exe
  11. BIN
      tools/Player-original/fmodexp.dll
  12. BIN
      tools/Player-original/langs/de/qspgui.mo
  13. BIN
      tools/Player-original/langs/en/qspgui.mo
  14. BIN
      tools/Player-original/langs/eo/qspgui.mo
  15. BIN
      tools/Player-original/langs/ru/qspgui.mo
  16. BIN
      tools/Player-original/langs/uk/qspgui.mo
  17. BIN
      tools/Player-original/qsp.dll
  18. BIN
      tools/Player-original/qspgui.exe
  19. BIN
      tools/Player-video/fmodexp.dll
  20. BIN
      tools/Player-video/langs/de/qspgui.mo
  21. BIN
      tools/Player-video/langs/en/qspgui.mo
  22. BIN
      tools/Player-video/langs/eo/qspgui.mo
  23. BIN
      tools/Player-video/langs/ru/qspgui.mo
  24. BIN
      tools/Player-video/langs/uk/qspgui.mo
  25. BIN
      tools/Player-video/libvlc.dll
  26. BIN
      tools/Player-video/libvlccore.dll
  27. BIN
      tools/Player-video/plugins/access/libfilesystem_plugin.dll
  28. BIN
      tools/Player-video/plugins/audio_output/libdirectsound_plugin.dll
  29. BIN
      tools/Player-video/plugins/codec/libavcodec_plugin.dll
  30. BIN
      tools/Player-video/plugins/codec/libdxva2_plugin.dll
  31. BIN
      tools/Player-video/plugins/plugins.dat
  32. BIN
      tools/Player-video/plugins/video_chroma/libchain_plugin.dll
  33. BIN
      tools/Player-video/plugins/video_chroma/libgrey_yuv_plugin.dll
  34. BIN
      tools/Player-video/plugins/video_chroma/libi420_rgb_mmx_plugin.dll
  35. BIN
      tools/Player-video/plugins/video_chroma/libi420_rgb_plugin.dll
  36. BIN
      tools/Player-video/plugins/video_chroma/libi420_rgb_sse2_plugin.dll
  37. BIN
      tools/Player-video/plugins/video_chroma/libi420_yuy2_mmx_plugin.dll
  38. BIN
      tools/Player-video/plugins/video_chroma/libi420_yuy2_plugin.dll
  39. BIN
      tools/Player-video/plugins/video_chroma/libi420_yuy2_sse2_plugin.dll
  40. BIN
      tools/Player-video/plugins/video_chroma/libi422_i420_plugin.dll
  41. BIN
      tools/Player-video/plugins/video_chroma/libi422_yuy2_mmx_plugin.dll
  42. BIN
      tools/Player-video/plugins/video_chroma/libi422_yuy2_plugin.dll
  43. BIN
      tools/Player-video/plugins/video_chroma/libi422_yuy2_sse2_plugin.dll
  44. BIN
      tools/Player-video/plugins/video_chroma/librv32_plugin.dll
  45. BIN
      tools/Player-video/plugins/video_chroma/libswscale_plugin.dll
  46. BIN
      tools/Player-video/plugins/video_chroma/libyuy2_i420_plugin.dll
  47. BIN
      tools/Player-video/plugins/video_chroma/libyuy2_i422_plugin.dll
  48. BIN
      tools/Player-video/plugins/video_filter/libscale_plugin.dll
  49. BIN
      tools/Player-video/plugins/video_filter/libyuvp_plugin.dll
  50. BIN
      tools/Player-video/plugins/video_output/libdirect2d_plugin.dll
  51. BIN
      tools/Player-video/plugins/video_output/libdirect3d_plugin.dll
  52. BIN
      tools/Player-video/plugins/video_output/libdirectdraw_plugin.dll
  53. BIN
      tools/Player-video/plugins/video_output/libdrawable_plugin.dll
  54. BIN
      tools/Player-video/plugins/video_output/libgl_plugin.dll
  55. BIN
      tools/Player-video/plugins/video_output/libglwin32_plugin.dll
  56. BIN
      tools/Player-video/plugins/video_output/libyuv_plugin.dll
  57. BIN
      tools/Player-video/qsp.dll
  58. BIN
      tools/Player-video/qspgui.exe
  59. 153 0
      tools/QGen4/keywords.xml
  60. BIN
      tools/QGen4/langs/en/qgen_en.mo
  61. BIN
      tools/QGen4/langs/ru/qgen_ru.mo
  62. BIN
      tools/QGen4/qgen.exe
  63. BIN
      tools/QGen5/QGen.exe
  64. BIN
      tools/QGen5/Qt5Core.dll
  65. BIN
      tools/QGen5/Qt5Gui.dll
  66. BIN
      tools/QGen5/Qt5Network.dll
  67. BIN
      tools/QGen5/Qt5Widgets.dll
  68. BIN
      tools/QGen5/Qt5Xml.dll
  69. 153 0
      tools/QGen5/keywords.xml
  70. BIN
      tools/QGen5/libgcc_s_dw2-1.dll
  71. BIN
      tools/QGen5/libstdc++-6.dll
  72. BIN
      tools/QGen5/libwinpthread-1.dll
  73. BIN
      tools/QGen5/platforms/qwindows.dll
  74. BIN
      tools/QSPgui/fmodexp.dll
  75. BIN
      tools/QSPgui/langs/de/qspgui.mo
  76. BIN
      tools/QSPgui/langs/en/qspgui.mo
  77. BIN
      tools/QSPgui/langs/eo/qspgui.mo
  78. BIN
      tools/QSPgui/langs/ru/qspgui.mo
  79. BIN
      tools/QSPgui/langs/uk/qspgui.mo
  80. BIN
      tools/QSPgui/libvlc.dll
  81. BIN
      tools/QSPgui/libvlccore.dll
  82. BIN
      tools/QSPgui/plugins/access/libfilesystem_plugin.dll
  83. BIN
      tools/QSPgui/plugins/audio_output/libdirectsound_plugin.dll
  84. BIN
      tools/QSPgui/plugins/codec/libavcodec_plugin.dll
  85. BIN
      tools/QSPgui/plugins/codec/libdxva2_plugin.dll
  86. BIN
      tools/QSPgui/plugins/plugins.dat
  87. BIN
      tools/QSPgui/plugins/video_chroma/libchain_plugin.dll
  88. BIN
      tools/QSPgui/plugins/video_chroma/libgrey_yuv_plugin.dll
  89. BIN
      tools/QSPgui/plugins/video_chroma/libi420_rgb_mmx_plugin.dll
  90. BIN
      tools/QSPgui/plugins/video_chroma/libi420_rgb_plugin.dll
  91. BIN
      tools/QSPgui/plugins/video_chroma/libi420_rgb_sse2_plugin.dll
  92. BIN
      tools/QSPgui/plugins/video_chroma/libi420_yuy2_mmx_plugin.dll
  93. BIN
      tools/QSPgui/plugins/video_chroma/libi420_yuy2_plugin.dll
  94. BIN
      tools/QSPgui/plugins/video_chroma/libi420_yuy2_sse2_plugin.dll
  95. BIN
      tools/QSPgui/plugins/video_chroma/libi422_i420_plugin.dll
  96. BIN
      tools/QSPgui/plugins/video_chroma/libi422_yuy2_mmx_plugin.dll
  97. BIN
      tools/QSPgui/plugins/video_chroma/libi422_yuy2_plugin.dll
  98. BIN
      tools/QSPgui/plugins/video_chroma/libi422_yuy2_sse2_plugin.dll
  99. BIN
      tools/QSPgui/plugins/video_chroma/librv32_plugin.dll
  100. BIN
      tools/QSPgui/plugins/video_chroma/libswscale_plugin.dll

+ 11 - 0
actingCareer.qproj

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<QGen-project version="4.0.0 beta 1">
+  <Structure>
+    <Folder name="setup">
+      <Location name="mod_actingCareer_options"/>
+      <Location name="mod_actingCareer_setup"/>
+      <Location name="mod_actingCareer_readme"/>
+      <Location name="mod_actingCareer"/>
+    </Folder>
+  </Structure>
+</QGen-project>

+ 47 - 0
actingCareer/mod_actingCareer.qsps

@@ -0,0 +1,47 @@
+# mod_isample
+!input mod entry point here. this will be checked on every location, please keep it clean and brief to avoid game lag
+
+
+!entry point 1: if player is on bed, create a new link to make her sleepy
+if $curloc = 'bed2' and $args[0] = '':
+	if pcs_sleep > 80:
+		'[mod]... But You can make yourself <a href="exec:pcs_sleep=0&gt $curloc">sleepy!</a>'
+	else
+		'[mod]... And you are already sleepy.'
+	end
+end
+
+
+!entry point 2: goto school directly from room
+!Note that location name are case sensetive. you can use lcase() or ucase() to prevent bug
+if lcase($curloc) = 'bedrpar' or ucase($curloc) = 'KORRPAR':
+		act '[mod]<font color = green><b>Go to school</b></font>': minut += 1 & gt 'gschool_grounds', 'main'
+end
+
+
+!entry point 3: replace exit room act in apartment
+
+if $curloc = 'bedrPar':
+	delact 'Exit the room'
+	act 'Exit the room':
+		msg 'Now mod isample will send you to school directly'
+		minut += 1 & gt 'gschool_grounds', 'main'
+	end
+end
+
+!entry point 4: access in-mod location
+if $curloc = 'pav_residential':
+	act '[mod]Chase the rabbit':
+		gt 'mod_isample_pav_residential'
+	end
+end
+
+if $curloc = 'city_residential':
+	act '[mod]Jump into rabit hole':
+		*clr & cla
+		'[mod]Suddenly, everything blank out'
+		gs 'mod_isample_city_residential'
+	end
+end
+--- mod_isample ---------------------------------
+

+ 44 - 0
actingCareer/mod_actingCareer_readme.qsps

@@ -0,0 +1,44 @@
+# mod_isample_readme
+!input your mod detail readme here. you can use msg or detailed structure, just make sure to create act 'return': gt 'mod_setting'
+*clr&cla
+act 'return': gt 'mod_setting'
+
+'<center>Mod <b>isample</b></center>'
+'This is a sample for new mod system, please fill your own mod in this form
+1. Since QSP can not load location with same name, and there are no warning about this during adding new qsp files, please name ALL YOUR LOCATION NAME with <B>mod_name_xxx</B> to avoid duplication bug.
+
+2. please DO NOT use space or non-ascii character in location name. you can use use _ instead. -- this may cause bug on txtsplit function for git
+
+3. The first location MUST be named as "mod_name_setup", this system will call it and load necessary information from it.
+$mod_info[0] = mod name
+$mod_info[1] = mod version
+10203 will be displayed as version 1.2, fix3.
+40500 will be showen as version 4.5
+$mod_info[2] = author name
+$mod_info[3] = short description for this mod
+
+4. please create "mod_name_readme" location for mod detail readme (just like this location)
+  If you really have only one line for this, you can use a simple msg instead a long text.
+  
+5. put all your entry point in location "mod_name"
+You can use lots of condition check there, check this sample file yourself.
+Frequency used condition:'
+'<table>'
+*p "<tr><td>current location"
+"<td>if $curloc = '...'</td></tr>"
+*p "<tr><td>current stage"
+"<td>if $ARGS[0] = '...'</td></tr>"
+*p "<tr><td>variable value"
+"<td>if aaa > 10 </td></tr>"
+'</table>
+Please note that strings are case sensitive, you can use lcase() or ucase() to shft them before check.
+
+
+6. Due to techinque issue, this mod system CAN NOT recognition locations use value in ARGS (luckly, only system functions use this, so you shall not worry about this.)
+for example, gs ''indik'', ''2'', 100
+
+Have a nice day, and Welcome to join this Community!
+
+--- illume, 2018/1/25'
+--- mod_isample_readme ---------------------------------
+

+ 9 - 0
actingCareer/mod_actingCareer_saveupdater.qsps

@@ -0,0 +1,9 @@
+# mod_isample_saveupdater
+!! This file is for updating save game when one variable have been replaced by another.
+!! The code in this location will be processed by the main game saveupdater routine as a subroutine
+!! First will be processed the code in the main routine and then all the installed mods in the order of their installation
+
+
+--- mod_isample_saveupdater ---------------------------------
+
+

+ 35 - 0
actingCareer/mod_actingCareer_setup.qsps

@@ -0,0 +1,35 @@
+# mod_isample_setup
+!input basic mod information here. 
+!this location must be the first one
+
+$mod_info[0] = 'isample'
+!0=mod name, saved to $mod_name[i] array 
+
+$mod_info[1] = '10203'
+!1=mod version
+!this will be displayed as version 1.2, fix3.
+!if you input 40500, will be showen as version 4.5
+
+$mod_info[2] = 'illume'
+!2=mod author
+
+$mod_info[3] = 'This is a sample for new mod system, please fill your own mod in this form'
+!3=mod description, input a short brief here.
+
+$mod_info[4] = 'Options'
+!4=mod options/settings link name.
+
+! be aware, the following condition is case sensitive, you can use lcase() or ucase() to shft them before check. 
+if $curloc = 'mod_<<$mod_info[0]>>_setup':
+	usehtml = 1
+	!this will be only showed if you exec mod file. This location should be only called by gs, so this line will not trigger on normal mod playing
+	'<center><h1><font color=red>ACCESS DENIED</font></h1></center>'
+	'<<$mod_info[0]>> is a mod for <b>Girl Life - English Community Version</b>, and can not be played individually.'
+	''
+	'You can find the main game in <a href="https://www.tfgamessite.com/index.php?module=viewgame&id=597">Tfgames site</a> (external link)'
+	''
+	'Our forum: <a href="https://tfgamessite.com/phpbb3/viewforum.php?f=70">Tfgames site</a> (external link)'
+end
+
+--- mod_isample_setup ---------------------------------
+

+ 38 - 0
build.sh

@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+set -x
+
+# Set those lines to fit your setup.
+# This is where glife.qsp will be copied. If you don't want to move it just comment (#) the line below.
+#DESTDIR=../GL_ECV
+
+# The file that will be generated or open
+QSPFILE=actingCareer.qsp
+
+#######################################################################
+
+python tools/txtmerge.py actingCareer actingCareer.txt
+if [[ "$OSTYPE" == "linux-gnu" ]]; then
+	./tools/txt2gam.linux glife.txt "${QSPFILE}" 1> /dev/null
+elif [[ "$OSTYPE" == "darwin"* ]]; then
+	./tools/txt2gam.mac glife.txt "${QSPFILE}" 1> /dev/null
+elif [[ "$OSTYPE" == "msys" ]]; then
+	if [[ "$MSYSTEM_CARCH" == "x86_64" ]]; then
+		./tools/txt2gam64.exe glife.txt "${QSPFILE}" 1> /dev/null
+	else
+		./tools/txt2gam.exe glife.txt "${QSPFILE}" 1> /dev/null
+	fi
+elif [[ "$OSTYPE" == "cygwin" ]]; then
+	# Unsure if non-AMD CPUs give this or AMD64, tested on an actual AMD brand chip
+	# requires a python install visible to cygwin (for the txtmerge above)
+	if [[ "$PROCESSOR_ARCHITECTURE" == "x86_64" ]]; then
+		./tools/txt2gam64.exe glife.txt "${QSPFILE}" 1> /dev/null
+	elif [[ "$PROCESSOR_ARCHITECTURE" == "AMD64" ]]; then
+		./tools/txt2gam64.exe glife.txt "${QSPFILE}" 1> /dev/null
+	else
+		./tools/txt2gam.exe glife.txt "${QSPFILE}" 1> /dev/null
+	fi
+fi
+if [ -d "${DESTDIR}" ]; then
+	cp --reflink=auto "${QSPFILE}" "${DESTDIR}"
+fi
+

+ 537 - 0
tools/Get Image Paths.ahk

@@ -0,0 +1,537 @@
+/*
+ *		-- Get image paths from glife.txt  --
+ *
+ *		Requires images subfolder to exist in current directory
+ *		
+ *		OutAllFile 	- List of All unprocessed file names from glife.txt that are not marked missing in the code
+ *		OutUsedFile - List of Found file names from glife.txt and Auto List
+ *		OutMissFile	- List of Missing file names from glife.txt that are marked missing in the code.
+ *		OutAutoFile	- List of file paths from glife.txt that were added to Output file using code in this script
+ *		OutManFile	- List of file paths from glife.txt that will have to be added manualy checked either in glife code or added to OutUsedFile
+ *          
+ *
+ *      WD: Jul 2015
+ *
+ *
+ */
+  
+  
+
+#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
+#Warn  ; Enable warnings to assist with detecting common errors.
+SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
+SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
+
+
+SourceFile 		= glife.txt
+OutAllFile		= Image List - All.txt
+OutUsedFile		= Image List - Used.txt
+OutMissFile		= Image List - Missing.txt
+OutAutoFile		= Image Paths - Auto List.txt
+OutManFile		= Image Paths - Manual List.txt
+SearchRegEx		= i)<img\s+src\s*=\s*"(.*?)"
+Search2RegEx	= i)\bview\s*'+(.*?)'+
+CommentRegEx 	= ^\s*!
+MarkMissRegEx	= i)!.*?:\s+IMAGE NEEDED\s*~\s*.*?<img\s+src\s*=\s*"(.*?)"
+
+FileEncoding, UTF-16
+
+;-- backup files  and delete --
+IfNotExist %SourceFile%
+{
+	MsgBox, 16, Get Image Paths, Unable to locate "%SourceFile%" in "%A_WorkingDir%", 10
+	Exit
+}
+
+ifExist %OutAllFile%					;; Backup File		
+{
+	FileMove, %OutAllFile%, %OutAllFile%.bak, 1	
+	FileDelete, %OutAllFile%
+}
+
+ifExist %OutUsedFile%				;; Backup File		
+{
+	FileMove, %OutUsedFile%, %OutUsedFile%.bak, 1	
+	FileDelete, %OutUsedFile%
+}
+
+ifExist %OutMissFile%				;; Backup File		
+{
+	FileMove, %OutMissFile%, %OutMissFile%.bak, 1	
+	FileDelete, %OutMissFile%
+}
+
+ifExist %OutAutoFile%				;; Backup File 
+{
+	FileMove, %OutAutoFile%, %OutAutoFile%.bak, 1
+	FileDelete, %OutAutoFile%
+}
+
+ifExist %OutManFile%				;; Backup File 
+{
+	FileMove, %OutManFile%, %OutManFile%.bak, 1
+	FileDelete, %OutManFile%
+}
+
+
+; -- load data from file --
+FileRead, Source, %SourceFile%
+
+; -- vars need plenty of space to work with --
+VarSetCapacity(OutAll, 4194304)				;; 4mb
+VarSetCapacity(OutUsed, 4194304)			;; 4mb
+VarSetCapacity(OutMiss, 4194304)			;; 4mb
+VarSetCapacity(OutAuto, 1048576)			;; 1mb
+VarSetCapacity(OutMan, 1048576)				;; 1mb
+
+
+; -- Parse data one line at a time --
+Loop, Parse, Source, `n, `r  			; Specifying `n prior to `r allows both Windows and Unix files to be parsed.
+{
+	if trim(A_LoopField) = ""													;; Skip blank line
+		continue
+	
+	; -- Check is Comment line --
+	FoundCmntPos := RegExMatch(A_LoopField, CommentRegEx)
+	if (ErrorLevel)
+	{
+		MsgBox, 48, Get Image Paths, RegExMatch runtime error: %ErrorLevel%`n`nFound searching string: %A_LoopField%`n`nusing search: %CommentRegEx%
+		break
+	}
+	
+	if (FoundCmntPos)															;; comment found
+	{
+		FoundPos := RegExMatch(A_LoopField, MarkMissRegEx, Match)				;; Check for known missing file
+		if (ErrorLevel)
+		{
+			MsgBox, 48, Get Image Paths, RegExMatch runtime error: %ErrorLevel%`n`nFound searching string: %A_LoopField%`n`nusing search: %MarkMissRegEx%
+			break
+		}	
+		if (FoundPos)															;; Found File
+		{	
+			Match1 := StrReplace(Match1, "/", "\")								;; Use correct Win path seperator	
+			IfExist %Match1%
+			{
+				OutMiss	.= Spacer(Match1) . "- Missing file exists`n"			;; Missing File found
+			}
+			else
+			{
+				OutMiss	.= Match1 . "`n"										;; Missing file Not found
+			}		
+		}
+		Continue
+	}
+	
+	LineNo := A_index															;; Save line no
+	
+	; -- HTML  images --
+	FoundPos := 1
+	Haystack := A_LoopField
+
+	Loop, 200
+	{
+	
+		; -- Find Image File Path --
+		FoundPos := RegExMatch(Haystack, SearchRegEx, Match, FoundPos)				;; Search for image path in html
+		if (ErrorLevel)
+		{
+			MsgBox, 48, Get Image Paths, RegExMatch runtime error: %ErrorLevel%`n`nFound searching string: %Haystack%`n`nusing search: %SearchRegEx%
+			break
+		}
+		
+		if (FoundPos = 0)															;; Not Found exit loop
+		{
+			break
+		}
+		else
+		; if (FoundPos)																;; Found File
+		{	
+			IdxTxt := " (L:" . LineNo . ", P:" . FoundPos . ")" 
+			Match1 := StrReplace(Match1, "/", "\")									;; Use correct Win path seperator
+			OutAll .= Match1 . "`n"
+			; -- Image Path Contains Code --
+			if inStr(Match1, "<<")													;; String contains expression
+			{
+				
+				if inStr(Match1, "FUNC(''$face_image''")							;; Hairstyle images Function - only use JPG files
+				{
+					if GetImageFiles("images\body\hairstyles", "hcol*.jpg", OutUsed, "", "FR")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\body\hairstyles\*\hcol*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\body\hairstyles\*\hcol*.jpg' " . IdxTxt . "`n"
+					}
+					
+				}
+				else if inStr(Match1, "FUNC(''$clothing_image''")					;; Clothing images Function - only use JPG files
+				{
+					if GetImageFiles("images\clothes", "vatnik.jpg", OutUsed)
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\vatnik.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\vatnik.jpg' " . IdxTxt . "`n"
+					}
+					; GetImageFiles("images\clothes\newclo", "131.jpg", OutUsed)	;; Dupe See below	
+					
+					if GetImageFiles("images\clothes", "jeans*.jpg", OutUsed,  "i)jeans\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\jeans*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\jeans*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "yoga*.jpg", OutUsed, "i)yoga\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\yoga*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\yoga*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "sarafan*.jpg", OutUsed, "i)sarafan\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\sarafan*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\sarafan*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "short*.jpg", OutUsed, "i)short\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\short*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\short*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "skirt*.jpg", OutUsed, "i)skirt\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\skirt*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\skirt*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "dress*.jpg", OutUsed, "i)dress\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\dress*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\dress*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "profi*.jpg", OutUsed, "i)profi\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\profi*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\profi*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "pants*.jpg", OutUsed "i)pants\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\pants*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\pants*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "latex*.jpg", OutUsed, "i)latex\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\latex*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\latex*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "hooker*.jpg", OutUsed, "i)hooker\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\hooker*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\hooker*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes", "k*.jpg", OutUsed, "i)k\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\k*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\k*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\clothes\newclo", "*.jpg", OutUsed, "i)\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\clothes\newclo\*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\clothes\newclo\*.jpg' " . IdxTxt . "`n"
+					}
+
+					if GetImageFiles("images\img\dress", "ero*.jpg", OutUsed, "i)ero\d+\.jpg")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\img\dress\ero*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\img\dress\ero*.jpg' " . IdxTxt . "`n"
+					}
+				}
+
+				else if inStr(Match1, "images\qwest\card")							;; Playingcard Images  - only use JPG files
+				{
+					if GetImageFiles("images\qwest\card", "*.jpg", OutUsed, "", "FR")
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\qwest\card\*\*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- No files found in 'images\qwest\card\*\*.jpg' " . IdxTxt . "`n"
+					}				
+				}
+				
+				else if inStr(Match1, "images\BDSM_Club\<<$BDSMrole>>") ;; BDSM Club
+				{
+					BDSMRegEx := "i)(_\d+)\.jpg"
+					BDSMPos := RegExMatch(Match1, BDSMRegEx , BDSMatch)
+					if (ErrorLevel)
+					{
+						MsgBox, 48, Get Image Paths, RegExMatch runtime error: %ErrorLevel%`n`nFound searching string: %Match1%`n`nusing search: %BDSMRegEx%
+						break
+					}			
+					
+					BDSMRegEx := "i)[rg]?\d+" . BDSMatch1 . "\.jpg"
+					
+					if GetImageFiles("images\BDSM_Club", "*.jpg", OutUsed, BDSMRegEx)
+					{
+						OutAuto	.= Spacer(Match1) . "- Found 'images\BDSM_Club*.jpg'`n"
+					}
+					else
+					{
+						OutMan	.= Spacer(Match1) . "- no files found in 'images\BDSM_Club*.jpg' " . IdxTxt . "`n"
+					}					
+
+				}
+				
+				else if inStr(Match1, "FUNC")										;; Unknown Function - Manual
+				{
+					OutMan	.= Spacer(Match1) . "- Unknown Function " . IdxTxt . "`n"
+				}
+				
+				else if inStr(Match1, "$")											;; Uses String variable - Manual
+				{
+					OutMan	.= Spacer(Match1) . "- Used String Variable " . IdxTxt . "`n"
+				}
+				
+				else if GetImagefromPath(Match1, OutUsed)							;; Try to find images
+				{
+					OutAuto	.= Spacer(Match1) . "- Found image files`n"
+				}
+				else
+				{
+					OutMan	.= Spacer(Match1) . "- Files not found " . IdxTxt . "`n"
+				}
+			}
+			; -- Image path is just a file name --
+			else
+			{
+				IfExist %Match1%
+				{
+					OutUsed	.= Match1 . "`n"										;; Normal file found
+				}
+				else
+				{
+					OutMan	.= Spacer(Match1) . "- File not found " . IdxTxt . "`n"
+				}
+			}	
+			FoundPos += 8 + StrLen(Match1)											;; Increment Search Position
+		}
+	}
+	
+	
+	; -- VIEW  images --
+	FoundPos := 1
+	Haystack := A_LoopField
+
+	Loop, 200
+	{
+	
+		; -- Find Image File Path --
+		FoundPos := RegExMatch(Haystack, Search2RegEx, Match, FoundPos)				;; Search for 'view' cmd path
+		if (ErrorLevel)
+		{
+			MsgBox, 48, Get Image Paths, RegExMatch runtime error: %ErrorLevel%`n`nFound searching string: %Haystack%`n`nusing search: %Search2RegEx%
+			break
+		}
+		
+		if (FoundPos = 0)															;; Not Found exit loop
+		{
+			break
+		}
+		else
+		; if (FoundPos)																;; Found File
+		{	
+			IdxTxt := " (L:" . LineNo . ", P:" . FoundPos . ")" 
+			Match1 := StrReplace(Match1, "/", "\")									;; Use correct Win path seperator
+			OutAll .= Match1 . "`n"
+			; -- Image Path Contains Code --
+			if inStr(Match1, "<<")													;; String contains expression
+			{
+				if inStr(Match1, "FUNC")											;; Unknown Function - Manual
+				{
+					OutMan	.= Spacer(Match1) . "- Unknown Function " . IdxTxt . "`n"
+				}
+				
+				else if inStr(Match1, "$")											;; Uses String variable - Manual
+				{
+					OutMan	.= Spacer(Match1) . "- Used String Variable " . IdxTxt . "`n"
+				}
+				
+				else if GetImagefromPath(Match1, OutUsed)							;; Try to find images
+				{
+					OutAuto	.= Spacer(Match1) . "- Found image files`n"
+				}
+				else
+				{
+					OutMan	.= Spacer(Match1) . "- Files not found " . IdxTxt . "`n"
+				}
+			}
+			
+			; -- Image path is just a file name --
+			else
+			{
+				IfExist %Match1%
+				{
+					OutUsed	.= Match1 . "`n"										;; Normal file found
+				}
+				else
+				{
+					OutMan	.= Spacer(Match1) . "- File not found " . IdxTxt . "`n"
+				}
+			}
+			FoundPos += 5 + StrLen(Match1)											;; Increment Search Position
+		}
+	}
+}
+
+
+; -- Set path to use / seperators --
+OutAll	:= StrReplace(OutAll, "\", "/")
+OutUsed	:= StrReplace(OutUsed, "\", "/")
+OutMiss	:= StrReplace(OutMiss, "\", "/")
+OutAuto	:= StrReplace(OutAuto, "\", "/")
+OutMan	:= StrReplace(OutMan, "\", "/")
+
+
+; -- sort filenames and remove dupes --
+Sort, OutAll, U
+Sort, OutUsed, U
+Sort, OutMiss, U
+Sort, OutAuto, U
+Sort, OutMan, U
+
+
+;-- save files --
+FileAppend, %OutAll%, %OutAllFile%
+FileAppend, %OutUsed%, %OutUsedFile%
+FileAppend, %OutMiss%, %OutMissFile%
+FileAppend, %OutAuto%, %OutAutoFile%
+FileAppend, %OutMan%, %OutManFile%
+
+Exit
+
+; ########## Functions ##########
+Spacer(TxtStr = "")
+{
+	Static SpaceFill := "                                                                 "
+	
+	;~ ps := strlen(TxtStr) + 1												;; allow empty string = 1 
+	;~ ss := TxtStr . SubStr(SpaceFill, ps) . "`t"
+	
+	return TxtStr . SubStr(SpaceFill, strlen(TxtStr)+1) . "`t"
+	
+}
+
+GetImageFiles(FilePath, FileName, ByRef Output, FileNameRegEx := "", FileLoopMode := "F")
+{	;; Get image paths in filepath using filepattern FileName
+	
+	;~ msgbox 	GetImageFiles()`nFilePath := %FilePath%`nFileName := %FileName%`nFileNameRegEx := %FileNameRegEx%`nFileLoopMode := %FileLoopMode%
+	
+	IfNotExist, %FilePath%
+	{
+		MsgBox, 48, Get Image Paths, Error in GetImageFiles()`n`nUnable to locate "%FilePath%" folder, Filename '%FileName%'.`n`nCurrent working dir is "%A_WorkingDir%"
+		return false		
+	}
+	
+	SaveWorkDir := A_WorkingDir
+	Setworkingdir, %FilePath%
+	
+	found := false
+	
+	; -- Loop with or Without recursion --
+	Loop, Files, %FileName%, %FileLoopMode%										;; Find files in FilePath using Filepattern FileName
+	{
+		if(FileNameRegEx)														;; Can we test file name
+		{
+			FndPos := RegExMatch(A_LoopFileName, FileNameRegEx)					;; File Found matches
+			if (ErrorLevel)
+			{
+				MsgBox, 48, Get Image Paths, RegExMatch Error in function GetImageFiles()`n`nruntime error: %ErrorLevel%`n`nFound searching string: %A_LoopFileName%`n`nusing search: %FileNameRegEx%
+				break
+			}
+			if (not FndPos)														;; Filename not matches skip
+			{
+				continue
+			}
+		}
+	fp := FilePath  . "\" . A_LoopFileFullPath
+	Output .= fp . "`n"
+	found := true
+	}
+
+	
+	Setworkingdir, %SaveWorkDir%
+	return found
+
+}
+
+GetImagefromPath(FilePath, ByRef Output)
+{	;; Try to get Images from path 
+
+	FindRegEx 	:= "<<.*?>>"
+	ReplaceStr	:=	"*"
+
+	fp			:= StrReplace(FilePath, "/", "\") 
+	fp 			:= RegExReplace(fp, FindRegEx, ReplaceStr)
+	
+	splitpath, fp, FileName, Dir, Ext
+
+	;; -- Manual if wildcard in path --
+	if inStr(Dir, "*")
+	{
+		; MsgBox, 64, Get Image Path, GetImageFromPath() error: Path contains wildcard`n `nPath : '%fp%'`nDir :  '%Dir%'
+		return false
+	}
+
+	FileNameRegEx := StrReplace(FileName, "*", "\d+") 					; set up test for filename wildcard to be numbers only
+	FileNameRegEx := "i)" . StrReplace(FileNameRegEx, ".", "\.") 
+	
+	return GetImageFiles(Dir, FileName, Output, FileNameRegEx)
+}

+ 108 - 0
tools/Move Image Files.ahk

@@ -0,0 +1,108 @@
+/*
+ *		-- Move Image Files using 'Image Files List.txt'--
+ *
+ *		Requires images subfolder to exist in current directory
+ *		
+ *		ImageFileList		- List of file names from glife.txt and Auto List
+ *		UsedImageFolder		- Folder to move images in ImageFileList
+ *		UnUsedImageFolder	- Folder to move images not in ImageFileList
+ *		SourceFolder		- Folder with images
+ *          
+ *
+ *      WD: Jul 2015
+ *
+ *
+ */
+  
+  
+
+#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
+#Warn  ; Enable warnings to assist with detecting common errors.
+SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
+SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
+
+ImageFileList		= Image List - Used.txt
+UsedImageFolder		= Images, Used
+UnUsedImageFolder	= Images, Un-Used
+SourceFolder		= images
+
+FileEncoding, UTF-16
+
+;-- backup files  and delete --
+IfNotExist %ImageFileList%
+{
+	MsgBox, 16, Move Image Files, Unable to locate "%ImageFileList%" in "%A_WorkingDir%", 10
+	Exit
+}
+
+IfNotExist %UsedImageFolder%
+{
+	FileCreateDir, %UsedImageFolder%
+}
+
+IfNotExist %UnUsedImageFolder%
+{
+	FileCreateDir, %UnUsedImageFolder%
+}
+
+; -- load data from file --
+FileRead, Images, %ImageFileList%
+Images := StrReplace(Images, "/", "\")								;; Use correct Win path seperator
+
+; -- Parse data one line at a time --
+Loop, Parse, Images, `n, `r  			; Specifying `n prior to `r allows both Windows and Unix files to be parsed.
+{
+	if trim(A_LoopField) = ""										;; Skip blank line
+		continue
+	
+	IfExist, %A_LoopField%
+	{
+		; -- Create Dir if id dosn't exist --
+		SplitPath, A_LoopField, FileName, FileDir
+		IfNotExist  %UsedImageFolder%\%FileDir%
+		{
+			FileCreateDir, %UsedImageFolder%\%FileDir%
+			if (ErrorLevel)
+			{
+				MsgBox, 48, Move Image File, FileCreateDir Error:`n`nFailed to create '%UsedImageFolder%\%FileDir%'`n`nErrorLevel: '%ErrorLevel%'`nLastError: '%A_LastError%'	
+			}
+		}
+		
+		; -- move file --
+		FileMove, %A_LoopField%, %UsedImageFolder%\%FileDir%
+		if (ErrorLevel)
+		{
+			MsgBox, 48, Move Image File, FileMove Error:`n`nFailed to move '%A_LoopField%' to '%UsedImageFolder%\%FileDir%'`n`nErrorLevel: '%ErrorLevel%'`nLastError: '%A_LastError%'	
+		}
+	}
+	else	; -- File dosn't exist --
+	{
+		MsgBox, 64, Move Image Files, Unable to locate file : '%A_LoopField%', 5
+	}
+}
+
+; -- Rename Images folder to unused Images folder --
+IfExist %SourceFolder%
+{
+	FileMoveDir, %SourceFolder%, %UnUsedImageFolder%\%SourceFolder%
+	if (ErrorLevel)
+	{
+		MsgBox, 48, Move Image File, FileMoveDir Error:`n`nFailed to move '%SourceFolder%' to '%UnUsedImageFolder%\%SourceFolder%'`n`nErrorLevel: '%ErrorLevel%'`nLastError: '%A_LastError%'	
+	}
+	
+	; -- Rename Used Images folder to Images folder --
+	else IfNotExist %SourceFolder%
+	{
+		FileMoveDir, %UsedImageFolder%\%SourceFolder%, %SourceFolder%
+		if (ErrorLevel)
+		{
+			MsgBox, 48, Move Image File, FileMoveDir Error:`n`nFailed to move '%UsedImageFolder%\%SourceFolder%' to '%SourceFolder%'`n`nErrorLevel: '%ErrorLevel%'`nLastError: '%A_LastError%'	
+		}
+		else
+		{
+			FileRemoveDir, %UsedImageFolder%, 0					;; Delete Empty Folder
+		}
+	}
+}
+
+

+ 56 - 0
tools/Move or Rename Missing Image Files.ahk

@@ -0,0 +1,56 @@
+/*
+ *		-- Move or Rename Missing Image Files due to code changes--
+ *
+ *
+ *		Requires images subfolder to exist in current directory
+ *		
+ *
+ *
+ *      WD: Aug 2015
+ *
+ *
+ */
+  
+  
+
+#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
+#Warn  ; Enable warnings to assist with detecting common errors.
+SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
+SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
+
+; -- Move or rename without overwriting any existing files --
+
+;! WD: Move missing Image ~ "cumfrot.jpg" from "images\picb" to "images\Body"
+FileMove, images\picb\cumfrot.jpg, images\Body\cumfrot.jpg
+
+; ! WD: Move missing Image ~ "tatvag6.jpg" from "images\picBody" to "images\Body"
+FileMove, images\picBody\tatvag6.jpg, images\Body\tatvag6.jpg
+
+; ! WD: Remove Dupe Images ~ '<center><img src="images/etogame/analplug.jpg"></center>'
+FileMove, images\etogame\analplug.jpg, images\Body\analplug.jpg
+
+; ! WD: Move missing Image ~ "pussy.jpg" from "images\picb" to "images\Body"
+FileMove, images\picb\pussy.jpg, images\Body\pussy.jpg
+
+; ! WD: Move missing Image ~ "hpussy.jpg" from "images\picb" to "images\Body"
+FileMove, images\picb\hpussy.jpg, images\Body\hpussy.jpg
+
+; ! WD: Move missing Image ~ "spussy.jpg" from "images\picb" to "images\Body"
+FileMove, images\picb\spussy.jpg, images\Body\spussy.jpg
+
+; ! WD: Rename missing Image ~  'ghFinger.jpg' to 'ghFinger5.jpg'
+FileMove, images\etogame\ghFinger.jpg, images\etogame\ghFinger5.jpg
+
+; ! WD: Rename missing Image ~ 'kendraStrap.jpg' to 'kendraStrap1.jpg'
+FileMove, images\pics2\kendraStrap.jpg, images\pics2\kendraStrap1.jpg
+
+; ! WD: Rename missing Image ~ 'tatvag.jpg' to 'tatvag1.jpg' to fix view 'images/body/tatvag<<tatvag>>.jpg'
+FileMove, images\body\tatvag.jpg, images\body\tatvag1.jpg
+
+; ! WD: Rename 'png' clothing images as scripts are only using 'jpg' ~ Fixed code and images
+FileMove, images\clothes\*.png, images\clothes\*.jpg 
+Loop, Files, images\clothes, DR					;; Get all subdirs in Clothes
+{
+	FileMove, %A_LoopFileFullPath%\*.png, %A_LoopFileFullPath%\*.jpg
+}
+

BIN
tools/Move or Rename Missing Image Files.exe


BIN
tools/Player-original/fmodexp.dll


BIN
tools/Player-original/langs/de/qspgui.mo


BIN
tools/Player-original/langs/en/qspgui.mo


BIN
tools/Player-original/langs/eo/qspgui.mo


BIN
tools/Player-original/langs/ru/qspgui.mo


BIN
tools/Player-original/langs/uk/qspgui.mo


BIN
tools/Player-original/qsp.dll


BIN
tools/Player-original/qspgui.exe


BIN
tools/Player-video/fmodexp.dll


BIN
tools/Player-video/langs/de/qspgui.mo


BIN
tools/Player-video/langs/en/qspgui.mo


BIN
tools/Player-video/langs/eo/qspgui.mo


BIN
tools/Player-video/langs/ru/qspgui.mo


BIN
tools/Player-video/langs/uk/qspgui.mo


BIN
tools/Player-video/libvlc.dll


BIN
tools/Player-video/libvlccore.dll


BIN
tools/Player-video/plugins/access/libfilesystem_plugin.dll


BIN
tools/Player-video/plugins/audio_output/libdirectsound_plugin.dll


BIN
tools/Player-video/plugins/codec/libavcodec_plugin.dll


BIN
tools/Player-video/plugins/codec/libdxva2_plugin.dll


BIN
tools/Player-video/plugins/plugins.dat


BIN
tools/Player-video/plugins/video_chroma/libchain_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libgrey_yuv_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi420_rgb_mmx_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi420_rgb_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi420_rgb_sse2_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi420_yuy2_mmx_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi420_yuy2_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi420_yuy2_sse2_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi422_i420_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi422_yuy2_mmx_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi422_yuy2_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libi422_yuy2_sse2_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/librv32_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libswscale_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libyuy2_i420_plugin.dll


BIN
tools/Player-video/plugins/video_chroma/libyuy2_i422_plugin.dll


BIN
tools/Player-video/plugins/video_filter/libscale_plugin.dll


BIN
tools/Player-video/plugins/video_filter/libyuvp_plugin.dll


BIN
tools/Player-video/plugins/video_output/libdirect2d_plugin.dll


BIN
tools/Player-video/plugins/video_output/libdirect3d_plugin.dll


BIN
tools/Player-video/plugins/video_output/libdirectdraw_plugin.dll


BIN
tools/Player-video/plugins/video_output/libdrawable_plugin.dll


BIN
tools/Player-video/plugins/video_output/libgl_plugin.dll


BIN
tools/Player-video/plugins/video_output/libglwin32_plugin.dll


BIN
tools/Player-video/plugins/video_output/libyuv_plugin.dll


BIN
tools/Player-video/qsp.dll


BIN
tools/Player-video/qspgui.exe


+ 153 - 0
tools/QGen4/keywords.xml

@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<QGen-keywords>
+  <Statements>
+    <Keyword name="pl" desc="PL [выражение] / *PL [выражение] - вывод текста в дополнительное / основное окно описания, затем переход на новую строку"/>
+    <Keyword name="clear" desc="CLEAR / *CLEAR - очистка дополнительного / основного окна описания"/>
+    <Keyword name="clr" desc="CLR / *CLR - очистка дополнительного / основного окна описания"/>
+    <Keyword name="p" desc="P [выражение] / *P [выражение] - вывод текста в дополнительное / основное окно описания"/>
+    <Keyword name="nl" desc="NL [выражение] / *NL [выражение] - переход на новую строку, затем вывод текста в дополнительное / основное окно описания"/>
+    <Keyword name="msg" desc="MSG [выражение] - вывод сообщения в информационном окне"/>
+    <Keyword name="wait" desc="WAIT [#выражение] - остановка выполнения программы на заданное количество миллисекунд"/>
+    <Keyword name="act" desc="ACT [$название],[$путь к изображению]:[оператор] &amp; [оператор] &amp; ... - добавление действия"/>
+    <Keyword name="delact" desc="DELACT [$название] / DEL ACT [$название] - удаление действия"/>
+    <Keyword name="cla" desc="CLA - очистка списка действий"/>
+    <Keyword name="cmdclear" desc="CMDCLEAR - очистка строки ввода"/>
+    <Keyword name="cmdclr" desc="CMDCLEAR - очистка строки ввода"/>
+    <Keyword name="cls" desc="CLS - очищает экран, оставляя только список предметов"/>
+    <Keyword name="menu" desc="MENU [$выражение] - показ меню с заданным названием"/>
+    <Keyword name="settimer" desc="SETTIMER [#выражение] - задает интервал таймера для локации-счетчика"/>
+    <Keyword name="dynamic" desc="DYNAMIC [$строка кода],[параметр 1],[параметр 2], ... - динамическое выполнение кода"/>
+    <Keyword name="set" desc="SET [название переменной]=[выражение] - установка значения переменной"/>
+    <Keyword name="let" desc="LET [название переменной]=[выражение] - установка значения переменной"/>
+    <Keyword name="killvar" desc="KILLVAR [$название],[#индекс] - удаление всех переменных / указанной переменной"/>
+    <Keyword name="copyarr" desc="COPYARR [$массив-приемник],[$массив-источник] - копирование содержимого массива в другой массив"/>
+    <Keyword name="addobj" desc="ADDOBJ [$название],[$путь к изображению],[#позиция] / ADD OBJ [$название],[$путь к изображению],[#позиция] - добавление предмета"/>
+    <Keyword name="delobj" desc="DELOBJ [$название] / DEL OBJ [$название] - удаление предмета"/>
+    <Keyword name="killobj" desc="KILLOBJ [#позиция] - удаление всех предметов / предмета в заданной позиции"/>
+    <Keyword name="unselect" desc="UNSELECT - отмена выбора предмета"/>
+    <Keyword name="unsel" desc="UNSEL - отмена выбора предмета"/>
+    <Keyword name="killall" desc="KILLALL - удаление всех переменных и предметов"/>
+    <Keyword name="opengame" desc="OPENGAME [$выражение] - загрузка состояния игры"/>
+    <Keyword name="openqst" desc="OPENQST [$выражение] - открытие и запуск файла игры"/>
+    <Keyword name="addqst" desc="ADDQST [$выражение] - добавление локаций из указанного файла"/>
+    <Keyword name="killqst" desc="KILLQST - удаление всех добавленных через ADDQST локаций"/>
+    <Keyword name="savegame" desc="SAVEGAME [$выражение] - сохранение состояния игры"/>
+    <Keyword name="refint" desc="REFINT - обновление интерфейса"/>
+    <Keyword name="showacts" desc="SHOWACTS [#выражение] - показ / скрытие списка действий"/>
+    <Keyword name="showinput" desc="SHOWINPUT [#выражение] - показ / скрытие строки ввода"/>
+    <Keyword name="showobjs" desc="SHOWOBJS [#выражение] - показ / скрытие списка предметов"/>
+    <Keyword name="showstat" desc="SHOWSTAT [#выражение] - показ / скрытие дополнительного окна описания"/>
+    <Keyword name="if" desc="IF [#выражение]:[оператор1] &amp; [оператор2] &amp; ... ELSE [оператор3] &amp; [оператор4] &amp; ... - условие"/>
+    <Keyword name="else" desc="IF [#выражение]:[оператор1] &amp; [оператор2] &amp; ... ELSE [оператор3] &amp; [оператор4] &amp; ... - условие"/>
+    <Keyword name="elseif" desc="ELSEIF [#выражение]:[оператор1] &amp; [оператор2] &amp; ... - альтернативное условие"/>
+    <Keyword name="exit" desc="EXIT - завершение выполнения текущего кода"/>
+    <Keyword name="end" desc="END - завершение многострочной формы IF / ACT"/>
+    <Keyword name="jump" desc="JUMP [$выражение] - переход на указанную метку"/>
+    <Keyword name="gosub" desc="GOSUB [$выражение],[параметр 1],[параметр 2], ... - обработка указанной локации"/>
+    <Keyword name="gs" desc="GS [$выражение],[параметр 1],[параметр 2], ... - обработка указанной локации"/>
+    <Keyword name="goto" desc="GOTO [$выражение],[параметр 1],[параметр 2], ... - переход на указанную локацию"/>
+    <Keyword name="gt" desc="GT [$выражение],[параметр 1],[параметр 2], ... - переход на указанную локацию"/>
+    <Keyword name="xgoto" desc="XGOTO [$выражение],[параметр 1],[параметр 2], ... - переход на указанную локацию без очистки основного окна описания"/>
+    <Keyword name="xgt" desc="XGT [$выражение],[параметр 1],[параметр 2], ... - переход на указанную локацию без очистки основного окна описания"/>
+    <Keyword name="play" desc="PLAY [$путь к звуковому файлу],[#громкость] - воспроизведение звукового файла с заданной громкостью"/>
+    <Keyword name="close" desc="CLOSE [$путь к звуковому файлу] / CLOSE ALL - остановка проигрывания звукового файла / всех звуковых файлов"/>
+    <Keyword name="view" desc="VIEW [$путь к графическому файлу] - просмотр изображения"/>
+  </Statements>
+  <Expressions>
+    <Keyword name="and" desc="[#выражение 1] AND [#выражение 2] - логическое &quot;и=&quot;"/>
+    <Keyword name="or" desc="[#выражение 1] OR [#выражение 2] - логическое &quot;или&quot;"/>
+    <Keyword name="obj" desc="OBJ [$предмет] - проверка наличия предмета в рюкзаке"/>
+    <Keyword name="loc" desc="LOC [$локация] - проверка существования локации"/>
+    <Keyword name="no" desc="NO [#выражение] - отрицание"/>
+    <Keyword name="mod" desc="[#выражение 1] MOD [#выражение 2] - вычисление остатка от деления"/>
+    <Keyword name="desc" desc="DESC([$выражение]) - возвращает текст базового описания локации"/>
+    <Keyword name="$desc" desc="$DESC([$выражение]) - возвращает текст базового описания локации"/>
+    <Keyword name="iif" desc="IIF([#выражение],[выражение_да],[выражение_нет]) - возвращает одно из выражений по условию"/>
+    <Keyword name="$iif" desc="$IIF([#выражение],[выражение_да],[выражение_нет]) - возвращает одно из выражений по условию"/>
+    <Keyword name="input" desc="INPUT([выражение]) - показывает окно ввода текста и возвращает введенное значение"/>
+    <Keyword name="$input" desc="$INPUT([выражение]) - показывает окно ввода текста и возвращает введенное значение"/>
+    <Keyword name="isplay" desc="ISPLAY([$выражение]) - проверяет, проигрывается ли в текущий момент указанный файл"/>
+    <Keyword name="max" desc="MAX([выражение 1],[выражение 2], ...) - возвращает максимальное из значений аргументов"/>
+    <Keyword name="$max" desc="$MAX([выражение 1],[выражение 2], ...) - возвращает максимальное из значений аргументов"/>
+    <Keyword name="min" desc="MIN([выражение 1],[выражение 2], ...) - возвращает минимальное из значений аргументов"/>
+    <Keyword name="$min" desc="$MIN([выражение 1],[выражение 2], ...) - возвращает минимальное из значений аргументов"/>
+    <Keyword name="rand" desc="RAND([#выражение 1],[#выражение 2]) - возвращает случайное число между заданными"/>
+    <Keyword name="rgb" desc="RGB([#красный],[#зеленый],[#синий]) - возвращает код цвета на основе 3-х составляющих"/>
+    <Keyword name="getobj" desc="GETOBJ([#позиция]) - возвращает название предмета, расположенного в заданной позиции"/>
+    <Keyword name="$getobj" desc="$GETOBJ([#позиция]) - возвращает название предмета, расположенного в заданной позиции"/>
+    <Keyword name="dyneval" desc="DYNEVAL([$выражение],[параметр 1],[параметр 2], ...) - возвращает значение динамически вычисленного выражения"/>
+    <Keyword name="$dyneval" desc="$DYNEVAL([$выражение],[параметр 1],[параметр 2], ...) - возвращает значение динамически вычисленного выражения"/>
+    <Keyword name="func" desc="FUNC([$выражение],[параметр 1],[параметр 2], ...) - обработка указанной локации как функции"/>
+    <Keyword name="$func" desc="$FUNC([$выражение],[параметр 1],[параметр 2], ...) - обработка указанной локации как функции"/>
+    <Keyword name="arrsize" desc="ARRSIZE([$выражение]) - возвращает число элементов в указанном массиве"/>
+    <Keyword name="arrpos" desc="ARRPOS([#начальный индекс],[$имя массива],[значение]) - поиск в массиве элемента с заданным значением"/>
+    <Keyword name="instr" desc="INSTR([#начальная позиция],[$текст],[$искомый текст]) - поиск вхождения текста"/>
+    <Keyword name="isnum" desc="ISNUM([$выражение]) - проверяет, является ли указанная строка числом"/>
+    <Keyword name="trim" desc="TRIM([$выражение]) - удаляет из текста прилегающие пробелы и символы табуляции"/>
+    <Keyword name="$trim" desc="$TRIM([$выражение]) - удаляет из текста прилегающие пробелы и символы табуляции"/>
+    <Keyword name="ucase" desc="UCASE([$выражение]) - преобразует маленькие буквы текста в большие"/>
+    <Keyword name="$ucase" desc="$UCASE([$выражение]) - преобразует маленькие буквы текста в большие"/>
+    <Keyword name="lcase" desc="LCASE([$выражение]) - преобразует большие буквы текста в маленькие"/>
+    <Keyword name="$lcase" desc="$LCASE([$выражение]) - преобразует большие буквы текста в маленькие"/>
+    <Keyword name="len" desc="LEN([$выражение]) - возвращает длину указанной строки"/>
+    <Keyword name="mid" desc="MID([$текст],[#начало],[#длина]) - вырезает из текста строку указанной длины начиная с заданной позиции"/>
+    <Keyword name="$mid" desc="$MID([$текст],[#начало],[#длина]) - вырезает из текста строку указанной длины начиная с заданной позиции"/>
+    <Keyword name="replace" desc="REPLACE([$текст],[$искомый текст],[$текст для замены]) - заменяет в тексте заданную строку"/>
+    <Keyword name="$replace" desc="$REPLACE([$текст],[$искомый текст],[$текст для замены]) - заменяет в тексте заданную строку"/>
+    <Keyword name="str" desc="STR([#выражение]) - переводит число в строку"/>
+    <Keyword name="$str" desc="$STR([#выражение]) - переводит число в строку"/>
+    <Keyword name="val" desc="VAL([$выражение]) - переводит строку в число"/>
+    <Keyword name="arrcomp" desc="ARRCOMP([#начальный индекс],[$имя массива],[$шаблон]) - поиск в массиве элемента, соответствующего регулярному выражению"/>
+    <Keyword name="strcomp" desc="STRCOMP([$выражение],[$шаблон]) - проверяет заданный текст на соответствие регулярному выражению"/>
+    <Keyword name="strfind" desc="STRFIND([$выражение],[$шаблон],[#номер]) - возвращает подстроку, соответствующую группе с номером [#номер] регулярного выражения"/>
+    <Keyword name="$strfind" desc="$STRFIND([$выражение],[$шаблон],[#номер]) - возвращает подстроку, соответствующую группе с номером [#номер] регулярного выражения"/>
+    <Keyword name="strpos" desc="STRPOS([$выражение],[$шаблон],[#номер]) - возвращает позицию подстроки, соответствующей группе с номером [#номер] регулярного выражения"/>
+    <Keyword name="countobj" desc="COUNTOBJ - возвращает текущее число предметов"/>
+    <Keyword name="msecscount" desc="MSECSCOUNT - возвращает количество миллисекунд, прошедших с момента начала игры"/>
+    <Keyword name="rnd" desc="RND - возвращает случайное значение от 1 до 1000"/>
+    <Keyword name="curloc" desc="CURLOC - возвращает название текущей локации"/>
+    <Keyword name="$curloc" desc="$CURLOC - возвращает название текущей локации"/>
+    <Keyword name="qspver" desc="QSPVER - возвращает версию интерпретатора"/>
+    <Keyword name="$qspver" desc="$QSPVER - возвращает версию интерпретатора"/>
+    <Keyword name="selobj" desc="SELOBJ - возвращает название выделенного предмета"/>
+    <Keyword name="$selobj" desc="$SELOBJ - возвращает название выделенного предмета"/>
+    <Keyword name="selact" desc="SELACT - возвращает название выделенного действия"/>
+    <Keyword name="$selact" desc="$SELACT - возвращает название выделенного действия"/>
+    <Keyword name="curacts" desc="CURACTS - возвращает в виде кода все текущие действия"/>
+    <Keyword name="$curacts" desc="$CURACTS - возвращает в виде кода все текущие действия"/>
+    <Keyword name="user_text" desc="USER_TEXT - возвращает текст в строке ввода"/>
+    <Keyword name="$user_text" desc="$USER_TEXT - возвращает текст в строке ввода"/>
+    <Keyword name="usrtxt" desc="USRTXT - возвращает текст в строке ввода"/>
+    <Keyword name="$usrtxt" desc="$USRTXT - возвращает текст в строке ввода"/>
+    <Keyword name="maintxt" desc="MAINTXT - возвращает текст в основном окне описания"/>
+    <Keyword name="$maintxt" desc="$MAINTXT - возвращает текст в основном окне описания"/>
+    <Keyword name="stattxt" desc="STATTXT - возвращает текст в дополнительном окне описания"/>
+    <Keyword name="$stattxt" desc="$STATTXT - возвращает текст в дополнительном окне описания"/>
+  </Expressions>
+  <Variables>
+    <Keyword name="args" desc="ARGS - массив с параметрами процедуры / функции"/>
+    <Keyword name="$args" desc="$ARGS - массив с параметрами процедуры / функции"/>
+    <Keyword name="result" desc="RESULT - переменная содержит результат, возвращаемый текущей функцией"/>
+    <Keyword name="$result" desc="$RESULT - переменная содержит результат, возвращаемый текущей функцией"/>
+    <Keyword name="disablescroll" desc="DISABLESCROLL - если переменная не равна 0, то запрещает автопрокрутку текста при выводе"/>
+    <Keyword name="disablesubex" desc="DISABLESUBEX - если переменная не равна 0, то запрещает использование &quot;подвыражений&quot; в тексте"/>
+    <Keyword name="nosave" desc="NOSAVE - если переменная не равна 0, то сохранение состояния игры пользователем невозможно"/>
+    <Keyword name="debug" desc="DEBUG - если переменная не равна 0, то отключается проверка идентификатора игры при загрузке состояния"/>
+    <Keyword name="$counter" desc="$COUNTER - переменная содержит название локации-счётчика"/>
+    <Keyword name="$ongload" desc="$ONGLOAD - переменная содержит название локации-обработчика загрузки состояния"/>
+    <Keyword name="$ongsave" desc="$ONGSAVE - переменная содержит название локации-обработчика сохранения состояния"/>
+    <Keyword name="$onnewloc" desc="$ONNEWLOC - переменная содержит название локации-обработчика перехода на новую локацию"/>
+    <Keyword name="$onactsel" desc="$ONACTSEL - переменная содержит название локации-обработчика выбора действия"/>
+    <Keyword name="$onobjsel" desc="$ONOBJSEL - переменная содержит название локации-обработчика выбора предмета"/>
+    <Keyword name="$onobjadd" desc="$ONOBJADD - переменная содержит название локации-обработчика добавления предмета"/>
+    <Keyword name="$onobjdel" desc="$ONOBJDEL - переменная содержит название локации-обработчика удаления предмета"/>
+    <Keyword name="$usercom" desc="$USERCOM - переменная содержит название локации-обработчика строки ввода"/>
+    <Keyword name="usehtml" desc="USEHTML - если переменная не равна 0, то включает возможность использования HTML"/>
+    <Keyword name="bcolor" desc="BCOLOR - переменная содержит цвет фона"/>
+    <Keyword name="fcolor" desc="FCOLOR - переменная содержит основной цвет шрифта"/>
+    <Keyword name="lcolor" desc="LCOLOR - переменная содержит основной цвет ссылок"/>
+    <Keyword name="fsize" desc="FSIZE - переменная содержит основной размер шрифта"/>
+    <Keyword name="$fname" desc="$FNAME - переменная содержит название основного шрифта"/>
+    <Keyword name="$backimage" desc="$BACKIMAGE - переменная содержит путь к фоновому изображению"/>
+  </Variables>
+</QGen-keywords>

BIN
tools/QGen4/langs/en/qgen_en.mo


BIN
tools/QGen4/langs/ru/qgen_ru.mo


BIN
tools/QGen4/qgen.exe


BIN
tools/QGen5/QGen.exe


BIN
tools/QGen5/Qt5Core.dll


BIN
tools/QGen5/Qt5Gui.dll


BIN
tools/QGen5/Qt5Network.dll


BIN
tools/QGen5/Qt5Widgets.dll


BIN
tools/QGen5/Qt5Xml.dll


+ 153 - 0
tools/QGen5/keywords.xml

@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<QGen-keywords>
+  <Statements>
+    <Keyword name="pl" desc="PL [phrase] / * PL [expression] - displays the text in extra / description of the main window, then the transition to a new line"></Keyword>
+    <Keyword name="clear" desc="CLEAR / * CLEAR - cleaning of additional / main window description"></Keyword>
+    <Keyword name="clr" desc="CLR / * CLR - additional cleaning / main window description"></Keyword>
+    <Keyword name="p" desc="P [expression] / * P [expression] - displays the text in extra / description of the main window"></Keyword>
+    <Keyword name="nl" desc="NL [expression] / * NL [expression] - the transition to a new line, and then the text output in extra / main window description"></Keyword>
+    <Keyword name="msg" desc="MSG [expression] - display the information window"></Keyword>
+    <Keyword name="wait" desc="WAIT [#expression] - stop the program a specified number of milliseconds"></Keyword>
+    <Keyword name="act" desc="ACT [$ name], [$ path to the image]: [operator] &amp; [operator]... &amp; - adding action"></Keyword>
+    <Keyword name="delact" desc="DELACT [$ name] / DEL ACT [$ name] - removal action"></Keyword>
+    <Keyword name="cla" desc="CLA - Clearing the list of actions"></Keyword>
+    <Keyword name="cmdclear" desc="CMDCLEAR - cleaning line input"></Keyword>
+    <Keyword name="cmdclr" desc="CMDCLEAR - cleaning line input"></Keyword>
+    <Keyword name="cls" desc="CLS - clears the screen, leaving only the list of items"></Keyword>
+    <Keyword name="menu" desc="MENU [$ expression] - Display the menu with the specified name"></Keyword>
+    <Keyword name="settimer" desc="SETTIMER [#expression] - sets the timer interval to location counter"></Keyword>
+    <Keyword name="dynamic" desc="DYNAMIC [$ line of code], [parameter 1] [parameter 2],... - dynamic code execution"></Keyword>
+    <Keyword name="set" desc="SET [variable name] = [expression] - Setting Variables"></Keyword>
+    <Keyword name="let" desc="LET [variable name] = [expression] - Setting Variables"></Keyword>
+    <Keyword name="killvar" desc="KILLVAR [$ name], [Index #] - deleting all the variables / variable specified"></Keyword>
+    <Keyword name="copyarr" desc="COPYARR [$ recipient array], [$ array source] - Copy the contents of the array to another array"></Keyword>
+    <Keyword name="addobj" desc="ADDOBJ [$ name], [$ path to the image], [position #] / ADD OBJ [$ name] [$ path to the image], [position #] - Add a subject"></Keyword>
+    <Keyword name="delobj" desc="DELOBJ [$ name] / DEL OBJ [$ name] - delete the object"></Keyword>
+    <Keyword name="killobj" desc="KILLOBJ [#position] - removes all items / object in a given position"></Keyword>
+    <Keyword name="unselect" desc="UNSELECT - deselect the object"></Keyword>
+    <Keyword name="unsel" desc="UNSEL - deselect the object"></Keyword>
+    <Keyword name="killall" desc="KILLALL - removal of all variables and objects"></Keyword>
+    <Keyword name="opengame" desc="OPENGAME [$ expression] - download the game state"></Keyword>
+    <Keyword name="openqst" desc="OPENQST [$ expression] - opening the file and launching games"></Keyword>
+    <Keyword name="inclib" desc="INCLIB [$ expression] - add locations from the specified file"></Keyword>
+    <Keyword name="freelib" desc="FREELIB - Remove all added through INCLIB locations"></Keyword>
+    <Keyword name="savegame" desc="SAVEGAME [$ expression] - save the game state"></Keyword>
+    <Keyword name="refint" desc="REFINT - updated interface"></Keyword>
+    <Keyword name="showacts" desc="SHOWACTS [#expression] - Display / hide list of actions"></Keyword>
+    <Keyword name="showinput" desc="SHOWINPUT [#expression] - show / hide the input string"></Keyword>
+    <Keyword name="showobjs" desc="SHOWOBJS [#expression] - show / hide the list of items"></Keyword>
+    <Keyword name="showstat" desc="SHOWSTAT [#expression] - showing / hiding the additional description box"></Keyword>
+    <Keyword name="if" desc="IF [#expression]: [statement1] &amp; [statement2] &amp;... ELSE [statement3] &amp; [operator4] &amp;... - condition"></Keyword>
+    <Keyword name="else" desc="IF [#expression]: [statement1] &amp; [statement2] &amp;. .. ELSE [statement3] &amp; [operator4] &amp;... - condition"></Keyword>
+    <Keyword name="elseif" desc="ELSEIF [#expression]: [statement1] &amp; [statement2] &amp;... - Alternative condition"></Keyword>
+    <Keyword name="exit" desc="EXIT - completion of the current code"></Keyword>
+    <Keyword name="end" desc="END - the completion of a multi-form IF / ACT"></Keyword>
+    <Keyword name="jump" desc="JUMP [$ expression] - go to the specified label"></Keyword>
+    <Keyword name="gosub" desc="GOSUB [$ expression], [parameter 1] [parameter 2] .. . - processing specified location"></Keyword>
+    <Keyword name="gs" desc="GS [$ expression], [parameter 1] [parameter 2],... - the processing of said locations"></Keyword>
+    <Keyword name="goto" desc="GOTO [$ expression], [parameter 1] [parameter 2],... - go to the specified location"></Keyword>
+    <Keyword name="gt" desc="GT [$ expression], [parameter 1] [parameter 2],... - go to specified location"></Keyword>
+    <Keyword name="xgoto" desc="XGOTO [$ expression], [parameter 1] [parameter 2],... - go to the specified location without clearing the main window description"></Keyword>
+    <Keyword name="xgt" desc="XGT [$ expression], [parameter 1] [parameter 2],... - go to the specified location without clearing the main window description"></Keyword>
+    <Keyword name="play" desc="PLAY [$ path to sound file] [#volume] - Play the sound file with a given volume"></Keyword>
+    <Keyword name="close" desc="CLOSE [$ path to sound file] / CLOSE ALL - stop playing the audio file / all audio files"></Keyword>
+    <Keyword name="view" desc="VIEW [$ path to an image file] - Image"></Keyword>
+  </Statements>
+  <Expressions>
+    <Keyword name="and" desc="[expression #1] AND [#2 expression] - Boolean &quot;u&quot;"></Keyword>
+    <Keyword name="or" desc="[#1 expression] OR [#2 expression] - a logical &quot;or&quot;"></Keyword>
+    <Keyword name="obj" desc="OBJ [$ object] - checking subject backpack"></Keyword>
+    <Keyword name="loc" desc="LOC [$ location] - checking the existence of locations"></Keyword>
+    <Keyword name="no" desc="NO [#expression] - denial"></Keyword>
+    <Keyword name="mod" desc="[#1 expression] MOD [#2 expression] - the calculation of the balance division"></Keyword>
+    <Keyword name="desc" desc="DESC ([$ expression]) - returns the text description of the basic location"></Keyword>
+    <Keyword name="$desc" desc="$ DESC ([$ expression]) - returns the text description of the basic location"></Keyword>
+    <Keyword name="iif" desc="IIF ([#expression], [vyrazhenie_da] [vyrazhenie_net]) - returns one of the expressions on the condition"></Keyword>
+    <Keyword name="$iif" desc="$ IIF ([#expression], [vyrazhenie_da] [vyrazhenie_net]) - returns one of the expressions of the condition"></Keyword>
+    <Keyword name="input" desc="INPUT([выражение]) - показывает окно ввода текста и возвращает введенное значение"></Keyword>
+    <Keyword name="$input" desc="$INPUT([выражение]) - показывает окно ввода текста и возвращает введенное значение"></Keyword>
+    <Keyword name="isplay" desc="ISPLAY([$выражение]) - проверяет, проигрывается ли в текущий момент указанный файл"></Keyword>
+    <Keyword name="max" desc="MAX([выражение 1],[выражение 2], ...) - возвращает максимальное из значений аргументов"></Keyword>
+    <Keyword name="$max" desc="$MAX([выражение 1],[выражение 2], ...) - возвращает максимальное из значений аргументов"></Keyword>
+    <Keyword name="min" desc="MIN([выражение 1],[выражение 2], ...) - возвращает минимальное из значений аргументов"></Keyword>
+    <Keyword name="$min" desc="$MIN([выражение 1],[выражение 2], ...) - возвращает минимальное из значений аргументов"></Keyword>
+    <Keyword name="rand" desc="RAND([#выражение 1],[#выражение 2]) - возвращает случайное число между заданными"></Keyword>
+    <Keyword name="rgb" desc="RGB([#красный],[#зеленый],[#синий]) - возвращает код цвета на основе 3-х составляющих"></Keyword>
+    <Keyword name="getobj" desc="GETOBJ ([#position]) - Returns the name of the object at a predetermined position"></Keyword>
+    <Keyword name="$getobj" desc="$ GETOBJ ([#position]) - Returns the name of the object at a predetermined position"></Keyword>
+    <Keyword name="dyneval" desc="DYNEVAL ([$ expression], [parameter 1] [parameter 2],...) - returns a dynamically calculated expressions"></Keyword>
+    <Keyword name="$dyneval" desc="$ DYNEVAL ([$ expression], [parameter 1] [parameter 2]. ..) - returns a dynamically calculated expressions"></Keyword>
+    <Keyword name="func" desc="FUNC ([$ expression], [parameter 1] [parameter 2],...) - the processing of said locations as a function"></Keyword>
+    <Keyword name="$func" desc="$ FUNC ([$ expression], [parameter 1] [parameter 2]. ..) - the processing of said locations as a function"></Keyword>
+    <Keyword name="arrsize" desc="ARRSIZE ([$ expression]) - returns the number of elements in the specified array"></Keyword>
+    <Keyword name="arrpos" desc="ARRPOS([#начальный индекс],[$имя массива],[значение]) - поиск в массиве элемента с заданным значением"></Keyword>
+    <Keyword name="instr" desc="INSTR([#начальная позиция],[$текст],[$искомый текст]) - поиск вхождения текста"></Keyword>
+    <Keyword name="isnum" desc="ISNUM([$выражение]) - проверяет, является ли указанная строка числом"></Keyword>
+    <Keyword name="trim" desc="TRIM([$выражение]) - удаляет из текста прилегающие пробелы и символы табуляции"></Keyword>
+    <Keyword name="$trim" desc="$TRIM([$выражение]) - удаляет из текста прилегающие пробелы и символы табуляции"></Keyword>
+    <Keyword name="ucase" desc="UCASE([$выражение]) - преобразует маленькие буквы текста в большие"></Keyword>
+    <Keyword name="$ucase" desc="$UCASE([$выражение]) - преобразует маленькие буквы текста в большие"></Keyword>
+    <Keyword name="lcase" desc="LCASE([$выражение]) - преобразует большие буквы текста в маленькие"></Keyword>
+    <Keyword name="$lcase" desc="$LCASE([$выражение]) - преобразует большие буквы текста в маленькие"></Keyword>
+    <Keyword name="len" desc="LEN([$выражение]) - возвращает длину указанной строки"></Keyword>
+    <Keyword name="mid" desc="MID([$текст],[#начало],[#длина]) - вырезает из текста строку указанной длины начиная с заданной позиции"></Keyword>
+    <Keyword name="$mid" desc="$MID([$текст],[#начало],[#длина]) - вырезает из текста строку указанной длины начиная с заданной позиции"></Keyword>
+    <Keyword name="replace" desc="REPLACE([$текст],[$искомый текст],[$текст для замены]) - заменяет в тексте заданную строку"></Keyword>
+    <Keyword name="$replace" desc="$REPLACE([$текст],[$искомый текст],[$текст для замены]) - заменяет в тексте заданную строку"></Keyword>
+    <Keyword name="str" desc="STR([#выражение]) - переводит число в строку"></Keyword>
+    <Keyword name="$str" desc="$STR([#выражение]) - переводит число в строку"></Keyword>
+    <Keyword name="val" desc="VAL([$выражение]) - переводит строку в число"></Keyword>
+    <Keyword name="arrcomp" desc="ARRCOMP([#начальный индекс],[$имя массива],[$шаблон]) - поиск в массиве элемента, соответствующего регулярному выражению"></Keyword>
+    <Keyword name="strcomp" desc="STRCOMP([$выражение],[$шаблон]) - проверяет заданный текст на соответствие регулярному выражению"></Keyword>
+    <Keyword name="strfind" desc="STRFIND([$выражение],[$шаблон],[#номер]) - возвращает подстроку, соответствующую группе с номером [#номер] регулярного выражения"></Keyword>
+    <Keyword name="$strfind" desc="$STRFIND([$выражение],[$шаблон],[#номер]) - возвращает подстроку, соответствующую группе с номером [#номер] регулярного выражения"></Keyword>
+    <Keyword name="strpos" desc="STRPOS([$выражение],[$шаблон],[#номер]) - возвращает позицию подстроки, соответствующей группе с номером [#номер] регулярного выражения"></Keyword>
+    <Keyword name="countobj" desc="COUNTOBJ - возвращает текущее число предметов"></Keyword>
+    <Keyword name="msecscount" desc="MSECSCOUNT - возвращает количество миллисекунд, прошедших с момента начала игры"></Keyword>
+    <Keyword name="rnd" desc="RND - возвращает случайное значение от 1 до 1000"></Keyword>
+    <Keyword name="curloc" desc="CURLOC - returns the name of the current location"></Keyword>
+    <Keyword name="$curloc" desc="$ CURLOC - returns the name of the current location"></Keyword>
+    <Keyword name="qspver" desc="QSPVER - возвращает версию интерпретатора"></Keyword>
+    <Keyword name="$qspver" desc="$QSPVER - возвращает версию интерпретатора"></Keyword>
+    <Keyword name="selobj" desc="SELOBJ - returns the name of the selected object"></Keyword>
+    <Keyword name="$selobj" desc="$ SELOBJ - returns the name of the selected object"></Keyword>
+    <Keyword name="selact" desc="SELACT - возвращает название выделенного действия"></Keyword>
+    <Keyword name="$selact" desc="$SELACT - возвращает название выделенного действия"></Keyword>
+    <Keyword name="curacts" desc="CURACTS - возвращает в виде кода все текущие действия"></Keyword>
+    <Keyword name="$curacts" desc="$CURACTS - возвращает в виде кода все текущие действия"></Keyword>
+    <Keyword name="user_text" desc="USER_TEXT - возвращает текст в строке ввода"></Keyword>
+    <Keyword name="$user_text" desc="$USER_TEXT - возвращает текст в строке ввода"></Keyword>
+    <Keyword name="usrtxt" desc="USRTXT - возвращает текст в строке ввода"></Keyword>
+    <Keyword name="$usrtxt" desc="$USRTXT - возвращает текст в строке ввода"></Keyword>
+    <Keyword name="maintxt" desc="MAINTXT - возвращает текст в основном окне описания"></Keyword>
+    <Keyword name="$maintxt" desc="$MAINTXT - возвращает текст в основном окне описания"></Keyword>
+    <Keyword name="stattxt" desc="STATTXT - возвращает текст в дополнительном окне описания"></Keyword>
+    <Keyword name="$stattxt" desc="$STATTXT - возвращает текст в дополнительном окне описания"></Keyword>
+  </Expressions>
+  <Variables>
+    <Keyword name="args" desc="ARGS - массив с параметрами процедуры / функции"></Keyword>
+    <Keyword name="$args" desc="$ARGS - массив с параметрами процедуры / функции"></Keyword>
+    <Keyword name="result" desc="RESULT - переменная содержит результат, возвращаемый текущей функцией"></Keyword>
+    <Keyword name="$result" desc="$RESULT - переменная содержит результат, возвращаемый текущей функцией"></Keyword>
+    <Keyword name="disablescroll" desc="DISABLESCROLL - если переменная не равна 0, то запрещает автопрокрутку текста при выводе"></Keyword>
+    <Keyword name="disablesubex" desc="DISABLESUBEX - если переменная не равна 0, то запрещает использование &quot;подвыражений&quot; в тексте"></Keyword>
+    <Keyword name="nosave" desc="NOSAVE - если переменная не равна 0, то сохранение состояния игры пользователем невозможно"></Keyword>
+    <Keyword name="debug" desc="DEBUG - если переменная не равна 0, то отключается проверка идентификатора игры при загрузке состояния"></Keyword>
+    <Keyword name="$counter" desc="$COUNTER - переменная содержит название локации-счётчика"></Keyword>
+    <Keyword name="$ongload" desc="$ONGLOAD - переменная содержит название локации-обработчика загрузки состояния"></Keyword>
+    <Keyword name="$ongsave" desc="$ONGSAVE - переменная содержит название локации-обработчика сохранения состояния"></Keyword>
+    <Keyword name="$onnewloc" desc="$ONNEWLOC - переменная содержит название локации-обработчика перехода на новую локацию"></Keyword>
+    <Keyword name="$onactsel" desc="$ONACTSEL - переменная содержит название локации-обработчика выбора действия"></Keyword>
+    <Keyword name="$onobjsel" desc="$ONOBJSEL - переменная содержит название локации-обработчика выбора предмета"></Keyword>
+    <Keyword name="$onobjadd" desc="$ONOBJADD - переменная содержит название локации-обработчика добавления предмета"></Keyword>
+    <Keyword name="$onobjdel" desc="$ONOBJDEL - переменная содержит название локации-обработчика удаления предмета"></Keyword>
+    <Keyword name="$usercom" desc="$USERCOM - переменная содержит название локации-обработчика строки ввода"></Keyword>
+    <Keyword name="usehtml" desc="USEHTML - если переменная не равна 0, то включает возможность использования HTML"></Keyword>
+    <Keyword name="bcolor" desc="BCOLOR - переменная содержит цвет фона"></Keyword>
+    <Keyword name="fcolor" desc="FCOLOR - переменная содержит основной цвет шрифта"></Keyword>
+    <Keyword name="lcolor" desc="LCOLOR - переменная содержит основной цвет ссылок"></Keyword>
+    <Keyword name="fsize" desc="FSIZE - переменная содержит основной размер шрифта"></Keyword>
+    <Keyword name="$fname" desc="$FNAME - переменная содержит название основного шрифта"></Keyword>
+    <Keyword name="$backimage" desc="$BACKIMAGE - переменная содержит путь к фоновому изображению"></Keyword>
+  </Variables>
+</QGen-keywords>

BIN
tools/QGen5/libgcc_s_dw2-1.dll


BIN
tools/QGen5/libstdc++-6.dll


BIN
tools/QGen5/libwinpthread-1.dll


BIN
tools/QGen5/platforms/qwindows.dll


BIN
tools/QSPgui/fmodexp.dll


BIN
tools/QSPgui/langs/de/qspgui.mo


BIN
tools/QSPgui/langs/en/qspgui.mo


BIN
tools/QSPgui/langs/eo/qspgui.mo


BIN
tools/QSPgui/langs/ru/qspgui.mo


BIN
tools/QSPgui/langs/uk/qspgui.mo


BIN
tools/QSPgui/libvlc.dll


BIN
tools/QSPgui/libvlccore.dll


BIN
tools/QSPgui/plugins/access/libfilesystem_plugin.dll


BIN
tools/QSPgui/plugins/audio_output/libdirectsound_plugin.dll


BIN
tools/QSPgui/plugins/codec/libavcodec_plugin.dll


BIN
tools/QSPgui/plugins/codec/libdxva2_plugin.dll


BIN
tools/QSPgui/plugins/plugins.dat


BIN
tools/QSPgui/plugins/video_chroma/libchain_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libgrey_yuv_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi420_rgb_mmx_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi420_rgb_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi420_rgb_sse2_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi420_yuy2_mmx_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi420_yuy2_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi420_yuy2_sse2_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi422_i420_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi422_yuy2_mmx_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi422_yuy2_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libi422_yuy2_sse2_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/librv32_plugin.dll


BIN
tools/QSPgui/plugins/video_chroma/libswscale_plugin.dll


Some files were not shown because too many files changed in this diff