// ==UserScript== // @name Scouter // @namespace Violentmonkey Scripts // @match https://www.dreadcast.net/Main // @version 0.0.1 // @author Pelagia/IsilinBN // @description Un cibleur de nouvelle génération directement connecté à une base de données. Idéal pour les forces de l'Orient. // @license https://github.com/Isilin/dreadcast-scripts?tab=GPL-3.0-1-ov-file // @require https://update.greasyfork.icu/scripts/507382/Dreadcast%20Development%20Kit.user.js // @connect docs.google.com // @connect googleusercontent.com // @connect sheets.googleapis.com // @grant GM_xmlhttpRequest // @grant GM_getValue // @grant GM_setValue // @downloadURL // @updateURL // @downloadURL https://update.greasyfork.icu/scripts/510463/Scouter.user.js // @updateURL https://update.greasyfork.icu/scripts/510463/Scouter.meta.js // ==/UserScript== $(() => { const style = ` #scouter_content { color: white; } #scouter_content .input_group { display: flex; gap: 1rem; margin-bottom: 1rem; } #scouter_content input[type=text] { padding: 4px 12px; display: inline-block; border: 1px solid #7ec8d8; box-sizing: border-box; width: 70%; color: white; } .scouter_infobox_buttons { display: flex; position: absolute; bottom: -30px; left: -2px; width: auto; background-color: #181818; color: white; } .scouter_infobox_buttons .btn { border: 1px solid white; display: grid; } .scouter_infobox_buttons .btn:hover { background-color: #484848; } .interieur.data_info, .interieur.data_stats, .interieur.data_crim { color: #eee; } .interieur.data_info h4, .interieur.data_stats h4, .interieur.data_crim h4 { margin-bottom: 1rem; } .data_info_list, .data_stats_list, .data_crim_list { display: flex; flex-direction: column; width: 100%; font-size: 13px; gap: 0.5rem; } `; const API_TAG = 'scouter_db_api'; const SHEET_ID_TAG = 'scouter_sheet_id'; const SHEED_NAME_TAG = 'scouter_sheet_name'; const SHEET_RANGE_TAG = 'scouter_sheet_range'; let api, sheetId, sheetName, sheetRange; let data; const syncParams = () => { api = DC.LocalMemory.get(API_TAG); sheetId = DC.LocalMemory.get(SHEET_ID_TAG); sheetName = DC.LocalMemory.get(SHEED_NAME_TAG); sheetRange = DC.LocalMemory.get(SHEET_RANGE_TAG); }; const initPersistence = () => { DC.LocalMemory.init(API_TAG, 'AIzaSyAgS_cjEerpTKyHEZa6JjfUwAdxM91Vpuc'); DC.LocalMemory.init( SHEET_ID_TAG, '1VgeD1CghIxgP-5AfkKV7woLm4CXqVLQ53XSHH7vHZZk', ); DC.LocalMemory.init(SHEED_NAME_TAG, 'Data'); DC.LocalMemory.init(SHEET_RANGE_TAG, 'A:T'); syncParams(); }; const loadData = () => { DC.Network.loadSpreadsheet( sheetId, sheetName, sheetRange, api, (result) => { data = result; }, ); }; const openSettings = () => { const save = () => { DC.LocalMemory.set(API_TAG, $('#input_api').val()); DC.LocalMemory.set(SHEET_ID_TAG, $('#input_sheet_id').val()); DC.LocalMemory.set(SHEED_NAME_TAG, $('#input_sheet_name').val()); DC.LocalMemory.set(SHEET_RANGE_TAG, $('#input_sheet_range').val()); syncParams(); loadData(); engine.closeDataBox('scouter_modal'); }; let content = $(`
Api :
Id :
Onglet :
Plage :
`).append(DC.UI.TextButton('scouter_save', 'Sauvegarder', save)); DC.UI.PopUp('scouter_modal', 'Scouter', content); }; const loadUI = (id) => { let secondaire = $( '.zone_case2 .case_objet_type_Secondaire .obj_itemBox_details .titreinfo', ).text(); // TODO remove true for prod if (secondaire === 'Cibleur' || true) { // this not set with arrow function const charData = data.find((row) => row[0] === id); const user_content = $(`#ib_persoBox_${id} .flipmobile-card-front`).clone( true, ); $(`
`) .append( DC.UI.Button(`set_${id}`, '', () => { $(`#ib_persoBox_${id} .flipmobile-card-front`).replaceWith( user_content.clone(true), ); $(`#buttons_${id}>div`).css('background-color', ''); $(`#set_${id}`).css('background-color', '#484848'); }), ) .append( DC.UI.Button(`info_${id}`, '', () => { $(`#ib_persoBox_${id} .flipmobile-card-front`) .empty() .append( $(`

Infos

Méta-race : ${charData[3]}
Genre : ${charData[4]}
Âge : ${charData[5]} ans
Taille: ${charData[6]}cm
Poids : ${charData[7]}kg

Statut : ${charData[20]}
Emploi : ${charData[21]}

Notes : ${charData[8]}
`), ); $(`#buttons_${id}>div`).css('background-color', ''); $(`#info_${id}`).css('background-color', '#484848'); }), ) .append( DC.UI.Button(`health_${id}`, '', () => { $(`#ib_persoBox_${id} .flipmobile-card-front`) .empty() .append( $(`

Statistiques

Santé : ${charData[10]}
Forme : ${charData[11]}
FOR : ${charData[12]}
AGI : ${charData[13]}
RES : ${charData[14]}
PER : ${charData[15]}
FUR : ${charData[16]}
INF : ${charData[17]}
MED : ${charData[18]}
ING : ${charData[19]}
`), ); $(`#buttons_${id}>div`).css('background-color', ''); $(`#health_${id}`).css('background-color', '#484848'); }), ) .append( DC.UI.Button(`crim_${id}`, '', () => { $(`#ib_persoBox_${id} .flipmobile-card-front`) .empty() .append( $(`

Casier

`), ); charData[9].split('\n').forEach((crim) => { $(`${crim}`).appendTo( $('.data_crim_list'), ); }); $(`#buttons_${id}>div`).css('background-color', ''); $(`#crim_${id}`).css('background-color', '#484848'); }), ) .appendTo($(`#ib_persoBox_${id}`)); $(`#set_${id}`).css('background-color', '#484848'); } }; $(document).ready(() => { initPersistence(); loadData(); if (Util.isDSM?.()) { $('#scouter_setting').bind('click', openSettings); } else { DC.UI.addSubMenuTo( 'Paramètres ▾', DC.UI.SubMenu('Scouter', openSettings), 6, ); } $(document).on('click', 'span.perso.link', function () { const id = $(this).attr('id').slice(9); $(document).one('ajaxSuccess', { idPerso: id }, (e, xhr, settings) => { loadUI(id); }); }); $(document).on('click', '#action_perso_fiche', function () { $(document).one('ajaxSuccess', (e, xhr, settings) => { const id = settings.data.slice(3); loadUI(id); }); }); $(document).on('click', '#meubles', function () { console.log('ok'); $(document).one('ajaxSuccess', (e, xhr, settings) => { console.log(settings); const id = settings.data.slice(3); loadUI(id); }); }); DC.Style.apply(style); }); });