Ir para conteúdo
Propaganda

usariodenome

Membro
  • Total de Posts

    62
  • Registro em

  • Última visita

  • Dias Ganhos

    30

Tudo que usariodenome postou

  1. [Hidden Content]
  2. Multi instance object builder animation roll list limit 10k with grid view SPR EXPORT
  3. [Hidden Content] [Hidden Content]
  4. currently to buy via [Hidden Content] if you buy directly from me you can pay 30EUR instead. I also accept modules and other things as trade ins.
  5. single shaders available on: [Hidden Content] [Hidden Content] if you wish to purchase whole pack contact me on discord. its 200$ for whole .zip of all shaders including map shaders that are not shown.
      • 19
      • Like
      • Thanks
      • Haha
  6. [Hidden Content]
  7. El nombre de esta parte del foro es portfolio. pero planeo agregar un módulo de financiación colectiva que muestre cuál es el objetivo de donación para el próximo lanzamiento de funciones. Lo regalaría pero ya sabes los impuestos la comida todo eso es caro, al fin y al cabo ya he dado mucho cambio gratis cuando no tenía problemas económicos ¿no? Yo también tengo dos hijos y se acercan sus cumpleaños, debería comprarles algo también, y ya que paso día y noche en ello, ¿por qué no puedo permitirme ni siquiera un regalo estúpido para el niño, no?
  8. usariodenome

    Idler Game Editor

    Idler game editor modules for Remeres map editor: Monster maker: Live mapping: (multiplayer) Map gen: sort by list: load items.otb items.xml tibia.spr tibia.dat from same folder: custom client view: draw sprites as custom colors: copy aid uid paste aid uid: right click OPEN script revscript actions movements monsters npc support: creature grid: Recent brush: house tooltip: and house floor colors: custom brush size: [Hidden Content] notes: advanced tooltips: server id /client ID display on list evo dungeon generator: follow updates on : [Hidden Content]
  9. all download links and tools on discord: [Hidden Content]
  10. i can accept 10 people interested in purchasing the object builder this month as my country limits income without company. added bulk editing for changing 1000 items from unwalkable to walkable for example or changing minimap color of items quicker. added sprite grid view. added import by folder allowing to import many items without CRASHING . added ignoring flags for loading ravendawn and other sprites. added zoom functionality in preview added 10000 list limit
  11. usariodenome

    object builder

  12. i offer c++,lua services if you want somethign custom for your otservers let me know. discord: wirless_pl github: wirless
  13. CUSTOM CHANNEL MESSAGES FIX // player:sendChannelMessage(author, text, type, channelId) this does not work without this fix
  14. I need it on my harddrive not cloud. I also connect from phone the network is limited in my area but i pull 130mbp/s on 4g+ from my phone to pc. can stream in 4500mbps easily 6000 if no one else is using internet and on good weather hehe
  15. yeah but i dont even have to login to discord to operate.
  16. const { Client } = require('ssh2'); const fs = require('fs'); const path = require('path'); // Configuration const remoteDir = '/home/ots/mysql_backup/'; const localDir = 'D:/backups/'; const zipFileName = `mysql_backup_${new Date().toISOString().replace(/[:T]/g, '-').slice(0, 19)}.zip`; // Format: mysql_backup_YYYY-MM-DD_HH-MM-SS.zip const remoteZipFile = `/home/backups/${zipFileName}`; // Save ZIP in /home/ots const conn = new Client(); conn.on('ready', () => { console.log('SSH Connection established.'); // Step 1: Zip the directory on the remote server const zipCommand = `zip -r ${remoteZipFile} ${remoteDir}`; conn.exec(zipCommand, (err, stream) => { if (err) { console.error('Error executing zip command:', err); conn.end(); return; } stream .on('close', (code, signal) => { if (code === 0) { console.log(`Directory zipped successfully as ${zipFileName}.`); downloadZipFile(); } else { console.error(`Zip command failed with code ${code} and signal ${signal}.`); conn.end(); } }) .on('data', (data) => { console.log('STDOUT:', data.toString()); }) .stderr.on('data', (data) => { console.error('STDERR:', data.toString()); }); }); // Step 2: Download the zipped file function downloadZipFile() { conn.sftp((err, sftp) => { if (err) { console.error('Error initiating SFTP:', err); conn.end(); return; } const localFilePath = path.join(localDir, zipFileName); // Create local directory if it doesn't exist if (!fs.existsSync(localDir)) { fs.mkdirSync(localDir, { recursive: true }); } const readStream = sftp.createReadStream(remoteZipFile); const writeStream = fs.createWriteStream(localFilePath); readStream.on('error', (err) => { console.error('Error reading remote file:', err); conn.end(); }); writeStream.on('error', (err) => { console.error('Error writing local file:', err); conn.end(); }); writeStream.on('close', () => { console.log(`File downloaded successfully to: ${localFilePath}`); cleanupRemoteZip(); }); readStream.pipe(writeStream); }); } // Step 3: Clean up the zipped file on the remote server function cleanupRemoteZip() { conn.exec(`rm -f ${remoteZipFile}`, (err, stream) => { if (err) { console.error('Error deleting remote zip file:', err); conn.end(); return; } stream .on('close', (code, signal) => { if (code === 0) { console.log(`Remote zip file ${zipFileName} deleted successfully.`); } else { console.error(`Failed to delete remote zip file with code ${code} and signal ${signal}.`); } conn.end(); }) .on('data', (data) => { console.log('STDOUT:', data.toString()); }) .stderr.on('data', (data) => { console.error('STDERR:', data.toString()); }); }); } }).connect({ host: '', // Replace with your remote host port: 22, // Default SSH port username: 'root', // Replace with your username password: 'password for ur account here to backup your sql files if ur using restarter' // Replace with your password // Or use privateKey for key-based authentication: // privateKey: fs.readFileSync('path/to/private/key') }); // Handle errors conn.on('error', (err) => { console.error('SSH Connection error:', err); }).on('end', () => { console.log('Connection ended.'); }).on('close', () => { console.log('Connection closed.'); });
  17. dude i got mobile client i can do /closeserver shutdown to restart server im not amateur like uu realize i have whole node js frontend website for my server on [Hidden Content] is admin panel on bottom i can do it via website instead of discord also i have linux apps on my phone called terminus it shows u cpu usage and everything u can login to ubuntu i use restarter file that backups sqls and have njs script to backup ssh into server to zip the sqls 🙂
  18. import discord from discord.ext import commands from discord import ButtonStyle from discord.ui import Button, View import subprocess import psutil import os TOKEN = 'YOUR_BOT_TOKEN' AUTHORIZED_ROLE_ID = 123456789012345678 # Replace with your role ID or None if using user ID WORKING_DIR = '/home/youruser/tfs' # Change to your compile folder intents = discord.Intents.default() bot = commands.Bot(command_prefix='!', intents=intents) def run_cmd(command, cwd=WORKING_DIR): try: output = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT, cwd=cwd, timeout=60) return output.decode('utf-8') except subprocess.CalledProcessError as e: return f"[ERROR]\n{e.output.decode('utf-8')}" except Exception as e: return f"[EXCEPTION] {str(e)}" def get_sysinfo(): return ( f"CPU Usage: {psutil.cpu_percent()}%\n" f"Memory: {psutil.virtual_memory().percent}%\n" f"Uptime: {int(psutil.boot_time())}" ) class AdminView(View): def __init__(self): super().__init__(timeout=None) self.add_item(Button(label="CMake", style=ButtonStyle.primary, custom_id="cmake")) self.add_item(Button(label="Make", style=ButtonStyle.primary, custom_id="make")) self.add_item(Button(label="Kill TFS", style=ButtonStyle.danger, custom_id="pkill")) self.add_item(Button(label="Sys Info", style=ButtonStyle.secondary, custom_id="sysinfo")) @discord.ui.button(label="CMake", style=ButtonStyle.primary, custom_id="cmake") async def cmake(self, interaction: discord.Interaction, _): if not await is_authorized(interaction): return out = run_cmd("cmake .") await interaction.response.send_message(f"```{out[:1900]}```", ephemeral=True) @discord.ui.button(label="Make", style=ButtonStyle.primary, custom_id="make") async def make(self, interaction: discord.Interaction, _): if not await is_authorized(interaction): return out = run_cmd("make -j$(nproc)") await interaction.response.send_message(f"```{out[:1900]}```", ephemeral=True) @discord.ui.button(label="Kill TFS", style=ButtonStyle.danger, custom_id="pkill") async def pkill(self, interaction: discord.Interaction, _): if not await is_authorized(interaction): return out = run_cmd("pkill tfs") await interaction.response.send_message(f"TFS killed.\n```{out}```", ephemeral=True) @discord.ui.button(label="Sys Info", style=ButtonStyle.secondary, custom_id="sysinfo") async def sysinfo(self, interaction: discord.Interaction, _): if not await is_authorized(interaction): return info = get_sysinfo() await interaction.response.send_message(f"```{info}```", ephemeral=True) async def is_authorized(interaction): if AUTHORIZED_ROLE_ID: has_role = any(role.id == AUTHORIZED_ROLE_ID for role in interaction.user.roles) if not has_role: await interaction.response.send_message("Not authorized.", ephemeral=True) return False return True @bot.command() async def panel(ctx): """Send the admin panel with buttons""" if AUTHORIZED_ROLE_ID and not any(role.id == AUTHORIZED_ROLE_ID for role in ctx.author.roles): await ctx.send("Unauthorized.") return await ctx.send("Admin Panel", view=AdminView()) bot.run(TOKEN)
  19. so why not share it if you already wrote it why make others duplicate the code when everyone could benefit from this? why is everyone like this sell this module sell this discord bot in the end you make maybe 50$ from 1 user and nobody else buy this hsit for 2years xD
×
  • Criar Novo...