Skip to content
Mewnojs edited this page May 23, 2023 · 6 revisions

欢迎来到PlantVsZombies.NET Wiki!这里致力于收集一切与植物大战僵尸.NET版相关的信息。

简介

PlantVsZombies.NET是一个移植项目,旨在将面向Windows Phone 7的《植物大战僵尸》放到现代Windows、Linux、Android设备上运行,并基于.NET和XNA/MonoGame生态创建一个易于修改的版本。

编译教程

如何编译项目

使用教程

下面是一些帮助你使用本项目的教程,也适用于基于此项目发行的版本。

通过内置WebSocket服务器访问IronPython交互式环境

  1. 启动游戏,使用WebSocket客户端连接ws://localhost:8080/Py, 也可使用IronPyInteractiveClient_WPF项目作为客户端
  2. 直接发送Python指令即可

关于IronPython的更多信息

通过IronPython脚本修改游戏内容

在实现了IronPython支持的版本(目前是Windows-PCDX与Android版)下,启动时会在路径下生成一个./mods文件夹,玩家可以在这个文件夹中放入修改游戏功能的模组脚本。 让我们来看一个例子:

# coding=cp936
"""		豌豆射黄油脚本
作者: 2508
2022/3/12		"""
import Lawn,Sexy	# 导入游戏命名空间
from LawnMod import MonoModUtils as M	# 导入MonoMod相关工具

from Lawn import Board, ProjectileType, Projectile # 导入用到的游戏类


@M.As(Lawn.Board.AddProjectile)
def PeaButterHOOK(orig, self, theX, theY, theRO, theRow, pType): 
    """定义一个劫持Lawn.Board.AddProjectile方法的函数,
    第一个参数是原函数orig,而第二个参数是实例方法中的实例self"""
    if pType == ProjectileType.Pea: # 如果要在场内加入豌豆
        pType = ProjectileType.Butter # 将投掷物类型替换成黄油并调用原函数   
    return orig(self, theX, theY, theRO, theRow, pType)
# 绑定我们定义的劫持方法到原函数
M.On.Lawn.Board.AddProjectile += PeaButterHOOK  

关于LawnMod的API请见这里

问题与回答

存档文件的位置?

PlantsVsZombies.NET中的存档文件存储在IsolatedStorageFile.GetUserStoreForApplication()+"/docs/userdata"路径下,包含用户列表、用户信息与Board对象转存。

  • 在Android设备中:/data/data/包名/files/IsolatedStorage/xxxxxxxx.yyy/zzzzzzzz.www/Url.kkkkkkkkkkkk...k/AppFiles/docs/userdata
  • 在Windows设备中:C:\Users\用户名\AppData\Local\IsolatedStorage\xxxxxxxx.yyy\zzzzzzzz.www\Url.kkkkkkkkkkkk...k\AppFiles\docs\userdata
    • 在Windows设备中,不同路径启动的游戏会有不同存档路径,与PC版行为不同,请务必注意

报错“没有 Arial.xnb 文件” / Android版启动时直接崩溃

请检查编译指南,这可能是由于你没有正确放置资源文件。

联系我们

QQ群聊:884792079

Discord Link:discord.gg/uXz6g6Adnm