模拟城市中文网

 找回密码
 入住
搜索
查看: 5047|回复: 11

怪怪的Item Order

[复制链接]
发表于 2009-2-25 02:00 | 显示全部楼层 |阅读模式
難道是我人品問題,
我好不容易,將一套諸多lot的Item Order改為50幾萬多(當然有換為16進位,不論)
想必,50幾萬的號碼,無論如何,在表單上,都應該在最後頭的底部。
結果,竟然一半的插件出現在最上面的最開頭(真的想不透,原來的插件無論如何都不可能大於50幾萬,次序怎麼比50幾萬的還排後,太怪了)
另外一半在最下面。
這實在太匪疑所思了,想說這種問題只有自己能解決,我已換了兩個方式(每換一次 order就是17個插件要改)
不過還沒能解決,所以貼上來。

我排序是有秩序的,希望我自己能找到解決方式。

這一套插件是深綠屋頂的。上圖是靠前的,下圖是靠後的,夠怪。




[ 本帖最后由 天唐永thianz 于 2009-2-25 02:03 编辑 ]
发表于 2009-2-25 02:08 | 显示全部楼层
好强啊,你的菜单一定很长吧
头像被屏蔽
发表于 2009-2-25 02:35 | 显示全部楼层
Item Order 的範圍是 0x0 到 0x10000000 之間
所以若要確保Item在最下面, 就把 lot 的 Item Order 從0x10000000 遞減

评分

参与人数 1模拟币 +66 收起 理由
天唐永thianz + 66 謝謝:)

查看全部评分

 楼主| 发表于 2009-2-25 04:59 | 显示全部楼层
首先,我已基本排除其它因素,只剩item order因素。

再來我把幾個有趣的排列報告一下,順便自己猜下原因,也許就快解出來了。(因為很慘,再改一回仍無法完全解決)


1. Item order
0x0007D06F
0x0007D070
0x0007D0D7
...
0x0008BF89
以上列出這幾個我沒按順序寫上來,但都出現在選單的最上面(比sc4自帶的還上面,就是選單的最上上面一堆就對了)

2.
0x0007D06F在選單最上面
0x0008214B卻在選單最下面
在選單最下面的還有舉例:
0x0008214B
0x0008214E
0x0008715F
0x00087E43


~~休息一下,我好像在玩1A2B的遊戲,慢慢找出原因…

3.剛才的失敗是這樣,已經全部改過數字,只有一個在選單上順序不合理,就是
0x00573321這一個竟然比
0x00556611的位置還上面(靠前)。
幾A幾B的遊戲玩到這裏,我暫時猜測如下:
Item Order只接受後四位的排序,就是0x0000abcd.
這樣就能說明為何0x00573321為何比0x00556611的位置還上面。

而我目前的觀察分析是這樣,我發現0x1234abcd這八位數,只要a這一位是英文,它的選單位置就比原sc4自帶的還靠前,所以…只要那一位是英文,我猜是有點變負數的意思
(我想到這裏,plunder或rszxh能為偶解惑一下嗎?)
我猜這種16進位是四位一組四位一組(?),不曉得對不對,
我要去驗證了。

~另外解釋一下,如此做的原因,我的選單並不是很長的意思,只是做成套的插件要方便排序。選單要有秩序。不能先做的先排。如此而已~

[ 本帖最后由 天唐永thianz 于 2009-2-25 05:09 编辑 ]
 楼主| 发表于 2009-2-25 05:43 | 显示全部楼层
呵呵,不曉得玩程序很懂各種16進位的人是否熟悉到幾眼就能猜出答案,不像我還要玩一下幾A幾B的排除法實驗遊戲。
不過因為我之前在替prop設定於lot的位置時就有點這種四位一組的影子,所以我還是應該猜對方向。

4.第4次實驗。很具有針對性了吧我想結果也應該出來了

以下是在遊戲中教育選單上的位置,(首先出現的7個,中間自帶的, 以及最下面的2個)
0x0001A602 第一個出現
0x0000A603 第二個出現
0x0001F602 第三個出現
0x0000F602 第四個出現
0x0000FFFF   第五個出現 (以上我猜實際為負數或0)
0x11110000   第六個出現
0x01110000   第七個出現  (以上兩個我猜實際為0)
……~略略略~再來選單上是一堆原SC4自帶的學校各館等等或其它的插件~略略略~~......
.......略.........
0x00016601   倒數第二個出現
0x00006602   最後一個出現

-----
我的猜測應該對了至少99%,就是前四位的作用我還不確定((反正不要了,設為0算了))
重點在最後四位的排序,以及千位不要英文。
好了,幾A幾B玩完了,我要去做了。

[ 本帖最后由 天唐永thianz 于 2009-2-25 05:53 编辑 ]
 楼主| 发表于 2009-2-25 06:10 | 显示全部楼层
昏倒,剛想說有沒可能漏掉實驗,結果又試了一下,
0x00009FFF排第一個出現。吼~ 又要磨了
发表于 2009-2-25 06:31 | 显示全部楼层
thianz
从你的测试结果,估计是这样的
这里使用的不是8字节整型数(long int)
而是四字节整型数(int)
那么只有后四位有效
在计算机里使用的是补码
0x8000->-32768

0xFFFF->-1
0x0000->0

0x0001->1
0x7FFF->32767
这下你应该明白为啥会出现这个结果了吧?

评分

参与人数 1威望 +1 收起 理由
天唐永thianz + 1 謝謝

查看全部评分

 楼主| 发表于 2009-2-25 06:44 | 显示全部楼层
謝了大家幫我,
大圖章講的我大概只懂一半,我趕快問一下,就是
依這一套,最大的是不是0x00007FFF?




5.我剛才又試驗了一次。結果如下

遊戲中教育選單上:
0x0000800F 第1個出現
0x00009000 第2個出現
0x00009F00 第3個出現
0x00009FFF 第4個出現
----再來是SC4自帶的各館校--略---
0x00000A12 第5個出現
0x00000F12 第6個出現
0x00001A11 第7個出現
0x00001F11 第8個出現
0x000030FF 第9個出現
0x00004F0F 第10個出現
0x0000500F 第11個出現
0x00006FFF 第12個出現
0x00007F00 第13個出現

實驗完也剛好看到大圖章回文,不過還是不太懂。
依實驗結果,好像大於0x00008000就是負數了(?),所以排列在最前面。

[ 本帖最后由 天唐永thianz 于 2009-2-25 06:52 编辑 ]
发表于 2009-2-25 06:48 | 显示全部楼层


就是数值范围是
-32768至32767
当最高位(二进制下)为1时,表示的是负数
负数当然比零和正数小
所以排在前面

[ 本帖最后由 rszxh 于 2009-2-25 06:52 编辑 ]
 楼主| 发表于 2009-2-25 06:52 | 显示全部楼层
那我知道了,謝謝,哈
头像被屏蔽
发表于 2009-2-25 07:57 | 显示全部楼层
我前面提的是沒有意義的, 圖章說的算法是正確的
我再詳細補充一些:

Item Order 的格式是 0000xxyy, 前四位別管它
xx 代表 lot 群組(單一lot 也視為一個群組)在 menu 中的位置, xx=80 表示在最頂部, xx=7f 表示在最底部, xx 若是其他任意數則表示在中間區域, 值越小則順序越前
yy 代表個別 lot 在 lot 群組中的的順序, 範圍是 00-FF, 值越小則 lot 在 lot 群組內會排越上面

以你的例子來說, lot 群組要在 menu 最下面, 那麼所有 lot 的 Item Order 應該是 0x00007fyy, 而你的每一 lot 在群組內的順序, 就根據 yy 來決定

若 Item Order 的值相同, 則以 lot 的 plop cost 來決定排列順序

[ 本帖最后由 plunder 于 2009-2-25 08:26 编辑 ]
发表于 2009-2-27 01:33 | 显示全部楼层

回复 11# 的帖子

原來是這樣子呀~~
汗.........
改東西這麼些時間以來,都是土法煉鋼.........
改→存檔→測試→改→存檔→測試→................
從不知道這些個....
您需要登录后才可以回帖 登录 | 入住

本版积分规则

小黑屋|手机版|模拟城市中文网

GMT+8, 2024-11-18 16:43 , Processed in 0.020660 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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