RPGmaker能做出识别地区IP的触发脚本吗?
rpgmaker吧
全部回复
仅看楼主
level 1
像是检测到是美国地区的IP就触发某个事件这样子,这做得到吗?
2021年07月04日 01点07分 1
level 11
var getYourIP1="";
Game_Interpreter.prototype.getYourIP = function() {
//BUG:仅联网软件有效,单机游戏默认显示"局域网"
//#返回值里含空格,还不能用==号判断要用方法:.includes/.contains(stringxx)
var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
if (RTCPeerConnection) (function () {
var rtc = new RTCPeerConnection({iceServers:[]});
if (1 || window.mozRTCPeerConnection) {
rtc.createDataChannel('', {reliable:false});
};
rtc.onicecandidate = function (evt) {
//手册里找不到这个方法!?,难道是内置的周期方法??(这个方法也使用了)
if (evt.candidate) grepSDP("a="+evt.candidate.candidate);
};
rtc.createOffer(function (offerDesc) {
grepSDP(offerDesc.sdp);
rtc.setLocalDescription(offerDesc);
}, function (e) { console.warn("offer failed", e); });
//并行处理的简写()
var addrs = Object.create(null);
addrs["0.0.0.0"] = false;
function updateDisplay(newAddr) {
if (newAddr in addrs) return;
else addrs[newAddr] = true;
var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; });
for(var i = 0; i < displayAddrs.length; i++){
if(displayAddrs[i].length > 16){
displayAddrs.splice(i, 1);
i--;
}
}
if (displayAddrs[0]) hsyIp(displayAddrs[0]);
// alert("ip: " + displayAddrs[0])
//有效,但获取需要几秒时间,所以必须前缀if
//BUG:在事件--脚本中使用要等待 半s左右(不等待会跳过一次事件)...
}
function grepSDP(sdp) {
var hosts = [];
2021年07月07日 12点07分 2
level 11
//续。毫无疑问这个脚本存在一堆bug
sdp.split('\r\n').forEach(function (line, index, arr) {
if (~line.indexOf("a=candidate")) {
var parts = line.split(' '),
addr = parts[4],
type = parts[7];
if (type === 'host') updateDisplay(addr);
} else if (~line.indexOf("c=")) {
var parts = line.split(' '),
addr = parts[2];
updateDisplay(addr);
}
});
}
})();
}
//====================PConline IP地址查询接口
function hsyIp(ip){ //自定义接口
var s=document.getElementsByTagName('head')[0].appendChild(document.createElement("script"));
s.src="http://whois.pconline.com.cn/ipJson.jsp?ip="+ip+"&callback=hsycall"; //获取js内置隐藏的某个底层类(下面所有方法的前缀标志)
}
function hsycall(pr){ //回调函数 不需要等待
getYourIP1=pr.addr;
}
2021年07月07日 12点07分 3
level 1
谢谢大佬的帮助
2021年07月07日 23点07分 4
1