引用 | 編輯
文♂
2013-10-01 11:32 |
樓主
▼ |
||
x0
複製程式
LoadData(id) { static vaultkey[64], vaultdata[512], datalen format(vaultkey, charsmax(vaultkey), "%s#", user_name[id]) format(vaultdata, charsmax(vaultdata), "%s#%i#%i#%i#%i#%i#%i#%i#%s#%i#%i", user_password[id], user_status[id][0], user_status[id][1], user_status[id][2], user_status[id][3], user_status[id][4], user_status[id][5], user_status[id][6], user_ipaddress[id], user_status[id][7], user_status[id][8]) datalen = nvault_get(nvault_data, vaultkey, vaultdata, charsmax(vaultdata)) if (datalen) { user_registered[id] = true replace_all(vaultdata, 255, "#", " ") static cache_status[33][33] parse(vaultdata, user_password[id], charsmax(user_password[]), cache_status[0], charsmax(cache_status[]), cache_status[1], charsmax(cache_status[]), cache_status[2], charsmax(cache_status[]), cache_status[3], charsmax(cache_status[]), cache_status[4], charsmax(cache_status[]), cache_status[5], charsmax(cache_status[]), cache_status[6], charsmax(cache_status[]), user_ipaddress[id], charsmax(user_ipaddress[]), cache_status[7], charsmax(cache_status[]), cache_status[8], charsmax(cache_status[])) for (new i = 0;i <= 8;i++) user_status[id][i] = str_to_num(cache_status[i]) } else user_registered[id] = false set_task(1.0, "player_login", id) } 問題來了 編譯插件時無限loop 等了十分鐘依舊在編譯 複製程式 parse(vaultdata, user_password[id], charsmax(user_password[]), cache_status[0], charsmax(cache_status[]), cache_status[1], charsmax(cache_status[]), cache_status[2], charsmax(cache_status[]), cache_status[3], charsmax(cache_status[]), cache_status[4], charsmax(cache_status[]), cache_status[5], charsmax(cache_status[]), cache_status[6], charsmax(cache_status[]), user_ipaddress[id], charsmax(user_ipaddress[]), cache_status[7], charsmax(cache_status[]), cache_status[8], charsmax(cache_status[])) 後來發現將這段語法刪去便沒有無限循環的情況 有大大知道這是怎麼問題了 x0
|
引用 | 編輯
文♂
2013-10-01 12:04 |
2樓
▲ ▼ |
下面是引用 op47 於 2013-10-01 11:54 發表的 : 不清楚 複製程式 parse(vaultdata, user_password[id], charsmax(user_password[]), cache_status[0], charsmax(cache_status[]), cache_status[1], charsmax(cache_status[]), cache_status[2], charsmax(cache_status[]), cache_status[3], charsmax(cache_status[]), cache_status[4], charsmax(cache_status[]), cache_status[5], charsmax(cache_status[]), cache_status[6], charsmax(cache_status[]), user_ipaddress[id], charsmax(user_ipaddress[]), cache_status[7], charsmax(cache_status[])[color=#FF0000], cache_status[8], charsmax(cache_status[])[/color]) 將紅字部份刪除之後 都能解決無限循環問題 難道parse語法不能設太多參數? x0 |
引用 | 編輯
弒血
2013-10-01 13:02 |
4樓
▲ ▼ |
下面是引用 文♂ 於 2013-10-01 12:04 發表的 : 是不是因為你陣列設置太多了的關析 cache_status[33][33] 你好像只用到8個陣列數 這個問題我沒有遇過..第一次看到無限LOOP.. x0 |
引用 | 編輯
a7811311622
2013-10-01 15:42 |
5樓
▲ ▼ |
原因是出在你用了 charsmax …
畢竟 charsmax 只是<string>用 define 定義出來的… 有時候太死板就容易出問題… 至於原因…我不想管~ 反正我將 parse 內全部的 charsmax 全換成 sizeof ? -1 就沒問題了… 複製程式 parse(vaultdata, user_password[id], sizeof user_password -1, cache_status[0], sizeof cache_status -1, cache_status[1], sizeof cache_status -1, cache_status[2], sizeof cache_status -1, cache_status[3], sizeof cache_status -1, cache_status[4], sizeof cache_status -1, cache_status[5], sizeof cache_status -1, cache_status[6], sizeof cache_status -1, user_ipaddress[id], charsmax(user_ipaddress[]), cache_status[7], sizeof cache_status -1, cache_status[8], sizeof cache_status -1) x0 |