[教程] openmp/sa-mp联机服务器开发 零基础入门

本教程介绍了如何从零开始学习OpenMP(开放多人游戏)服务器开发,包括Pawn编程语言的基础知识,如创建脚本、配置服务器、理解回调和函数。适合初学者,通过实例讲解如何编写第一个脚本,搭建和启动服务器,并涉及服务器脚本的结构和简单的功能实现。强调了心态、学习方法和代码组织的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

以下将会以白话文或通俗易懂地说明讲解,主要面向小白人群,如有修正可联系本人

开发服务器所需要使用的编程语言Pawn,联机服务器的一切玩法、内容、功能都需要我们自己编写创造,这意味着开始是一片空白。
创造一个成熟的服务器需要一定的技术和编程经验,如果你愿意学习探索,一步步实现自己的想法和创意,这个过程会很有趣。
开发联机服务器的入门难度几乎为零,尽管门槛很低,但上限也很高,只有多看、多学、不断积累知识,巩固基础才能创造出成熟的脚本。
希望这个教程能起到抛砖引玉的作用,让大家了解原理和思路,尝试在没有任何编程基础的情况下快速入门,如果你想更好地学习开发,强烈建议先学习C语言基础。

想法、目标和心态

进行开发之前,你需要有想法和目标,你要做什么服务器,赛车?角色扮演?自由服?团队竞技?细化到每一个环节,学会使用思维导图去整理自己的玩法内容和开发思路。
同时把心态放好,接受别人的建设性意见、批评意见,不要把事情想得太复杂,给自己多一点自信心,如果你总是认为它太难了,那你永远都学不会,往往事情是很简单的。
不要急于求成,耐心且认真地对待它,也许一天的时间里你学会的知识很少,不要灰心,在日积月累中,也许你自己都没察觉到,你已经掌握了一门成熟的技术,任何事情只要你坚持做个几年,你就会成为里面的大神。当然不要让服务器开发占据你生活的全部,劳逸结合,如果你脑子里总是想着服务器开发的事情,这会让你坚持不了太长时间最终可能导致放弃。

什么是OPEN.MP (open multiplayer)

open.mp完全向后兼容,现有的SAMP客户端能够连接服务器,同时添加额外的功能,旨在构建1:1的SA:MP服务端还原

  • 许多古老众所周知的SAMP错误和BUG已被修复(可参考sa-mp fixes)
  • 包含大量安全、游戏行为和脚本修复
  • 更高效的性能和效率,更现代化、且优雅的开发体验
  • 也将会有新的open.mp客户端体验更有趣的内容
  • 同时支持0.3.7和0.3DL客户端
  • 内置了超过150个YSF的native功能,可前往open.mp功能列表了解详情
  • 许多功能加入和大量原生功能升级,更多函数添加{Float, _}:…format的支持
  • 关于标签矫正以及const矫正的规范性
  • 包含最新版本编译器3.10.12,新增功能包含见此处,修复了原版3.2.3664的所有已知错误和BUG,同时能检测到更多你代码里的问题或者需要改善的地方,为 SA:MP 社区提供更好的开发体验
  • 新的Pawn编辑器qawno编辑器包含在其中
  • 符号长度限制增加到了64,你不再需要缩写你的函数名,同时一些原生的sa-mp函数名的缩写也变为了阅读性更好的全称,如GetRandomCarColPair变为GetRandomVehicleColourPair,以及更加规范的命名

官网:open.mp

官方论坛:open.mp论坛

圣安地列斯联机社区 & 国服开发者交流社区:673335567

教程

地图制作(可略过)

地图编辑器(下载地址:地图编辑器),把下载好的文件解压至游戏目录,双击editor.exe即可开始制作地图
地图编辑器视频教程:B站视频

你可以略过地图制作这一步,但还是建议了解一下,毕竟这是一个不错的开始

制作你第一个脚本

下载open.mp服务端

open.mp服务端下载地址

解压服务端至任意地方,内含以下文件,后面慢慢讲解这些文件
在这里插入图片描述

    1. gamemodes 文件夹里新建一个文本文件 main.pwn 我习惯取名为main,你可以根据自己的喜好命名,比如: server.pwn ?? 随便你,只要不是中文就好
    1. 打开qawno/qawno.exe,这是编写脚本需要用到的编辑器/编译器
    1. 使用qawno.exe打开main.pwn,把制作好的地图OBJ代码复制到OnGameModeInit的花括号内

代码如下所示:

#include <open.mp>

public OnGameModeInit()
{
    CreateObject(2991, -3878.99219, 1992.43469, 2.75920,   0.00000, 0.00000, 6.09980);
    CreateObject(9159, -3893.42627, 1969.96741, 16.66340,   0.00000, 0.00000, 89.99990);
    CreateObject(8493, -3893.42090, 1969.95032, 16.67770,   0.00000, 0.00000, 89.99990);
    CreateObject(16630, -3881.03906, 1972.13171, 1.87030,   0.00000, 0.00000, 0.00000);
    CreateObject(19865, -3882.81201, 1974.27246, 3.29390,   0.00000, 0.00000, 91.19960);
    CreateObject(12990, -3876.10938, 1986.94922, 1.83270,   0.00000, 0.00000, 89.99990);
    CreateObject(2689, -3937.56201, 1990.49915, 5.20530,  0.00000, 0.00000, 90.00000);
    return 1;
} 

然后按F5进行编译,你会在相同目录里得到一个main.amx的文件, main.amx 是编译成功后生成的脚本
恭喜你,你创造了你的第一个脚本。

配置服务器 并 开启服务器!

服务端内有一个用于修改服务器配置的文件:config.json

config.json 是服务器配置文件,相当于设置,设置服务器加载哪些脚本、服务器最多可容纳多少玩家,服务器的名字,服务器RCON管理员密码,服务器的游戏设置、网络配置等等…

找到name这一行,在后面双引号里把我们的服务器名称修改为大航海时代
找到main_scripts这一行,在后面方括号里,加入一个双引号,双引号里写上main,意思是加载刚才编译好的main.amx文件作为我们的主游戏模式
找到rcon这一行,在后面的password选项里修改一下rcon管理员密码,比如"123456789",这非常重要,尽量除了自己以外不要告诉任何人

"max_bots": 0,
"max_players": 200,
"name": "大航海时代",
"pawn": {
   
    "legacy_plugins": [],
    "main_scripts": [
        "main"
    ],
    "side_scripts": []
}
"rcon": {
   
    "allow_teleport": false,
    "enable": false,
    "password": "123456789"
}, 

config.json提供了大量可自定义配置的选项,不需要焦虑,保持默认设置即可,除非你知道你在干什么,一般通过名称即可知道其功能作用

  • 常用的比如:
  • “network” : “port” 服务器端口
  • “network” : “allow_037_clients” 是否允许0.3.7客户端进入服务器
  • “max_bots” 最大NPC数量
  • “max_players” 最大玩家数量
  • “map” 地图名称
  • “mode” 模式名称
  • “website” 服务器网址
  • “password” 服务器密码
  • “artwork” : “enable” 是否启用自定义模型功能(也就是0.3DL功能)
  • “exclude” 如果你不想加载components文件夹里的某个插件,你可以在此处排除它们

修改完服务器配置之后保存,双击omp-server.exe,即可开启服务器
打开samp客户端,输入IP: 127.0.0.1:7777,就可以进入自己的服务器进行本地联机了
如果你想让更多人加入你的服务器,你需要购置一台云服务器,把你的服务端上传到云服务器,其他玩家就可以通过公网IP搜索到你的服务器一起联机,这篇教程不教这些

什么是编译?

你可以理解编译本质上是一个翻译的过程,暂时理解它是一个翻译软件,把我们说的中文翻译成英文让外国人能听懂
编译是把我们写的代码(我们能理解的语言)翻译成二进制语言(计算机能理解的语言)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值