lua 登录过的账号 如何保存到模拟器登录小米账号里

08:26:25 UTC
cocos2dx-lua 3.8 cocos 模拟器 怎么设置 可以输出 log没有log真不方便,代码错了都不知道错在哪行。3.7的时候log还是能正常输出的
09:16:36 UTC
编译你的项目, ide-support/CodeIDESupport.h
define CC_CODE_IDE_DEBUG_SUPPORT 1
AppDelegate.cpp
if (COCOS2D_DEBUG & 0) && (CC_CODE_IDE_DEBUG_SUPPORT & 0)
都为1 就有log
09:14:42 UTC
感谢2楼CC_CODE_IDE_DEBUG_SUPPORT
默认就是 1COCOS2D_DEBUG 不是 config.lua
的 DEBUG 参数吗? 一直都写的是2要重新编译 cocos 模拟器 吗
12:46:00 UTC
在AppDelegate.cpp 里面加上
engine-&executeString("print = release_print");加载下面代码上面
if (COCOS2D_DEBUG & 0) && (CC_CODE_IDE_DEBUG_SUPPORT & 0)
不过手机上不知道怎么看到日志。
08:07:06 UTC
local function main()
print = release_print
require("app.MyApp"):create():run()end
在 main 函数里面加句
print = release_printprintf("...................)
print("fdsfds") 都可以显示出来了
14:37:35 UTC
这个方法真的管用,太感谢了LUA 如何删除TXT文件里的第一行内容并保存_百度知道
LUA 如何删除TXT文件里的第一行内容并保存
LUA 如何删除TXT文件里的第一行内容并保存
我有更好的答案
f=io.open (&youfile.txt&,&r&)
--打开你的输入文件 名称为youfile.txtf:read(&*l&)
--读取一行,但是不保存s=f:read(&*a&)
--读取剩下的所有,保存到变量f:close()
--关闭文件f=io.open(youfile.txt&,&w&)
--打开输出文件youfile.txt f:write(s)
--将上面保存的剩下所有的内容写入到输出文件f:close() --关闭 --这样会损坏你的输入文件,请自行备份--这种方法不建议打开太大的文件(&10M) 速度会很慢。
采纳率:61%
为您推荐:
其他类似问题
lua的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
 论坛入口:
  |   |    |   | 
【技术交流】Lua做的“ATB战斗模拟器”
(17.97 KB, 下载次数: 152)
10:51 上传
点击文件名下载附件
有个小朋友要搞独立游戏,采用ATB的战斗模式(应该是想学轨迹系列吧),为了让他学习我的Buff机制在ATB模式下的使用,以及方便做数值演算(相比excel……也许……更方便),花了1天时间做了个小玩意,纯lua的。要使用他,你得有Lua5.3的环境,然后:
windows:cmd下cd到对应文件夹,运行 main.lua。
macOS:terminal下cd到对应文件夹,运行 lua main.lua。
什么是ATB游戏?
what_is_ATB.png (542.07 KB, 下载次数: 4)
10:54 上传
这是史克威尔(和爱尼克斯没啥关系,那时候还没合并)在FF4中首创的一种战斗规则,突破了传统RPG回合制的回合算法,每个角色根据自己的速度(之类的)属性决定自己在战斗中可以出手的回合,而不再是一个回合场上每个人出手一次,即速度越快的角色,一场战斗出手频率也越高。这个规则在之后被广泛运用,很多大作如《梦幻模拟战》系列等都用了这样一个规则,国内的《仙剑》、《轩辕剑》系列后几作也有用到这样的战斗规则。
当然被现代玩家,尤其是喜欢二次元玩家熟知的ATB游戏系列应该就是《XX轨迹》系列了:
this_is_ATB_too.png (1.14 MB, 下载次数: 5)
10:54 上传
在轨迹系列里,UI上没有ATB条,他的显示方法是下一个轮到的谁,但实际上这是根据“最接近轮到行动”来进行排序的,由于是标准的ATB模式,所以很多时候角色使用魔法开始吟唱和受到打击行动顺序的技能影响之后,移动顺序的变化并不是那么“固定”(看不出会往后几个人),原因就是UI“变了戏法”。
关于ATB这个属性
ATB这个属性,对于这个“世界”来说就是时间单位,整个世界进程的推进,就是ATB的推进,在战斗开始的时候ATB是0,结束的时候可能是一个非常大的数字,你可以理解为程序中常见的Date.Time(),只是Date.Time()解释的是日到现在的秒(一些环境下是毫秒)数,而ATB对于战斗而言,即战斗开始(“世界”被创造)之后到“现在”的“时间”。
ATB对于角色属性来说,是当前已经等了多久了,当ATB达到上限的时候,角色就可以发动行动,不同的行动,将会把角色的ATB重置到一个新的位置,让角色继续回到等待状态。通常状况下,世界的ATB推进1,角色的ATB会提高很多,远不止1(如果你的游戏规则就是角色固定每个tick增加1ATB,那当然也是可以的,只是感觉会非常奇怪)。
这个玩意儿怎么用?
之前说了他的运作方法,但是这玩意儿最主要的功能并不是运作,而是让你把它当做战斗模拟器来用。所以首先我得申明,这个花了1天都不到就做出来的东西,十有八九是有bug的。
code_struct.png (188.49 KB, 下载次数: 0)
11:11 上传
我把所有的文件分了两个文件夹:
coder下的lua,都是模拟程序端的,在实际项目中,这些会用其他语言去写。这里用lua山寨了一个oop的写法(当然也已经不那么oop了,至少我把继承关系丢了),是因为大多人还是更习惯oop,毕竟从学校学的到实战中都是oop的,所以我就不用ECS了,虽然ECS写游戏太好了(所以这玩意儿我写的也苦啊……)。
designer下则是策划的脚本数据了,其中有一个game_lua_interface.lua,这个是山寨“程序给策划的Lua接口”的,即实际开发中,程序提供的接口都在这里。
所以,使用这玩意儿,你最好能遵守几个规则(当然也不强迫你,如果你有点追求,还是遵守一下吧):
1,designer下的代码不直接调coder下的函数:这块是模拟程序代码,只是让你看一下怎么实现好,通常会是别的语言写,当然类似CharacterObj之类的数据结构,是可以直接“抄”的,毕竟数据接口最后也长那样。
2,coder下也不能轻易调designer下的,除非是formula和game_lua_interface下的函数:只有这里的lua是和策划约定的脚本接口,通常都是写公式和一些游戏独有功能性接口,而策划写的其他脚本,你根本不该知道用了什么函数名。
3,designer下要用到coder下的函数,就要在game_lua_interface中包接口,模拟程序员提供的脚本接口:放心,这个不难。
4,游戏逻辑相关的print,必须用game_lua_interface中的battleReport。调试用的print,必须用print。就像我说的,因为我们是战斗模拟器,所以你要理解BattleReport是让游戏进程推进的(虽然效果也是打出log),而print是调试用的,他们看起来那么“一样”,但骨子里就是不一样的东西。
5,一个模块写一个文件:你要是也没啥追求的话当然可以随便写,it just works。
6,如果A文件调用了B文件的函数,B文件就不允许调用A的任何函数:禁止高耦合的想法出现,基于一个模块写一个文件。
7,一行代码过长时换行:代码可读性。
8,命名用英文,并且不得有二义性:代码可读性,当然编程最难的事情之一是这个,尤其是在脚本里。
9,一个函数尽可能只做一件事情,越少的事情越好:oop的思路无法彻底避免side effect,所以在调通之后,请至少把print干掉(print就是一个典型的side effect)。
既然你开始写代码了,不管你写的是什么代码,就要像程序员一样对待编程,别像个国游程一样“只要能运行不就好了吗”。
那么问题来了:
角色属性那么少,怎么办?
在coder/character_property.lua里,你可以随意定义属性,记得维护一下Init和Add就好。假如你需要一个属性有他的实际逻辑作用,你可以在battle.lua(写的最烂的那个文件)中找到他可以用上的地方,自己改改就行。
这计算公式不是我想要的!
designer/formula.lua是专门的计算公式接口文件,“程序”在一些必要的逻辑中调用这里的脚本接口,所以千万别改了函数名,这些接口分别是:
MAX_ATB_VALUE:即一个角色的ATB达到这个数字的时候才能行动,这是一个规则级的,所以当他是800的时候,就说明“当一个角色的ATB大于等于800就能行动”。
GameDesign_RecheckProperty:重新统计角色的属性和状态,之所以不偷懒抛“...“作为参数,是因为角色(CharacterObj)的属性是严肃的东西,通过这些属性,最后走这个公式获得一个最终的属性,赋给角色的property,给到其他逻辑段使用。
GameDesign_GetDamage:获得最基础的伤害数量,这是很多数值策划的主要工作之一,就是所谓的战斗公式,在不考虑任何buff的情况下去获得伤害结果,唯一要值得注意的是,如果暴击了,请别把暴击调整的伤害算好给damage,damage只是没有暴击的伤害。
GameDesign_GetFinalDamageValue:最后根据是否暴击来算出最终的伤害值,为什么和GetDamage要分开两步呢?因为这个玩意儿已经经历了buff的洗礼,才得出了该不该暴击(想想是不是有些效果可以让角色必定被暴击或者必定免疫暴击的?),所以这是最后了,才去计算带暴击的伤害。
GameDesign_ATBIncreased:根据给过来的角色,给角色在每个tick增加ATB进度。你当然可以根据角色的名字来,让他的ATB不增加,但是建议不要减少。
附加一张伤害流程:
伤害流程.png (62.31 KB, 下载次数: 0)
11:40 上传
GameDesign_GetDamage是在“根据策划公式获得damageInfo”这一步用的,而GameDesign_GetFinalDamageValue会在所有计算是否能杀死角色和最终造成伤害的时候调用。
我想做20v50的战斗行不行?
那当然是可以的,现在的设计是模仿《秦时明月》手游这样的7v7的,当然并没有做任何额外限制,不过你应该去修改一下designer/game_lua_interface.lua下的GetBattleEmptyPos这个接口的实现,使得有更多的位置可用(现在超过7个会报错,懒得修了)。在你的脑海中,最好建立整个战场的位置图,每个位置对应一个编号,这很重要。
举个实际例子:你在AOE等范围参数里,要有位置关系,比如你的aoe的范围是{16, 11, -3},而你的AOE中心落在了4号位置上,那么你实际上AOE生效的位置是{20, 15, 1}(范围是偏移量,所以都+4),如果是落在2号位置,则范围是{18, 13, -1},是有负数位置被允许的,当然你上面没有摆人也就没啥问题。
我能手操战斗吗?
当然可以,打开最渣渣的文件coder/battle.lua,你会“惊奇”的发现一个CONFIG_AUTOBATTLE,当他是true的时候,战斗是自动的,当他是false的时候,你会体验到上个世纪的文字mud游戏的感觉:
waiting_orders.png (118.21 KB, 下载次数: 0)
11:50 上传
输入命令之后……………………
command_done.png (361.16 KB, 下载次数: 0)
11:50 上传
胜败乃兵家常事……我只能这么解释。
有些脚本代码好垃圾啊
没错,很多地方都故意留了错误了,其实是因为想让吃肉小朋友自己去发现的,等他lua等级提高后,会自己发现的。
GrandpaFive和KiloTwo是什么?
五爷和千两,是一个策划群()里的2个逗逼而已,不过胆敢在群里高呼“五爷是逗逼”,五爷分分钟秒了你。
相信我,用VBA+Excel你也可以做到的,甚至更好,只要你愿意去做的话,如果你跟我一样懒,那可以考虑改改这个玩意儿,毕竟他会把“所有战斗情况”都反应出来。
关注我们官方微信公众号
下载我们官方APP-游戏行
关注手游动态微信公众号
我用VBA开始也是写了个ATB的战斗模拟器& &后面改了下 变成回合卡牌&&再改改&&又变ARPG了.......
马化腾:随着腾讯业务的多元化 网络游戏收网易自动化UI测试解决方案Airtest Project英雄互娱2017净利润9.11亿元 上榜科技部独网易西方魔幻MMO《光明大陆》上架Steam 上瑞典工作室:做游戏,而不做饥饿艺术家YouTube在美首次成最赚钱iPhone应用 原因不
微信扫一扫关注我们→博客访问: 785862
博文数量: 320
博客积分: 8317
博客等级: 少将
技术积分: 2344
注册时间:
http://ads.buzzcity.net/adpage.php?partnerid=40096
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式 22:09:22
上周同时拿到了android4.2的SDK和源代码,启动了个手机版的模拟器,结果发现多用户用不起来,后来查看源代码发现卡在一个地方:#vi frameworks/base/core/java/android/os/UserManager.java/**&&&& * Returns the maximum number of users that can be created on this device. A return value&&&& * of 1 means that it is a single user device.&&&& * @hide&&&& * @return a value greater than or equal to 1 &&&& */&&& public static int getMaxSupportedUsers() {&&&&&&& // Don't allow multiple users on certain builds&&&&&&& if (android.os.Build.ID.startsWith("JVP")) return 1;&&&&&&& return SystemProperties.getInt("fw.max_users",&&&&&&&&&&&&&&& Resources.getSystem().getInteger(R.integer.config_multiuserMaximumUsers));&&& }如果是JVP的build,任你怎么折腾都不能用multi-user这个新feature,除非把buildid改掉,然后看呆了两个关键字:fw.max_users和multiuserMaximumUsers于是去源代码搜索一把:#grep -r -n fw.max_users ../frameworks/base/core/java/android/os/UserManager.java:334:&&&&&&& return SystemProperties.getInt("fw.max_users",#grep -r -n multiuserMaximumUsers ../frameworks/base/core/res/res/values/config.xml:937:&&& 1./frameworks/base/core/res/res/values/symbols.xml:295:& ./frameworks/base/core/java/android/os/UserManager.java:335:&&&&&&&&&&&&&&& Resources.getSystem().getInteger(R.integer.config_multiuserMaximumUsers));./device/asus/grouper/overlay/frameworks/base/core/res/res/values/config.xml:233:&&& 8./device/asus/tilapia/overlay/frameworks/base/core/res/res/values/config.xml:236:&&& 8./device/samsung/manta/overlay/frameworks/base/core/res/res/values/config.xml:169:&&& 8嘿嘿,如果是asus的grouper(Nexus 7)和tilapia,还有samsung的manta的话,是支持多用户的,最多8个,其余的暂时免谈,那么想要在模拟器上玩多用户怎么办?笔者手动搞了个办法,有看到fw.max_users这个system property吗?办法来了启动android4.2的模拟器,然后连上adb在adb shell下敲如下命令:# setprop fw.max_users 8&&&&&& (最大支持的用户数,数字你想多大设多大)# stop (停掉android java虚拟机)# start (启动android java虚拟机)然后用pm/am命令添加/切换用户是不是发现已经可以工作了?不过这个方法只是临时之策,重启模拟器(snapshot的除外)后。发现又不能添加用户了(除非再做一次上面的事情),怎么办?笔者想过把fw.max_users写到/data/local.prop里面发现没作用,后来看源代码发现宏ALLOW_LOCAL_PROP_OVERRIDE阻止了读取/data/local.prop里面的内容。# vi system/core/init/property_service.cstatic void load_override_properties() {#ifdef ALLOW_LOCAL_PROP_OVERRIDE&&& const char *debuggable = property_get("ro.debuggable");&&& if (debuggable && (strcmp(debuggable, "1") == 0)) {&&&&&&& load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE);&&& }#endif /* ALLOW_LOCAL_PROP_OVERRIDE */}好吧,那就只能从别的prop文件做文章了,或者修改config.xml/default.prop (改这个文件只需重做ramdisk.img)/system/build.prop (改这个文件要重做system.img)/system/default.prop (改这个文件要重做system.img)/data/local.prop (模拟器不支持)/data/property (只支持读persist开头的system property)config.xml (改这个文件要重做system.img)选择改代价最小的/default.prop吧# cd /tmp# mkdir ramdisk# gzip -dc /opt/android-sdk-update-manager/add-ons/addon-google_apis-google-17/images/armeabi-v7a/ramdisk.img | cpio -i# vi default.prop添加fw.max_users=100 (数字自己想写多大写多大)# find . | cpio -o -H newc | gzip > ../ramdisk.img将新生成的ramdisk.img替换avd下的那个,重启模拟器,发现是不是可以添加/切换用户了?附件是添加fw.max_users=100的ramdisk,请把.zip后缀去掉。
阅读(306) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。书接上回,用python解决了自动操作阴阳师的问题后,我发现有不少问题。首先,必须要把安卓模拟器最大化,或者是一个指定尺寸,放在桌面指定的方位后程序才能正常的运行。因为我们用的是坐标是参照电脑的显示器,如果可以换成模拟器的屏幕坐标,就会方便很多。其次,程序木有办法在手机上运行。可能大神有其他的方法吧,但是我没有找到。
下面我介绍一种方法,是基于lua语言编写的脚本,大家看到这里不要慌,其实语言神马的都大同小异,注意语法的细节就好了,我们只是写一个小脚本,不算困难。并且很多麻烦的工作别人都做过了。我经过一天的努力,让程序可以在安卓模拟器上运行了。由于手头没有安卓的手机,所以没有在实机上测试。下面我们就开始动手吧。 强调:只是学术交流,学术交流,学术交流。准备工作建议看完全部准备工作后再实施,做到心中有数。1.安装安卓模拟器。我用的是夜神模拟器和果盘模拟器。这里推荐果盘,后面会解释。2.在模拟器中安装阴阳师游戏。这里有两种方法,一种是用模拟器登录阴阳师官方下载,另一种是在模拟器的商城中下载阴阳师。我们暂且称第一种闻纯净版,第二种为商城版吧。果盘模拟器的商城版会让你注册果盘号,这个我们需要注册,因为之后要用到(快给我广告费)。并且夜神模拟器无法获得root权限,直接导致后面的工作没法开展。3.下载开发助手()这个需要登录进去后才能够下载,注册挺简单的,第2步中注册了的话直接登录就好了,应该还有个申请开发者身份,不过好像不用申请也可以下载。往下拉就可以看到ios、windows、安卓三种版本,这里注意:在虚拟机上安装安卓版,自己的电脑(windows系统)安装windows版。我是一路默认点下来的,没啥乱七八糟的软件。安装成功后,我们在电脑桌面上可以看到叉叉集成开发环境模拟器里会出现下图我们需要的就是开发助手,中间带蓝圈的就是商城版的阴阳师,他会用果盘号登录,也就是新创建了一个新号,所以用已有账号的话需要登录纯净版的。4模拟器上打开开发助手,最下边会显示出本机ip,比如我的是127.0.0.1:1是端口号,用模拟器才会有,因为模拟器需要一个端口和你的电脑互通才能上网。接着打开电脑上的叉叉集成开发环境。如下图在右上角有一个添加设备,点开。输入设备ip地址,就是我们刚才的127.0.0.1,后面紧跟找一个黑框,不注意看就漏了,在黑框里填写端口号12121。显示连接成功,我们准备工作就做完了。接下来就可以愉快的写代码了。小试身手先简单介绍下我们要用到的界面和功能
左面两个部分分别是写逻辑(后台)和页面(前端),也就是main.lua和ui.json。这里我们要用到lua的一些语法,现学就可以。右边是自带的一些现成指令模块,建议大家点开看看,很快就学会了基本的操作了。我们现在main.lua文件中写showUI("ui.json")
然后点击左上的运行或者F5,模拟器中就会弹出一个默认格式的对话框了。我们还可以打开ui.json文件修改对话框的高度等参数。这个手册提供了很详细的说明。我们可以尝试运行程序点击手机的图标,进行滑动操作。下一篇文章中,我们将运用这些知识来代替自己“肝一肝”。52 条评论分享收藏}

我要回帖

更多关于 模拟器登录小米账号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信