Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 02/16/21 in all areas

  1. Hi everyone, As I stated on this topic I have improved the Electron solution for roBrowser. Features: Windowed desktop application with multiple platform support Custom client with full source control (roBrowser) Support to parse local data files using bundled "remote client" (replaces roBrowser's PHP one) * Bundled client X server proxy No need for a web host to run the client * The GRF files parse still needs to be implemented. Currently only reading unpacked files. It may look weird to use a browser client locally, so to put it simple: - Why would I use this instead of the regular client? A: To have full control over the client source code - Why would I use this instead of the default roBrowser client? A: To avoid the need of a web host. To fix the slow loading time of the files remotely. To provide your players a standalone application. Set-up Guide 1. Clone the repository below: git clone https://github.com/wjrosa/roBrowser-electron 2. Create your .env file using .env.example as base (copy it, rename and put in the same folder). Do not change the remote client and proxy configurations if you want to use everything locally. 3. Install the dependencies: yarn install 4. Copy robrowser's source code to the folder: src/robrowser/ 5. Extract your data into roBrowser's data folder: robrowser/client/data 6. Copy the proxy source code to the folder: src/wsproxy/ 7. Install the proxy dependencies: yarn install 8. Start the client: yarn start To build the client for distribution you need to run: yarn make PS: Make sure you have Packet Obfuscation disabled on the server and that you use the same PACKETVER as the client.
    2 points
  2. Hello everyone. Today i would like to share with you Yggdarsil bot, a discord bot that was created with the launch of my private server for simple verification, and has grown ever since to provide a fun and interactive game/discord experience. Features and commands Multilanguage support Account verification (Link your in-game account to your discord account) Mob/Item lookup In-game rewards Server donation Vendors Search Auction System And that's mostly all the available commands Discord Events/Minigames Yggdrasil Bot can also run several different minigames on discord, and reward the event winners in-game directly. Random Drops Trivia Event Disguise Event Boss Fights And that'd be all folks. Any feedback is appreciated
    1 point
  3. Introduction The objective of this guide is to create a full client that can run on every platform and where you have complete control over the source code of it, meaning you can add new windows, style every part of the game and adapt it to suit your server need. To do so we'll rely on a stack made of node-js with electron framework and express combined with RoBrowser from KeyWorld. Setup Text Editor Get a good text editor, my personal choice for this will be atom : https://atom.io/ RoBrowser Download RoBrowser from here : https://www.robrowser.com/ Follow the instructions present here to set it up : https://www.robrowser.com/getting-started You'll need a webserver for the first setup, if you're on Linux use Apache with PHP other wise you can get a nice wamp stack here : http://www.easyphp.org/ This is the basic result you should at least get to before continuing this tutorial : Electron Download NodeJS from here : https://nodejs.org/en/ Install it and restart your computer. Open a terminal / Windows Command Line and type the following : npm install -g electron-forge Creating a new project In the terminal, go to your working folder : cd c:\projects For the sake of this tutorial, we'll call our project "sakexe". Now you'll initialize your project : electron-forge init sakexe A new folder named after the project was created, we'll move into this folder : cd sakexe We'll now install express : npm install express --save Open your project with atom : Now we'll edit index.html to the following (replace ROConfig contents with whatever your configuration is) : <!DOCTYPE html> <html> <head> <title>SakExe : FullClient</title> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <script type="text/javascript" src="./api.js"></script> <script type="text/javascript"> function initialize() { var ROConfig = { target: document.getElementById("robrowser"), type: ROBrowser.TYPE.FRAME, application: ROBrowser.APP.ONLINE, remoteClient: "http://127.0.0.1:5737/client/", development: false, servers: [{ display: "Demo Server", desc: "roBrowser's demo server", address: "5.135.190.4", port: 7000, version: 25, langtype: 12, packetver: 20131223, packetKeys: true, socketProxy: "ws://5.135.190.4:443/", adminList: [2000000] }], skipServerList: true, skipIntro: true, }; var RO = new ROBrowser(ROConfig); RO.start(); } window.addEventListener("load", initialize, false); </script> <style> html, body, iframe, #robrowser { height:100%; width:100%; margin:0; padding:0; overflow: hidden; min-width: 800px; min-height: 600px; } </style> </head> <body> <div id="robrowser">Initializing roBrowser...</div> </body> </html> Edit index.js to the following : import { app, BrowserWindow } from 'electron'; const express = require('express'); const server = express(); // Handle server requests to serve static files server.use('/', express.static((__dirname))); // Handle creating/removing shortcuts on Windows when installing/uninstalling. if (require('electron-squirrel-startup')) { // eslint-disable-line global-require app.quit(); } // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. let mainWindow; const createWindow = () => { // Start listening to port 5737 server.listen(5737, function() {}); // Create the browser window. mainWindow = new BrowserWindow({ width: 800, height: 600, }); // and load the index.html of the app. mainWindow.loadURL(`http://127.0.0.1:5737`); // Disabling the webtools mainWindow.webContents.on("devtools-opened", () => { mainWindow.webContents.closeDevTools(); }); // Disabling the mainmenu mainWindow.setMenu(null); // Emitted when the window is closed. mainWindow.on('closed', () => { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. mainWindow = null; }); }; // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on('ready', createWindow); // Quit when all windows are closed. app.on('window-all-closed', () => { // On OS X it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { // On OS X it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (mainWindow === null) { createWindow(); } }); // In this file you can include the rest of your app's specific main process // code. You can also put them in separate files and import them here. It's time to copy contents from your RoBrowser folder into your Sakexe folder so your file structure looks like this : Now you can try your project by typing the following : electron-forge start Here's the expected result : Compiling Your can now compile your project for your current platform by using : electron-forge make You can find more details about compilation and packaging at the following link : https://github.com/electron-userland/electron-forge Branding You can set an icon for your executable by following these instructions here : https://stackoverflow.com/questions/44122559/how-to-set-the-app-icon-using-electron-forge-package-on-mac Thanks for reading ? Changelog 2018-04-02 : Fixed a mistake in parameters sent to RoBrowser that'd try to load the client from RoBrowser repository instead of the local custom client. I plan to edit this guide later on to implement a websocket proxy directly into the electron framework to avoid having to set on up with RoBrowser.
    1 point
  4. For various reasons an idea came up, to have a reverse search (or search-by-image) function in the NPC list. The question is, would there be general demand for such a function, or not?
    1 point
  5. - script Treasure Box Respawner -1,{ OnMinute00: monster "prontera",0,0,"Treasure Box",2288,1,"Treasure Box Respawner::OnTBoxDestroyed"; end; OnTBoxDestroyed: announce "The Treasure box has been destroyed by " + strcharinfo(0) + "!",3; end; } https://github.com/rathena/rathena/blob/master/doc/script_commands.txt#L857
    1 point
  6. Vai em src/config/core.h, ache essa parte e tira os // da segunda linha. Recompila o servidor, VIP ativado. /// Uncomment to enable VIP system. //#define VIP_ENABLE conf/login_athena.conf, acha essa parte e muda o 5 para 1. // Which group (ID) will be denoted as the VIP group? // Default: 5 vip_group: 5 Em conf/battle/player.conf tem algumas opções de configuração do vip. Por exemplo: rate de EXP e drop, aumentar limite do armazém. Em conf/groups.conf você configura os comandos e algumas outras coisas disponíveis para os VIPs. Em conf/login_athena.conf também dá para aumentar o número de personagens máximo em contas VIP.
    1 point
  7. Version 1.0.0

    674 downloads

    I just want to share to everybody this simple script. Hope you guys like it! Kudos to llchrisll for explaining everything!
    Free
    1 point
×
×
  • Create New...