Skip to content
TORNLIFE More

vavi: forum

vavi [2224491] Level 100 Torn Medical NUKE Standard Reviver

Forum posts (Torn's count)
612 observed
Archived posts
519
Threads started (archived)
24

Boards

From the 519 newest archived posts.

Threads started

Most-liked posts

Likes as archived at fetch time, adjusted for how long each post had been up. Scored posts only; the full score pass runs after the import.

PT-IRONHEARTS recruiting · · 231 likes

Xanax, EDVDs, Flowers, Plushies, etc · · 19 likes

[BUYING] Up to ~99% Market Value

 

🔗 Quick Links

 

📦 Purchasing Guidelines

What I Buy:

  • Plushies & Flowers (Individual items or full sets)

  • Drugs (Including Xanax)

  • Common Commodities & High-Volume Trade Items

 

What I Do Not Buy:

  • RW Weapons, RW Armor, Properties, Cosmetics, or Rare Collector Items.

 

 

🛡️ Service Commitments

  • Competitive Pricing: Up to ~99% Market Value.

  • Security: Mug-safe execution and fast transaction turnarounds. i dont mug, just check my stats to confirm it

  • Reliability: Active daily with transparent price lists.

 

 

 

Thank you to everyone who continues to trade with me. 

WTF is going on with peoples wage expectations.... · · 3 likes

i dont blame the employees, i think is directors fault.

 

They dont research the market, they want big stats and getting fast to 10*, this directors pay what a employee wants.

 

There are several ways to run a  company:

 

  • One is, you get high stats employees, pay delusional wages, get fast to 8*+, and sell for profit. Usually running a company like this makes you lose money or get a very small profit, you only will get the real profit when you flip it.
  • Other way is research the market, search and negociate the wages and get employees givong a fair wage, get stars, and get your ROI overtime, and run it for years.

 

The employees are not dumb people, they know that some directors lack of wage negociation and pay what they ask, also this directors dont care of inactives, they just replace them asap, and pay whatever it takes to fullfill the spot.

 

 If you chosed to run your company like in point two, you will have a well stablished company, just dont go greedy, and pay a fair wage to your emplooyees, having free spot on the company doesnt mean that you will not perform. just keep the employees you have active and happy..

 

Also, i like to talk to other directors, and you find everything, you meet good people, willing to share their experience, and some just send you screw up.

By that you can guess how they are running their companies.

 

 

Also a tip, i talked to some employees, and they told me they only ask absurd wages to those people who send pre-made mails, and to those directors who are "new" to the game, those are the ones paying the abusrd wages.

 

 

LF Director Roles - Open for negotiations · · 1 like

my director, for my last company

A person you can thrust, a person easy to deal and always ready to follow your instructions.

Hire Employees for Your Business - Hassle-Free! · · 1 like

recomended 5*

 

very serious, is a pleasure working with Saub

Recent archived posts

help with bookie logs · · 1 like

as far as i know, this data "5207154, 1160978475, 9903688091" isnt available in API

if you want to track your bets win and loss you can fetch the events "https://api.torn.com/v2/user/events?striptags=false&limit=100", and then you only get the bets events.

Here's what i did once:

function onOpen() {

  const ui = SpreadsheetApp.getUi();

  ui.createMenu('Torn API')

    .addItem('Fetch & Append Bets', 'fetchTornBookieEvents')

    .addToUi();

}

function fetchTornBookieEvents() {

  const API_KEY = 'API_KEY_GOES_HERE';

  const url = 'https://api.torn.com/v2/user/events?striptags=false&limit=100';

 

  const options = {

    'method': 'get',

    'headers': {

      'accept': 'application/json',

      'Authorization': 'ApiKey ' + API_KEY

    },

    'muteHttpExceptions': true

  };

  try {

    const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

    let sheet = spreadsheet.getSheetByName('BETS');

   

    // Create sheet named "BETS" if it does not exist

    if (!sheet) {

      sheet = spreadsheet.insertSheet('BETS');

    }

    const response = UrlFetchApp.fetch(url, options);

    const statusCode = response.getResponseCode();

   

    if (statusCode !== 200) {

      Logger.log(`API Error (${statusCode}): ${response.getContentText()}`);

      return;

    }

    const json = JSON.parse(response.getContentText());

    const eventsList = json.events || [];

   

    // Timestamp for January 1, 2026 (00:00:00 UTC)

    const TIMESTAMP_2026 = 1767225600;

   

    // Sort from oldest to newest (ascending chronological order)

    eventsList.sort((a, b) => (a.timestamp || 0) - (b.timestamp || 0));

    // Build Summary Dashboard (Rows 1-4) and Table Headers (Row 11) if missing

    if (sheet.getLastRow() < 11) {

      // Dashboard Title

      sheet.getRange("A1").setValue("PERFORMANCE SUMMARY").setFontWeight("bold").setFontSize(12);

     

      // Summary Headers (Row 3)

      const summaryHeaders = [

        ["Total Bets", "Wins", "Losses", "Win Rate", "Total Staked ($)", "Total Payout ($)", "Net Profit ($)", "ROI (%)"]

      ];

      sheet.getRange(3, 1, 1, summaryHeaders[0].length).setValues(summaryHeaders).setFontWeight("bold").setBackground("#f3f3f3");

     

      // Dynamic Summary Formulas (Row 4) referencing range B12:H

      const summaryFormulas = [

        [

          '=COUNTA(B12:B)',

          '=COUNTIF(B12:B, "WON")',

          '=COUNTIF(B12:B, "LOST")',

          '=IFERROR(COUNTIF(B12:B, "WON")/COUNTA(B12:B), 0)',

          '=SUM(F12:F)',

          '=SUM(G12:G)',

          '=SUM(H12:H)',

          '=IFERROR(SUM(H12:H)/SUM(F12:F), 0)'

        ]

      ];

      sheet.getRange(4, 1, 1, summaryFormulas[0].length).setFormulas(summaryFormulas).setFontWeight("bold");

     

      // Format Summary Cells

      sheet.getRange("A4:C4").setNumberFormat("#,##0");

      sheet.getRange("D4").setNumberFormat("0.00%");

      sheet.getRange("E4:G4").setNumberFormat("$#,##0");

      sheet.getRange("H4").setNumberFormat("0.00%");

      // Betting Table Headers (Row 11)

      const tableHeaders = [

        ["DATE", "Status", "Match / Event", "Selection", "Estimated Odds", "Stake ($)", "Payout ($)", "Net Profit/Loss ($)"]

      ];

      sheet.getRange(11, 1, 1, tableHeaders[0].length).setValues(tableHeaders).setFontWeight("bold").setBackground("#e0e0e0");

    }

    const lastRow = sheet.getLastRow();

    // Fetch signatures of already registered bets starting from row 12

    const existingSignatures = new Set();

    if (lastRow >= 12) {

      const existingData = sheet.getRange(12, 1, lastRow - 11, 8).getValues();

      existingData.forEach(row => {

        const dateStr = row[0] instanceof Date ? row[0].getTime() : row[0];

        const signature = `${dateStr}_${row[1]}_${row[2]}_${row[3]}_${row[5]}`;

        existingSignatures.add(signature);

      });

    }

    // Regular expressions to parse HTML bet details

    const winRegex = /You won $([0-9,]+) on your $([0-9,]+) (.*?) bet on (.*?)/i;

    const lossRegex = /You lost your $([0-9,]+) (.*?) bet on (.*?)/i;

    const newRows = [];

    eventsList.forEach(entry => {

      const ts = entry.timestamp || 0;

      if (ts < TIMESTAMP_2026) return;

     

      const txt = entry.event || "";

      const date = ts ? new Date(ts * 1000) : "";

      if (txt.includes("You won")) {

        const matchWin = txt.match(winRegex);

        if (matchWin) {

          const payout = parseFloat(matchWin[1].replace(/,/g, ''));

          const stake = parseFloat(matchWin[2].replace(/,/g, ''));

          const selection = matchWin[3].trim();

          const matchName = matchWin[4].trim();

          const odds = stake > 0 ? payout / stake : 0;

          const net = payout - stake;

          const signature = `${date.getTime()}_WON_${matchName}_${selection}_${stake}`;

          if (!existingSignatures.has(signature)) {

            newRows.push([date, "WON", matchName, selection, odds, stake, payout, net]);

            existingSignatures.add(signature);

          }

        }

      } else if (txt.includes("You lost")) {

        const matchLoss = txt.match(lossRegex);

        if (matchLoss) {

          const stake = parseFloat(matchLoss[1].replace(/,/g, ''));

          const selection = matchLoss[2].trim();

          const matchName = matchLoss[3].trim();

          const payout = 0;

          const odds = 0;

          const net = -stake;

          const signature = `${date.getTime()}_LOST_${matchName}_${selection}_${stake}`;

          if (!existingSignatures.has(signature)) {

            newRows.push([date, "LOST", matchName, selection, odds, stake, payout, net]);

            existingSignatures.add(signature);

          }

        }

      }

    });

    if (newRows.length === 0) {

      Logger.log('No new bets found.');

      return;

    }

    // Append new records starting at row 12 or the next available row

    const startRow = Math.max(12, lastRow + 1);

    sheet.getRange(startRow, 1, newRows.length, 8).setValues(newRows);

    // Apply formatting to newly appended rows

    sheet.getRange(startRow, 1, newRows.length, 1).setNumberFormat("dd/mm/yyyy");

    sheet.getRange(startRow, 5, newRows.length, 1).setNumberFormat("0.00");

    sheet.getRange(startRow, 6, newRows.length, 3).setNumberFormat("$#,##0");

  } catch (error) {

    Logger.log(`Execution Error: ${error.toString()}`);

  }

}

Xanax, EDVDs, Flowers, Plushies, etc ·

up.. Bazaar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc ·

Bazzar Open

Wrong awards differs from HoF/API and profile ·

hello

 

i've detected a couple weeks ago that the amount of awards i have are different in the hall of fame and on my profile.

 

i was waiting till i get more awards to see if changes, but keeps the same. i have 2 more awards than shown on HoF and API

 

Hall of Fame: 565
Api awards:565

Profile awards: 567

 

Xanax, EDVDs, Flowers, Plushies, etc · · 1 like

Bazzar Open

Xanax, EDVDs, Flowers, Plushies, etc · · 19 likes

[BUYING] Up to ~99% Market Value

 

🔗 Quick Links

 

📦 Purchasing Guidelines

What I Buy:

  • Plushies & Flowers (Individual items or full sets)

  • Drugs (Including Xanax)

  • Common Commodities & High-Volume Trade Items

 

What I Do Not Buy:

  • RW Weapons, RW Armor, Properties, Cosmetics, or Rare Collector Items.

 

 

🛡️ Service Commitments

  • Competitive Pricing: Up to ~99% Market Value.

  • Security: Mug-safe execution and fast transaction turnarounds. i dont mug, just check my stats to confirm it

  • Reliability: Active daily with transparent price lists.

 

 

 

Thank you to everyone who continues to trade with me. 

Buying or Selling a Company? -Advertise Here- ·

Looking to buy a +7* Gent Strip Club

 

hit me with your best offer.

Looking for Work? Post your Stats here ·

LF Only for Gent Strip Club 10* after 2nd August

 

 

Manual labor 111,088
Intelligence 121,514
Endurance 109,480
Total 342,082

 

 

Also buying trains if available to buy.

Buying or selling trains? ~Advertise Here~ ·

Looking to buy MAN and END trains, till hit 100k on both.


10* only, please

mail me your prices

 

Working Stats

  • Manual labor 93,811
  • Intelligence 120,963
  • Endurance 90,835
  • Total 305,609

[HIRING] for 9*/10* OIL 150k+MAN or INT ·

up

Buying or Selling a Company? -Advertise Here- ·

I might be interested in sell a 10* Oil Rig

mail me your inquires and offers

 

30man

Huge Storage Room
Large Staff Room

 

 

dont send irrealistic offers plz

[HIRING] for 9*/10* OIL 150k+MAN or INT ·

up