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 |
|
|
|