zhuguoqing ff550d5d6a init
2022-05-22 10:32:02 +08:00

1303 lines
39 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var smap = null
var spawn = null
var spawnmap = {}
var newbiepoint = null
var gameConfig = require("gameConfig")
var Utils = require("Utils")
var quadtree = require("quadtree")
var dropcfg = gameConfig.dropConfig
var safecfg = gameConfig.safeConfig
var airConfig = gameConfig.airConfig
var praconfig = gameConfig.parameterConfig
var rankPointConfig = gameConfig.rankPointConfig
var killPointConfig = gameConfig.killPointConfig
var rankRewardConfig = gameConfig.rankRewardConfig
var killRewardConfig = gameConfig.killRewardConfig
var mapconfig = gameConfig.mapConfig
var chacheobj = require("battleobjcache")
var buffobj = require("buffobj")
var dropobj = require("dropobj")
var lootobj = require("lootobj")
var playerobj = require("playerobj")
var SDKManage = require("SDKManage")
var bnewbieCfg = require("battleNewbieConfig")
var bNewbieEnum = bnewbieCfg.enu
var gird = 1024
var housegird = 1024
var dtoh = 0.0174528
var totalalive = 40
var totalalivezombie = 10
var killrobottime = 5
var robotcreatetime = 5
var tongpingfudong = 3
var objgas = function() {
this.init = function(p, isnewbie) {
this.step = [30001, 30002, 30003, 30004, 30005, 30006, 30007]
this.idx = 0
this.mode = 0
this.pos_old = cc.v2(cc.clientbattle.mapsize / 2, cc.clientbattle.mapsize / 2)
this.pos_new = cc.v2()
this.statedu = 0
this.pausetime = 0
this.canreport = true
this.duration = 3 + Utils.randintSeed(5)
if (cc.clientbattle.battlecount == 1) {
this.duration = Number(praconfig.newbie_gas_inactive_time.param_value)
}
var tal = totalalive
cc.clientbattle.alive_count = Utils.randintSeed(10) + 10
if (cc.clientbattle.zombie) {
tal = totalalivezombie
cc.clientbattle.alive_count = 5
}
this.totalalive = tal
this.alivecount = cc.clientbattle.alive_count + 1
this.preadd = (tal - cc.clientbattle.alive_count) / (this.duration - 3)
this.isnewbie = isnewbie
if (this.isnewbie) {
this.duration = 0
}
}
this.GenSmallCircle = function() {
var dir = cc.v2(0, 1)
dir = Utils.dirRotate(dir, Utils.randintSeed(360) * dtoh)
var rad = Utils.randintSeed(this.rad_old - this.rad_new);
if (rad <= 0.001) {
rad = 0.001;
}
this.pos_new.x = this.pos_old.x + dir.x * rad
this.pos_new.y = this.pos_old.y + dir.y * rad
}
this.newduquan = function() {
this.canreport = true
if (this.statedu == 0) {
if (this.idx == this.step.length - 1) {
this.mode = -1
this.canreport = false
return
}
this.mode = 1
this.statedu = 1
var tcfg = safecfg[this.step[this.idx]]
this.duration = tcfg.wait_time
this.rad_old = tcfg.rad
// this.suoquanspeed= tcfg.shrink_speed
this.hurt = tcfg.hurt
this.idx++;
this.rad_new = safecfg[this.step[this.idx]].rad
this.suoquanspeed = (this.rad_old - this.rad_new) / tcfg.shrink_speed
this.GenSmallCircle()
} else if (this.statedu == 1) {
this.mode = 2
this.statedu = 0
this.duration = this.suoquanspeed
this.radfps = (this.rad_old - this.rad_new) / this.duration
this.movedir = {
x: (this.pos_old.x - this.pos_new.x) / this.duration,
y: (this.pos_old.y - this.pos_new.y) / this.duration,
}
}
}
this.update = function(dt) {
if (cc.jietumode || this.isnewbie) {
return
}
if (this.mode == -1) {
return
}
this.duration -= dt
if (this.mode == 0) {
this.alivecount += dt * this.preadd
if (Math.floor(this.alivecount) > cc.clientbattle.alive_count) {
cc.clientbattle.alive_count = Math.floor(this.alivecount)
if (cc.clientbattle.alive_count > this.totalalive) {
cc.clientbattle.alive_count = this.totalalive
}
cc.clientbattle.refreshalive()
}
}
if (this.duration <= 0) {
this.duration = 0
if (this.mode == 0) {
cc.gameMgr.dogamestart()
//cc.clientbattle.gamestart = true
cc.clientbattle.dogamestart()
this.pausetime = 1
if (cc.clientbattle.zombie) {
this.mode = -1
return
}
}
this.newduquan()
}
if (this.mode == 2) {
this.rad_old -= this.radfps * dt
this.pos_old.x -= this.movedir.x * dt
this.pos_old.y -= this.movedir.y * dt
}
}
}
var clientserver = function(bcount) {
this.battlecount = bcount
this.createloot = function(maparr, needspawn, px, py) {
for (var i = maparr.length - 1; i >= 0; i--) {
var dat = maparr[i]
if (needspawn) {
if (dat.param1) {
spawn.push(dat)
if (dat.name == praconfig.newbie_born_point.param_value) {
newbiepoint = dat
}
continue
} else {
dat.xidx = Math.floor((dat.x + px) / gird)
dat.yidx = Math.floor((dat.y + py) / gird)
if (!dat.kongqiqiang) {
dat.obstacle_id = dat.things.split('\n')[0].split(':')[0]
} else {
dat.weight = 10000
dat.obstacle_id = 100003
}
// dat.obstacle_id = dat.things.split('\n')[0].split(':')[0]
}
}
//if(true){
if (Utils.randintSeed(10000) < Number(dat.weight)) {
if (!this.lootarr[dat.xidx + "-" + dat.yidx]) {
this.lootarr[dat.xidx + "-" + dat.yidx] = []
}
var loot = new lootobj()
if (loot.init(dat, this.obj_uniid++)) {
loot.pos.x += px
loot.pos.y += py
loot.x = loot.pos.x
loot.y = loot.pos.y
// this.lootarr[dat.xidx+"-"+dat.yidx].push(loot)
if (loot.object_type == 3) {
this.createloot(loot.lootarr, needspawn, loot.pos.x - loot.tilewidth, loot.pos.y - loot.tileheight)
this.housearr.push(loot)
} else {
this.lootarr[dat.xidx + "-" + dat.yidx].push(loot)
if (loot.needpz) {
this.myTree.insert({
xx: loot.x,
yy: loot.y,
x: loot.x - loot.width / 2,
y: loot.y - loot.height / 2,
width: loot.width,
height: loot.height,
loot: loot
});
}
}
}
}
}
}
this.dogamestart = function() {
this.gamestart = true
this.memberarr = {
}
if (this.zudui) {
for (var i = 0; i < 3; i++) {
let robot = new playerobj(this.obj_uniid++, this)
robot.init(null, true)
this.playerarr.push(robot)
this.memberarr[robot.obj_uniid] = robot
}
this.memberarr[this.player.obj_uniid] = this.player
}
}
this.clean = function() {
cc.Notifier.off('jiantingbattle', this);
chacheobj.objmapplayer = {}
chacheobj.objmaploot = {}
chacheobj.objdrop = {}
chacheobj.shotarr.length = 0
chacheobj.bulletarr.length = 0
cc.clientbattle = null
this.myTree.clear();
cc.Notifier.cleankey('ondesloot')
}
this.initmap = function() {
this.myTree = new quadtree({
x: 0,
y: 0,
width: this.mapsize,
height: this.mapsize
}, 6);
chacheobj.objmapplayer = {}
chacheobj.objmaploot = {}
chacheobj.objdrop = {}
chacheobj.shotarr.length = 0
chacheobj.bulletarr.length = 0
this.lootarr = {}
this.dropitemmap = {}
this.playerarr = []
this.mapthingarr = []
this.needpush = []
this.housearr = []
this.boomarr = []
this.smokearr = []
this.obj_uniid = 1
this.chged_buff_list = []
this.zuoqiarr = []
this.eventarr = []
this.eventarrtemp = []
this.emitarr = []
this.airtime = 0
this.aircfgarr = [1, 2, 3, 4, 5, 6]
this.airidx = 0
this.rbotidx = 0
this.killtime = 0
this.nameidx = []
var needspawn = false
if (!spawnmap[this.mapdataname]) {
spawnmap[this.mapdataname] = []
needspawn = true
}
spawn = spawnmap[this.mapdataname]
if (smap) {
this.createloot(smap, needspawn, 0, 0)
}
}
this.getaair = function() {
return airConfig[this.aircfgarr[this.airidx]]
}
this.randpos = function(player) {
if (!player) {
player = this.player
}
//var idx = Utils.randintSeed(spawn.length)
// this.player.setposition(spawn[idx].x, spawn[idx].y)
if (this.isnewbie) { //jjtest
this.player.setposition(500, 1168)
this.createlootbyid("160001", 500, 1168)
this.createlootbyid("160002", 1330, 943) //下方空气墙(常驻)
this.createlootbyid("160002", 1330, 1380) //上方空气墙(常驻)
this.createlootbyid("160003", 400, 1168) //左空气墙(常驻)
this.createlootbyid("160003", 2030, 1168) //右空气墙(常驻)
this.createlootbyid("160004", 1070, 1134) //关卡1空气墙1后关闭
//this.createlootbyid("160005", 1720, 1179) //关卡2空气墙2后关闭
this.createlootbyid("160006", 1070, 1134) //关卡1空气墙1后关闭
//this.createlootbyid("160007", 1720, 1179) //关卡2空气墙2后关闭
}
}
this.init = function(cfg) {
cfg.newbiemode = true
this.frameno = 0
if (cc.jietumode) {
gird = 30000
housegird = 51200
}
// if (!cfg.mapid) {
// cfg.mapid = 1000
// }
cfg.team_mode = 0
cfg.mapid = 1000
mapconfig[1000] = {
airdrops: "1|2|3|4|5|6",
color: "#514849",
map_height: 2432,
map_id: 1000,
map_mode: 99,
map_name: "新手战",
map_pic: 2,
map_width: 2432,
player: 10,
refresh_robot: "2-3|1-2",
safearea: 30001,
template_list: "1001:1000",
}
cfg.baseskin[0] = 1
// cfg.skill_list = [{key: 10301, value: 0},{key: 20301, value: 0}]
var mapjs = "map" + mapconfig[cfg.mapid].template_list.split(':')[0]
//smap = require("newbiemap")
this.mapdataname = mapjs
if (cfg.newbiemode) {
this.isnewbie = true
cc.Notifier.on('jiantingbattle', this, this.jiantingbattle.bind(this));
} else {
this.isnewbie = false
}
this.robotnamearr = cc.language.getrobot()
this.radgunarr = cc.language.getrangun()
for (var i = 0; i < this.robotnamearr.length; i++) {
var s = this.robotnamearr[i]
var cidx = Math.floor(Math.random() * this.robotnamearr.length)
this.robotnamearr[i] = this.robotnamearr[cidx]
this.robotnamearr[cidx] = s
}
cc.clientbattle = this
this.team_data = []
if (cfg.team_mode == 1) {
this.zudui = true
}
if (cfg.room_mode == 1) {
this.zudui = false
this.zombie = true
}
this.mapsize = mapconfig[cfg.mapid].map_width
totalalive = mapconfig[cfg.mapid].player
this.gamestart = false
this.fixdrop = []
if (this.battlecount == 1) {
this.fixdrop = praconfig.newbie_drop.param_value.split(':')
}
this.newbiebaohu = 30
this.initmap()
this.player = new playerobj(this.obj_uniid++, this)
this.player.name = SDKManage.nickName
this.player.init(cfg)
this.active_player_id = this.player.obj_uniid
this.playerarr.push(this.player)
this.gas = new objgas()
this.gas.init(this.alive_count, this.isnewbie)
this.time_alive = 0
this.randpos()
this.aitime = 0
if (!this.zombie) {
this.robotcount = totalalive - 1
} else {
this.robotcount = totalalivezombie - 1
}
this.aliverobot = 0
if (this.zudui) {
this.robotcount -= 3
}
if (this.battlecount == 1) {
this.canrefreshrobot = false
this.aitime = robotcreatetime - Number(praconfig.newbie_first_robot_appeartime.param_value)
} else {
this.canrefreshrobot = true
}
this.tongping = 1
if (this.isnewbie) {
this.dogamestart()
}
}
this.createdropitem = function(k, pos, plus, notmove, gunlv, player) {
if (k == 0) {
return
}
var rx = Utils.randintSeed(100) - 50
var ry = Utils.randintSeed(100) - 50
if (notmove) {
rx = ry = plus = 0
}
var x = pos.x + rx
var y = pos.y + ry
if (plus) {
var dir = cc.v2(rx, ry)
dir = dir.normalize()
x = pos.x + dir.x * plus
y = pos.y + dir.y * plus
}
var xidx = Math.floor(x / gird)
var yidx = Math.floor(y / gird)
var xykey = xidx + "-" + yidx
if (!this.dropitemmap[xykey]) {
this.dropitemmap[xykey] = []
}
var dobj = new dropobj()
dobj.init(this.obj_uniid++, k, x, y, gunlv, player)
if (dobj.dead == false) {
this.dropitemmap[xykey].push(dobj)
if (dobj.equip_type == 9) {
this.zuoqiarr.push(dobj)
this.needzuoqi = true
}
}
}
this.createdrop = function(dropid, pos) {
if (dropid) {
if (this.fixdrop.length > 0) {
dropid = this.fixdrop.shift()
}
var data = dropcfg[dropid]
if (!data.inited) {
data.inited = true
var itemarr = data.item_id.split('|')
var numarr = data.num.split('|')
var weightarr = data.weight.split('|')
data.item = []
for (var i = 0; i < itemarr.length; i++) {
data.item.push({
k: itemarr[i],
v: numarr[i],
w: Number(weightarr[i])
})
}
}
for (var i = data.item.length - 1; i >= 0; i--) {
if (Utils.randintSeed(10000) < data.item[i].w) {
this.createdropitem(data.item[i].k, pos)
}
}
// this.createdropitem(15048,pos)
// this.createdropitem(13014,pos)
// this.createdropitem(17001,pos)
}
}
this.dohit = function(gun, uuid, tp, pos, atkerid) {
if (this.gamestart == false) {
return
}
if (gun.explosion_range) {
if (gun.atk) {
this.createboom(gun.atk, gun.explosion_range, pos, gun.explosion_effect, true, atkerid, gun)
} else if (gun.equip_type == 3) {
this.createsmoke(pos)
}
} else {
if (tp == 2) {
var drop = chacheobj.objmaploot[uuid].hurt(gun.atk, atkerid)
this.createdrop(drop, pos)
} else if (tp == 1) {
chacheobj.objmapplayer[uuid].hurt(gun.atk, atkerid, gun)
}
}
}
this.createsmoke = function(pos) {
this.smokearr.push({
pos: {
x: pos.x,
y: pos.y
},
})
}
this.dobaoxiang = function() {
var player = this.player
player.backpack = 12701
player.refreshbag()
player.getitem(7)
player.getitem(8)
player.needreport = true
}
this.createboom = function(atk, rag, pos, eff, skipplayer, atkerid, gun) {
var xidx = Math.floor(pos.x / gird)
var yidx = Math.floor(pos.y / gird)
var xykey = xidx + "-" + yidx
var bom = {
x: pos.x,
y: pos.y,
width: rag * 2
}
var oar = this.lootarr[xykey]
if (oar) {
for (var j = oar.length - 1; j >= 0; j--) {
if (Utils.hitTestCircle(bom, oar[j])) {
var drop = oar[j].hurt(atk, atkerid)
this.createdrop(drop, pos)
}
}
}
for (var j = this.playerarr.length - 1; j >= 0; j--) {
// if (skipplayer && this.playerarr[j] == this.player) {
// continue
// }
if (atkerid == this.playerarr[j].obj_uniid) {
continue
}
if (Utils.hitTestCircle(bom, this.playerarr[j])) {
this.playerarr[j].hurt(atk, atkerid, gun)
}
}
this.boomarr.push({
pos: {
x: pos.x,
y: pos.y
},
effect: eff,
})
}
this.pushcgbuff = function(buff, player, chg) {
this.chged_buff_list.push({
obj_id: player.obj_uniid,
chg: chg,
buff: {
buff_id: buff.buff_id,
left_time: buff.left_time,
lasting_time: buff.lasting_time,
}
})
}
this.sendupdate = function() {
if (this.gameover) {
return null
}
var out_objids = []
var full_objects = []
var airdrop = this.airdrop
this.airdrop = null
var xidx = Math.floor(this.player.pos.x / gird)
var yidx = Math.floor(this.player.pos.y / gird)
var xykey = xidx + "-" + yidx
var outarea = []
var emotes = []
var deletarr = []
if (this.area != xykey) {
var sx = xidx - 1
var mx = xidx + 1
var sy = yidx - 1
var my = yidx + 1
var temp = [
xidx + "-" + yidx,
xidx + "-" + sy,
xidx + "-" + my,
sx + "-" + yidx,
sx + "-" + sy,
sx + "-" + my,
mx + "-" + yidx,
mx + "-" + sy,
mx + "-" + my,
]
for (var i = 0; i < this.needpush.length; i++) {
var baoliu = false
for (var j = 0; j < temp.length; j++) {
if (this.needpush[i] == temp[j]) {
baoliu = true
break
}
}
if (!baoliu) {
outarea.push(this.needpush[i])
}
}
this.needpush = temp
this.area = xykey
}
for (var i = outarea.length - 1; i >= 0; i--) {
var oar = this.lootarr[outarea[i]]
if (oar) {
for (var j = oar.length - 1; j >= 0; j--) {
out_objids.push(oar[j].obj_uniid)
}
}
var oar2 = this.dropitemmap[outarea[i]]
if (oar2) {
for (var j = oar2.length - 1; j >= 0; j--) {
out_objids.push(oar2[j].obj_uniid)
}
}
}
for (var i = this.needpush.length - 1; i >= 0; i--) {
var oar = this.lootarr[this.needpush[i]]
if (oar) {
for (var j = oar.length - 1; j >= 0; j--) {
var onedata = oar[j]
full_objects.push({
object_type: onedata.object_type,
["union_obj_" + onedata.object_type]: onedata,
})
}
}
var oar2 = this.dropitemmap[this.needpush[i]]
if (oar2) {
for (var j = oar2.length - 1; j >= 0; j--) {
var onedata = oar2[j]
full_objects.push({
object_type: onedata.object_type,
["union_obj_" + onedata.object_type]: onedata
})
if (onedata.dead) {
if (onedata.equip_type == 9) {
this.needzuoqi = true
}
deletarr.push(onedata.obj_uniid)
chacheobj.objdrop[onedata.obj_uniid] = null
oar2.splice(j, 1);
}
}
}
}
for (var i = this.housearr.length - 1; i >= 0; i--) {
var onedata = this.housearr[i]
if (Math.abs(onedata.pos.x - this.player.pos.x) < housegird && Math.abs(onedata.pos.y - this.player.pos.y) < housegird) {
full_objects.push({
object_type: onedata.object_type,
["union_obj_" + onedata.object_type]: onedata
})
this.housearr.splice(i, 1);
}
}
for (var i = this.playerarr.length - 1; i >= 0; i--) {
var oneplayer = this.playerarr[i]
var px = Math.floor(oneplayer.pos.x / gird)
var py = Math.floor(oneplayer.pos.y / gird)
var key = px + "-" + py
var canpush = false
for (var j = this.needpush.length - 1; j >= 0; j--) {
if (key == this.needpush[j]) {
canpush = true
break
}
}
if (canpush) {
full_objects.push({
object_type: 1,
["union_obj_1"]: oneplayer
})
if (oneplayer.emote) {
emotes.push(oneplayer.emote)
}
} else {
var needout = false
for (var j = outarea.length - 1; j >= 0; j--) {
if (key == outarea[j]) {
needout = true
break
}
}
if (needout) {
out_objids.push(oneplayer.obj_uniid)
}
}
oneplayer.emote = null
}
var bulletarr2 = []
for (var i = chacheobj.bulletarr.length - 1; i >= 0; i--) {
bulletarr2.push(chacheobj.bulletarr[i])
}
chacheobj.bulletarr.length = 0
var shotarr2 = []
for (var i = chacheobj.shotarr.length - 1; i >= 0; i--) {
shotarr2.push(chacheobj.shotarr[i])
}
chacheobj.shotarr.length = 0
var boomarr2 = []
for (var i = this.boomarr.length - 1; i >= 0; i--) {
boomarr2.push(this.boomarr[i])
}
this.boomarr.length = 0
var smokearr2 = []
for (var i = this.smokearr.length - 1; i >= 0; i--) {
smokearr2.push(this.smokearr[i])
}
this.smokearr.length = 0
var chged_buff_list2 = []
for (var i = this.chged_buff_list.length - 1; i >= 0; i--) {
chged_buff_list2.push(this.chged_buff_list[i])
}
this.chged_buff_list.length = 0
var ropp = null
if (this.player.needreport) {
this.player.needreport = false
ropp = this.player
ropp.action_frameno = this.frameno
}
var chged_property_list = null
if (this.player.propertyarr.length > 0) {
chged_property_list = this.player.propertyarr
this.player.propertyarr = []
}
var gas = null
if (this.gas.canreport) {
gas = this.gas
this.gas.canreport = false
}
var gas_progress = null
var gas_pos_old = null
if (this.gas.mode == 2) {
gas_progress = this.gas.rad_old
gas_pos_old = this.gas.pos_old
}
if (this.team_data) {
for (var i = this.team_data.length - 1; i >= 0; i--) {
this.team_data[i].health = this.memberarr[this.team_data[i].player_id].health
this.team_data[i].max_health = this.memberarr[this.team_data[i].player_id].max_health
}
}
if (cc.jietumode) {
out_objids = []
}
var skillani = []
if (this.nowskill) {
skillani.push({
skill_id: this.nowskill,
obj_uniid: this.player.obj_uniid
})
this.nowskill = null
}
var req = {
airdrop: airdrop,
frameno: this.frameno,
active_player_id: this.player.obj_uniid,
alive_count: this.alive_count,
active_player_data: ropp,
bullets: bulletarr2,
chged_buff_list: chged_buff_list2,
del_objids: deletarr,
emotes: emotes,
explosions: boomarr2,
full_objects: full_objects,
gas_data: gas,
gas_pos_old: gas_pos_old,
gas_progress: gas_progress,
out_objids: out_objids,
part_objects: [],
shots: shotarr2,
smokes: smokearr2,
team_data: this.team_data,
chged_property_list: chged_property_list,
play_skill_list: skillani,
}
this.frameno++;
return req
}
this.createlootbyid = function(oid, ox, oy) {
var loot = new lootobj()
var dat = {
x: ox,
y: oy,
obstacle_id: oid
}
dat.xidx = Math.floor(dat.x / gird)
dat.yidx = Math.floor(dat.y / gird)
if (loot.init(dat, this.obj_uniid++, this)) {
if (!this.lootarr[dat.xidx + "-" + dat.yidx]) {
this.lootarr[dat.xidx + "-" + dat.yidx] = []
}
this.lootarr[dat.xidx + "-" + dat.yidx].push(loot)
this.myTree.insert({
xx: loot.x,
yy: loot.y,
x: loot.x - loot.width / 2,
y: loot.y - loot.height / 2,
width: loot.width,
height: loot.height,
loot: loot
});
}
return loot
}
this.createair = function() {
this.createlootbyid(this.aironjid, this.airx, this.airy)
}
this.createnewbieenemy = function(data) {
let robot = new playerobj(this.obj_uniid++, this)
robot.init(undefined, undefined, data[4])
if (data[3] == 1) {
robot.setposition(this.player.x + data[1], this.player.y + data[2])
} else {
robot.setposition(data[1], data[2])
}
robot.setaicfg(data[5])
this.playerarr.push(robot)
this.aliverobot++;
this.refreshalive()
}
this.donewbiewin = function() {
setTimeout(() => {
this.gameover = true
}, 100);
cc.gameMgr.uic.newbiewin()
}
this.update = function(dt) {
if (this.wincheck) {
if (this.aliverobot == 0) {
this.wincheck = false
cc.Notifier.emit("jiantingbattle","newbieover")
}
}
if (this.gamestart && this.aitime > robotcreatetime && this.robotcount > 0 && this.aliverobot < this.tongping && !this.player.tiaosan && !this.isnewbie) {
this.tongping = Utils.randintSeed(tongpingfudong) + 1
this.aitime = 0
let robot = new playerobj(this.obj_uniid++, this)
robot.init()
var dir = cc.v2(0, 1)
dir = Utils.dirRotate(dir, Utils.randintSeed(360) * dtoh)
if (this.battlecount > 1) {
robot.setposition(this.player.x + dir.x * 400, this.player.y + dir.y * 400)
} else {
if (!this.fistbobot) {
this.fistbobot = true
dir.x = 0
dir.y = 1
dir = Utils.dirRotate(dir, 280 * dtoh)
var dis = Number(praconfig.newbie_first_robot_distance.param_value)
robot.setposition(this.player.x + dir.x * dis, this.player.y + dir.y * dis)
} else {
robot.setposition(this.player.x + dir.x * 400, this.player.y + dir.y * 400)
}
}
this.playerarr.push(robot)
this.robotcount--;
this.aliverobot++;
}
for (var i = 0; i < this.playerarr.length; i++) {
this.playerarr[i].update(dt, this.gas)
}
this.gas.update(dt)
this.time_alive += dt
if (this.gamestart && !this.isnewbie) {
if (this.newbiebaohu > 0) {
this.newbiebaohu -= dt
if (this.newbiebaohu <= 0) {
this.canrefreshrobot = true
}
}
if (this.canrefreshrobot) {
this.aitime += dt
}
if (this.airidx < this.aircfgarr.length) {
this.airtime += dt
var airdata = this.getaair()
if (this.airtime > airdata.time) {
this.aironjid = airdata.drop_id
this.airx = this.gas.pos_old.x + Utils.randintSeed(this.gas.rad_new) - this.gas.rad_new / 2
this.airy = this.gas.pos_old.y + Utils.randintSeed(this.gas.rad_new) - this.gas.rad_new / 2
this.airdroptime = 5
this.airdrop = {
pos: {
x: this.airx,
y: this.airy,
},
appear_time: airdata.appear_time,
box_id: aironjid,
}
this.airidx++
}
}
if (this.robotcount > 0 && this.canrefreshrobot && !this.zombie) {
this.killtime += dt
if (this.killtime > killrobottime) {
this.killtime = 0
this.robotcount--;
this.showkiiltip()
this.alive_count--;
this.refreshalive()
}
}
}
if (this.airdroptime > 0) {
this.airdroptime -= dt
if (this.airdroptime <= 0) {
this.createair()
}
}
var pd = 1
if (this.zudui) {
pd = 4
}
if (this.alive_count == pd && !this.isnewbie) {
this.dogameover()
}
this.updateevent(dt)
}
this.move = function(data) {
if (this.gameover) {
return
}
var dt = 0.09
if (this.gas.pausetime > 0) {
this.gas.pausetime -= dt
if (this.gas.pausetime <= 0) {
if (this.battlecount > 1) {
this.randpos()
} else {
this.player.setposition(newbiepoint.x, newbiepoint.y)
}
if (this.zudui) {
for (var k in this.memberarr) {
if (this.memberarr[k] != this.player) {
this.memberarr[k].setposition(this.player.x + Utils.randintSeed(50), this.player.y + Utils.randintSeed(50))
this.team_data.push({
player_id: this.memberarr[k].obj_uniid,
max_health: 200,
health: 200,
name: this.robotnamearr[this.rbotidx],
dead: false,
downed: false,
pos: this.memberarr[k].pos,
account_id: "",
vip_lv: this.memberarr[k].vip_lv,
head: this.memberarr[k].head,
user_data: this.memberarr[k].user_data,
avatar_url: this.memberarr[k].avatar_url,
})
this.memberarr[k].name = this.robotnamearr[this.rbotidx]
this.rbotidx++
}
}
}
for (var i = 0; i < this.playerarr.length; i++) {
this.playerarr[i].daduanaction()
this.playerarr[i].addbuff(7002)
}
}
return
}
this.player.onreport(data)
this.update(dt)
if (this.needzuoqi) {
this.zuoqiui()
}
}
this.sendRevive = function() {
this.player.revive()
}
this.dogameover = function(killname) {
this.gameover = true
var rank = this.alive_count
if (this.zudui) {
rank -= 3
}
var gold = killRewardConfig[this.player.killcount].parameter * Number(praconfig.kill_parameter.param_value) + rankRewardConfig[rank].parameter * Number(praconfig.rank_parameter.param_value)
var jifen = rankPointConfig[rank].parameter2 + killPointConfig[this.player.killcount].parameter2
var itemget = []
for (var k in this.player.battleitemmap) {
itemget.push({
values: [Number(k), this.player.battleitemmap[k]]
})
}
cc.gameMgr.uic.netGameOver({
team_data: this.team_data,
team_rank: rank,
offline: true,
player_stats: [{
items: [], //{key:18005,value:1},{key:18004,value:2}
time_alive: Math.floor(this.time_alive) * 1000,
damage_amount: Math.floor(this.player.dmg),
kills: this.player.killcount,
killer_account_id: 10086,
killer_name: killname,
gold: gold,
rank_score: jifen,
}],
spoils_items: itemget
})
}
this.sendGameOver = function() {
this.player.dodead()
}
this.showkiiltip = function(name, gunname) {
if (!gunname) {
gunname = this.radgunarr[Utils.randintSeed(this.radgunarr.length)]
}
var atker = cc.language.stringformat("morenmingzi")
var deader = cc.language.stringformat("morenmingzi")
if (Utils.randintSeed(100) > 10) {
deader = this.robotnamearr[this.rbotidx]
this.rbotidx++
}
if (name) {
atker = name
} else {
if (Utils.randintSeed(100) > 10) {
atker = this.robotnamearr[this.rbotidx]
}
}
var str = cc.language.stringformat("fighttips1", [atker, gunname, deader]) //atker + " 使用 " + gunname + " 干掉了 " + deader
// cc.gameMgr.uic.showbattletip(str)
}
this.dokillmsg = function(name, gun) {
this.alive_count--;
this.refreshalive()
if (gun) {
this.showkiiltip(name, gun.name)
}
}
this.refreshalive = function() {
var count = this.alive_count
if (this.isnewbie) {
count = this.aliverobot + 1
}
cc.gameMgr.uic.refreshAlive({
alive_count: count,
kill_count: this.player.killcount
})
}
this.zuoqiui = function() {
var out = []
for (var i = this.zuoqiarr.length - 1; i >= 0; i--) {
if (this.zuoqiarr[i].dead) {
this.zuoqiarr.splice(i, 1);
} else {
out.push({
pos: {
x: this.zuoqiarr[i].pos.x,
y: this.zuoqiarr[i].pos.y
}
})
}
}
cc.gameMgr.uic.refreshTank(out)
this.needzuoqi = false
}
this.getpzobjs = function(data) {
return this.myTree.retrieve(data)
}
this.updateevent = function(dt) {
for (var i = this.eventarrtemp.length - 1; i >= 0; i--) {
this.eventarr.push(this.eventarrtemp[i])
}
this.eventarrtemp.length = 0
for (var i = this.eventarr.length - 1; i >= 0; i--) {
var onedata = this.eventarr[i]
if (onedata.lifetime) {
onedata.lifetime -= dt
if (onedata.lifetime <= 0) {
onedata.target.donext()
this.eventarr.splice(i, 1);
}
}
}
}
this.addevent = function(tar, dat) {
var tp = dat[0]
if (tp == bNewbieEnum.delay) {
this.eventarrtemp.push({
target: tar,
lifetime: dat[1]
})
} else if (tp == bNewbieEnum.waitforemit) {
this.emitarr.push({
target: tar,
emit: dat[1]
})
}
// else if (tp == bNewbieEnum.touch) {
// cc.bnewbiemgr.ntouch(tar,dat[1])
// }
}
this.jiantingbattle = function(v) {
for (var i = this.emitarr.length - 1; i >= 0; i--) {
var onedata = this.emitarr[i]
if (onedata.emit == v) {
onedata.target.donext()
this.emitarr.splice(i, 1);
}
}
}
}
module.exports = clientserver;