diff --git a/HIRUNNER/hirunner.fla b/HIRUNNER/hirunner.fla deleted file mode 100644 index 7047c63..0000000 Binary files a/HIRUNNER/hirunner.fla and /dev/null differ diff --git a/HIRUNNER/hirunner_noswf.exe b/HIRUNNER/hirunner_noswf.exe deleted file mode 100644 index 25f6728..0000000 Binary files a/HIRUNNER/hirunner_noswf.exe and /dev/null differ diff --git a/HIRUNNER/server.bat b/HIRUNNER/server.bat deleted file mode 100644 index bf00ae9..0000000 --- a/HIRUNNER/server.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -start hirunner.exe "http://127.0.0.1/horseisle_projector.swf?SERVER=127.0.0.1&PORT=12321" \ No newline at end of file diff --git a/HIRUNNER/hirunner.exe b/Horse Isle Launcher/hirunner.exe similarity index 99% rename from HIRUNNER/hirunner.exe rename to Horse Isle Launcher/hirunner.exe index c39bf99..b6f043e 100644 Binary files a/HIRUNNER/hirunner.exe and b/Horse Isle Launcher/hirunner.exe differ diff --git a/Horse Isle Launcher/hirunner.fla b/Horse Isle Launcher/hirunner.fla new file mode 100644 index 0000000..e0813c7 Binary files /dev/null and b/Horse Isle Launcher/hirunner.fla differ diff --git a/Horse Isle Launcher/resources/app/favicon.ico b/Horse Isle Launcher/resources/app/favicon.ico new file mode 100644 index 0000000..b16425a Binary files /dev/null and b/Horse Isle Launcher/resources/app/favicon.ico differ diff --git a/Horse Isle Launcher/resources/app/main.js b/Horse Isle Launcher/resources/app/main.js new file mode 100644 index 0000000..f6bafef --- /dev/null +++ b/Horse Isle Launcher/resources/app/main.js @@ -0,0 +1,18 @@ +const { app, BrowserWindow } = require('electron') + +function createWindow () { + const win = new BrowserWindow({ + width: 790, + height: 500, + webPreferences: { + nodeIntegration: true + } + }) + + win.loadFile('src/index.html') + win.setMenu(null) + win.setTitle("Horse Isle - Secret Land of Horses") + win.setIcon("favicon.ico") + } + + app.whenReady().then(createWindow) \ No newline at end of file diff --git a/Horse Isle Launcher/resources/app/package.json b/Horse Isle Launcher/resources/app/package.json new file mode 100644 index 0000000..4859cd0 --- /dev/null +++ b/Horse Isle Launcher/resources/app/package.json @@ -0,0 +1,18 @@ +{ + "name": "h1-launcher", + "version": "1.0.0", + "description": "", + "main": "main.js", + "scripts": { + "start": "electron .", + "build": "electron-packager . \"H1 Launcher\" --icon=favicon.ico --platform=win32 --arch=ia32" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "electron": "^11.1.1", + "electron-packager": "^15.2.0" + }, + "dependencies": {} +} diff --git a/Horse Isle Launcher/resources/app/src/index.html b/Horse Isle Launcher/resources/app/src/index.html new file mode 100644 index 0000000..5fe11bf --- /dev/null +++ b/Horse Isle Launcher/resources/app/src/index.html @@ -0,0 +1,33 @@ + + + + + + + +
+
+ +
+
URL:
+ +
+
+
IP:
+ +
+
+
PORT:
+ +
+ +
+
+ +
+ +
+ + + + \ No newline at end of file diff --git a/Horse Isle Launcher/resources/app/src/inputHandler.js b/Horse Isle Launcher/resources/app/src/inputHandler.js new file mode 100644 index 0000000..7ccba81 --- /dev/null +++ b/Horse Isle Launcher/resources/app/src/inputHandler.js @@ -0,0 +1,65 @@ +const util = require('util'); + const exec = util.promisify(require('child_process').exec) + +const urlInput = document.getElementById("urlInput") +const ipInput = document.getElementById("ipInput") +const portInput = document.getElementById("portInput") +const enterButton = document.getElementById("enterButton") +const settingsButton = document.getElementById("settingsButton") + +let showServerList = false; + +const lastDetails = JSON.parse(localStorage.getItem("lastDetails")); + +if (lastDetails) { + urlInput.value = lastDetails.url; + ipInput.value = lastDetails.ip; + portInput.value = lastDetails.port; +} + +enterButton.addEventListener("click", async () => { + const url = urlInput.value; + const ip = ipInput.value; + const port = portInput.value; + + localStorage.setItem("lastDetails", JSON.stringify({ + url, + ip, + port + })) + + runCommand(`hirunner.exe "${url}?SERVER=${ip}&PORT=${port}"`) + setTimeout(() => { + window.close() + }, 500); +}) + + +async function runCommand(command) { + const { stdout, stderr } = await exec(command); + if(DEBUG_MODE) + { + console.log('stdout:', stdout); + console.log('stderr:', stderr); + } + } + + +serversList.addEventListener("click", (event) => { + if (!event.target.closest(".item")) return; + const name = event.target.innerText; + const fullUrl = new URL(officialServers[name].url); + const url = fullUrl.protocol + "//" + fullUrl.host + fullUrl.pathname; + const ip = fullUrl.searchParams.get("SERVER"); + const port = fullUrl.searchParams.get("PORT"); + + + urlInput.value = url; + ipInput.value = ip; + portInput.value = port; +}) + +settingsButton.addEventListener("click", () => { + serversList.style.display = showServerList ? "none" : "block"; + showServerList = !showServerList; +}) \ No newline at end of file diff --git a/Horse Isle Launcher/resources/app/src/media/background.webm b/Horse Isle Launcher/resources/app/src/media/background.webm new file mode 100644 index 0000000..e30b270 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/background.webm differ diff --git a/Horse Isle Launcher/resources/app/src/media/bg-music.mp3 b/Horse Isle Launcher/resources/app/src/media/bg-music.mp3 new file mode 100644 index 0000000..8fe7dd9 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/bg-music.mp3 differ diff --git a/Horse Isle Launcher/resources/app/src/media/enter-button.png b/Horse Isle Launcher/resources/app/src/media/enter-button.png new file mode 100644 index 0000000..7c400a3 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/enter-button.png differ diff --git a/Horse Isle Launcher/resources/app/src/media/logo.png b/Horse Isle Launcher/resources/app/src/media/logo.png new file mode 100644 index 0000000..37444b0 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/logo.png differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/bay.gif b/Horse Isle Launcher/resources/app/src/media/servericons/bay.gif new file mode 100644 index 0000000..6c105d2 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/bay.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/beta.gif b/Horse Isle Launcher/resources/app/src/media/servericons/beta.gif new file mode 100644 index 0000000..6ea643b Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/beta.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/black.gif b/Horse Isle Launcher/resources/app/src/media/servericons/black.gif new file mode 100644 index 0000000..366066c Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/black.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/brown.gif b/Horse Isle Launcher/resources/app/src/media/servericons/brown.gif new file mode 100644 index 0000000..fa19338 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/brown.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/chestnut.gif b/Horse Isle Launcher/resources/app/src/media/servericons/chestnut.gif new file mode 100644 index 0000000..36434db Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/chestnut.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/cremello.gif b/Horse Isle Launcher/resources/app/src/media/servericons/cremello.gif new file mode 100644 index 0000000..bb398cb Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/cremello.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/dun.gif b/Horse Isle Launcher/resources/app/src/media/servericons/dun.gif new file mode 100644 index 0000000..7e05a57 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/dun.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/grey.gif b/Horse Isle Launcher/resources/app/src/media/servericons/grey.gif new file mode 100644 index 0000000..2e4ebeb Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/grey.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/palomino.gif b/Horse Isle Launcher/resources/app/src/media/servericons/palomino.gif new file mode 100644 index 0000000..dcb7854 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/palomino.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/pinto.gif b/Horse Isle Launcher/resources/app/src/media/servericons/pinto.gif new file mode 100644 index 0000000..e9255fb Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/pinto.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/roan.gif b/Horse Isle Launcher/resources/app/src/media/servericons/roan.gif new file mode 100644 index 0000000..2392615 Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/roan.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/servericons/white.gif b/Horse Isle Launcher/resources/app/src/media/servericons/white.gif new file mode 100644 index 0000000..bb398cb Binary files /dev/null and b/Horse Isle Launcher/resources/app/src/media/servericons/white.gif differ diff --git a/Horse Isle Launcher/resources/app/src/media/settings-button.svg b/Horse Isle Launcher/resources/app/src/media/settings-button.svg new file mode 100644 index 0000000..a216049 --- /dev/null +++ b/Horse Isle Launcher/resources/app/src/media/settings-button.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Horse Isle Launcher/resources/app/src/official-servers.json b/Horse Isle Launcher/resources/app/src/official-servers.json new file mode 100644 index 0000000..df2c011 --- /dev/null +++ b/Horse Isle Launcher/resources/app/src/official-servers.json @@ -0,0 +1,46 @@ +{ + "Pinto": { + "url": "http://pinto.horseisle.com/horseisle.swf?SERVER=pintoip&PORT=443", + "icon": "pinto.gif" + }, + "Roan": { + "url": "http://roan.horseisle.com/horseisle.swf?SERVER=roanip&PORT=443", + "icon": "roan.gif" + }, + "Palomino": { + "url": "http://palomino.horseisle.com/horseisle.swf?SERVER=palominoip&PORT=443", + "icon": "palomino.gif" + }, + "Bay": { + "url": "http://bay.horseisle.com/horseisle.swf?SERVER=bayip&PORT=443", + "icon": "bay.gif" + }, + "Dun": { + "url": "http://dun.horseisle.com/horseisle.swf?SERVER=dunip&PORT=443", + "icon": "dun.gif" + }, + "Grey": { + "url": "http://grey.horseisle.com/horseisle.swf?SERVER=greyip&PORT=443", + "icon": "grey.gif" + }, + "White": { + "url": "http://white.horseisle.com/horseisle.swf?SERVER=whiteip&PORT=443", + "icon": "white.gif" + }, + "Chestnut": { + "url": "http://chestnut.horseisle.com/horseisle.swf?SERVER=chestnutip&PORT=443", + "icon": "chestnut.gif" + }, + "Cremello": { + "url": "http://cremello.horseisle.com/horseisle.swf?SERVER=cremelloip&PORT=443", + "icon": "cremello.gif" + }, + "Brown": { + "url": "http://brown.horseisle.com/horseisle.swf?SERVER=brownip&PORT=443", + "icon": "brown.gif" + }, + "Black": { + "url": "http://black.horseisle.com/horseisle.swf?SERVER=blackip&PORT=443", + "icon": "black.gif" + } +} \ No newline at end of file diff --git a/Horse Isle Launcher/resources/app/src/populateServersList.js b/Horse Isle Launcher/resources/app/src/populateServersList.js new file mode 100644 index 0000000..3ba8ff2 --- /dev/null +++ b/Horse Isle Launcher/resources/app/src/populateServersList.js @@ -0,0 +1,10 @@ +const officialServers = require("./official-servers.json"); + +const serversList = document.getElementById("serversList") + + +for (let i = 0; i < Object.keys(officialServers).length; i++) { + const name = Object.keys(officialServers)[i]; + const icon = officialServers[name].icon + serversList.innerHTML+= `
${name}
` +} \ No newline at end of file diff --git a/Horse Isle Launcher/resources/app/src/style.css b/Horse Isle Launcher/resources/app/src/style.css new file mode 100644 index 0000000..9009479 --- /dev/null +++ b/Horse Isle Launcher/resources/app/src/style.css @@ -0,0 +1,106 @@ +body, html { + margin: 0; + height: 100%; + font-family: Arial, Helvetica, sans-serif; +} + +.background { + object-fit: cover; + position: absolute; + z-index: -1; +} +.content { + display: flex; + flex-direction: column; + height: 100%; + width: 100%; + align-items: center; + +} +.logo { + background-image: url("./media/logo.png"); + image-rendering: -webkit-optimize-contrast; + background-size: contain; + background-position: center; + background-repeat: no-repeat; + height: 220px; + width: 220px; + margin-top: 30px; + margin-bottom: 50px; +} +.center-content { + display: flex; + flex-direction: column; + margin: auto; + align-items: center; +} +.input { + display: flex; + color: white; + text-shadow: 2px 2px 2px black; + font-size: 20px; + font-weight: bold; + margin-top: 10px; +} +.input .name { + width: 70px; +} +.input input { + border: solid 1px black; + outline: none; + font-size: 18px; + width: 150px; + padding-bottom: 2px; + padding-top: 2px; + box-shadow: 2px 2px 2px 0 black; +} +.button { + height: 25px; + width: 127.95px; + margin-top: 15px; + cursor: pointer; + width: auto; +} +.settings-button { + height: 18px; + width: auto; + position: absolute; + cursor: pointer; + bottom: 15px; + right: 10px; +} +.servers-list { + position: absolute; + background-color: #a797a7; + bottom: 60px; + right: 15px; + border: solid 1px black; + display: none; + flex-shrink: 0; + max-height: 300px; + overflow-y: auto; +} +.servers-list .item { + background: #cccccc; + border: solid 3px white; + margin: 5px; + font-weight: bold; + padding: 5px; + cursor: pointer; + color: #333333; + padding-right: 20px; + flex-shrink: 0; + display: flex; + align-items: center; + align-content: center; + box-shadow: 2px 2px 2px 0 black; +} +.servers-list .item .name { + margin-left: auto; +} +.servers-list .item img { + width: 20px; + height: auto; + margin-right: 10px; + flex-shrink: 0; +} \ No newline at end of file diff --git a/Horse Isle Server/Horse Isle Server/Game/DroppedItems.cs b/Horse Isle Server/Horse Isle Server/Game/DroppedItems.cs index 761abe6..716ad93 100644 --- a/Horse Isle Server/Horse Isle Server/Game/DroppedItems.cs +++ b/Horse Isle Server/Horse Isle Server/Game/DroppedItems.cs @@ -22,6 +22,12 @@ namespace HISP.Game int count = 0; foreach(DroppedItem droppedItem in dropedItems) { + if (droppedItem.instance == null) + { + continue; + RemoveDroppedItem(droppedItem); + } + if(droppedItem.instance.ItemId == item.Id) { count++; diff --git a/Horse Isle Server/Horse Isle Server/Server/Database.cs b/Horse Isle Server/Horse Isle Server/Server/Database.cs index 252e759..5c9142c 100644 --- a/Horse Isle Server/Horse Isle Server/Server/Database.cs +++ b/Horse Isle Server/Horse Isle Server/Server/Database.cs @@ -1444,7 +1444,7 @@ namespace HISP.Server throw new Exception("Userid " + id + " Allready in userext."); MySqlCommand sqlCommand = db.CreateCommand(); - sqlCommand.CommandText = "INSERT INTO UserExt VALUES(@id,@x,@y,@timestamp,0,0,0,'','',0,0,'NO',0,0,1000,1000,1000, 360)"; + sqlCommand.CommandText = "INSERT INTO UserExt VALUES(@id,@x,@y,@timestamp,0,0,0,'','',0,0,'NO',0,0,1000,1000,1000, 180)"; sqlCommand.Parameters.AddWithValue("@id", id); sqlCommand.Parameters.AddWithValue("@timestamp", Convert.ToInt32(new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds())); sqlCommand.Parameters.AddWithValue("@x", Map.NewUserStartX); diff --git a/WebInterface/game-site/horseisle_projector.swf b/WebInterface/game-site/horseisle_projector.swf index 784919a..b847a31 100644 Binary files a/WebInterface/game-site/horseisle_projector.swf and b/WebInterface/game-site/horseisle_projector.swf differ