Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 04/01/18 in all areas

  1. 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.
    4 points
  2. View File sader's Hourly Rewards //===== rAthena Script ======================================= //= saders Hourly Rewards //===== By: ================================================== //= Sader1992 //https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //https://rathena.org/board/files/file/ (this the first version there is no url yet) //https://github.com/sader1992/sader_scripts //===== Description: ========================================= //==== all the configuration are in the last //==== support gepard / ip / or without them //==== if you use ip/gepard sql will be used for that //==== can add minimem level to get the rewards //==== can change the time //==== can ban the vending from the rewards (it will reset after relogin) //==== can add rewards else then variable //==== there is a shop npc for the variable //==== you can make it only for vip //==== can ban idle players for X time from the Hourly Rewards //==== player can ban his char from getting the reward by @HourlyBan (it will reset after relogin) //============================================================ //==== please send me a message if you find error //==== if you like my work maybe consider support me at paypal //==== [email protected] //============================================================ //============================================================ after loading the script you will need to re login to the game configuration In the last of the script OnInit: .s_idle = 0; // ban hourly rewards from idle players ? 0 no / 1 yes {if player didn't move for x time he wont get hourly reward} , DEFAULT = 0 .s_idle_time = 1800; // this the time for idle in secend , DEFAULT = 1800 (30 min) .s_vip = 0; // 1 = only for VIP / 0 = for everyone , DEFAULT = 0 .s_time = 3600000; // 1000 = 1 secend | 60000 = 1 min | 3600000 = 1 houre , DEFAULT = 3600000 (1 hr) .s_hourly_level = 0; // Minimam level to get the Houerly rewards / 0 = no minimem level , DEFAULT 0 .s_GePard_ip = 0; // 0 = no Gepard / 1 = Gepard / 2 = IP , DEFAULT 0 .s_vinding = 7; // DEFAULT 7 / 0 = will give the reward even if vending / 1 = no normal vending / 2 = no @autotrade / 4 = no buyingstore | Example: if you want to ban normal vend and buying store you add the numbers 1+4=5 query_logsql("CREATE TABLE IF NOT EXISTS `sader_variables_log` (`unique_id` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0',`ip` VARCHAR(100) NOT NULL,`variable` VARCHAR(32) NOT NULL, `index` INT NOT NULL, `value` INT NOT NULL,`account_id` INT NOT NULL,`char_id` INT NOT NULL,`char_name` VARCHAR(30) NOT NULL) ENGINE=MyISAM"); bindatcmd("UnHourlyBan",strnpcinfo(3)+"::OnUnHourlyBan",99,99); bindatcmd("HourlyBan",strnpcinfo(3)+"::OnHourlyBan",0,99); end; Hourly_Rewads: //put the Hourly Rewards here #HourlyRewards += 1; //getitem 905,1; // if you want to add items as reward you can add them here like that //getexp 10000,5000; // if you wanna add exp as reward add them here like that //if(#Hourly_Rewads_Check == 5){getitem 905,1;} // like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr //if(#Hourly_Rewads_Check >= 5){getitem 905,1;} // like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr or more return; } prontera,151,171,5 pointshop Hourly Rewards Shop 667,#HourlyRewards,901:1,902:10,903:15,904:1,905:200 //<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE> for any error contact me plz for faster update and fixes https://github.com/sader1992/sader_scripts //==== if you like my work maybe consider support me at paypal //==== [email protected] Submitter sader1992 Submitted 10/10/2017 Category Utilities Video Content Author sader1992  
    1 point
  3. View File Soul Link Modification - Script-based Information This source allows you to "script" additional bonuses on soul link buffs like an item script. See db/soul_link.yml for example. Q: Why this and not OnPCStatCalcEvent? A: PCStatCalc is known to be buggy. Alternate diff link: https://github.com/secretdataz/rathena/commit/6b91c4d18cc537e25a64f371ee3faf468b9dcc99.diff THIS RELEASE IS SUBJECT TO GPLv3 LICENSE Copyright © - Secrets <[email protected]> 2018 - All Rights Reserved Take a look at my premade script list if you like my works or want one of my premade scripts. or Submitter Secrets Submitted 04/02/2018 Category Source Modifications Video Content Author Secret  
    1 point
  4. 913 downloads

    Information This source allows you to "script" additional bonuses on soul link buffs like an item script. See db/soul_link.yml for example. Q: Why this and not OnPCStatCalcEvent? A: PCStatCalc is known to be buggy. Alternate diff link: https://github.com/secretdataz/rathena/commit/6b91c4d18cc537e25a64f371ee3faf468b9dcc99.diff THIS RELEASE IS SUBJECT TO GPLv3 LICENSE Copyright © - Secrets <[email protected]> 2018 - All Rights Reserved Take a look at my premade script list if you like my works or want one of my premade scripts. or
    Free
    1 point
  5. @nikita54421: Back up. Updated to 2.14.0, adds support for high DPI screens and kRO:Zero, and fixes various UI glitches.
    1 point
  6. @Quesooo Thanks for the feedback, which source code do you need ? RoBrowser sources are available here : https://upload.robrowser.com/roBrowser.zip , the electron framework source code is generated by the command line : electron-forge init sakexe and the sources I did modify are listed in "Code brackets". Did I miss something ?
    1 point
  7. ah ... found a bug I forgotten the loadevent can be use from another script if you install another script with loadevent mapflag will cause this script to warp out other players indiscriminately 1 more time http://upaste.me/06e6495427daded7f EDIT: Jesus ... I made mistake too many times, really lost touch with scripting yeah ... atm, not a godlike scripter yet XD btw, did you guys mentioned wrong person ?? I am @AnnieRuru not @Annie Ruru
    1 point
  8. if(set @Esucces >= 3) { mes " You already reach max access to use my service."; end; } Might cause an error tho! Remove the "set": if(Esucces >= 3) { mes " You already reach max access to use my service."; end; }
    1 point
  9. Izlude,46,75,4 script Free Enchant 47,{ mes "[Free Enchant]"; mes "I can give free +2 enchant stat in your Freebies."; next; mes "[Free Enchant]"; mes "Select your equipment"; menu "Harmonia Coat",l_erdvn,"GM Harmonia Coat",l_ermnk,"never mind ...",-; next; mes "[Free Enchant]"; mes "Ok.."; end; l_erdvn: next; if(countitem(32022)<1) goto l_gadaeq; if(Esucces >= 3) { mes " You already reach max access to use my service."; end; } mes "[Free Enchant]"; mes "Select your options"; next; menu "STR +2",l_erdvnstr, "AGI +2",l_erdvnagi, "VIT +2",l_erdvnvit, "INT +2",l_erdvnint, "DEX +2",l_erdvndex, "LUK +2",l_erdvnluk; l_erdvnstr: mes "[Free Enchant]"; delitem 32022,1; getitem2 32022,1,1,0,0,0,0,0,4701; set Esucces, Esucces+1; mes "Here your enchanted eris Harmonia Coat."; end; l_erdvnagi: mes "[Free Enchant]"; delitem 32022,1; getitem2 32022,1,1,0,0,0,0,0,4731; set Esucces, Esucces+1; mes "Here your enchanted eris Harmonia Coat."; end; l_erdvnvit: mes "[Free Enchant]"; delitem 32022,1; getitem2 32022,1,1,0,0,0,0,0,4741; set Esucces, Esucces+1; mes "Here your enchanted eris Harmonia Coat."; end; l_erdvnint: mes "[Free Enchant]"; delitem 32022,1; getitem2 32022,1,1,0,0,0,0,0,4711; set Esucces, Esucces+1; mes "Here your enchanted eris Harmonia Coat."; end; l_erdvndex: mes "[Free Enchant]"; delitem 32022,1; getitem2 32022,1,1,0,0,0,0,0,4721; set Esucces, Esucces+1; mes "Here your enchanted eris Harmonia Coat."; end; l_erdvnluk: mes "[Free Enchant]"; delitem 32022,1; getitem2 32022,1,1,0,0,0,0,0,4751; set Esucces, Esucces+1; mes "Here your enchanted eris Harmonia Coat."; end; l_ermnk: next; if(countitem(32015)<1) goto l_gadaeq; if(Esucces >= 3) { mes " You already reach max access to use my service."; end; } mes "[Free Enchant]"; mes "What do you want?"; next; menu "STR +2",l_ermnkstr, "AGI +2",l_ermnkagi, "VIT +2",l_ermnkvit, "INT +2",l_ermnkint, "DEX +2",l_ermnkdex, "LUK +2",l_ermnkluk; l_ermnkstr: mes "[Free Enchant]"; delitem 32015,1; getitem2 32015,1,1,0,0,0,0,0,4701; set Esucces, Esucces+1; mes "Here your enchanted eris GM Harmonia Coat."; end; l_ermnkagi: mes "[Free Enchant]"; delitem 32015,1; getitem2 32015,1,1,0,0,0,0,0,4731; set Esucces, Esucces+1; mes "Here your enchanted eris GM Harmonia Coat"; end; l_ermnkvit: mes "[Free Enchant]"; delitem 32015,1; getitem2 32015,1,1,0,0,0,0,0,4741; set Esucces, Esucces+1; mes "Here your enchanted eris GM Harmonia Coat"; end; l_ermnkint: mes "[Free Enchant]"; delitem 32015,1; getitem2 32015,1,1,0,0,0,0,0,4711; set Esucces, Esucces+1; //set ##freeenchant,3; mes "Here your enchanted eris GM Harmonia Coat"; end; l_ermnkdex: mes "[Free Enchant]"; delitem 32015,1; getitem2 32015,1,1,0,0,0,0,0,4721; set Esucces, Esucces+1; mes "Here your enchanted eris GM Harmonia Coat"; end; l_ermnkluk: mes "[Free Enchant]"; delitem 32015,1; getitem2 32015,1,1,0,0,0,0,0,4751; set Esucces, Esucces+1; mes "Here your enchanted eris GM Harmonia Coat"; end; l_gadaeq: mes "[Free Enchant]"; mes "You did not bring the required equip."; end; } OnInit: delwaitingroom; waitingroom "Free Enchantment",0; end; }
    1 point
  10. Haunting Spirits A little Halloween gift for the community. Hope ya'll enjoying Halloween! Please join my Discord channel and click on #freebies to Download.
    1 point
  11. 2571 downloads

    Well, here you got some Updated Palettes, what is inside? I have onlye add: - Kagerou and Oboro - Summoner I have no add the Costume 3rd Job of Jro because dont look well in some jobs, the paletts dont match with the sprites and is a mess of black pixels for everywhere. Waiting you found it usefull for your server. Enjoy.
    Free
    1 point
×
×
  • Create New...