无名杀吧 关注:64,756贴子:289,261
  • 25回复贴,共1

联机扩展编写教程

只看楼主收藏回复

前言:
1.用这个方法相当于源码添加武将包(卡包),跳过了一些禁止联机的判断,从而达到扩展联机效果。
2.此教程只介绍了联机武将包和卡包的添加方法,功能性的联机扩展需要自己推。
框架:
game.import("extension",function(lib,game,ui,get,ai,_status){return{name:"扩展名",content:function(config,pack){
if(config.武将包名英文){
for(var i in lib.characterPack['武将包名英文']) {
if(lib.character[i][4].indexOf("forbidai")<0)lib.character[i][4].push("forbidai");
};
};//选项触发内容,原因见config
},precontent:function(武将包名英文){
if(武将包名英文.enable){
//武将包
game.import('character',function(){
var 武将包名英文={
name:'武将包名英文',//武将包命名(必填)
connect:true,//该武将包是否可以联机(必填)
character:{
//武将格式:
//"武将名字":["性别","势力",体力,[技能],[]],
//格式内每一样东西都不能缺少,否则无法导入该武将包及其以下内容
},//武将(必填)
characterIntro:{},//武将介绍(选填)
characterTitle:{},//武将标题(用于写称号或注释)(选填)
skill:{},//技能(必填)
translate:{},//翻译(必填)
perfectPair:{},//珠联璧合武将(选填)
};
if(lib.device||lib.node){
for(var iin 武将包名英文.character){武将包名英文.character[i][4].push('ext:扩展名/'+i+'.jpg');}
}else{
for(var iin 武将包名英文.character){武将包名英文.character[i][4].push('db:extension-扩展名:'+i+'.jpg');}
}//由于以此法加入的武将包武将图片是用源文件的,所以要用此法改变路径
return 武将包名英文;
});
lib.config.all.characters.push('武将包名英文');
if(!lib.config.characters.contains('武将包名英文')) lib.config.characters.push('武将包名英文');
lib.translate['武将包名英文_character_config']='武将包名';// 包名翻译
//卡包(手牌)
game.import('card',function(){
var 卡包名英文={
name:'卡包名英文',//卡包命名
connect:true,//卡包是否可以联机
card:{
'卡名':{
image:'ext:扩展名/卡名.jpg', //卡牌图片
//以下与一般卡牌一样
},//卡格式
skill:{},//技能
translate:{},//翻译
list:[],//牌堆添加
};
return 卡包名英文;
});
lib.translate['卡包名英文_card_config']='卡包名';
lib.config.all.cards.push('卡包名英文');
if(!lib.config.cards.contains('卡包名英文')) lib.config.cards.push('卡包名英文');//包名翻译
};
},config:{
"武将包名英文":{"name":"将武将包名内武将设为禁用","init":false},
//由于以此法添加的武将包自带的禁用按钮无法使用,需要写这个选项来禁用该武将包武将(单机)
},help:{},package:{
character:{
character:{
},
translate:{
},
},
card:{
card:{
},
translate:{
},
list:[],
},
skill:{
skill:{
},
translate:{
},
},
intro:"",
author:"Aurora",
diskURL:"",
forumURL:"",
version:"",
},files:{"character":[],"card":[],"skill":[]}}})
注意事项:
1.有些函数触发时,主机不会发送触发内容给客机,这是就要用game.broadcastAll(function(){})或game.broadcast (function(){})。(具体用法看源码,不举例)
2.如果是储存类的联机扩展(不如联机皮肤什么的)解决方法:
(1)数据位于服务器,直接读取。
(2)数据位于本地,在主机将信息发送给客机时改动。(我找不到端口,不具体说明)
3.联机时,客机扩展要和主机一致,否则客机发生错误。
4.同一个扩展可以以此法添加多个武将包或卡包。


IP属地:广东1楼2018-06-09 22:55回复


    IP属地:浙江来自Android客户端3楼2018-06-09 23:03
    回复
      联机。。真的有人在联吗?


      IP属地:浙江来自Android客户端4楼2018-06-10 01:00
      收起回复
        大佬,最近想玩高达一号,不知道大佬可有代码?


        IP属地:陕西来自Android客户端5楼2018-06-10 01:45
        回复(3)
          感谢大佬分享


          来自Android客户端11楼2018-07-27 18:44
          回复
            大佬,,我想问一下详细的联机过程


            IP属地:山东来自Android客户端12楼2018-07-31 09:14
            回复
              极光大佬,我发现按照这个联机框架把内容填进去之后只有身份局武将,但是如果国战专属的扩展想要联机,这框架哪里要改呀我教程里面看了一边是真的没找到


              IP属地:浙江来自Android客户端14楼2020-02-28 19:14
              收起回复
                国战不一样


                IP属地:重庆来自Android客户端15楼2020-02-28 19:20
                收起回复
                  按照这个框架写的,可是联机还是没用


                  IP属地:上海来自Android客户端16楼2021-10-30 18:33
                  收起回复
                    怎么让自定义模式可联机


                    IP属地:重庆17楼2022-03-08 23:14
                    回复
                      我这样添加了文和乱武扩展,联机开房,它这里还是只有身份国战对决斗地主这几个选项,在哪开联机文和乱武?



                      IP属地:重庆18楼2022-03-08 23:20
                      回复
                        大佬大佬
                        想问下translation里面能不能加function?我试过了dynamicTranslation会报错/哭
                        谢谢/


                        19楼2022-03-20 22:08
                        回复
                          极光大佬您好,本人想


                          在无名杀中定制一个和十周年2V2比赛模式一样的模式
                          就是和SCL一样的2V2比赛模式,一方将池发10个将,ban掉对面2个,然后在我方剩下8个武将中选择2个登场。
                          牌堆是军争扣除木马。下图是将池(都是十周年的技能)
                          这是目前十周年比赛模式的效果,想委托大佬您帮帮忙,只要能banpick将池对就行,不需要花里胡哨,谢谢大佬了!!!


                          IP属地:美国20楼2022-03-21 21:17
                          回复