There are 6 previous versions of this script.
Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)
// ==UserScript==
// @name TheCrims Plus
// @namespace http://userscripts.org/scripts/show/31066
// @description TheCrims Plus is a calculator, beta
// @include *.thecrims.com/*
// ==/UserScript==
/* ***** BEGIN LICENSE BLOCK *****
* TheCrims Plus - Your game assistent
* Version: 0.4 beta
*
*
* ***** END LICENSE BLOCK ***** */
// Languages
// English
var lang_gb = new Array();
// Drugs
lang_gb['painkillers'] = 'Painkillers';
lang_gb['weed'] = 'Weed';
lang_gb['booze'] = 'Booze';
lang_gb['magic mushrooms'] = 'Magic mushrooms';
lang_gb['lsd'] = 'LSD';
lang_gb['hash'] = 'Hash';
lang_gb['ghb'] = 'GHB';
lang_gb['ecstacy'] = 'Ecstacy';
lang_gb['opium'] = 'Opium';
lang_gb['amphetamine'] = 'Amphetamine';
lang_gb['special k'] = 'Special k';
lang_gb['morphine'] = 'Morphine';
lang_gb['cocaine'] = 'Cocaine';
lang_gb['heroin'] = 'Heroin';
// Armor
lang_gb['Diaper'] = 'Diaper';
lang_gb['Leather Jacket'] = 'Leather jacket';
lang_gb['Shining body armor'] = 'Shining body armor';
lang_gb['Body armor'] = 'Body armor';
lang_gb['Nano Fiber Combat Jacket'] = 'Nano fiber combat jacket';
lang_gb['Nomex plated armor'] = 'Nomex plated armor';
// Strings used by the script
lang_gb['SOLO SAFE'] = 'SOLO SAFE';
lang_gb['NORMAL'] = 'NORMAL';
// Swedish
var lang_se = new Array();
// Droger
lang_se['weed'] = 'Gräs';
lang_se['painkillers'] = 'Smärtstillande';
lang_se['booze'] = 'Sprit';
lang_se['magic mushrooms'] = 'Magic mushrooms';
lang_se['lsd'] = 'LSD';
lang_se['hash'] = 'Hasch';
lang_se['ghb'] = 'GHB';
lang_se['ecstacy'] = 'Ecstacy';
lang_se['opium'] = 'Opium';
lang_se['amphetamine'] = 'Amfetamin';
lang_se['special k'] = 'Special k';
lang_se['morphine'] = 'Morfin';
lang_se['cocaine'] = 'Kokain';
lang_se['heroin'] = 'Heroin';
// Rustningar
lang_se['Diaper'] = 'Blöja';
lang_se['Leather Jacket'] = 'Läderjacka';
lang_se['Shining body armor'] = 'Blänkande kroppsskydd';
lang_se['Body armor'] = 'Skottsäker väst';
lang_se['Nano Fiber Combat Jacket'] = 'Skottsäker jacka av nano-fiber';
lang_se['Nomex plated armor'] = 'Nomex-pläterad rustning';
// Strings used by the script
lang_se['SOLO SAFE'] = 'SOLO SAFE';
lang_se['NORMAL'] = 'NORMAL';
// PL
var lang_pl = new Array();
lang_pl['weed'] = 'Zioło';
lang_pl['painkillers'] = 'Piguły';
lang_pl['booze'] = 'Piwo';
lang_pl['magic mushrooms'] = 'Grzybki';
lang_pl['hash'] = 'Hash';
lang_pl['lsd'] = 'LSD';
lang_pl['ghb'] = 'GHB';
lang_pl['ecstacy'] = 'Ecstasy';
lang_pl['opium'] = 'Opium';
lang_pl['amphetamine'] = 'Amfetamina';
lang_pl['cocaine'] = 'Kokaina';
lang_pl['special k'] = 'Special K';
lang_pl['morphine'] = 'Morfina';
lang_pl['heroin'] = 'Heroina';
lang_pl['Diaper'] = 'Pielucha';
lang_pl['Leather Jacket'] = 'Kurtka skórzana';
lang_pl['Shining body armor'] = 'Błyszcząca zbroja';
lang_pl['Body armor'] = 'Kamizelka kuloodporna';
lang_pl['Nano Fiber Combat Jacket'] = 'Węglowa kamizelka ochronna';
lang_pl['Nomex plated armor'] = 'Pancerz z nomexu';
// ES
var lang_es = new Array();
lang_es['weed'] = 'Marihuana';
lang_es['painkillers'] = 'Analgésicos';
lang_es['booze'] = 'Alcohol';
lang_es['magic mushrooms'] = 'Hongos alucinógenos';
lang_es['hash'] = 'Hash';
lang_es['lsd'] = 'LSD';
lang_es['ghb'] = 'GHB';
lang_es['ecstacy'] = 'Extasis';
lang_es['opium'] = 'Opio';
lang_es['amphetamine'] = 'Anfetamina';
lang_es['cocaine'] = 'Cocaina';
lang_es['special k'] = 'Especial K';
lang_es['morphine'] = 'Morfina';
lang_es['heroin'] = 'Heroina';
lang_es['Diaper'] = 'Diper';
lang_es['Leather Jacket'] = 'Chaqueta De Cuero';
lang_es['Shining body armor'] = 'Armadura brillante';
lang_es['Body armor'] = 'Armadura Corporal';
lang_es['Nano Fiber Combat Jacket'] = 'Chaqueta de Combate con Nano Fibra';
lang_es['Nomex plated armor'] = 'Armadura plateada Nomex';
// PT
var lang_pt = new Array();
lang_pt['weed'] = 'Marijuana';
lang_pt['painkillers'] = 'Analgésicos';
lang_pt['booze'] = 'Alcoól';
lang_pt['magic mushrooms'] = 'Cogumelos alucinógenicos';
lang_pt['hash'] = 'Haxixe';
lang_pt['lsd'] = 'LSD';
lang_pt['ghb'] = 'GHB';
lang_pt['ecstacy'] = 'Ecstacy';
lang_pt['opium'] = 'Ópio';
lang_pt['amphetamine'] = 'Anfetamina';
lang_pt['cocaine'] = 'Cocaína';
lang_pt['special k'] = 'Special K';
lang_pt['morphine'] = 'Morfina';
lang_pt['heroin'] = 'Heroína';
lang_pt['Diaper'] = 'Colete';
lang_pt['Leather Jacket'] = 'Casaco de Cabedal';
lang_pt['Shining body armor'] = 'Casaco brihante';
lang_pt['Body armor'] = 'Colete a prova de balas';
lang_pt['Nano Fiber Combat Jacket'] = 'Casaco de combate futurista';
lang_pt['Nomex plated armor'] = 'Casaco feito de Nomex';
// SI
var lang_si = new Array();
lang_si['weed'] = 'Travca';
lang_si['painkillers'] = 'Painkillerji';
lang_si['booze'] = 'Alko';
lang_si['magic mushrooms'] = 'Magic mushrooms';
lang_si['hash'] = 'Hašiš';
lang_si['lsd'] = 'LSD';
lang_si['ghb'] = 'GHB';
lang_si['ecstacy'] = 'Ekstazy';
lang_si['opium'] = 'Opium';
lang_si['amphetamine'] = 'Amphetamine';
lang_si['cocaine'] = 'Cocaine';
lang_si['special k'] = 'Special K';
lang_si['morphine'] = 'Morfij';
lang_si['heroin'] = 'Heroin';
lang_si['Diaper'] = 'Plenica';
lang_si['Leather Jacket'] = 'Usnjena jakna';
lang_si['Shining body armor'] = 'SWAT neprebojni jopič';
lang_si['Body armor'] = 'Jopič Slovenske policije';
lang_si['Nano Fiber Combat Jacket'] = 'Nano fiber bojni jopič';
lang_si['Nomex plated armor'] = 'Nomex neprebojni jopič';
// CZ
var lang_cz = new Array();
lang_cz['weed'] = 'Travka';
lang_cz['painkillers'] = 'Léky';
lang_cz['booze'] = 'Chlast';
lang_cz['magic mushrooms'] = 'Houbičky';
lang_cz['hash'] = 'Hašiš';
lang_cz['lsd'] = 'LSD';
lang_cz['ghb'] = 'GHB';
lang_cz['ecstacy'] = 'Exstáze';
lang_cz['opium'] = 'Opium';
lang_cz['amphetamine'] = 'Amfetamin';
lang_cz['cocaine'] = 'Kokain';
lang_cz['special k'] = 'Ketamin';
lang_cz['morphine'] = 'Morfium';
lang_cz['heroin'] = 'Herák';
lang_cz['Diaper'] = 'Plína';
lang_cz['Leather Jacket'] = 'Kožená vesta';
lang_cz['Shining body armor'] = 'Kovová zbroj';
lang_cz['Body armor'] = 'Celotělní zbroj';
lang_cz['Nano Fiber Combat Jacket'] = 'Bojová vesta z nano vláken';
lang_cz['Nomex plated armor'] = 'Nomex plátová zbroj';
// DE
var lang_de = new Array();
lang_de['weed'] = 'Gras';
lang_de['painkillers'] = 'Schmerztabletten';
lang_de['booze'] = 'Bier';
lang_de['magic mushrooms'] = 'Pilze';
lang_de['hash'] = 'Hasch';
lang_de['lsd'] = 'LSD';
lang_de['ghb'] = 'GHB';
lang_de['ecstacy'] = 'Ecstacy';
lang_de['opium'] = 'Opium';
lang_de['amphetamine'] = 'Amphetamine';
lang_de['cocaine'] = 'Kokain';
lang_de['special k'] = 'Ketamin';
lang_de['morphine'] = 'Morphium';
lang_de['heroin'] = 'Heroin';
lang_de['Diaper'] = 'Windel';
lang_de['Leather Jacket'] = 'Lederjacke';
lang_de['Shining body armor'] = 'Glänzende Rüstung';
lang_de['Body armor'] = 'Körperrüstung';
lang_de['Nano Fiber Combat Jacket'] = 'Sehr gute Jacke';
lang_de['Nomex plated armor'] = 'Nomax besetzte Rüstung';
// RO
var lang_ro = new Array();
lang_ro['weed'] = 'Weed';
lang_ro['painkillers'] = 'Painkillers';
lang_ro['booze'] = 'Booze';
lang_ro['magic mushrooms'] = 'Magic mushrooms';
lang_ro['hash'] = 'Hasis';
lang_ro['lsd'] = 'LSD';
lang_ro['ghb'] = 'GHB';
lang_ro['ecstacy'] = 'Ecstasy';
lang_ro['opium'] = 'Opium';
lang_ro['amphetamine'] = 'Amfetamina';
lang_ro['cocaine'] = 'Cocaina';
lang_ro['special k'] = 'Special K';
lang_ro['morphine'] = 'Morfina';
lang_ro['heroin'] = 'Heroina';
lang_ro['Diaper'] = 'Scutec';
lang_ro['Leather Jacket'] = 'Jaketa Piele';
lang_ro['Shining body armor'] = 'Armura de corp stralucitoare';
lang_ro['Body armor'] = 'Armura de Corp';
lang_ro['Nano Fiber Combat Jacket'] = 'Jaketa Nano Fibra';
lang_ro['Nomex plated armor'] = 'Armura Nomex';
// LT
var lang_lt = new Array();
lang_lt['weed'] = 'Žolė';
lang_lt['painkillers'] = 'Vaistai';
lang_lt['booze'] = 'Gėralas';
lang_lt['magic mushrooms'] = 'Magiški grybai';
lang_lt['hash'] = 'Hašas';
lang_lt['lsd'] = 'LSD';
lang_lt['ghb'] = 'GHB';
lang_lt['ecstacy'] = 'Ratai';
lang_lt['opium'] = 'Opijus';
lang_lt['amphetamine'] = 'Amfa';
lang_lt['cocaine'] = 'Kokainas';
lang_lt['special k'] = 'Ypatingasis K';
lang_lt['morphine'] = 'Morfijus';
lang_lt['heroin'] = 'Heroinas';
lang_lt['Diaper'] = 'Sauskelnės';
lang_lt['Leather Jacket'] = 'Odinis švarkas';
lang_lt['Shining body armor'] = 'Blizgantys kūno šarvai';
lang_lt['Body armor'] = 'Kūno šarvai';
lang_lt['Nano Fiber Combat Jacket'] = 'Kovinis švarkas';
lang_lt['Nomex plated armor'] = 'Farų apranga';
// EL
var lang_el = new Array();
lang_el['weed'] = 'Χόρτο';
lang_el['painkillers'] = 'Παυσίπονα';
lang_el['booze'] = 'Οινόπνευμα';
lang_el['magic mushrooms'] = 'Μανιτάρια';
lang_el['hash'] = 'Χασίς';
lang_el['lsd'] = 'LSD';
lang_el['ghb'] = 'GHB';
lang_el['ecstacy'] = 'Ecstacy';
lang_el['opium'] = 'Όπιο';
lang_el['amphetamine'] = 'Αμφεταμίνες';
lang_el['cocaine'] = 'Κοκαΐνη';
lang_el['special k'] = 'Σπέσιαλ Κ';
lang_el['morphine'] = 'Μορφίνη';
lang_el['heroin'] = 'Πρέζα';
lang_el['Diaper'] = 'Πάνα';
lang_el['Leather Jacket'] = 'Πέτσινο μπουφάν';
lang_el['Shining body armor'] = 'Πανοπλία αρχαίου Έλληνα';
lang_el['Body armor'] = 'Αλεξίσφαιρο γιλέκο';
lang_el['Nano Fiber Combat Jacket'] = 'Μπουφάν μάχης με νανο-ίνες';
lang_el['Nomex plated armor'] = 'Θωράκιση Nomex';
// NO
var lang_no = new Array();
lang_no['weed'] = 'Fyrings';
lang_no['painkillers'] = 'Smertestillende';
lang_no['booze'] = 'Sprit';
lang_no['magic mushrooms'] = 'Fleinsopp';
lang_no['hash'] = 'hasj';
lang_no['lsd'] = 'LSD';
lang_no['ghb'] = 'GhB';
lang_no['ecstacy'] = 'Ecstacy';
lang_no['opium'] = 'Opium';
lang_no['amphetamine'] = 'Amfetamin';
lang_no['cocaine'] = 'Kokain';
lang_no['special k'] = 'Valium';
lang_no['morphine'] = 'Morfin';
lang_no['heroin'] = 'Heroin';
lang_no['Diaper'] = 'Bleie';
lang_no['Leather Jacket'] = 'Lær jakke';
lang_no['Shining body armor'] = 'Skinnende rustning';
lang_no['Body armor'] = 'Skuddsikker vest';
lang_no['Nano Fiber Combat Jacket'] = 'Nano fiber Krigs jakke';
lang_no['Nomex plated armor'] = 'Nomex pansret beskyttelse';
// Fix arabic
// IT
var lang_it = new Array();
lang_it['weed'] = 'Erba';
lang_it['painkillers'] = 'Analgesico';
lang_it['booze'] = 'Birra';
lang_it['magic mushrooms'] = 'Funghi magici';
lang_it['hash'] = 'Hash';
lang_it['lsd'] = 'LSD';
lang_it['ghb'] = 'GHB';
lang_it['ecstacy'] = 'Ecstasy';
lang_it['opium'] = 'Oppio';
lang_it['amphetamine'] = 'Anfetamina';
lang_it['cocaine'] = 'Cocaina';
lang_it['special k'] = 'Special K';
lang_it['morphine'] = 'Morfina';
lang_it['heroin'] = 'Eroina';
lang_it['Diaper'] = 'Pannolino';
lang_it['Leather Jacket'] = 'Giubbino di pelle';
lang_it['Shining body armor'] = 'Armatura';
lang_it['Body armor'] = 'Giubbino Antiproiettili';
lang_it['Nano Fiber Combat Jacket'] = 'Giubbotto antiproiettili Nano Fiber';
lang_it['Nomex plated armor'] = 'Giubbotto Antiproiettili Nomex';
// RU
var lang_ru = new Array();
lang_ru['weed'] = 'Табак';
lang_ru['painkillers'] = 'Болеутоляющее';
lang_ru['booze'] = 'Спиртное';
lang_ru['magic mushrooms'] = 'Волшебные грибки';
lang_ru['hash'] = 'Мешанина';
lang_ru['lsd'] = 'ЛСД';
lang_ru['ghb'] = 'ГХБ';
lang_ru['ecstacy'] = 'Экстази';
lang_ru['opium'] = 'Опиум';
lang_ru['amphetamine'] = 'Амфетамин';
lang_ru['cocaine'] = 'Кокаин';
lang_ru['special k'] = 'Специальный K';
lang_ru['morphine'] = 'Морфий';
lang_ru['heroin'] = 'Героин';
lang_ru['Diaper'] = 'Подгузник';
lang_ru['Leather Jacket'] = 'Кожанная куртка';
lang_ru['Shining body armor'] = 'Блестящий бронежелет';
lang_ru['Body armor'] = 'Бронежелет';
lang_ru['Nano Fiber Combat Jacket'] = 'Бойцовская куртка';
lang_ru['Nomex plated armor'] = 'Форма Фаров';
// BR
var lang_br = new Array();
lang_br['weed'] = 'Maconha';
lang_br['painkillers'] = 'Analgésicos';
lang_br['booze'] = 'Cerva';
lang_br['magic mushrooms'] = 'Cogumelos Alucinógenos';
lang_br['hash'] = 'Hash';
lang_br['lsd'] = 'LSD';
lang_br['ghb'] = 'GHB';
lang_br['ecstacy'] = 'Ecstacy';
lang_br['opium'] = 'Ópio';
lang_br['amphetamine'] = 'Anfetamina';
lang_br['cocaine'] = 'Cocaína';
lang_br['special k'] = 'Special K';
lang_br['morphine'] = 'Morfina';
lang_br['heroin'] = 'Heroína';
lang_br['Diaper'] = 'Fraldinha';
lang_br['Leather Jacket'] = 'Jaqueta de couro';
lang_br['Shining body armor'] = 'Colete brilhante metálico';
lang_br['Body armor'] = 'Colete corporal';
lang_br['Nano Fiber Combat Jacket'] = 'Jaqueta Nano de fibra';
lang_br['Nomex plated armor'] = 'Colete Nomex de Aço';
// TR
var lang_tr = new Array();
lang_tr['weed'] = 'Ot';
lang_tr['painkillers'] = 'Aspirin';
lang_tr['booze'] = 'İçki';
lang_tr['magic mushrooms'] = 'Mantar';
lang_tr['hash'] = 'Esrar';
lang_tr['lsd'] = 'LSD';
lang_tr['ghb'] = 'Gamma Hidroksibütrik asit (GHB)';
lang_tr['ecstacy'] = 'Ecstacy';
lang_tr['opium'] = 'Afyon';
lang_tr['amphetamine'] = 'Amfetamin';
lang_tr['cocaine'] = 'Kokain';
lang_tr['special k'] = 'Ketamin(Special K)';
lang_tr['morphine'] = 'Morfin';
lang_tr['heroin'] = 'Eroin';
lang_tr['Diaper'] = 'Bez';
lang_tr['Leather Jacket'] = 'Deri ceket';
lang_tr['Shining body armor'] = 'Parlak Zırh';
lang_tr['Body armor'] = 'Kurşun Geçirmez Yelek';
lang_tr['Nano Fiber Combat Jacket'] = 'Nano Fiber Savaş Ceketi';
lang_tr['Nomex plated armor'] = 'Nomex kaplı zırh';
// ID
var lang_id = new Array();
lang_id['weed'] = 'Ganja';
lang_id['painkillers'] = 'Painkillers';
lang_id['booze'] = 'Topi Miring';
lang_id['magic mushrooms'] = 'Jamur gaib';
lang_id['hash'] = 'Hash';
lang_id['lsd'] = 'LSD';
lang_id['ghb'] = 'GHB';
lang_id['ecstacy'] = 'Inex';
lang_id['opium'] = 'Opium';
lang_id['amphetamine'] = 'Amphetamine';
lang_id['cocaine'] = 'Kokain';
lang_id['special k'] = 'Spesial K';
lang_id['morphine'] = 'Morpin';
lang_id['heroin'] = 'Heroin';
lang_id['Diaper'] = 'Popok';
lang_id['Leather Jacket'] = 'Jaket kulit';
lang_id['Shining body armor'] = 'Baju pelindung kinclong';
lang_id['Body armor'] = 'Baju pelindung tubuh';
lang_id['Nano Fiber Combat Jacket'] = 'Jaket Tempur Nano Fiber';
lang_id['Nomex plated armor'] = 'Baju pelindung Nomex';
// AL
var lang_al = new Array();
lang_al['weed'] = 'Weed';
lang_al['painkillers'] = 'Painkillers';
lang_al['booze'] = 'Booze';
lang_al['magic mushrooms'] = 'Magic mushrooms';
lang_al['hash'] = 'Tasjebab';
lang_al['lsd'] = 'LSD';
lang_al['ghb'] = 'GHB';
lang_al['ecstacy'] = 'Ecstacy';
lang_al['opium'] = 'Opium';
lang_al['amphetamine'] = 'Amphetamine';
lang_al['cocaine'] = 'Cocaine';
lang_al['special k'] = 'Special K';
lang_al['morphine'] = 'Morfine';
lang_al['heroin'] = 'Heroin';
lang_al['Diaper'] = 'Bebelino';
lang_al['Leather Jacket'] = 'Xhakete lekure';
lang_al['Shining body armor'] = 'Mbrojtese ilire';
lang_al['Body armor'] = 'Mbrojtese kundra plumb';
lang_al['Nano Fiber Combat Jacket'] = 'Xhakete beteje me fije fibri';
lang_al['Nomex plated armor'] = 'Mbrojtese nomex e kromuar';
// LV
var lang_lv = new Array();
lang_lv['weed'] = 'Zāle';
lang_lv['painkillers'] = 'Tabletes';
lang_lv['booze'] = 'Šņabis';
lang_lv['magic mushrooms'] = 'Maģiskās sēnes';
lang_lv['hash'] = 'Hašs';
lang_lv['lsd'] = 'LSD';
lang_lv['ghb'] = 'GHB';
lang_lv['ecstacy'] = 'Ekstazī tabletes';
lang_lv['opium'] = 'Opijs';
lang_lv['amphetamine'] = 'Amfetamīns';
lang_lv['cocaine'] = 'Kokaīns';
lang_lv['special k'] = 'Speciālais K';
lang_lv['morphine'] = 'Vitja';
lang_lv['heroin'] = 'Heroīns';
lang_lv['Diaper'] = 'Autiņi';
lang_lv['Leather Jacket'] = 'Ādas jaka';
lang_lv['Shining body armor'] = 'Spīdošas ķermeņa bruņas';
lang_lv['Body armor'] = 'Ķermeņa bruņas';
lang_lv['Nano Fiber Combat Jacket'] = 'Nano šķiedru kaujas jaka';
lang_lv['Nomex plated armor'] = 'Nomex plākšņu bruņas';
// AT
var lang_at = new Array();
lang_at['weed'] = 'Gras';
lang_at['painkillers'] = 'Schmerztabletten';
lang_at['booze'] = 'Bier';
lang_at['magic mushrooms'] = 'Pilze';
lang_at['hash'] = 'Hasch';
lang_at['lsd'] = 'LSD';
lang_at['ghb'] = 'GHB';
lang_at['ecstacy'] = 'XTC';
lang_at['opium'] = 'Opium';
lang_at['amphetamine'] = 'Amfetamine';
lang_at['cocaine'] = 'Koks';
lang_at['special k'] = 'Ketamin';
lang_at['morphine'] = 'Morphium';
lang_at['heroin'] = 'Heroin';
lang_at['Diaper'] = 'Windel';
lang_at['Leather Jacket'] = 'Lederjacke';
lang_at['Shining body armor'] = 'Rüstung';
lang_at['Body armor'] = 'Körperweste';
lang_at['Nano Fiber Combat Jacket'] = 'Nano';
lang_at['Nomex plated armor'] = 'Nomex';
// SK
var lang_sk = new Array();
lang_sk['weed'] = 'Ganja';
lang_sk['painkillers'] = 'Lieky';
lang_sk['booze'] = 'Chľast';
lang_sk['magic mushrooms'] = 'Halucinogénne hubičky';
lang_sk['hash'] = 'Hašiš';
lang_sk['lsd'] = 'LSD';
lang_sk['ghb'] = 'GHB';
lang_sk['ecstacy'] = 'Extáza';
lang_sk['opium'] = 'Ópium';
lang_sk['amphetamine'] = 'Amfetamín';
lang_sk['cocaine'] = 'Kokaín';
lang_sk['special k'] = 'Ketamín';
lang_sk['morphine'] = 'Morfium';
lang_sk['heroin'] = 'Heroín';
lang_sk['Diaper'] = 'Plienky';
lang_sk['Leather Jacket'] = 'Kožená vesta';
lang_sk['Shining body armor'] = 'Kovová zbroj';
lang_sk['Body armor'] = 'Celotelová zbroj';
lang_sk['Nano Fiber Combat Jacket'] = 'Bojová vesta z nanovlákien';
lang_sk['Nomex plated armor'] = 'Nomexová zbroj';
// FR
var lang_fr = new Array();
lang_fr['weed'] = 'Herbe';
lang_fr['painkillers'] = 'Pilules';
lang_fr['booze'] = 'Bière';
lang_fr['magic mushrooms'] = 'Champignons Hallucinogènes';
lang_fr['hash'] = 'Hashish';
lang_fr['lsd'] = 'LSD';
lang_fr['ghb'] = 'GHB';
lang_fr['ecstacy'] = 'Extasy';
lang_fr['opium'] = 'Opium';
lang_fr['amphetamine'] = 'Amphets';
lang_fr['cocaine'] = 'Coke';
lang_fr['special k'] = 'Special K';
lang_fr['morphine'] = 'Morphine';
lang_fr['heroin'] = 'Héro';
lang_fr['Diaper'] = 'Couche culotte';
lang_fr['Leather Jacket'] = 'Veste en cuir';
lang_fr['Shining body armor'] = 'Armure Métallique';
lang_fr['Body armor'] = 'Gilet pare-balles';
lang_fr['Nano Fiber Combat Jacket'] = 'Veste de Combat Nano-Fibres';
lang_fr['Nomex plated armor'] = 'Armure blindée';
// FI
var lang_fi = new Array();
lang_fi['weed'] = 'Ruoho';
lang_fi['painkillers'] = 'Särkylääkkeitä';
lang_fi['booze'] = 'Viina';
lang_fi['magic mushrooms'] = 'Kärpässieniä';
lang_fi['hash'] = 'Hasis';
lang_fi['lsd'] = 'LSD';
lang_fi['ghb'] = 'GHB';
lang_fi['ecstacy'] = 'Ekstaasi';
lang_fi['opium'] = 'Oopiumi';
lang_fi['amphetamine'] = 'Amfetamiini';
lang_fi['cocaine'] = 'Kokaiini';
lang_fi['special k'] = 'Erikois K';
lang_fi['morphine'] = 'Morphiini';
lang_fi['heroin'] = 'Heppa';
lang_fi['Diaper'] = 'Vaippa';
lang_fi['Leather Jacket'] = 'Nahkatakki';
lang_fi['Shining body armor'] = 'Kiiltävä wnb-suoja';
lang_fi['Body armor'] = 'Luotiliivi';
lang_fi['Nano Fiber Combat Jacket'] = 'Nano Kuitu KevlarTakki';
lang_fi['Nomex plated armor'] = 'Nomex luotiliivi';
// CS
var lang_cs = new Array();
lang_cs['weed'] = 'Weed';
lang_cs['painkillers'] = 'Bensedin';
lang_cs['booze'] = 'Pivo';
lang_cs['magic mushrooms'] = 'Magične pečurke';
lang_cs['hash'] = 'Hašiš';
lang_cs['lsd'] = 'LSD';
lang_cs['ghb'] = 'GHB';
lang_cs['ecstacy'] = 'Ekstazi';
lang_cs['opium'] = 'Opijum';
lang_cs['amphetamine'] = 'Amfetamin';
lang_cs['cocaine'] = 'Kokain';
lang_cs['special k'] = 'Special K';
lang_cs['morphine'] = 'Morfijum';
lang_cs['heroin'] = 'Heroin';
lang_cs['Diaper'] = 'Pelena';
lang_cs['Leather Jacket'] = 'Kožna Jakna';
lang_cs['Shining body armor'] = 'Sjajni Metalni Oklop';
lang_cs['Body armor'] = 'Pancir';
lang_cs['Nano Fiber Combat Jacket'] = 'Nano Fiber Borbena Jakna';
lang_cs['Nomex plated armor'] = 'Nomeks Zaštitno Odelo';
// Fix CN
// MS
var lang_ms = new Array();
lang_ms['weed'] = 'Ganja';
lang_ms['painkillers'] = 'Ubat tahan sakit';
lang_ms['booze'] = 'Arak';
lang_ms['magic mushrooms'] = 'Cendawan silap mata';
lang_ms['hash'] = 'Hash';
lang_ms['lsd'] = 'LSD';
lang_ms['ghb'] = 'GHB';
lang_ms['ecstacy'] = 'Pil Khayal';
lang_ms['opium'] = 'Candu';
lang_ms['amphetamine'] = 'Amphetamin';
lang_ms['cocaine'] = 'Kokain';
lang_ms['special k'] = 'Special K';
lang_ms['morphine'] = 'Morfin';
lang_ms['heroin'] = 'Heroin';
lang_ms['Diaper'] = 'Lampin';
lang_ms['Leather Jacket'] = 'Jaket kulit';
lang_ms['Shining body armor'] = 'Baju perisai berkilat';
lang_ms['Body armor'] = 'Baju perisai';
lang_ms['Nano Fiber Combat Jacket'] = 'Jaket Tempur Serat Nano';
lang_ms['Nomex plated armor'] = 'Baju perisai nomex';
//BG
var lang_bg = new Array();
lang_bg['weed'] = 'Трева';
lang_bg['painkillers'] = 'Болкоуспокояващи';
lang_bg['booze'] = 'Пиене';
lang_bg['magic mushrooms'] = 'Магически гъбки';
lang_bg['hash'] = 'Hash';
lang_bg['lsd'] = 'LSD';
lang_bg['ghb'] = 'GHB';
lang_bg['ecstacy'] = 'Екстази';
lang_bg['opium'] = 'Опиум';
lang_bg['amphetamine'] = 'Амфетамин';
lang_bg['cocaine'] = 'Кокаин';
lang_bg['special k'] = 'Special K';
lang_bg['morphine'] = 'Morphine';
lang_bg['heroin'] = 'Хероин';
lang_bg['Diaper'] = 'Памперс';
lang_bg['Leather Jacket'] = 'Кожено яке';
lang_bg['Shining body armor'] = 'Лъскава броня';
lang_bg['Body armor'] = 'Бронежилетка';
lang_bg['Nano Fiber Combat Jacket'] = 'Нанофибрично бойно яке';
lang_bg['Nomex plated armor'] = 'Боен костюм';
//Fix IL
//NL
var lang_nl = new Array();
lang_nl['weed'] = 'Weed';
lang_nl['painkillers'] = 'Painkillers';
lang_nl['booze'] = 'Booze';
lang_nl['magic mushrooms'] = 'Magic mushrooms';
lang_nl['hash'] = 'Hash';
lang_nl['lsd'] = 'LSD';
lang_nl['ghb'] = 'GHB';
lang_nl['ecstacy'] = 'Ecstacy';
lang_nl['opium'] = 'Opium';
lang_nl['amphetamine'] = 'Amphetamine';
lang_nl['cocaine'] = 'Cocaine';
lang_nl['special k'] = 'Special K';
lang_nl['morphine'] = 'Morphine';
lang_nl['heroin'] = 'Heroïne';
lang_nl['Diaper'] = 'Luier';
lang_nl['Leather Jacket'] = 'Lederen Jas';
lang_nl['Shining body armor'] = 'Glimmende kogelvrije vest';
lang_nl['Body armor'] = 'Kogelvrije vest';
lang_nl['Nano Fiber Combat Jacket'] = 'Nano Fiber Combat Jacket';
lang_nl['Nomex plated armor'] = 'Nomex plated armor';
// The only way I could find the language was in the cookie
var tc_lang = document.cookie.split('tc_lang=')[1].split(';')[0];
// Set Language
switch(tc_lang){
case 'GB':
language = lang_gb;
break;
case 'SE':
language = lang_se;
break;
case 'PL':
language = lang_pl;
break;
case 'ES':
language = lang_es;
break;
case 'PT':
language = lang_pt;
break;
case 'SI':
language = lang_si;
break;
case 'CZ':
language = lang_cz;
break;
case 'DE':
language = lang_de;
break;
case 'RO':
language = lang_ro;
break;
case 'LT':
language = lang_lt;
break;
case 'EL':
language = lang_el;
break;
case 'NO':
language = lang_no;
break;
/*
case 'AR':
break; */
case 'IT':
language = lang_it;
break;
case 'RU':
language = lang_ru;
break;
case 'BR':
language = lang_br;
break;
case 'TR':
language = lang_tr;
break;
case 'ID':
language = lang_id;
break;
case 'AL':
language = lang_al;
break;
case 'LV':
language = lang_lv;
break;
case 'AT':
language = lang_at;
break;
case 'SK':
language = lang_sk;
break;
case 'FR':
language = lang_fr;
break;
case 'FI':
language = lang_fi;
break;
case 'CS':
language = lang_cs;
break;
/* case 'CN':
break;*/
case 'MS':
language = lang_ms;
break;
case 'BG':
language = lang_bg;
break;
/*case 'IL':
break;*/
case 'NL':
language = lang_nl;
break;
default: alert("Your language is'nt supported yet");
}
var Profile = new Profile();
var PageEngine = new PageEngine();
PageEngine.extractStats(language, Profile);
function PageEngine() {
// Set to true if something doesnt work
this.debug = false;
//I love this one
getElementsByClass = function(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
if(classElements[0]==null)
return false;
return classElements;
}
/**
* Remove a element, by string or element
* @input element or id/class
* @input index of element if class name
*/
this.DeleteElement = function(element, index){
if(typeof element == "string")
element = document.getElementById(element)? document.getElementById(element) : getElementsByClass(element)[index];
if(element)
return element.parentNode.removeChild(element);
}
// Used to place new info in content_right
this.InsertBefore = function(newElement, referenceElement){
referenceElement.parentNode.insertBefore(newElement, referenceElement);
}
this.InsertAfter = function(newElement, referenceElement){
referenceElement.parentNode.insertBefore(newElement, referenceElement.nextSibling);
}
this.extractStats = function(language, profile){
// the box that contains almost all player info
var content_right = document.getElementById('content_right');
var player_info = getElementsByClass('menuyellowtext', content_right);
if(player_info){
var arms_info = document.getElementById("content_right").getElementsByTagName("li");
//Used to not screw up player info while using gm_setValue
profile.playerName = player_info[0].innerHTML;
// Stats
profile.stamina = parseInt(content_right.getElementsByTagName('td')[3].innerHTML.split('<')[0].split(':')[1]);
profile.respect = parseInt(player_info[2].innerHTML);
profile.cash = parseInt(player_info[7].innerHTML.substring(1).replace(/,/g, ''));
// you have to go to armsdealer to get min weapon_damage
if (document.location.pathname=="/armsdealer.php" && document.location.toString().indexOf('section') == -1){
GM_setValue(profile.playerName + "minDamage", 0);
var info = getElementsByClass('nicktext');
var min_Damage = parseInt(info[0].parentNode.parentNode.getElementsByTagName('td')[2].innerHTML);
if(!min_Damage)
min_Damage=0;
GM_setValue(profile.playerName + "minDamage", min_Damage);
}
// Get the information above
profile.weaponDamage = GM_getValue(profile.playerName + "minDamage");
profile.armorNumber = GetArmor(arms_info[3].innerHTML.split('>')[1], language);
// Set error message if < 100
profile.durability = parseInt(arms_info[2].innerHTML.split(':')[1]);
// Power
profile.intelligence = parseInt(player_info[3].innerHTML);
profile.charisma = parseInt(player_info[4].innerHTML);
profile.strength = parseInt(player_info[5].innerHTML);
profile.tolerance = parseInt(player_info[6].innerHTML);
if(this.debug){
alert("Player name: " + profile.playerName +
"\nStamina: " + profile.stamina +
"\nRespect:" + profile.respect +
"\nCash: " + profile.cash +
"\n\nWeapon information" +
"\nWeapon Damage: " + profile.weaponDamage +
"\nArmor Number: " + profile.armorNumber +
"\nDurability: " + profile.durability +
"\n\nPlayerPower" +
"\nIntelligence: " + profile.intelligence +
"\nCharisma: " + profile.charisma +
"\nStrength: " + profile.strength +
"\nTolerance: " + profile.tolerance);
}
}
}
// Armor
GetArmor = function(armor, language){
switch(armor.toLowerCase()){
case language['Diaper'].toLowerCase():
return 1;
case language['Leather Jacket'].toLowerCase():
return 2;
case language['Shining body armor'].toLowerCase():
return 3;
case language['Body armor'].toLowerCase():
return 4;
case language['Nano Fiber Combat Jacket'].toLowerCase():
return 5;
case language['Nomex plated armor'].toLowerCase():
return 6;
default: return 0;
}
}
/**
* Inserts the NORMAL Power scores into the page.
* @input profile The CrimProfile for current id.
* Made By tochihut Updated by Pundare
*/
this.insertPowerIntoPage = function(profile) {
var crimsMenuTable=document.getElementById("content_right");
// Retreives the tables
var menuTableEntries = crimsMenuTable.getElementsByTagName('table');
// Calculate Power.
profile.calculatePower();
// Generate the new row
if (! menuTableEntries[4]) return null;
var trSolo = menuTableEntries[4].insertRow(-1);
var tdSolo = document.importNode(menuTableEntries[4].rows[0].childNodes[1],false);
trSolo.appendChild(tdSolo);
var divSolo = document.createElement("div");
divSolo.textContent = "SoloPower" + ":";
tdSolo.appendChild(divSolo);
var spanSolo = document.createElement("span");
spanSolo.setAttribute("class","menuyellowtext");
spanSolo.textContent=profile.normalSoloPower;
tdSolo.appendChild(spanSolo);
trSolo.parentNode.appendChild(tdSolo);
return true;
}
this.ChallengeAnyOne = function() {
var oldButton = document.getElementById('content_middle').getElementsByTagName('table')[10].rows[0];
var newButton = oldButton.cloneNode(true);
var id = document.location.toString().split('id=')[1];
newButton.cells[1].innerHTML = "<a href='fightchat.php?action=challenge&victim_id=" + id +"'><img border='0' src='http://thecrims.cachefly.net/images/icons/warning_16x16.png'/></a>";
newButton.cells[2].innerHTML = "<a href='fightchat.php?action=challenge&victim_id=" + id +"'>Challenge</a>";
this.InsertBefore(newButton ,oldButton);
}
/**
* Colour the robberies dropdown menu based on stamina and power.
* Red: to hard
* (DarkOrage) Enough danger, but not enough risky
* Orange Enough risky, but not enough normal
* Yellow: Enough normal, but not enough safe power
* Bold: Enough stamina
* Italics: Enough normal power, not enough stamina.
* @input profile The CrimProfile for current id.
* Made By tochihut Updated by Pundare
*/
this.colourRobberies = function(profile) {
// Locate the select dropdown lists.
var selectEntries=document.getElementsByTagName('select');
// String prefix for self robs.
var idString="id";
for (i=0; i < selectEntries.length; i++) {
var optionEntries=selectEntries[i].getElementsByTagName('option');
var lastDoableOption = null; // Maximum doable option given difficulty and stamina
var lastDoableOptionDifficulty = 0;
var maxCapableOption = null; // Maximum option capable with current difficulty.
var maxCapableOptionDifficulty = 0;
var safePower = profile.safeSoloPower;
var normalPower = profile.normalSoloPower;
var riskyPower = profile.riskySoloPower;
var dangerPower = profile.dangerSoloPower;
// Go through the options
for (j=0; j < optionEntries.length; j++) {
if (optionEntries[j].getAttribute("value") != "-") {
var optionValue = idString + optionEntries[j].getAttribute("value");
var optionNodeString = document.getElementById(optionValue).textContent;
// Extract Difficulty
var optionDifficulty = parseInt(optionNodeString.split(':')[2].split('<')[0]);
// Extract Stamina
var optionStamina = (idString=="idgang")?30:parseInt(optionNodeString.split(':')[1].split('<')[0]);
var style="";
// Colour NORMAL robberies yellow, and UNSAFE robberies red
if (safePower < optionDifficulty) {
if (normalPower >= optionDifficulty)
style+="color:yellow;";
else
if (riskyPower >= optionDifficulty)
style+="color:orange;";
else
if (dangerPower >= optionDifficulty)
style+="color:#cc6600;";
else
style+="color:red;";
}
// Italicize the jobs for which you do not have enough stamina.
if (! style.match("color:red")) {
// Do not bother with unsafe robberies
if (profile.stamina < optionStamina) {
style+="font-style: italic;";
} else {
style+="font-weight:bold;";
// Check to make sure we have enough safe power.
// Check to see if this is the hardest doable option.
if (normalPower >= optionDifficulty && optionDifficulty > lastDoableOptionDifficulty) {
lastDoableOption = optionEntries[j];
lastDoableOptionDifficulty = optionDifficulty;
}
}
}
// Save maximum option
if (optionDifficulty > maxCapableOptionDifficulty && normalPower >= optionDifficulty) {
maxCapableOption = optionEntries[j];
maxCapableOptionDifficulty = optionDifficulty;
}
optionEntries[j].setAttribute("style",style);
}
}
// Set the default option for self rob to best rob possible.
if (idString == "id" && lastDoableOption) {
lastDoableOption.selected = true;
document.getElementById(idString+lastDoableOption.value).style.display = "block";
}
// Add * to denote most difficult option
maxCapableOption.textContent = "*" + maxCapableOption.textContent;
idString="idgang"
}
}
/**
* Insert buildings limit to building page.
* @input profile The CrimProfile for current id.
* Made By tochihut Updated by Pundare
*/
this.insertBuildInfoIntoBuildingPage = function(profile) {
// Find the last "black" table on the page.
var blackTable = getElementsByClass('black_table')[1];
// Sum up total buildings - found in 2nd table
var numBuildings = 0;
var myBuildings = blackTable.rows;
for (i=1; i < myBuildings.length; i++) {
// Get the 2nd td entry, which gives current number of buildings
var tdInfo = myBuildings[i].cells[1];
numBuildings += parseInt(tdInfo.textContent);
}
// Generate output string
var extraBuildings = Math.max(profile.getMaxBuildings() - numBuildings, 0);
var outputString1 = "You can support " + extraBuildings + " extra building(s)."
var outputString2 = "Need " +
profile.getIntTolNecessaryToNextBuilding(numBuildings) +
" more intelligence/tolerance to support another building.";
// Insert into the page
var div = document.createElement("div");
div.setAttribute("align","center");
var span1 = document.createElement("span");
span1.setAttribute("class","menuyellowtext");
span1.textContent=outputString1;
div.appendChild(span1);
var br1 = document.createElement("br");
div.appendChild(br1);
var span2 = document.importNode(span1,false);
span2.textContent=outputString2;
div.appendChild(span2);
blackTable.parentNode.insertBefore(div,blackTable.previousSibling.previousSibling);
return true;
}
this.insertEarningsIntoBuildingPage = function(profile) {
var drugPrices = new Array('weed', 'booze', 'hash', 'booze', 'painkillers', 'magic mushrooms', 'weed', 'morphine', 'lsd', 'ecstacy', 'opium', 'ghb', 'special k', 'cocaine', 'amphetamine', 'heroin');
// Find the first "black" table on the page.
var blackTable = getElementsByClass('black_table')[0];
// Sum up total buildings - found in 2nd table
var myBuildings = blackTable.rows;
var earningTop = document.createElement('td');
earningTop.innerHTML = "Earn/day";
this.InsertBefore(earningTop, myBuildings[0].cells[4]);
for (i=1; i < myBuildings.length; i++) {
//Fix the style
for(var x=0; x < myBuildings[i].cells.length -1; x++){
myBuildings[i].cells[x].noWrap = false;
}
// Get the 2nd td entry, which gives current number of buildings
var unitsDay = parseInt(myBuildings[i].cells[1].textContent);
var costDay = parseInt(myBuildings[i].cells[3].textContent.substring(1).replace(/\s/g,''));
var earningDay = (GM_getValue(drugPrices[i-1]) * unitsDay) - costDay;
var newCell = document.createElement('td');
newCell.innerHTML = '$' + earningDay.toString();
this.InsertBefore(newCell, myBuildings[i].cells[4]);
}
}
/**
* Populate the "Buy" textbox with maximum number of drugs you need and can afford
* with current cash - max 99, min 0.
* @input profile The CrimProfile for current id.
*/
//// amounts of drugs gaining 100% stamina - http://guide.thecrims.com/wiki/index.php/Rave_Party
// % stamina per unit = 100 / units
// Weed = 99 Units 1
// Painkillers = 99 Units 1
// Booze = 50 Units 2
// Magic Mushrooms = 50 Units 2
// Hash = 3
// LSD = 35 Units 3 - rounded
// Ecstacy = 25 Units 4
// GHB = 4
// Opium = 20 Units 5
// Amphetamine = 20 Units 5
// special k = 7
// Cocaine = 15 Units 7 - rounded
// Heroin = 13 Units 8 - rounded
// Morphine = 8
GetDrug = function(drug, language, translate){
switch(drug.toLowerCase()){
case language['weed'].toLowerCase():
if(translate)
return 'weed';
return 1;
case language['painkillers'].toLowerCase():
if(translate)
return 'painkillers';
return 1;
case language['booze'].toLowerCase():
if(translate)
return 'booze';
return 2;
case language['magic mushrooms'].toLowerCase():
if(translate)
return 'magic mushrooms';
return 2;
case language['hash'].toLowerCase():
if(translate)
return 'hash';
return 3;
case language['lsd'].toLowerCase():
if(translate)
return 'lsd';
return 3;
case language['ecstacy'].toLowerCase():
if(translate)
return 'ecstacy';
return 4;
case language['ghb'].toLowerCase():
if(translate)
return 'ghb';
return 4;
case language['opium'].toLowerCase():
if(translate)
return 'opium';
return 5;
case language['amphetamine'].toLowerCase():
if(translate)
return 'amphetamine';
return 5;
case language['special k'].toLowerCase():
if(translate)
return 'special k';
return 7;
case language['cocaine'].toLowerCase():
if(translate)
return 'cocaine';
return 7;
case language['heroin'].toLowerCase():
if(translate)
return 'heroin';
return 8;
case language['morphine'].toLowerCase():
if(translate)
return 'morphine';
return 8;
}
}
/***Panic button contains two functions,
* InsertPanicButton and CheckIfPanic
*************************************/
this.InsertPanicButton = function (profile){
var table = document.getElementById('content_middle').getElementsByTagName('table')[0];
var imageHtml = '<img src="http://thecrims.cachefly.net/images/sections/raveparty/raveparty.jpg" class="imageborder" border="0">';
if(table.rows[0].cells[0].innerHTML == imageHtml)
table.rows[0].cells[0].innerHTML ="<a href='/surgery.php'>"+ table.rows[0].cells[0].innerHTML+"</a>";
}
this.CheckIfPanic = function(){
if(document.referrer.match('/nightlife.php')!=null){
document.getElementById('avatar').value="2";
document.getElementsByTagName('form')[0].submit();
document.location.pathname="/robbery.php";
}
}
this.populateDrugsValuesAtDealer = function (profile, language) {
// Find the first "black" table on the page.
var blackTable = getElementsByClass('black_table')[0];
var btRows = blackTable.rows;
// Go through each stat and calculate how much you can buy.
for (i = 1;i < btRows.length; i++) {
// Get the td entrys
var tdInfo = btRows[i].cells;
var cost = parseInt(tdInfo[1].textContent.substring(1).replace(/\s/g,''));
var drugsLeft = parseInt(tdInfo[2].textContent);
// Number of units you can buy.
var effort = profile.cash/cost;
var units;
if(drugsLeft>effort)
units = Math.min(Math.floor( effort ) ,9999999);
else
units = Math.min(Math.floor( drugsLeft ) ,9999999);
// Get the 3nd input entry is the textbox
var inputInfo = tdInfo[3].getElementsByTagName("input");
inputInfo[4].setAttribute("value",units);
}
return true;
}
this.populateBuyDrugsValues = function (profile, language) {
// Find the first "black" table on the page.
var blackTable = getElementsByClass('black_table')[0];
var btRows = blackTable.getElementsByTagName("tr");
// Go through each stat and calculate how much you can buy.
for (i = 1;i < btRows.length; i++) {
// Get the td entrys
var tdInfo = btRows[i].getElementsByTagName("td");
var drug = GetDrug(tdInfo[0].textContent.toLowerCase(), language);
var cost = parseInt(tdInfo[1].textContent.substring(1).replace(/\s/g,''));
// Number of units you can/need to buy.
var units = Math.min(Math.floor( (100 - profile.stamina)/drug) ,99);
// Get the 3nd input entry is the textbox
var inputInfo = tdInfo[2].getElementsByTagName("input");
if (inputInfo.length == 5 && inputInfo[3].getAttribute("type") != "text")
return false;
inputInfo[4].setAttribute("value",units);
}
return true;
}
/**
* Populate the "Buy" textbox with maximum number of stats you can afford
* with current cash - max 99, min 0.
* @input profile The CrimProfile for current id.
* Made By tochihut Updated by Pundare
*/
this.populateBuyStatValues = function (profile) {
// Find the last "black" table on the page.
var blackTable = getElementsByClass('black_table')[0];
var btRows = blackTable.getElementsByTagName("tr");
// Go through each stat and calculate how much you can buy.
for (i = 1;i < btRows.length; i++) {
// Get the 3nd td entry, which gives cost of the medicine
var tdInfo = btRows[i].getElementsByTagName("td");
var cost = parseInt(tdInfo[2].textContent.substring(1).replace(/\s/g,''));
// Number of units you can buy.
var units = Math.min(Math.floor(profile.cash / cost),99);
// Get the 3nd input entry is the textbox
var inputInfo = tdInfo[3].getElementsByTagName("input");
if (inputInfo.length == 5 && inputInfo[3].getAttribute("type") != "text")
return false;
if(i !== 5)
inputInfo[4].setAttribute("value",units);
else
inputInfo[4].setAttribute("value",1);
}
return true;
}
/**
* Insert buildings limit to the hospital page.
* @input doc The current webpage to update.
* @input profile The CrimProfile for current id.
* Made By tochihut Updated by Pundare
*/
this.insertBuildInfoIntoHospitalPage = function(profile) {
// Find the last "black" table on the page.
var tables=document.getElementsByTagName("table");
for(i=tables.length-1; i >= 0; i--)
if (tables[i].getAttribute("class") == "black_table")
break;
if (i == -1)
return false; // did not find the table.
var blackTable = tables[i];
// Generate output string
var outputString = "Need " +
profile.getIntTolNecessaryToNextBuilding(0) +
" more intelligence/tolerance to increase building limit.";
// Insert into the page
var div = document.createElement("div");
div.setAttribute("align","center");
var br = document.createElement("br");
var span = document.createElement("span");
span.setAttribute("class","menuyellowtext");
span.textContent=outputString;
div.appendChild(span);
blackTable.parentNode.insertBefore(div,blackTable.nextSibling.nextSibling);
blackTable.parentNode.insertBefore(br,div);
return true;
}
/**
* Insert custom error to the page.
* @input text The error text.
*/
this.insertErrorBox = function (text){
var table = document.createElement("table");
table.setAttribute("class","statusbox_error");
table.setAttribute("width", "100%");
var tr = table.insertRow(0);
var tdImg = document.createElement('td');
tr.appendChild(tdImg);
tdImg.innerHTML = "<img style='margin: 2px 10px 2px 2px;' src='http://static.beta.thecrims.com/images/icons/forbidden.gif'/>";
var tdMessage = document.createElement('td');
tdMessage.textContent = text;
tr.appendChild(tdMessage);
this.InsertBefore(table, document.getElementsByTagName("form")[0]);
}
this.CheckDurability = function (profile){
if(profile.durability < 100)
this.insertErrorBox("Warning your weapon is broken!");
}
this.insertCalculator = function (profile, language){
this.profile = profile;
// Find the first "black" table on the page. used as a refferens
var blackTable = getElementsByClass('black_table')[0];
var table = document.createElement("table");
table.setAttribute("class", "black_table");
var trTop = table.insertRow(0);
trTop.setAttribute("class","black_table_top");
var tdArmorTop = document.createElement("td");
tdArmorTop.textContent ="Armor";
trTop.appendChild(tdArmorTop);
var weaponDamageTop = document.createElement("td");
weaponDamageTop.textContent = "Weapon Damage";
trTop.appendChild(weaponDamageTop);
var trContent = table.insertRow(1);
var tdArmor = document.createElement("td");
trContent.appendChild(tdArmor);
var select = document.createElement("select");
select.setAttribute("id", "armor");
select.options[0]=new Option('[Choose...]', 0, false, false);
select.options[1]=new Option(language['Diaper'], 1, false, false);
select.options[2]=new Option(language['Leather Jacket'], 2, false, false);
select.options[3]=new Option(language['Shining body armor'], 3, false, false);
select.options[4]=new Option(language['Body armor'], 4, false, false);
select.options[5]=new Option(language['Nano Fiber Combat Jacket'], 5, false, false);
select.options[6]=new Option(language['Nomex plated armor'], 6, false, false);
select.options[profile.armorNumber].selected = true;
tdArmor.appendChild(select);
var tdWeapon = document.createElement("td");
trContent.appendChild(tdWeapon);
var Weapon = document.createElement("input");
Weapon.setAttribute("type", "text");
Weapon.setAttribute("id", "weapon");
Weapon.setAttribute("value", profile.weaponDamage);
tdWeapon.appendChild(Weapon);
var tdCalc = document.createElement("td");
trContent.appendChild(tdCalc);
var calcButton = document.createElement("input");
calcButton.setAttribute("type", "submit");
calcButton.setAttribute("value", "Calc");
calcButton.setAttribute("id", "Calc");
tdCalc.appendChild(calcButton);
this.InsertBefore(table, blackTable);
}
this.getDrugPrices = function (language){
// Find the last "black" table on the page.
var blackTable = getElementsByClass('black_table')[0];
var btRows = blackTable.getElementsByTagName("tr");
// Go through each stat and calculate how much you can buy.
for (i = 1;i < btRows.length; i++) {
// Get the 3nd td entry, which gives cost of the medicine
var tdInfo = btRows[i].cells;
var drugName = tdInfo[0].textContent.toLowerCase();
var cost = parseInt(tdInfo[1].textContent.substring(1).replace(/\s/g,''));
GM_setValue(GetDrug(drugName, language, true) ,cost);
}
return true;
}
/**
* Insert Bribe Amount next to the Bribe button on the prison page
* @input doc The current document to update
* @input profile The CrimProfile for current id.
*/
this.insertBribeIntoPrisonPage = function(profile) {
// Locate the bribe textbox and set the bribe amount as its value
var bribeTextbox = document.getElementById('bribe');
if (bribeTextbox != null)
bribeTextbox.setAttribute("value",profile.getBribe());
return;
}
this.SetUnlimitedOffset = function () {
var currentOffset = parseInt(document.location.toString().split('offset=')[1]);
var temp = 0;
var count = 0;
for( i=0; l=document.links[i]; i++ ){
if( l.href.match( "offset" ) ){
offsetLink = parseInt(l.href.split('offset=')[1]);
if(currentOffset == 180)
this.DeleteElement(l.parentNode.getElementsByTagName('b')[1]);
if(currentOffset > 160){
if(temp > 0){ // currentOffset / (page number - 1)
newoffsetText = (currentOffset / 20) + count -1;//+ parseInt(l.innerHTML);
newoffset = newoffsetText * 20;
l.href = l.href.replace( offsetLink, newoffset );
if(newoffset == currentOffset)
l.innerHTML = "<b style='color: #FFFFFF'>" + newoffsetText + "</b>";
else
l.innerHTML = newoffsetText;
count++;
}
temp++;
}
}
}
}
}
function Profile() {
this.playerName = null;
// Accuracy - http://forum.thecrims.com/showthread.php?t=667
// var accuracy = new Array(8, 4, 6, 4, 5, 4, 6, 6, 3, 5, 8, 10, 6, 5, 7, 7, 4, 6);
//this.weaponNumber = null;
this.weaponDamage = 0;
armorTolerance = new Array(0, 8, 32, 120, 400, 1200, 2000);
this.armorNumber = 0;
this.durability = null;
// Stats
this.respect = 0;
this.cash = 0;
this.stamina = 0;
// Power
this.intelligence = 0;
this.charisma = 0;
this.strength = 0;
this.tolerance = 0;
this.safeSoloPower = -1;
this.normalSoloPower = -1;
this.riskySoloPower = -1;
this.dangerSoloPower = -1;
this.calculatePower = function(newWeaponDamage, newArmor) {
///// your_points - http://guide.thecrims.com/wiki/index.php/Arms_Dealer
//
// PlayerPower = (intelligence + strength + tolerance/2)/3
// WeaponPower = (weapon damage * accuracy/10) +- some random parts + armor
//
// Grades by http://www.thecrims.name/index.php?c=calc
// Safe = 85%
// Normal = 90%
// Risky = 100%
// Danger = 102%
var weaponDamage;
var armor;
if(newWeaponDamage)
weaponDamage = newWeaponDamage;
else
weaponDamage = this.weaponDamage;
if(newArmor)
armor = newArmor;
else
armor = this.armorNumber;
var playerPower = ( (this.intelligence + this.strength + this.tolerance / 2) / 3);
var weaponPower = ((10 * weaponDamage) / 10 + armorTolerance[armor]);
if(newWeaponDamage || newArmor)
return Math.round((playerPower + weaponPower) * 0.9 );
this.safeSoloPower = Math.round((playerPower + weaponPower) * 0.85 );
this.normalSoloPower = Math.round((playerPower + weaponPower) * 0.9 );
this.riskySoloPower = Math.round((playerPower + weaponPower) * 1 );
this.dangerSoloPower = Math.round((playerPower + weaponPower) * 1.02);
//alert("Safe: "+ this.safeSoloPower + "\nnormal: "+ this.normalSoloPower + "\nrisky: " + this.riskySoloPower +"\ndanger: "+ this.dangerSoloPower );
}
// Calculate the bribe needed to get out of prison
this.getBribe = function() {
// Formula: Bribe = Respect * 505.5 - rounded to nearest 1000.
return Math.round(this.respect * 0.5055) * 1000;
}
// Calculate maximum number of buildings current profile can support
// Made By tochihut
this.getMaxBuildings = function() {
// Formula: maxBuildings = floor ( (sqrt (2 * sumIntTol - 1) + 1 ) / 2)
// Quadratic solution to threshold = 2 * sumIntTol * (sumIntTol - 1) + 1
return Math.floor((Math.sqrt(2 * (this.tolerance + this.intelligence) - 1) + 1) / 2);
}
/**
* Calculate int/tol required to acquire one additional builidng.
* @input myStats The Stats object containing the extracted statistics.
* Made By tochihut
*/
this.getIntTolNecessaryToNextBuilding = function(numCurrentBuildings) {
var nextBuilding = Math.max(this.getMaxBuildings(), numCurrentBuildings) + 1;
// Formula: NextThreshold = 2 * sumIntTol * (sumIntTol - 1) + 1
return 2 * nextBuilding * ( nextBuilding - 1) + 1 - this.intelligence - this.tolerance;
}
}
// for the listener
function calcutateNewStats(){
var weapon = document.getElementById('weapon').value;
var armor = document.getElementById('armor').value;
alert(Profile.calculatePower(weapon, armor));
}
//unsafeWindow.document.onmousedown = null;
//unsafeWindow.window.onmousedown = null;
//unsafeWindow.document.onclick=null;
unsafeWindow.document.oncontextmenu=null;
PageEngine.DeleteElement('topbox');
PageEngine.DeleteElement('banner_bottom');
var table = document.getElementsByTagName('table')[0];
if(table);
table.rows[0].deleteCell(2);
PageEngine.insertPowerIntoPage(Profile);
// Login page
if(document.location.pathname == '/'){
check_version();
}
if (document.location.pathname=="/profile.php"){
PageEngine.ChallengeAnyOne();
}
if (document.location.pathname=="/assault.php"){
//TODO: count If you have a chanse to win
PageEngine.CheckDurability(Profile);
}
if (document.location.pathname=="/robbery.php"){
//TODO: make it work with gang
PageEngine.colourRobberies(Profile);
PageEngine.CheckDurability(Profile);
}
if (document.location.pathname=="/bounty.php"){
}
if (document.location.pathname=="/sabotage.php"){
}
if (document.location.pathname=="/hookers.php"){
//TODO count how much you'll earn by whore
PageEngine.innersertHookersInfo(Profile, language);
}
if (document.location.pathname=="/armsdealer.php"){
//TODO count how much you power increase if you'll buy a new weapon
PageEngine.insertCalculator(Profile, language);
// Add a listener to detect then the calc button is "clicked"
document.getElementById('Calc').addEventListener("click",calcutateNewStats , false);
}
if (document.location.pathname=="/drugdealer.php"){
PageEngine.getDrugPrices(language);
PageEngine.populateDrugsValuesAtDealer(Profile, language);
//TODO insert maximum drugs you can by and how much it cost by 1 stamina
}
if (document.location.pathname=="/buildings.php"){
//TODO count how much you earn by building
PageEngine.insertBuildInfoIntoBuildingPage(Profile);
PageEngine.insertEarningsIntoBuildingPage(Profile);
}
if (document.location.pathname=="/nightlife.php"){
//TODO count drug usages to prevent overdose
PageEngine.InsertPanicButton(Profile);
PageEngine.populateBuyDrugsValues(Profile, language);
}
if (document.location.pathname=="/businesses.php"){
}
if (document.location.pathname=="/hospital.php"){
PageEngine.populateBuyStatValues(Profile);
PageEngine.insertBuildInfoIntoHospitalPage(Profile);
}
if (document.location.pathname=="/surgery.php"){
PageEngine.CheckIfPanic();
}
if (document.location.pathname=="/rip.php"){
//Todo input real time left
}
if (document.location.pathname=="/prison.php"){
//insert bribe to bribe box
PageEngine.insertBribeIntoPrisonPage(Profile);
}
if (document.location.pathname=="/msgcenter.php"){
//Todo send message to anyone
}
if (document.location.pathname=="/stats.php"){
//TODO: complete the list offset=200++
PageEngine.SetUnlimitedOffset();
}
version = "20080807";
function check_version() {
var download_url = "http://userscripts.org/scripts/source/31066.user.js";
GM_xmlhttpRequest({ method:"GET",url:download_url,
onload:function(result) {
if(result.responseText.indexOf(version) == -1 &&
confirm('A new version of "TheCrims Plus" is available.\nDo you want to update now?')) top.location.href = download_url;
}
});
}
//TODO fix a config box