插件
必要工作
WARNING
您必须在pawn.legacy_plugins把 samp-node 放到其他插件的后面,以确保其他插件先加载。
如果您需要用到传统的插件,您必须像传统的原生开发那样,将插件的 dll/so 放入 plugins 文件夹,然后在config.json中配置pawn.legacy_plugins,并且通过 pawno/qawno 引入这些插件的.inc 文件,然后修改pawn.main_scripts为您编译的.amx文件。
由于插件有数种搭配可能性,所以infernus-starter只组合了常见的无 raknet 和带 raknet 的版本。
如果您没能以正确的方式使用插件,在服务器启动时通常您会收到类似的错误信息,也有一些插件是由于运行时的问题。
[Error] Function not registered: CA_DestroyObject
[Error] File or function is not found包装开发
有关包装的实现请参考 infernus 的相关代码和 samp-node 的 wiki。
由于一些可能是插件或samp-node,或sampgdk,又或是omp的底层实现,您有可能无法直接使用 samp-node 调用到插件/omp 组件的native函数,也可能无法直接注册回调函数。
例如 raknet无法被直接调用,所以infernus绕了很大的弯路,通过polyfill来实现调用。
如果您开发包装遇到类似的问题,可能需要参考 raknet 的 polyfill 绕弯路来实现,除非未来的某一天 samp-node和其他生态可以完全兼容omp。