三国杀Lua技能框架生成器是一款基于太阳神三国杀单机版DIY接口功能开发的软件功能说明:可以令用户更加容易的编写自己的DIY武将。更新日志:三国杀Lua技能框架生成器相关下载125.26 MB / 2.19 MB / 69.6 MB / 972 KB / 45.79 MB / 43.06 MB / 14.21 MB / 24.33 MB / 6.18 MB / 相关文章三国杀Lua技能框架生成器下载地址高速下载普通下载发表评论网页评论下载帮助下载建议:推荐使用 [] 或 [] 下载本站资源。并使用 [] 3.5 以上版本解压本站资源。解压密码:本站部分资源经过压缩加密处理,解压密码为:。版权声明:本站资源版权归其开发商所有,若无意侵犯到您的权利,请及时与本站联系,我们会尽快为您处理。125.26 MB | 45.79 MB | 43.06 MB | 14.21 MB | 3.41 MB | 10.2 MB | 游戏辅助排行20620012168810054587142798596934566820632316269856552游戏娱乐分类装机必备软件35.7 MB | 42.53 MB | 67.13 MB | 32.52 MB | 38.87 MB | 63.78 MB | 34.48 MB | 80 MB | 2.02 MB | 39.7 MB | 46.42 MB | 46.47 MB | 31.82 MB | 67.82 MB | 31.72 MB | 27.62 MB | 41.97 MB | 27.91 MB | 35.36 MB |三国杀卡牌制作器安卓版下载|三国杀卡牌diy工具 v1.0最新版_5577我机网
您的位置: →
→ 三国杀卡牌diy工具 v1.0最新版
《卡牌制作器》是一款集休闲娱乐为一体的生成器,在这里你可以用你的照片生成各种三国杀卡牌,随心所欲DIY,打造专属于你的牌组,赶快加入进来下载体验吧~【软件教程】使用你的照片,如果尺寸有误;可以使用两只手指对照片进行移动、旋转、缩放的操作;直到适合你的尺寸为止;你还可以为你的卡牌选择不同的国家和技能。【软件特色】1、随心所欲DIY,打造专属于你的三国杀卡牌;2、多种特色属性,让你根本停不下来;3、一场专属于你的装B之旅等你来享!
在线生成器
共有:447款
手机社交圈子中出现了各种截图生成器软件,通过手机截图生成器软件,大家可以在线制作出自己喜欢的截图软件,让你通过软件制作出自己喜欢的装B图片,使用截图生成器制作的图片可以一键分享到微信朋友圈。
装B神器手机版是一款为用户提供各类装逼***和通知书的手机软件,用户只需要填写名字就可以轻松生成,无论是节假日,还是结婚、房车等等证件全部一键生成。
QQ假口令红包生成器是一款发送假的口令红包的手机软件,用户可以使用这款软件发送假的口令红包,能够以假乱真,但是是领取不了的。
微信账单生成器是一款可以为用户制作微信账单截图的手机软件,轻松填金额和昵称就可以轻松生成账单截图,让你在朋友圈装逼炫富无人能敌!
漫话工厂app是一款专为装逼打造的表情制作生成软件,用户可以使用这款软件随心搭配图片和文字,想要什么表情包就做什么表情包,逼格高的不要不要的。
QQ竖立网名生成器2016最新版可以轻松的帮助QQ用户制作竖立的网名昵称,让你在朋友圈格外的引人瞩目,兼职是一款装逼利器,使用方便简单。
微博班级座位分布表是一款将自己的男神女神们摆在一个班级里的表格,你可以挑选自己的座位,不过现在很多的座位表不够满足偶像众多的人,不如自己来制作一个表格吧!
相关合集推荐
本类下载排行
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐
资讯.八卦.生活娱乐教程贴:教你自己编写DIY武将的AI(太阳神三国杀lua)96
上亿文档资料,等你来发现
教程贴:教你自己编写DIY武将的AI(太阳神三国杀lua)96
在cpp区发了那篇DIY教程贴之后,我转战到了l;首先,AI的编写与lua技能的代码有很大关系,我;1.写代码要整齐,缩进量要层层递进,保证代码的易;2.写触发技的时候,要清楚每个触发事件的原理,最;则可能引入异常的行为;3.没有必要的时候不要重载can_trigger;函数;4.如果一个触发技可以在多个时间下触发,在写on;发的事件来写条件分支语句,这样逻
在cpp区发了那篇DIY教程贴之后,我转战到了lua区,发现大家都是再写lua武将的DIY,没有人关心AI的lua。在我看来,与cpp相比,lua来实现DIY的武将优点是***卸载方便且不会影响cpp源代码的整洁,缺点是不能debug,通过设置断点来观察变量,在测试的过程中比较辛苦,还有就是偏于与系统耦合的技能比较难实现。这两天把AI部分的lua代码看了一遍清楚了,除了身份判断部分,基本清楚了它的原理。鉴于lua武将DIY的教程和范例已经比较完善,这次我就把AI的编写简要的整理一下。附件中的内容是和这次教程相关的代码、相关武将的卡牌图片以及本帖的PDF版本。附件中有“侠”三武将的lua和AI,以及两个我DIY的娱乐武将的AI(娱乐武将用CPP实现的,由于有一个修改性别的技能改变了底层的Player类,因此无法用lua完美实现,所以就不提供代码了,有兴趣的同学可以和我交流)。
首先,AI的编写与lua技能的代码有很大关系,我用自己设计的两个武将和“侠”三武将做了实验并且完成了这五个武将的AI。在编写“侠”三武将的AI时遇到了一些问题,后来我把寒秋的代码优化了一下才解决了问题。附件里会有“侠”三武将的代码,一个是原版的,一个是我改进过的,大家可以对比下。(并没有冒犯的意思,纯学术上的交流)所以算是给广大lua的DIY爱好者们几条编程方面的建议吧。
1. 写代码要整齐,缩进量要层层递进,保证代码的易读性
2. 写触发技的时候,要清楚每个触发事件的原理,最好不要加入多余的触发事件,否
则可能引入异常的行为。当然,一般来说引入多余事件只是降低程序运行的效率罢了,对于神杀影响应该不大。
3. 没有必要的时候不要重载can_trigger、enabled_at_play、enabled_at_response这些
函数。对于can_trigger这个函数,重载直接return true然后在on_trigger里判断玩家是否拥有该触发技和使用默认的can_trigger基本是一样的(因为can_trigger本身返回值就是触发者是否拥有该技能且触发者是否活着,貌似死人没法触发技能)。
4. 如果一个触发技可以在多个时间下触发,在写on_trigger函数的时候大家请按照触
发的事件来写条件分支语句,这样逻辑会更加清晰一些。
5. 尽量避免在视作技中使用askForCard这个函数,我来举个例子:如果一个视作技可
以把闪当作无中生有来使用,如果你不用askForCard,那么操作流程将是点击技能按钮à选择一张闪à点击确定当无中生有打出;但是如果使用了askForCard并且你装备了八卦阵,那么你点击技能按钮à系统提示你需要打出一张闪à使用八卦阵à判红à直接打出一张无中生有。一张牌当无中生有和零张牌当无中生有,知道区别了吧。
6. 在触发技一定要使用askForSkillInvoke(player,self:objectName(),data),这里要注意第
三个参数data,它包含触发事件的详细信息,一般卖血技的是damage的结构体、无言那种是cardEffect结构体、烈弓是slashEffect结构体。这些data中的信息在写AI的时候十分重要,因此务必要加上以便于AI中完成复杂的判断。我之前写AI就是因为askForSkillInvoke(player,self:objectName())导致需要的变量总是空值,郁闷了很久。
7. 触发技中askForCard之前最好加上askForSkillInvoke。对于人来说,如果不加
askForSkillInvoke,不想发动机能的时候直接点取消就行,加上了askForSkillInvoke无非就是在提示是否使用XXX技能时多点一个确定罢了。但是对于AI的编写,如果不加askForSkillInvoke,那么这个技能对应的AI就要写在smart-ai.lua的SmartAI:askForCard里,有点像cpp中的系统耦合技,这对于代码的整洁还有AI的移植是不利的。但是加上askForSkillInvoke后,我们就可以单独的对这个选择写一个AI,消除了耦合。
OK,建议提完了,开始说AI的编写吧。首先,基本上所有的非锁定技的视作技和触发技都可以独立新建一个lua文件编写,禁止技在smart-ai中的cardProhibit和slashProhibit里编写,锁定技在smart-ai.lua中的damageIsEffective、slashIsAvailable、prohibitUseDirectly、isCompulsoryView中编写,一些锁定技的响应(需要调用askForCard的)在smart-ai中的askForCard里编写,卡牌转换类技能在smart-ai中的getSkillViewCard里编写。
我把AI技能的编写分为几类:
1. 将卡牌视为三国杀已有主动使用卡牌的视作技,比如双雄、连环、火计
2. 将卡牌视为三国杀已有卡牌的视作技,这些卡牌用于响应,比如倾国、看破、急救
注:武圣、龙胆、酒池这些技能既属于第一类也属于第二类
3. 将卡牌视为技能卡的视作技,比如青囊、离间、驱虎
4. 所有的非锁定技的触发技,比如刚烈、八阵、悲歌
5. 禁止技,比如空城、谦逊、帷幕
6. 使效果无效的技能,暂且称无效技,比如无言、智迟、神君;有威慑力的技能,比
如刚烈、恩怨、雷击
7. 视作锁定技,比如戒酒、武神
8. 对出杀次数、杀指定目标数、杀的距离修改的技能,比如天义、咆哮、方天画戟
9. 响应时的斟酌,比如AOE奸雄收牌、无双肉林只有一张闪就直接掉血
此外,一些技能还涉及到选项,比如志继觉醒摸牌还是回血、反间选择花色、无谋弃掉标记还是流失体力;另一些技能涉及到目标的选择,比如驱虎赢了选择受伤害者、旋风选择伤害者或杀的目标、眩惑来的牌给谁。这就要求我们具体问题具体分析了。
第一类技能编写的通式是:
local skillname_skill={}
skillname _skill.name=& skillname &
table.insert(sgs.ai_skills, skillname)
skillname _skill.getTurnUseCard=function(self)
判断是否满足应该使用的条件,若不满足则return nil
local card
选则要发动技能的卡牌,赋值给card
if not card then return nil end
local suit = card:getSuitString()
local number = card:getNumberString()
local card_id = card:getEffectiveId()
local card_str = (&转换卡牌名称:skillname[%s:%s]=%d&):format(suit, number, card_id)
local skillcard = sgs.Card_Parse(card_str)
assert(skillcard)
return skillcard
例子是以下这个武将的技能—求败:
[&dgqb&] = &独孤求败&,
[&luawujian&] = &无剑&,
[&luayoujian&] = &有剑&,
[&luayoujiandev&] = &有剑&,
[&luaqiubai&] = &求败&,
[&luaqiubaix&] = &求败&,
[&:luawujian&] = &当你没有装备武器时你的杀不可被闪避。&,
[&:luaqiubai&] = &回合内你可以将任意武器牌当决斗使用。若决斗成功则你可以摸两张牌否则对方摸两张牌&,
[&:luayoujian&] = &当你装备有武器时本回合你可以出X张杀,X为你当前的攻击范围,回合内你使用的所有杀都将被计数(不包括决斗出的杀)。&,
--luaqiubai
local luaqiubai_skill={}
--设置技能名称
luaqiubai_skill.name=&luaqiubai&
--把这个技能添加进ai_skills列表中,使AI可以使用这个技能
table.insert(sgs.ai_skills,luaqiubai_skill)
--判断技能是否可以发动的函数
luaqiubai_skill.getTurnUseCard=function(self)
--获取手牌中杀的个数
local slash_num = self:getCardsNum(&Slash&)
--获取该回合出杀的次数
local slash_used = self.player:usedTimes(&Slash&)
--如果已装备武器,且手中有杀多于一个,
--且获取该回合出杀的次数小于攻击范围,则不发动该技能
--这是为了保证有剑和求败两个技能利用最大化
if self.player:getWeapon() and slash_num & 0
and slash_used & self.player:getAttackRange() then return nil end
--获取我所有的手牌和装备牌
local cards = self.player:getCards(&he&)
cards=sgs.QList2Table(cards)
local card
--根据使用价值来排序
self:sortByUseValue(cards,true)
--遍历所有卡牌
for _,acard in ipairs(cards)
--如果是武器牌则使用这个卡牌
if acard:inherits(&Weapon&) then
card = acard
--如果没选发动技能的卡牌则返回空值
if not card then return nil end
local suit = card:getSuitString()
local number = card:getNumberString()
local card_id = card:getEffectiveId()
--构造卡牌字符串,卡牌名称:技能名称[花色:点数]=卡牌ID
local card_str = (&duel:luaqiubai[%s:%s]=%d&):format(suit, number, card_id)
--指定要使用的卡牌
local skillcard = sgs.Card_Parse(card_str)
assert(skillcard)
return skillcard
第二类技能编写是在smart-ai.lua中的getSkillViewCard中添加代码,用于响应的卡牌有杀、闪、桃、酒、无懈,我们只需要在对应的分支语句里添加即可。比如在对闪的处理可以看到龙魂、龙胆和倾国,如果我们加一个技能叫“我闪”,这个技能可以把装备牌当闪使用,那么用下方红色的代码就能实现它的AI:
elseif class_name == &Jink& then
if player:hasSkill(&longhun&) and player:getHp() &= 1 then
if card:getSuit() == sgs.Card_Club then
return (&jink:longhun[%s:%s]=%d&):format(suit, number, card_id)
if card_place ~= sgs.Player_Equip then
if player:hasSkill(&longdan&) and card:inherits(&Slash&) then
return (&jink:longdan[%s:%s]=%d&):format(suit, number, card_id)
elseif player:hasSkill(&qingguo&) and card:isBlack() then
return (&jink:qingguo[%s:%s]=%d&):format(suit, number, card_id)
if card_place == sgs.Player_Equip and player:hasSkill(&woshan&) then
return (&jink:woshan[%s:%s]=%d&):format(suit, number, card_id)
有一个情况比较特殊,zeroCardView就是把0张牌当某牌,这个很特殊,目前只用来实现酒诗的AI,前两种技能如果是把0张牌当某牌,AI都可以用这个函数实现。如果写一个技能“万兽”和酒诗相似,只是正面向上时翻面可以当南蛮入侵,那么添加红色代码即可:
local function zeroCardView(class_name, player)
if class_name == &Analeptic& then
if player:hasSkill(&jiushi&) and player:faceUp() then
return (&analeptic:jiushi[no_suit:0]=.&)
else if class_name == &SavageAssault& then
if player:hasSkill(&wanshou&) and player:faceUp() then
return (&savage_assault:wanshou[no_suit:0]=.&)
第三类技能编写的通式是:
local skillname_skill={}
skillname _skill.name=& skillname &
table.insert(sgs.ai_skills, skillname)
skillname _skill.getTurnUseCard=function(self)
判断是否满足应该使用的条件,若不满足则return nil
local card
选则要发动技能的卡牌,赋值给card
if not card then return nil end
local card_str = (&@SkillNameCard=%d&):format(card:getId())
local skillcard = sgs.Card_Parse(card_str)
assert(skillcard)
return skillcard
sgs.ai_skill_use_func[&SkillNameCard&]=function(card,use,self)
local target
选择技能发动的目标,若没找到合适目标则return nil
use.card = card
use.to =append(target)
例子是以下这个武将的技能—争宠:
[&wujian&] = &吴健&,
[&zhengchong&] = &争宠&,
[&:zhengchong&] = &出牌阶段,你可以弃一张手牌,指定两名女性角色。若如此做,视为其中一名女性角色对另一名女性角色使用一张【决斗】(此【决斗】不可被【无懈可击】响应),每回合限用一次&,
[&yange&] = &阉割&,
[&:yange&] = &你每次对其他男性角色造成伤害,可使收到该伤害的角色变为女性,直到游戏结束&,
--zhengchong
local zhengchong_skill={}
--设置技能名称
zhengchong_skill.name=&zhengchong&
--把这个技能添加进ai_skills列表中,使AI可以使用这个技能
table.insert(sgs.ai_skills,zhengchong_skill)
--判断技能是否可以发动的函数
zhengchong_skill.getTurnUseCard=function(self)
--如果该回合发动过则不发动
if self.player:hasUsed(&ZhengchongCard&) then
三亿文库包含各类专业文献、高等教育、各类资格考试、中学教育、外语学习资料、文学作品欣赏、生活休闲娱乐、行业资料、教程贴:教你自己编写DIY武将的AI(太阳神三国杀lua)96等内容。
以天蓬元帅猪八戒为主角的关于太阳神三国杀Lua武将...太阳神三国杀的 AI 系统一般会 在这个时候记录一些...这里可以总结出一句话 了:源代码在手,怎么 DIY 都... 本文假定读者已熟悉太阳神三国杀 Lua 武将扩展的有关概念和方法。 本文内容只...教程贴:教你自己编写DI... 16页 3下载券 ©2016 Baidu 使用百度前必读 |... 太阳神三国杀LUA手册_电脑基础知识_IT/计算机_专业...--视为技的定义对于 AI 而言是无效的。为了让 AI...教程贴:教你自己编写DI... 16页 3下载券
太阳... 百度太阳神三国杀 Lua 吧 (百度文库收藏版) 编写...武将变更 第八章:启用 AI 一、创建我们的 AI ...在最上面找到 DIY 菜单,里面有个卡牌编辑器: 别... 由ADD-SUMME 攒编 ADD-SUMMER 声明:本经验交流为...下面来教大家如何制作食物以及***支弹药和模具,以及...· 太阳神三国杀lua教程 4855人
· 三国杀教程 ...