太阳神三国杀单机版编辑器加需要用的字体!谢谢

精品动漫卡牌游戏大全
时下火热的卡牌游戏大全,全新更新快,免费下载,还有破解版卡牌游戏等你来下载,快来体验一下吧
卡牌交换牧场,开罗公司出品!本作
EpicFantasy刀倀GCardGame,Legen
2014三国风云卡牌对战巅峰!三国
在日本超过100万下载,荣登营收榜
    萌夯大狩猎,
***方法:1.下载仙剑源文件,下
太阳神三国杀diy卡牌编辑器 1.0 绿色版
下载帮助本站软件均来自互联网, 如有侵犯您的版权, 请与我们联系。
* 为了达到最快的下载速度,推荐使用下载本站软件。
* 请一定升级到最新版才能正常解压本站提供的软件!
* 相关网站事务请留言:
或通知我们!或加我们微信公众号:xz7_cngr
Copyright &
. All Rights Reserved太阳神三国杀DIY卡牌编辑器新手教程
太阳神三国杀DIY卡牌编辑器新手教程下面红色字体是相对以前版本编辑器的新功能,或者是需要特别注意的地方。准备工作:一、diy编辑器需要的字体,下载下面链接的a文件模板下载地址:http:sgs.sgame.com201111download-detail-1064.html下载完之后把里面的字体文件放到c:\windows\fonts文件夹里,完成字体的***。如果用不了的话请重启你的电脑。其它的文件是用PS做卡牌的素材。打开制作器方法:打开太阳神三国杀主程序,上面有一排工具栏,点选【DIY】→【卡牌制作器】。二、准备一张武将图片,简单编辑一下角度双击图片,然后按旋转角度的按钮,关闭的时候会让你选择是否保存,确定就可以了。如下图:旋转按钮
& 果果文库所有资源均来源于互联网,仅供网友学习交流,若侵犯了您的权益,请联系我们予以删除。
3289&&人浏览
7758&&人浏览
18551&&人浏览
8772&&人浏览
3139&&人浏览
16522&&人浏览
3475&&人浏览
15535&&人浏览
17525&&人浏览
19505&&人浏览
4684&&人浏览
6460&&人浏览
10086&&人浏览
8223&&人浏览
10096&&人浏览
本文标题:太阳神三国杀DIY卡牌编辑器新手教程 链接地址:
2013- Inc. All Rights Reserved 果果文库 版权所有 联系站长: ; 经营许可证编号:浙ICP备号在cpp区发了那篇DIY教程贴之后,我转战到了l;首先,AI的编写与lua技能的代码有很大关系,我;1.写代码要整齐,缩进量要层层递进,保证代码的易;2.写触发技的时候,要清楚每个触发事件的原理,最;则可能引入异常的行为;3.没有必要的时候不要重载can_trigger;函数;发的事件来写条件分支语句,这样逻辑会更加清晰一些;5.尽量避免在视作技中使用ask
在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=\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\
local skillcard = sgs.Card_Parse(card_str)
assert(skillcard)
return skillcard end 例子是以下这个武将的技能—求败: [\独孤求败\ [\无剑\ [\有剑\ [\有剑\ [\求败\ [\求败\ [\当你没有装备武器时你的杀不可被闪避。\ [\回合内你可以将任意武器牌当决斗使用。若决斗成功则你可以摸两张牌否则对方摸两张牌\ [\= \当你装备有武器时本回合你可以出X张杀,X为你当前的攻击范围,回合内你使用的所有杀都将被计数(不包括决斗出的杀)。\ --luaqiubai local luaqiubai_skill={} --设置技能名称 luaqiubai_skill.name=\--把这个技能添加进ai_skills列表中,使AI可以使用这个技能 table.insert(sgs.ai_skills,luaqiubai_skill) --判断技能是否可以发动的函数
luaqiubai_skill.getTurnUseCard=function(self)
--获取手牌中杀的个数
local slash_num = self:getCardsNum(\ --获取该回合出杀的次数
local slash_used = self.player:usedTimes(\ --如果已装备武器,且手中有杀多于一个, --且获取该回合出杀的次数小于攻击范围,则不发动该技能
--这是为了保证有剑和求败两个技能利用最大化
if self.player:getWeapon() and slash_num > 0
and slash_used < self.player:getAttackRange() then return nil end
--获取我所有的手牌和装备牌
local cards = self.player:getCards(\ cards=sgs.QList2Table(cards)
local card
--根据使用价值来排序
self:sortByUseValue(cards,true)
--遍历所有卡牌
for _,acard in ipairs(cards)
--如果是武器牌则使用这个卡牌
if acard:inherits(\
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 = (\ --指定要使用的卡牌
local skillcard = sgs.Card_Parse(card_str)
assert(skillcard)
return skillcard end
第二类技能编写是在smart-ai.lua中的getSkillViewCard中添加代码,用于响应的卡牌有杀、闪、桃、酒、无懈,我们只需要在对应的分支语句里添加即可。比如在对闪的处理可以看到龙魂、龙胆和倾国,如果我们加一个技能叫“我闪”,这个技能可以把装备牌当闪使用,那么用下方红色的代码就能实现它的AI: ………… elseif class_name == \ if player:hasSkill(\
if card:getSuit() == sgs.Card_Club then
if card_place ~= sgs.Player_Equip then
if player:hasSkill(\
elseif player:hasSkill(\
if card_place == sgs.Player_Equip and player:hasSkill(\
有一个情况比较特殊,zeroCardView就是把0张牌当某牌,这个很特殊,目前只用来实现酒诗的AI,前两种技能如果是把0张牌当某牌,AI都可以用这个函数实现。如果写一个技能“万兽”和酒诗相似,只是正面向上时翻面可以当南蛮入侵,那么添加红色代码即可: local function zeroCardView(class_name, player)
if class_name == \
if player:hasSkill(\
else if class_name == \
if player:hasSkill(\
第三类技能编写的通式是: local skillname_skill={} skillname _skill.name=\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 = (\
local skillcard = sgs.Card_Parse(card_str)
assert(skillcard)
return skillcard end
sgs.ai_skill_use_func[\ local target
选择技能发动的目标,若没找到合适目标则return nil
use.card = card
use.to =append(target)
return end 例子是以下这个武将的技能—争宠: [\吴健\ [\争宠\ [\= \出牌阶段,你可以弃一张手牌,指定两名女性角色。若如此做,视为其中一名女性角色对另一名女性角色使用一张【决斗】(此【决斗】不可被【无懈可击】响应),每回合限用一次\ [\阉割\ [\你每次对其他男性角色造成伤害,可使收到该伤害的角色变为女性,直到游戏结束\ --zhengchong local zhengchong_skill={} --设置技能名称 zhengchong_skill.name=\--把这个技能添加进ai_skills列表中,使AI可以使用这个技能 table.insert(sgs.ai_skills,zhengchong_skill) --判断技能是否可以发动的函数 zhengchong_skill.getTurnUseCard=function(self)
--如果该回合发动过则不发动
if self.player:hasUsed(\
三亿文库包含各类专业文献、高等教育、各类资格考试、中学教育、外语学习资料、文学作品欣赏、生活休闲娱乐、行业资料、教程贴:教你自己编写DIY武将的AI(太阳神三国杀lua)96等内容。 
 这是基于踏青版太阳神三国杀的武将lua,仅供参考用,不能直接放入游戏中。如需...教程贴:教你自己编写DI... 16页 3下载券
太阳神三国杀diy图文教程... 23...  ·虫 首发:百度太阳神三国杀 Lua 吧 编写说明本...武将变更 第八章:启用 AI 一、创建我们的 AI ...在最上面找到 DIY 菜单,里面有个卡牌编辑器: 别...  太阳神三国杀新手教程 2786人
太阳神三国杀lua—DIY孟获by紫陌易尘 8964人
...正如《新版太阳神三国杀武将扩展学习手册》所描述的那样,太阳神三国杀的AI系统还是...  这是基于踏青版太阳神三国杀的武将lua,仅供参考用,不能直接放入游戏中。如需...教程贴:教你自己编写DI... 16页 3下载券
太阳神三国杀diy图文教程... 23...  我自己的用法是,每个武将阵亡的时候,出现特 效,特效文字就是死亡词 图片特效,...教程贴:教你自己编写DI... 16页 3下载券
太阳神三国杀lua—DIY神... 4...  百度太阳神三国杀 Lua 吧 (百度文库收藏版) 编写...武将变更 第八章:启用 AI 一、创建我们的 AI ...在最上面找到 DIY 菜单,里面有个卡牌编辑器: 别...  以天蓬元帅猪八戒为主角的关于太阳神三国杀Lua武将...太阳神三国杀的 AI 系统一般会 在这个时候记录一些...这里可以总结出一句话 了:源代码在手,怎么 DIY 都...  新版太阳神三国杀技能卡型视为技AI设计概述_计算机...本文假定读者已熟悉太阳神三国杀 Lua 武将扩展的有...教程贴:教你自己编写DI... 16页 3下载券 ©...

参考资料

 

随机推荐