设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 587|回复: 3

[推荐] 寻求插件-关于zp地图雾的 [复制链接]

Rank: 5Rank: 5

帖子
448
精华
0
声望
1150 点
金币
134 Mold
被赞许
0 次
注册时间
2009-3-28
发表于 2010-7-11 11:45:20 |显示全部楼层
我想要一个不同地图使用不同雾的插件 . 我懒 不想自己调

       具体是想用ini 控制地图属性 比如说de_dust2 和de_nuke
     For Example

de_dust2 1(开启雾), 1(开启雨), 0(关闭雪) , 255 255 255(雾的颜色) ,0.00018(浓度)
de_nuke  0 , 1 ,0 , 10 10 10 ,0.00012
这样的 不知道可不可以实现 我自己试着写了一个 但是非常糟糕
这是我写的
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <zombieplague>
  4. #include <engine>
  5. #include <fakemeta>
  6. #include <hamsandwich>


  7. new const ZP_MAPS_FOG = "zp_maps_fog.ini"
  8. new g_ambience_fog , g_fog_density[10], g_fog_color[12]

  9. public plugin_precache()
  10. {
  11.         if (g_ambience_fog)
  12.         {
  13.                 ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_fog"))
  14.                 if (pev_valid(ent))
  15.                 {
  16.                         fm_set_kvd(ent, "density", g_fog_density, "env_fog")
  17.                         fm_set_kvd(ent, "rendercolor", g_fog_color, "env_fog")
  18.                 }
  19.         }
  20.         if (g_ambience_rain) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_rain"))
  21.         if (g_ambience_snow) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"))
  22.         )
  23. }
  24. public menu_info(id, key)
  25. {
  26.         static motd[1500], len
  27.         len = 0
  28.        
  29.         switch (key)
  30.         {
  31.                 case 0: // General
  32.                 {if (g_ambience_fog)
  33.                         {
  34.                                 len += formatex(motd[len], charsmax(motd) - len, (weather < 1) ? " %L" : ". %L", id, "MOTD_FOG")
  35.                                 weather++
  36.                         }
  37.                         if (g_ambience_rain)
  38.                         {
  39.                                 len += formatex(motd[len], charsmax(motd) - len, (weather < 1) ? " %L" : ". %L", id, "MOTD_RAIN")
  40.                                 weather++
  41.                         }
  42.                         if (g_ambience_snow)
  43.                         {
  44.                                 len += formatex(motd[len], charsmax(motd) - len, (weather < 1) ? " %L" : ". %L", id, "MOTD_SNOW")
  45.                                 weather++
  46.                         }
  47.                 }
  48.         }
  49. }

  50. load_customization_from_files()
  51. {
  52.         case SECTION_WEATHER_EFFECTS:
  53.                         {
  54.                                 if (equal(key, "RAIN"))
  55.                                         g_ambience_rain = str_to_num(value)
  56.                                 else if (equal(key, "SNOW"))
  57.                                         g_ambience_snow = str_to_num(value)
  58.                                 else if (equal(key, "FOG"))
  59.                                         g_ambience_fog = str_to_num(value)
  60.                                 else if (equal(key, "FOG DENSITY"))
  61.                                         copy(g_fog_density, charsmax(g_fog_density), value)
  62.                                 else if (equal(key, "FOG COLOR"))
  63.                                         copy(g_fog_color, charsmax(g_fog_color), value)
  64.                         }
  65. }
  66. public zp_maps_fog = ("maps_name" , "MOTD_FOG" , "MOTD_RAIN" , "MOTD_SNOW" , "FOG DENSITY" , "FOG COLOR")
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1261
精华
4
声望
7552 点
金币
980 Mold
被赞许
13 次
注册时间
2009-5-24
发表于 2010-7-11 12:52:14 |显示全部楼层
这。。。这。。你该不会参照ZP把ZP的代码都搬来了吧?

使用道具 举报

Rank: 3Rank: 3

帖子
96
精华
0
声望
446 点
金币
481 Mold
被赞许
6 次
注册时间
2010-7-4
发表于 2010-7-11 14:02:59 |显示全部楼层
本帖最后由 Robert 于 2010-7-11 14:11 编辑

这个是可以修改 ZP,这样可以达到更好的效果。

搜索

format(path, charsmax(path), "%s/%s", path, ZP_CUSTOMIZATION_FILE)

然后将

        new path[64]
        get_configsdir(path, charsmax(path))
        format(path, charsmax(path), "%s/%s", path, ZP_CUSTOMIZATION_FILE)
       
        // File not present
        if (!file_exists(path))
        {
                new error[100]
                formatex(error, charsmax(error), "Cannot load customization file %s!", path)
                set_fail_state(error)
                return;
        }

替换为。

        new dir[64], path[64], maps[64]
        get_configsdir(dir, charsmax(dir))
        get_mapname(maps, charsmax(maps))
        format(path, charsmax(path), "%s/zombieplague/%s.ini", dir, maps)

        if (!file_exists(path)) format(path, charsmax(path), "%s/%s", dir, ZP_CUSTOMIZATION_FILE)
       
        // File not present
        if (!file_exists(path))
        {
                new error[100]
                formatex(error, charsmax(error), "Cannot load customization file %s!", path)
                set_fail_state(error)
                return;
        }

之后,configs\ 下的 zombieplague.ini 不用动,要想为单独的地形设置配置文件。就在 configs 下 建立个 zombieplague 文件夹,然后在将 zombieplague.ini 复制进内,然后以地图名字命名。比如 de_dust.ini。 在修改里面的内容可以实现单个地图的单独配置文件的功能。
已有 2 人评分声望 金币 被赞许 收起 理由
Martin + 10 + 3 我很赞同
大江 + 50 + 50 + 1 我很赞同

总评分: 声望 + 60  金币 + 53  被赞许 + 1   查看全部评分

使用道具 举报

Rank: 5Rank: 5

帖子
448
精华
0
声望
1150 点
金币
134 Mold
被赞许
0 次
注册时间
2009-3-28
发表于 2010-7-14 13:20:58 |显示全部楼层
好猛... 我没仔细研究过zp主插件

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部