kevin961104
|
分享:
▼
辛苦了几天 终于由错误26个变到只有9个(9个还是多阿= =) 点点点那个其实要写的是不是只有 //Turn player into nemesis if (fnGetZombie() >= 1) { while (g_survivor[id] || !g_zombie[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum)); zombieme(id, 0, 1, 0) } 接着就没有关于make_a_nemesis(mode, id)的错误 但依然希望AykinDalike大大说出答案 可以知道自己这次的错误 再作进一步的改进 不过错误还是有= = 我看看了行数 居然出问题的是zp内置的道具 还有是新增音乐那些.... 等等上传档案+图上来...
[ 此文章被kevin961104在2010-01-10 15:43重新编辑 ]
|
|
x0
[100 楼]
From:香港城市电讯 | Posted:2010-01-10 15:06 |
|
|
AykinDalike
|
分享:
▲
▼
下面是引用 kevin961104 于 2010-01-10 15:06 发表的 : 辛苦了几天 终于由错误26个变到只有9个(9个还是多阿= =) 点点点那个其实要写的是不是只有 //Turn player into nemesis if (fnGetZombie() >= 1) { ....... 不好意思现在才回你 最近真的比较忙 其实不是要卖你关子 是因为我提供给你的nem是纯理论的东西 如果你要得到解答 你必须要自己试试看 所以我一开始才会说关于这里讲到的复仇者 我只能给你理论跟方向 其他的东西你得慢慢花时间研究了 显然你可能动到其他部分 或是引发的争点,导致转档出现连带错误 make_a_nemesis(mode, id)的部分请看以下... make_a_nemesis(mode, id) { // Get alive players count static iPlayersnum iPlayersnum = fnGetAlive() // Not enough players, come back later! if (iPlayersnum < 1) { set_task(10.0, "make_nemesis_task", TASK_MAKENEMESIS) return; } #if defined AMBIENCE_SOUNDS // Stop ambience sounds and start 'em again remove_task(TASK_AMBIENCESOUNDSSTOP) ambience_sound_stop() remove_task(TASK_AMBIENCESOUNDS) set_task(0.5, "ambience_sound_effects", TASK_AMBIENCESOUNDS) #endif g_models_i = 0.0 // reset model change counter g_teams_i = 0.0 // reset teams change counter // Get prevent consecutive modes setting static preventconsecutive preventconsecutive = get_pcvar_num(cvar_preventconsecutive) // Round starting g_newround = false g_survround = false g_nemround = false g_swarmround = false g_plagueround = false // Set up some common vars static forward_id, name[32] if (!preventconsecutive || g_lastmode != MODE_INFECTION || mode == MODE_INFECTION) { // Single Infection Mode g_lastmode = MODE_INFECTION if (fnGetZombies() >= 1) { // Turn someone into a Nemesis(if is already a zombie) while (!g_zombie[id] || g_survivor[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum)); zombieme(id, 0, 1, 0) } // Get player's name get_user_name(forward_id, name, sizeof name - 1) // Show Nemesis HUD notice set_hudmessage(255, 20, 20, HUD_EVENT_X, HUD_EVENT_Y, 1, 0.0, 5.0, 1.0, 1.0, -1) ShowSyncHudMsg(0, g_MsgSync, "%L", LANG_PLAYER, "NOTICE_NEMESIS", name) } } 这样写转档是绝对不会有问题 但是效果你要自行测试后才会有结论 因为它很可能牵涉到一个最基础的架构 就是当新模式被启动后,关于模式的进阶设定被视为无效 因为模式已经产生的道理 这是绝对可以克服掉的障碍 而且照这样的方向写是不会错的
[ 此文章被AykinDalike在2010-01-13 15:41重新编辑 ]
|
|
x0
[101 楼]
From:台湾中嘉宽频 | Posted:2010-01-13 14:21 |
|
|
AykinDalike
|
分享:
▲
▼
下面是引用 i-c0112 于 2010-01-29 17:59 发表的 : 改主插件真复杂,跟extraitem差好多,我深感自己的卑微啊!! 看完了整篇+11页回覆后,感觉脑力退化至连1+1=?都算不出来了
我不想取消掉我的幸存者,难道真的要大费周章的自订新的吗??我可怜的寒假啊,难得那么长的说 别这么说^^" 谢谢你的支持!! 哪那么夸张!?? 还脑力退化勒... 至于是否必须改幸存者这点已经有讨论过了 当然是可以创个survivor2或human2 使他与原先的surv或human分离 不过这样一来...会遇到以下三种状况 1.新创的角色必须完全重新定义 否则不可能产生作用、甚至当机或转档转不过 2.模组方面,若原先的不做更动或取代的话 将会超过ZP主插件的512mb上限要求 那会引来相当大的风暴!! 3.若以上两点克服后,更大的问题是主插件内容多到不像话 新增人物并定义很容易遗漏,或是产生逻辑上的连带错误 另外,Bot和其他配置插件有限制是人类使用的都要注明。 而且,必须在include加点东西,否则compiler会看不懂。
[ 此文章被AykinDalike在2010-01-30 23:13重新编辑 ]
|
|
x0
[105 楼]
From:台湾中嘉宽频 | Posted:2010-01-30 19:41 |
|
|
01a2Bc3DeF
|
分享:
▲
下面是引用 AykinDalike 于 2009-11-15 17:38 发表的 : // Single Infection Mode g_lastmode = MODE_INFECTION
if (fnGetHumans() > 1) { // Turn player into the first zombie zombieme(id, 0, 0, 0) } if (fnGetHumans() >= 1) { // Turn someone into a Survivor(if ont a zombie) while (g_zombie[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum)); humanme(id, 1) } if (fnGetHumans() >= 5) { while (g_survivor[id] || g_zombie[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum)); humanme(id, 1) } if (fnGetHumans() >= 9) { while (g_survivor[id] || g_zombie[id]) id = fnGetRandomAlive(random_num(1, iPlayersnum)); humanme(id, 1) }
依数学的角度上你没设个明确范围隔开会同时有多个范围能符合一个值 这插件很多>=啥的可是当人数多时是符合最大的那个>=的值啦,不过小的也符合 Ex.当人 >= 9时也是同时符合>1、>=1、>=5、>=9的条件,数学上是我引用的那一段都会全部生效,AMXX会自动避开还是全部生效,还是有优先顺序,还是同时生效也没差? 插件这样写不会错误吗? 如何设个>=又必须<=几的范围才能生效,这样是一定不会出错
[ 此文章被01a2Bc3DeF在2010-02-17 20:20重新编辑 ]
|
|
x0
[109 楼]
From:台固媒体 | Posted:2010-02-17 20:14 |
|
|
|