var loadingLogNow = true;
var vlogid = 0;
var battleClass = {
battle:0,
hod:0,
conf:{
timeout:'-- мин.',
damage:'0',
tactic:[ 0 , 0 , 0 , 0 , 0 , 0 , 0 ],
priems:[],
pr:"",
pr_z:"",
pr_s:0
},
me:0,
enemy:0,
users:{ },
uids:[0],
priems:{ },
prms:[0],
eff:[],
act:[],
log:function(txt) {
console.log(txt);
},
start:function() {
this.reflesh(1);
},
reflesh:function( type ) {
$.getJSON( 'https://new-combats.com/getbattle.php',{ 'global':true,'type':type },function(data) {
//
if( data.e != undefined && data.e != "" ) {
alert( 'Ошибка: ' + data.e );
}
//
battleClass.me = data.you;
battleClass.enemy = data.enemy;
battleClass.battle = data.btl;
battleClass.hod = data.hod;
battleClass.conf.timeout = data.to;
battleClass.conf.damage = data.dm;
battleClass.conf.pr = data.pr[0];
battleClass.conf.pr_z = data.pr[1];
battleClass.conf.pr_s = data.pr[2];
battleClass.conf.tactic = [ 0 , data.t1 , data.t2 , data.t3 , data.t4 , data.t5 , data.t6 , data.t7 ];
//
battleClass.eff = data.r.eff_me;
battleClass.act = data.r.act;
//
//Пользователи
if( data.r.u != undefined ) {
var i = 0;
while( i != -1 ) {
if( data.r.u[i] != undefined ) {
if( data.r.u[i][0] > 0 ) {
//
if( battleClass.users[data.r.u[i][0]] == undefined ) {
battleClass.users[data.r.u[i][0]] = { 'complete':false };
battleClass.uids[0]++;
battleClass.uids[battleClass.uids[0]] = data.r.u[i][0];
}
battleClass.users[data.r.u[i][0]].id = data.r.u[i][0];
//
battleClass.users[data.r.u[i][0]].hp = data.r.u[i][1];
battleClass.users[data.r.u[i][0]].mp = data.r.u[i][2];
battleClass.users[data.r.u[i][0]].hpAll = data.r.u[i][3];
battleClass.users[data.r.u[i][0]].mpAll = data.r.u[i][4];
//
if( battleClass.users[data.r.u[i][0]].hp > battleClass.users[data.r.u[i][0]].hpAll ) {
battleClass.users[data.r.u[i][0]].hp = battleClass.users[data.r.u[i][0]].hpAll;
}
if( battleClass.users[data.r.u[i][0]].mp > battleClass.users[data.r.u[i][0]].mpAll ) {
battleClass.users[data.r.u[i][0]].mp = battleClass.users[data.r.u[i][0]].mpAll;
}
//
}else{
battleClass.log( 'Ошибка, игрок не найден...' );
}
}else{
i = -2;
}
i++;
}
battleClass.loadingGlobaldata();
}
//
});
},
loadingGlobaldata:function() {
var r = {
'load':0,
'users':"0",
'priems':"0"
};
//Обновляем пользователей которых не прогрузили
/*
Склонность, Клан, Уровень, Логин, Команда
*/
var i = 1;
while( i <= battleClass.uids[0] ) {
if( battleClass.users[ battleClass.uids[i] ].complete == false ) {
//Прогружаем данные игрока
r.load++;
r.users = r.users + "," + battleClass.users[ battleClass.uids[i] ].id;
}else{
//Все окей
}
i++;
}
//Приемы
var pr = battleClass.conf.pr.split('|');
var prz = battleClass.conf.pr_z.split('|');
var i = 0;
while( i < battleClass.conf.pr_s ) {
if( pr[i] != undefined && pr[i] > 0 ) {
if( battleClass.priems[pr[i]] == undefined ) {
//Прогружаем данные по приемам
r.load++;
r.priems += ',' + pr[i];
}else{
//Все окей
}
}
i++;
}
//
if( r.load > 0 ) {
$.getJSON( 'https://new-combats.com/getbattle.php',{ 'loading':true , 'uload':r.users , 'pload':r.priems },function(data) {
//
if( data.e != undefined && data.e != "" ) {
alert( 'Ошибка: ' + data.e );
}
//
if( data.r != undefined ) {
//+++++++++++++++++++++++++++++
battleClass.log(data);
//Загрузка пользователей
if( data.r.ul != undefined ) {
//
var i = 0;
while( i != -1 ) {
if( data.r.ul[i] != undefined ) {
if( data.r.ul[i].id > 0 ) {
//
if( battleClass.users[data.r.ul[i].id] == undefined ) {
battleClass.users[data.r.ul[i].id] = { };
battleClass.uids[0]++;
battleClass.uids[battleClass.uids[0]] = data.r.ul[i].id;
}
battleClass.users[data.r.ul[i].id] = data.r.ul[i];
//
battleClass.users[data.r.ul[i].id].complete = true;
//
}else{
battleClass.log( 'Ошибка, игрок не найден...' );
}
}else{
i = -2;
}
i++;
}
//
}
//Загрузка приемов
if( data.r.pl != undefined ) {
//
var i = 0;
while( i != -1 ) {
if( data.r.pl[i] != undefined ) {
if( data.r.pl[i].id > 0 ) {
//
if( battleClass.priems[data.r.pl[i].id] == undefined ) {
battleClass.priems[data.r.pl[i].id] = { };
battleClass.prms[0]++;
battleClass.prms[battleClass.prms[0]] = data.r.pl[i].id;
}
battleClass.priems[data.r.pl[i].id] = data.r.pl[i];
//
battleClass.priems[data.r.pl[i].id].complete = true;
//
}else{
battleClass.log( 'Ошибка, прием не найден...' );
}
}else{
i = -2;
}
i++;
}
//
}
battleClass.generate();
//+++++++++++++++++++++++++++++
}
//
});
}else{
battleClass.generate();
}
//
},
loadLog:function(url) {
var loadingLogNow = false;
$('#battle_log').remove();
var e = document.createElement("script");
e.src = url;
e.id = 'battle_log';
e.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(e);
},
testAct:function(uid1,uid2) {
var r = false;
var i = 0;
while( i != -1 ) {
if( this.act[i] != undefined ) {
if( this.act[i][1] == uid1 && this.act[i][2] == uid2 ) {
r = true;
}
}else{
i = -2;
}
i++;
}
return r;
},
userInfoItems:function(id,t) {
var i = 0;
while( i != - 1 ) {
if( this.users[id].itm[i] != undefined ) {
//
title = '
'+this.users[id].itm[i][3]+'';
title += '
(Характеристики скрыты)';
title += '';
//
var cvs = '';
if( id == this.me ) {
cvs = this.users[id].itm[i][5];
}
//
abitms(t,id,this.users[id].itm[i][0],this.users[id].itm[i][2],this.users[id].itm[i][3],title,this.users[id].itm[i][4],cvs);
}else{
i = -2;
}
i++;
}
},
userInfoEffects:function(id,t) {
var i = 0;
var html = '';
if( this.eff != undefined ) {
while( i != - 1 ) {
if( this.eff[i] != undefined ) {
if( this.eff[i][0] == id ) {
var title_eff = ''+this.eff[i][3]+'';
var eff_types = '(Эффект)';
if( this.eff[i][5] > 0 && this.eff[i][5] < 7 ) {
var eff_types = '(Эликсир)';
}else if( (this.eff[i][5] > 6 && this.eff[i][5] < 11) || this.eff[i][5] == 16 ) {
var eff_types = '(Заклятие)';
}else if( this.eff[i][5] == 14 ) {
var eff_types = '(Прием)';
}else if( this.eff[i][5] == 15 ) {
var eff_types = '(Изучение)';
}else if( this.eff[i][5] == 17 ) {
var eff_types = '(Проклятие)';
}else if( this.eff[i][5] == 18 || this.eff[i][5] == 17 ) {
var eff_types = '(Травма)';
}else if( this.eff[i][5] == 20 ) {
var eff_types = '(Пристрастие)';
}else if( this.eff[i][5] == 22 ) {
var eff_types = '(Ожидание)';
}
title_eff += ' ' + eff_types;
html = ''+html;
}
}else{
i = -2;
}
i++;
}
}
return html;
},
userInfo:function(id,t) {
var stats_title = '';
stats_title += ''+this.users[id].login+'
';
stats_title += 'Сила: --
';
stats_title += 'Ловкость: --
';
stats_title += 'Интуиция: --
';
stats_title += 'Выносливость: --
';
var eff_data = this.userInfoEffects(id,t);
return info_reflesh(t,id,'',this.users[id].obraz,this.users[id].hp,this.users[id].hpAll,this.users[id].mp,this.users[id].mpAll,0,0,eff_data,stats_title,0,'');
},
generate:function() {
//Набито
$('#nabito').html( this.conf.damage );
//Таймаут
$('#timer_out').html( this.conf.timeout );
//Тактики
var i = 1;
while( i <= 7 ) {
$('#tac'+i).html( ( 0 + parseInt(this.conf.tactic[i]) ));
i++;
}
$('#tac7t').attr( { 'title':'Уровень духа: ' + this.conf.tactic[7] } );
//Игрок
$('#player1').html( this.userInfo(this.me,1) );
$('#player1_login').html( this.microLogin(this.me,0) );
this.userInfoItems(this.me,1);
//Противник
if( this.enemy > 0 ) {
$('#player2').html( this.userInfo(this.enemy,2) );
$('#player2_login').html( this.microLogin(this.enemy,0) + ' ' );
this.userInfoItems(this.enemy,2);
}else{
$('#player2_login').html('');
$('#player2').html('Нет противника...');
}
//Доп.функции
shpb();
//Приемы
var pr_see = '';
var pr = battleClass.conf.pr.split('|');
var prz = battleClass.conf.pr_z.split('|');
var i = 0;
while( i < battleClass.conf.pr_s ) {
if( pr[i] != undefined && pr[i] > 0 ) {
if( battleClass.priems[pr[i]] != undefined ) {
prm = battleClass.priems[pr[i]];
cl = '';
if( prm.type == 1 ) {
var onuser = '';
if( prm.onUser > 0 ) {
cl = 'href="javascript:void(0);" onClick="top.priemOnUser('+i+',1,\''+prm.name+'\',\''+onuser+'\',\''+prm.img+'\');"';
}else{
cl = 'href="javascript:void(0);" onClick="usepriem('+i+',1,\''+prm.img+'\');"';
}
}else if( prm.type == 2 ) {
cl = 'href="javascript:void(0);" onClick="usepriem('+i+',1,\''+prm.img+'\');"';
}else if( prm.type == 3 ) {
cl = 'href="javascript:void(0);" onClick="alert(\'Возможно используем?\');"';
}
}else{
prm = {
'id':pr[i],
'name':"*Неизвестный прием №"+pr[i]+"*",
'img':"clearPriem.gif"
};
cl = 'href="javascript:void(0);" onclick="alert(\'Прием не найден\');"';
}
pr_see += '';
}else{
pr_see += '';
}
i++;
}
$('#priems').html( pr_see );
delete pr_see;
//Собираем команды
var rd = '';
var tms = [];
var tmr = [0];
var i = 1;
while( i <= this.uids[0] ) {
if( tms[this.users[ this.uids[i] ].team] == undefined ) {
tmr[0]++;
tms[this.users[ this.uids[i] ].team] = '';
tmr[tmr[0]] = this.users[ this.uids[i] ].team;
}
if( this.users[ this.uids[i] ].hp > 0 ) {
if( tms[this.users[ this.uids[i] ].team] != '' ) {
tms[this.users[ this.uids[i] ].team] += ', ';
}
tms[this.users[ this.uids[i] ].team] += this.teamLogin(this.users[ this.uids[i] ].id,1);
}
i++;
}
var i = 1;
while( i <= tmr[0] ) {
if( tms[tmr[i]] != '' ) {
if( rd != '' ) {
rd += ' против ';
}
rd += ' ' + tms[tmr[i]];
}
i++;
}
$('#teams').html( rd );
//
//лог боя
this.loadLog('https://new-combats.com/battle_logs/btl_'+this.battle+'.js?'+this.hod);
this.logTimerX = 0;
this.logUpdateNow();
//
//Раздел поединка
if( this.testAct( this.me , this.enemy ) == true ) {
mainstatus(2);
}else{
mainstatus(1);
}
//
},
lastvlogid:0,
logTimer:null,
logTimerX:0,
logUpdateNow:function() {
clearTimeout(this.logTimer);
if( typeof logRefleshedCache == 'function' && loadingLogNow == true && this.lastvlogid < vlogid) {
this.lastvlogid = vlogid;
this.logTimerX = 0;
$('#battle_logg').html('');
logRefleshedCache();
}else{
this.logTimerX++;
this.log('logUpdateNow-cycles');
if( this.logTimerX < 101 ) {
this.logTimer = setTimeout('battleClass.logUpdateNow();',20);
}else{
this.logTimerX = 0;
}
}
},
teamLogin:function(id,type) {
var r = '';
if( this.users[id].align != undefined && this.users[id].align > 0 ) {
// r += '';
}
if( this.users[id].clan != undefined && this.users[id].clan > 0 ) {
// r += '';
}
var stl = '';
if( this.testAct(this.me,id) != false ) {
//Ударили ожидаем ответа
stl = '';
}
if( this.testAct(id,this.me) != false ) {
//Ударили, нужно ответить
stl = 'text-decoration:underline;';
}
r += ''+this.users[id].login+'';
//
r += ' ['+this.users[id].hp+'/'+this.users[id].hpAll+']';
//
return r;
},
microLogin:function(id,type) {
var r = '';
if( this.users[id].align != undefined && this.users[id].align > 0 ) {
r += '';
}
if( this.users[id].clan != undefined && this.users[id].clan > 0 ) {
r += '';
}
r += ''+this.users[id].login+' ['+this.users[id].level+']';
r += '';
return r;
}
};