中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 3730|回复: 8

[闲聊] 怎样做一个插件挂载后让所有单位有一个初始值?

[复制链接]
发表于 2012-5-9 13:50:23 | 显示全部楼层 |阅读模式
如题,想要做一个插件,功能要求:挂载后,让游戏里的所有单位,比如说玩家、队友、可扮演的玩家都有一个初始值,而不用编辑任务的时候在编辑器里面写!
例如:我要挂载做好的插件后,进入游戏,玩家、队友、可扮演的玩家初始都调用一个子弹视角的脚本:cam.sqf
如果在编辑器里面的话,就要在所有单位(玩家、队友、可扮演的玩家)的初始值里面写上:this execVM "\***\cam.sqf";
我就想通过制作这个插件,省略掉编辑器的这个步骤,通过挂载这个插件后,进入游戏的战役或者其他的任务,所有单位(玩家、队友、可扮演的玩家)都已经调用了这个脚本,就想Mcc一样,几乎所有游戏里的单位、战役、任务都可以用!
我想这个应该是一个脚本变量的应用,但是我天资愚钝,研究了很久还是没办法实现此功能!所以来问问朋友们,大家帮帮忙!谢谢!

我是这样写的一个脚本:通过插件调用这个“initcam.sqf”脚本
//name:initcam.sqf
private["_man"];
//玩家初始值为:this execVM  "\***\cam.sqf";
_man=player;
null =_man execVM  "\***\cam.sqf";
//所有单位的初始值为:this execVM  "\***\cam.sqf";
_man=?????就是这里的这个变量应该怎么定义,才能让所有单位的初始值为:this execVM  "\***\cam.sqf"?或者应该怎样用其他的方式写?)
null =_man execVM  "\***\cam.sqf";

exit

我通过上边这样写只能实现玩家的初始值为:this execVM  "\***\cam.sqf";
也就是这里是对的:
_man=player;
null =_man execVM  "\***\cam.sqf";
但是切换为可扮演玩家就没有用了!


大家帮看看,会的教教我,谢谢!
发表于 2012-5-9 22:27:27 | 显示全部楼层
插件的config.cpp文件里边继承class UserActions 新建个自己的Actions设成player可用,进入任何游戏玩家就可以运行这个Actions运行你的脚本.当然还有其他更好的做法,但这是最简单实用的.
这个Actions 可以是运行一个脚本,内容这要看你喜欢的触发方式写,监视键盘动作还是还是调出图像界面或者就是一个Actions.(这一步不能省否则就不能通用与所有游戏). 然后进入游戏在后台等待就是你要操作运行的一些东西.比如要运行你的脚本...
initcam.sqf

     if (isMultiplayer) then {_playable = playableUnits} else {_playable = switchableUnits};
    {_x execVM  "\***\cam.sqf"} forEach _playable ;
 楼主| 发表于 2012-5-10 00:11:14 | 显示全部楼层
本帖最后由 JDLSNIPER 于 2012-5-10 00:14 编辑
fan 发表于 2012-5-9 22:27
插件的config.cpp文件里边继承class UserActions 新建个自己的Actions设成player可用,进入任何游戏玩家就可 ...


非常感谢fan的回复帮助,不过我还是有一些不懂???
你的意思是我的initcam.sqf要这样写:
if (isMultiplayer) then {_playable = playableUnits} else {_playable = switchableUnits};
  {_x execVM  "\***\cam.sqf"} forEach _playable ;
然后config.cpp文件要这样写:
[]spawn
{
private["_veh", "_idx"];
_idx =20;

while {true} do
{
   if (_idx == 20) then
   {
      _idx = (vehicle player) addAction ["调用子弹视角脚本cam.sqf", "initcam.sqf", nil, -1000, false, true];
      _veh = vehicle player;
   };

   if (_veh != vehicle player) then
   {
      _veh removeAction _idx;
      _idx =20;      
   };
  
   
   
   Sleep 1;
};
};

你看这样是否可行?
进入游戏后用鼠标滚轮是否可以有一个选项:“调用子弹视角脚本cam.sqf”?
然后点击后就是否可以调用cam.sqf?????
我还没试,明天有时间的话试试看!
发表于 2012-5-10 14:35:23 来自手机 | 显示全部楼层
也许addeventhandler可用?
来自:中国虚拟军事网(VME)- 专注于武装突袭等优秀虚拟军事游戏 Android客户端来自: Android客户端
 楼主| 发表于 2012-5-10 16:40:45 | 显示全部楼层
hiddenzone 发表于 2012-5-10 14:35
也许addeventhandler可用?
来自:中国虚拟军事网(VME)- 专注于武装突袭等优秀虚拟军事游戏 Android客户端 ...

怎么用呢?这样吗:
_EH***Idx = player addEventHandler ["@@@", {_this exec "****.sqs"}]
发表于 2012-5-14 21:43:05 | 显示全部楼层
1.先将下面的内容写到config.cpp文件,......打包成一个插件,加载这个插件进游戏就可以看到一个Actions.
class CfgPatches
{
        class youpatchesname
        {
                units[] = {};
                weapons[] = {};
                requiredVersion = 0.1;
                requiredAddons[] = {};
        };
};

class CfgVehicles
{
        class Land;
        class Man : Land
        {
                class UserActions
                {
                        class youactionsname
                        {
                                displayName="<t color='#ff0000'>myScripts</t>";
                                position="camera";
                                onlyforplayer=1;
                                priority = 0;
                                showWindow = 0;
                                shortcut = "";
                                radius=5;
                                condition="this ==vehicle player";
                                statement="[] execVM ""\debug\myScripts.sqf""";
                        };
                };
        };
};

2.在你的游戏根目录建一个自己的文件夹,我的叫debug.
3.在debug文件夹里建一个myScripts.sqf文件,里面写你需要的初始化的你自己需要测试或运行的内容.
4.进游戏测试脚本,不用切出游戏可以直接在你的debug里调用或者修改你的文件等等...
 楼主| 发表于 2012-5-14 22:26:51 | 显示全部楼层
fan 发表于 2012-5-14 21:43
1.先将下面的内容写到config.cpp文件,......打包成一个插件,加载这个插件进游戏就可以看到一个Actions.
...

谢谢fan的帮助,非常感谢!
发表于 2013-3-26 12:55:06 | 显示全部楼层
fan 发表于 2012-5-14 21:43
1.先将下面的内容写到config.cpp文件,......打包成一个插件,加载这个插件进游戏就可以看到一个Actions.
...

求问~~大大~如果不是动作菜单的插件~

比如直接调用到玩家身上的插件,应该用怎么写?随便给玩家增加效果的
发表于 2016-2-15 21:51:56 | 显示全部楼层
下网上载 发表于 2013-3-26 12:55
求问~~大大~如果不是动作菜单的插件~

比如直接调用到玩家身上的插件,应该用怎么写?随便给玩家增加效 ...

怎样做一个插件挂载后让所有单位有一个初始值?
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-4-26 00:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表