关闭

RimWorld模组教程之武器

1576人阅读 评论(0) 收藏 举报

源始链接: http://rimworldwiki.com/wiki/Modding_Tutorials/Weapons


在本教程里,我们将创建一个新的武器


先决条件:

您应该已经阅读入门章节,它让您快速的了解RimWorld的模组结构.您同时已经熟悉各文件的位置(如About.xml,def XML文件,在哪里放材质贴图等等)


创建目录

如果您尚未按入门章节创建了ThingDef目录,您还需要创建一个新的文件夹保存您的xml文件,在Defs文件夹内创建ThingDefs文件夹,至此目录创建完成.


创建新武器

在本例中,我们将创建一个新的武器叫Scar-H.

首先,我们需要大纲代码以分类.下面是您的类似代码

<?xml version="1.0" encoding="utf-8" ?>
<ThingDefs>
 
 
 
</ThingDefs>

接着,我们需要创建一个新的ThingDef摘要,作为枪的基础属性.

	<ThingDef Name="BaseGun" Abstract="True">
		<category>Item</category>
		<eType>Equipment</eType>
		<thingClass>Equipment</thingClass>
		<label>Gun</label>
		<equipmentType>Primary</equipmentType>
		<isGun>True</isGun>
		<pathCost>10</pathCost>
		<useStandardHealth>True</useStandardHealth>
		<selectable>True</selectable>
		<maxHealth>100</maxHealth>
		<altitudeLayer>Item</altitudeLayer>
		<alwaysHaulable>True</alwaysHaulable>
		<tickerType>Never</tickerType>
		<techLevel>Midworld</techLevel>
		<storeCategories>
			<li>Weapons</li>
		</storeCategories>
		<weaponTags>
			<li>Gun</li>
		</weaponTags>
		<comps>
			<li>
				<compClass>CompForbiddable</compClass>
			</li>
		</comps>
		<verb>
			<id>Nonnative</id>
			<verbClass>Verb_Shoot</verbClass>
			<cooldownTicks>30</cooldownTicks>
			<label>VerbGun</label>
			<description>Fire a bullet.</description>
			<hasStandardCommand>true</hasStandardCommand>
			<targetParams>
				<canTargetPawns>true</canTargetPawns>
				<canTargetBuildings>true</canTargetBuildings>
				<worldObjectTargetsMustBeAutoAttackable>true</worldObjectTargetsMustBeAutoAttackable>
			</targetParams>
			<canMiss>true</canMiss>
		</verb>
	</ThingDef>

这样我们就有了枪的属性摘要(abstract,如编程中的基类,译者注),我们还需要另一个作为枪所用的子弹的摘要.

	<ThingDef Name="BaseBullet" Abstract="True">
		<category>Projectile</category>
		<tickerType>Normal</tickerType>
		<altitudeLayer>Projectile</altitudeLayer>
		<thingClass>Bullet</thingClass>
		<label>Bullet</label>
		<useStandardHealth>False</useStandardHealth>
		<neverMultiSelect>True</neverMultiSelect>
		<baseMaterialType>Transparent</baseMaterialType>
	</ThingDef>

注意这两段代码,可以不用修改.

现在,我们将创建枪所用的子弹,这是我的Scar-H的子弹def(定义,译者注).

	<ThingDef ParentName="BaseBullet">
		<defName>Bullet_ScarHC</defName>
		<label>7.62×51mm NATO</label>
		<texturePath>Things/Projectile/Bullet_Small</texturePath>
		<projectile>
			<damageType>Bullet</damageType>
			<DamageAmountBase>8</DamageAmountBase>
			<Speed>85</Speed>
		</projectile>
	</ThingDef>

现在我们还需要做的就是做枪的def.

	<ThingDef ParentName="BaseGun">
		<defName>Gun_ScarHC</defName>
		<label>ScarH</label>
		<description></description>
		<texturePath>Things/Item/IRGuns/Gun_ScarH</texturePath>
		<interactSound>InteractBoltActionRifle</interactSound>
		<purchasable>True</purchasable>
		<basePrice>500</basePrice>
		<verb>
			<projectileDef>Bullet_ScarHC</projectileDef>
			<warmupTicks>180</warmupTicks>
			<range>39</range>
			<accuracy>8</accuracy>
			<burstShotCount>4</burstShotCount>
			<ticksBetweenBurstShots>6</ticksBetweenBurstShots>
			<fireSound>ShotM16Rifle</fireSound>
		</verb>
	</ThingDef>

走你!你自己的枪!

但愿您阅读Thingdef章节时能理解每个属性的含义.

注意游戏根据以上参数处理武器开火时是这样的:尝试射击 -> 等待预热计时(warmupTicks,毫秒,译者注) -> 射击 -> 等待点射间隔计时(ticksBetweenBurstShots) -> 射击 -> 等待点射间隔计时 -> ... -> 等待冷却计时 -> 转到等待预热计时.


测试:


结论:



0
0
查看评论

RimWorld模组的部分参数详解

首先粘贴一段分析笔记: 0.66 远程冷却时间1.98s 13 伤害13 90 预热时间1.5s 3 连射次数3 12 射速300rpm 24 射程24 0 远程冷却时间0.01s 2400 预热时间40s >> 数值除以60得到秒数 0.69 远程冷却时间2.07s ...
  • prsniper
  • prsniper
  • 2016-09-03 03:05
  • 2792

RimWorld模组教程之地板

源始链接: http://rimworldwiki.com/wiki/Modding_Tutorials/Flooring 在本教程里,我们将往游戏里添加用上节添加的资源制作的地板. 先决条件: 您已完成物品教程. 您应该已经阅读入门章节,它让您快速的了解RimWorld...
  • prsniper
  • prsniper
  • 2016-08-30 19:34
  • 749

RimWorld模组教程之物品

源始链接: http://rimworldwiki.com/wiki/Modding_Tutorials/Items 在本教程中,我们将创建一种新的物品,它可以被拖运和消耗. 先决条件: 您应该已经阅读入门章节,它让您快速的了解RimWorld的模组结构.您同时已经熟悉各文件的...
  • prsniper
  • prsniper
  • 2016-08-30 20:41
  • 1024

RimWorld模组教程之入门

源始链接:http://rimworldwiki.com/wiki/Modding_Tutorials/Getting_Started 在本教程里,我们将创建一个往游戏里添加简单的,无用的区块的简单模组 先决条件: 略(懂得xml文件编写,译者注) 创建目录结构:...
  • prsniper
  • prsniper
  • 2016-08-30 20:30
  • 1645

Scala学习之数组的进一步认识

1、先来了解下之前的Array的用法吧               val arr = Array(1, 2, 3, 4)    ...
  • mzygssk
  • mzygssk
  • 2015-08-05 15:11
  • 234

VTK教程之十三&nbsp;可视化基础算法-位…

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <d...
  • woashizhangsi
  • woashizhangsi
  • 2014-12-12 09:38
  • 571

技能分享 | 麦肯锡教给我的写作武器:如何讲好一句话

如何讲好一句话,最主要的是主语谓语要清晰。本文分享《麦肯锡教给我的写作武器》在这部分的心得。
  • iotisan
  • iotisan
  • 2017-07-13 19:02
  • 717

VTK教程之十一&nbsp;可视化基础算法-方…

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <d...
  • woashizhangsi
  • woashizhangsi
  • 2014-12-12 09:41
  • 488

Guitar Pro吉他调音软件之泛音的应用

Guitar Pro是一款备受吉他爱好者喜欢的吉他调音软件,可以直接用鼠标和键盘输入乐谱、查看、试听、打印。制作泛音、滑音等有较高的优势。
  • Bella_55
  • Bella_55
  • 2018-01-02 17:33
  • 36

浅谈vb.net开发中使用excel插件代码

用VB.NET做excel插件开发,可能需要为excel添加自定义的工具栏。这个也是非常的简单的以下是引用片段:  Public Class ConnectClass Connect   Implements Extensibility.IDTExtensib...
  • weilu0328
  • weilu0328
  • 2008-06-04 10:00
  • 460
    个人资料
    • 访问:483426次
    • 积分:8855
    • 等级:
    • 排名:第2574名
    • 原创:287篇
    • 转载:9篇
    • 译文:6篇
    • 评论:408条
    最新评论