[Engedélyezett] Őrtorony hatósugár tervező

Státusz
Nem lehet hozzászólni.

DeletedUser19087

Vendég
Üdv,

a Templom hatósugár tervező kódjából készítettem némi módosítással egy Őrtorony hatósugár tervezőt.

Használata:

-a script a térképen működik, futtatás előtt tenni kell egy pipát a minitérkép alatt lévő 'Mutasd az Őrtorony lefedettségét' checkboxba.

-szinte teljes egészében megegyezik a templom tervezővel, a különbség pusztán annyi, hogy ennél a legnagyobb(20.) szintet rajzolja meg első kattintásra a térképen és halad a legkisebb(1.) felé, majd az utolsó kattintással teljesen eltűnik a hatósugár. Azért lett így alakítva, mert a legnagyobb szintet/szinteket használjuk leggyakrabban, ezt/ezeket a legelőnyösebb, így nem kell végigkattolni egészen az 1.szinttől.

-illetve még annyi kiegészítést tettem bele(mivel sok a szint, ne kavarodjunk bele), hogy minden kattintásnál kiírja, éppen melyiknél tartunk.

-ha Templom is megtalálható az adott szerveren, úgy annak a megjelenítése is bekapcsolható. Nem fogja befolyásolni a script működését.

-amint elnavigálsz a térképről, eltűnnek a jelölések

-még több infó az alábbi linken:
-a script:
Kód beillesztése:
javascript:
var doc=document;
var win=(window.frames.length>0)?window.main:window;
if(window.frames.length>0){
    doc=window.main.document;
}
var churchData = MapCanvas.watchTowers;
var radQuads = [Number(15), Number(13.1), Number(11.5), Number(10), Number(8.7), Number(7.6), Number(6.7), Number(5.8), Number(5.1), Number(4.4), Number(3.9), Number(3.4), Number(3), Number(2.6), Number(2.3), Number(2), Number(1.7), Number(1.5), Number(1.3), Number(1.1), Number(0)];
var originalClickHandler;
var isDrawing = true;

function getNextRadQuad(actQuad) {
    var idx = radQuads.indexOf(actQuad);
    if (idx == radQuads.length-1) {
        return radQuads[0];
    } else {

if(actQuad == 15){ UI.InfoMessage("19.szint!",2000); }
if(actQuad == 13.1){ UI.InfoMessage("18.szint!",2000); }
if(actQuad == 11.5){ UI.InfoMessage("17.szint!",2000); }
if(actQuad == 10){ UI.InfoMessage("16.szint!",2000); }
if(actQuad == 8.7){ UI.InfoMessage("15.szint!",2000); }
if(actQuad == 7.6){ UI.InfoMessage("14.szint!",2000); }
if(actQuad == 6.7){ UI.InfoMessage("13.szint!",2000); }
if(actQuad == 5.8){ UI.InfoMessage("12.szint!",2000); }
if(actQuad == 5.1){ UI.InfoMessage("11.szint!",2000); }
if(actQuad == 4.4){ UI.InfoMessage("10.szint!",2000); }
if(actQuad == 3.9){ UI.InfoMessage("9.szint!",2000); }
if(actQuad == 3.4){ UI.InfoMessage("8.szint!",2000); }
if(actQuad == 3){ UI.InfoMessage("7.szint!",2000); }
if(actQuad == 2.6){ UI.InfoMessage("6.szint!",2000); }
if(actQuad == 2.3){ UI.InfoMessage("5.szint!",2000); }
if(actQuad == 2){ UI.InfoMessage("4.szint!",2000); }
if(actQuad == 1.7){ UI.InfoMessage("3.szint!",2000); }
if(actQuad == 1.5){ UI.InfoMessage("2.szint!",2000); }
if(actQuad == 1.3){ UI.InfoMessage("1.szint!",2000); }

        return radQuads[idx+1];

    }
}

function redrawMap() {
    win.TWMap.watchtower.toggle();
}

function toggleChurch(x, y) {
    for (churchIdx in churchData) {
        var actChurch = churchData[churchIdx];
        if(x == actChurch[0] && y == actChurch[1]) {
            actChurch[2] = getNextRadQuad(actChurch[2]);
            if(actChurch[2] == 0) {
                churchData.splice(churchIdx,1);
            }
            return;
        }
    }
    //if we are here it means this is a new church
    churchData.push([x,y,radQuads[0]]);
    UI.InfoMessage("20.szint!",2000);
}

function myHandleClick(event) {
    var pos = this.coordByEvent(event);
    if (isDrawing) {
        toggleChurch(pos[0],pos[1]);
        redrawMap();
        return false;
    } else {
        return originalClickHandler.call(win.TWMap.map, event);
    }
}

function setup() {
    if (win.game_data.screen=='map') {
        originalClickHandler=win.TWMap.map._handleClick;
        win.TWMap.map._handleClick=myHandleClick;
     
        var table = doc.getElementById("map_big").parentNode.parentNode;
        var checkDrawer = doc.createElement("input");
        var newRow = table.insertRow(0);
        newRow.appendChild(checkDrawer);
        checkDrawer.type = "checkbox";
        checkDrawer.checked = true;
        checkDrawer.id = "checkDrawer";
        $("#checkDrawer").click(function(e){
            isDrawing = this.checked;
        });
             
        var label = doc.createElement("label");
        newRow.appendChild(label);
        label.appendChild(doc.createTextNode("Kattintásra rajzol (kikapcsolhatod térképmozgatás erejéig)"));
     
    } else {
        if (typeof(noAlert)=='undefined' || noAlert == 0) {
            alert("Ez a script csak a térképen.\nUgrás a térképre...");
        }
        self.location=win.game_data.link_base_pure.replace(/screen\=\w*/i,"screen=map");
    }
}

setup();

void(0);
 
Utoljára egy moderátor szerkesztette:

DeletedUser16510

Vendég
Köszönjük segítséged, hálánk jeléül a játékosfiókodban némi prémium pontot írtunk jóvá.
 

DeletedUser

Vendég
Cool! Nagyon szépen köszönöm! :D
Épp írni akartam hogy jó volna egy ilyen script, erre tessék te már megcsináltad! Ezer hála! :)
Annyi kérdésem lenne, hogy vajon az nem megoldható, hogy a minitérképen is megjelenjen?
 
Státusz
Nem lehet hozzászólni.
Fent