分享到新浪微博 分享到QQ空间 打印

[疑问] 新手學改版問題~~

AM里在事件页面增加人物事件即可…然后会出来一个主角图,调整它的图片编号,就能变成相应的样子。当然,这些样子都是事先就在ROM里的,如果要改,需要用其他的工具来另外编辑。


想死你们了!

TOP

增加?你用Overworld试试,里面好像有数量修改,但只是好像。


想死你们了!

TOP

ROM本身对这个是有限制的。当然,最近在外国论坛看到了OE的改装版,允许去提升这个限制,但是目前还没放出来,再等等吧


想死你们了!

TOP

米事-v-欢迎提问


想死你们了!

TOP

引用:
原帖由 erickoala 于 2009-11-1 13:22 发表


那我就不客氣了~~

[众多问题……]
1、-。-有让玩家出示某只PM,如果不是就进入一种情况的脚本。具体你可以看看让你给展示PM或者交换PM的那个NPC的脚本。
2、船票如何生效你可以反编译那个查票员的脚本,就可以看到了-v-
3、AT本身支持日版,但中文版俺就不知道支持的如何了。其它训练师修改器还没强大到能够支持自定义招式的地步貌似。AT会更新的,只是时间问题- -||
4、-v-有一份special表,我没翻译过,0x187是一个查错用的命令,和事件无关,当这个命令返回值为0x2,脚本就会被强制结束。


想死你们了!

TOP

引用:
原帖由 erickoala 于 2009-11-1 14:40 发表


[一大堆话]
是这样,
1,2、-。-那你还需要继续学习脚本知识,希望能坚持看看教程区的XSE初级、进阶教程。
3、用UE也可以,但是你需要知道训练师这段数据的结构。眼下我还有别的事情,处理完了我会试着看看能不能找到那结构的-。-
4、那个表是英文的,我给你直接贴出来吧:

隐藏内容:

Special Description *other data*
000 Heals pokemon
001 clears the variable given in special2 or all the usual variables if in special 1
002 door warp script (fade black until finished warping)
003 same screen effect as 02. Peculiar behaviour, warps to last used warp, or to center-map if last change was made by a screen transition, or trapped in Battle link if used after game start
020 battle trough link. Stored in the same location as all other battle data
021 link start (trading)
022 faster link start (overwrites other commands)
023 save game popup
029 although it lets you select three pokemon, it shows not where they are stored, being nowhere on the usual variables(8000-800f)
02A Nice crash sound…
034 prints a buffered message, buffered somewhere by the trainerBattle command. *the trainer buffer is placed in 0x020386ae to 0x020386cc 020386ac trainer battle type; 0x020386ae - trainer number; 0x020386b4 - trainer starting talk pointer; 0x020386b8 - trainer loses pointer.*
035 prints a buffered message, buffered somewhere by a different command from 34. responds to Dpad.
036 returns the number of times the buffered trainer was fought. If bigger than 0, usually is followed by na end signal
038 plays buffered trainer music
039 used vs-seeker. placed in given variable if it was
03B activates battle with buffered trainer
03C activates pokestorage menu
05D save game popup
05F edit profiles. Which depend on 0x8004 value *Key: 0x0 = profile 0x1 = battle quote 0x2 = uppon wining 0x3 = uppon losing quote 0x4 = nine word message 0x5 and up, nothing*
060 displays profile, same key as 5f
07B checks pokemon nickname, buffers it and put 01 in given variable if it was never nicknamed
07C buffers pokemon name indicated at 0x8004 (nickname)
07D obtained in a trade checker
080 flushes random words into buffer 2
083 counts the number of pokemon in your party and places it on a given variable
084 same as 83
085 gives the number to the last pokemon on your party, to the variable passed
08D displays last processed message
09D old man battle
09E nickname pokemon in party indicated by 0x8004
09F chooses a pokemon for a purpose and stores its position at 0x8004. works even with eggs
0AB makes a random battle based on the Tree wild values
0B4 after battle, ceratin variables are set. b4 reads them and places on a given variable the status at battle end. *key 0x1 = fainted, 0x7 = captured, 0x4 = escaped*
0B6 daycare status *key: 0x1 = one egg, 0x2 = one pokemon, 0x3 = two pokemon*
0BA seems to register a pokemon number after reading from the party(with other special) and puts it in a variable. Returns 277 for Treeko, so real, in game number.
0BB removes pokemon stored at 0x8004 from party. Places it on the daycare center address (dynamic)
0BC A selection screen for pokemon with store instead of select, identical in use to 9f
0BD two slot selection screen that allows you to choose one of two pokemon on the daycare center. If no pokemon is stored there, blank name, lv0 male will appear.
0BE checks number of levels they grew in daycare and places it on given variable as well as in buffer2.
0BF calculates price on pokemon growth and places it on buffer2
0C0 gets pokemon back from daycare center (taken with bb). If 0x8004 is different from the slot number the pokemon is in, a bad egg is formed.
0C2 hatches a pokemon in the 0x8004 given position, even if not an egg
0C4 shows battle records and time scores. varies with value on ox8004 *key:0x0 = battle records, else = time board*
0C5 checks if you have enough money to pay for pokemon return. If true, return 1 to given variable
0C6 charges the money calculated bf
0C8 whiteout screen and carried to a pokecenter. Variables are cleaned, money is partially lost
0CD start safari game. Upon end, teleported back to default map, even though you never went near it
0CE ends safari game. This end, not being the default call to script, lets you remain where you are
0D4 seems to place on 0x8005 the seen pokemon and on 0x8006 the caught ones. Also places on 0x800c a number that might be pokemon the pokedex doesn't detect but were caught.
0D5 prints the pokedex evaluation. Number of pokemon caught is stored on 0x8004
0D6 flashes a tile that is one tile above the script. Used in pc scripts
0D7 switces a tile above script. Another animation
0DB selects a pokemon, but no variable is updated
0DC shows moves from pokemon in 0x8004 and allows you to choose one, position placed on 0x8005
0DD deletes move that was suposedly chosen with dc
0DF places on last-result the number of attacks on a pokemon defined by 0x8004
0E0 opens up a menu to teach previously known attacks to pokemon (move reminder) pokemon used is stored at 0x8004
0E6 returns the slot of the first available attack. If all occupied, returns 3 to given variable
0E8 game seem to freeze
0EC crash
0EF clears party, erasing all pokemon
0F1 shuts the system down, as if waiting for something (both audio and video)
0F5 asks to select three pokemon, and places them in the given order(removing the remaining) - pokemon tower. Choose cancel to get all your pokemon back.
0F6 appears to return if a pokemon is able to enter the event
0F8 really wierd command, deletes part of your party except for some of those you chose in f5
0F9 pc item storage menu with pc animation (your room)
0FA same as f9 but without pc animation
0FB town map
0FC checks the trade in 0x8004 and buffers the name of the wanted pokemon(0x0) and the given pokemon(0x1)
0FD gets the pokemon to trade and places it in 0x0202402c. Is in it's party form, that is, fully decrypted, 100 bytes.
0FE activates trade, gets pokemon from previous memory address Incomplete pokemon(80 byte form) crash when seen. If deposited and withdrawn, it's fixed
0FF checks pokemon in 0x8004's number and places it in given variable
106 opens pc menu, no animations, returns 01 to given variable and ff to lastresult
107 shows hall of fame thens returns you to pc menu
108 shows diploma for finishing kanto dex. Finishes script.
10F crash
110 saves hall of fame and plays ending
111 elevator scene + small animation
113 freeze screen, but only on scripts, not on signposts or people. Call again to unfreeze
114 unfreeze screen\camera. Works on all surfaces
11F returns to a variable the facing you had when activating the event
132 shows current floor
136 use strenght sound
137 starts wild battle on ice. Uses everything the normal wild battle use
138 starts wild battle on normal terrain. Uses everything the normal wild battle use.
139 same as 138
13D flashes screen.
13E warps to last used warp
13F falls to last used warp
143 perfectly normal wild battle
147 checks your pokemon in position referenced by 0x8004 and returns to the given variable its pokemon number. returns 0x19c if an egg.
14C fades sound until it turns off. Only some soundeffects remain. Loses effect after leaving map.
153 checks your party for pokemon equipped with e-card berries. 1 to variable if it happens
155 different from standart, no idea
156 ghost battle. If you have a shilp scope, it becomes the lv 30, uncatchable marowak. If not, the ghost will have the cry of the pokemon that was buffered.
157 activates bicycle
158 opens several different multichoice boxes depending on 0x8004 *key: 0x0 = badge talk; 0x1 = silph-co elevator; 0x2 = rocket elevator; 0x3 = celadon department store elevator; 0x4 = link options; 0x5 = pharmacy options?; 0x6 other elevator; 0x7 and up - return 0x7f to lastresult*
15C crashes game after executing whole script
160 same as 15c, but doesn't execute the rest of the code
161 activates surf sprite
163 sees pokemon number 0x8004 in the pokedex
166 lets you nickname your first pokemon in your box. Gives it the buffered name.
16A checks for wireless connector, 1 if there, 0 otherwise. Places value on given variable
16B tries to link for a game of pokemon jump the rope
16C tries to link for a game of dodrio berry-picking
16D linking for union room
16E wireless status
16F activates national dex
17B travels in the boat for vermillion
183 Wiredness… Makes every data go haywire,messing up video and everything. As long as you don't save, you're safe
187 places value on given variable. Seems to be a error checker of some kind, for every time it returns 0x2, a script is called to end.
18B shows fossil picture. Only works if 0x8004 is 0x8d or 0x8e. Position is stored in 0x8005(x) and 0x8006(y)
18C unshows picture
18D Accesses move tutor data and teaches that move to na allowed pokemon. Tutor placed at 0x8005
18E a menu to choose pokemon for something
191 SS Anne departure scene. With no boat, your sprite will follow it and disappear, making you invisible.
193 places value on given variable
194 if used without 0x8004, clears all warps and reproduces buffered video all over the map. Entering any menu will blank the video, crashing the game on exit
195 pokemon jump records
19C shows powder counter
19D hides powder counter
1A2 shows berry crushing records
1A5 plays credits
1A6 berry-picking records
1A7 multichoice for the islands, varies with what's on 0x8004
1AB sound effect for deoxys triangles
1AE checks for illegal pokemon for the union room and places one if found on a given variable
1B0 checks if pokedex (national) is complete. 0x1 if true, placed on a given variable
1B2 places a red arrow on the top of the screen
1B5 creates a tile animaiton one block left two-four up the player
1B7 creates a tile animation two-six blocks right from the top-left corner of the screen


5、因为前三段你没写没带该道具的情况,每次都是if 0x1...就是说,有了的情况会被跳转,而没有的情况则无事发生,这种情况下,没有道具自然无事发生。


想死你们了!

TOP

那就一点点分析吧,我也有一段时间没动脚本了……首先是这里:
checkitem 0x30 0x1
compare LASTRESULT 0x4
checkitem的结果要么是0x0,要么是0x1,返回的不是数量,你拿0x4和结果比有什么意义?
后面尽量不要用setwildbattle和do的那一套,那一套还有些不明朗,换用简单的wildbattle试试。
checksound这个命令要么就是多余,要么就是你没用对,因为这个命令会返回结果,而你压根没有对结果进行处理。
pause 和waitcry作用有少许重叠,你pause的一段时间应该cry已经停止了,这个时候何必用wait?要用也应该是两个命令倒置吧?

不知道你这个脚本是不是从ROM里其它神兽那里摘抄的,感觉很怪


想死你们了!

TOP

你这么一说我才注意到,你写的这个setvar确实问题非常大。
因为0x800D就是LASTRESULT。你这样的setvar压根就没意义,因为随后的checkitem会立即抹掉你先前set的值。
你这脚本的用意就有很大问题,建议LZ在写脚本的时候头脑要有一个思路,搞清楚自己的每一步是在干嘛。


想死你们了!

TOP

checkitem 0x32 0x1
compare LASTRESULT 0x1
if 0x1 goto 0x86C8568

把你的脚本都改成类似以上这样。以下是我的代码,在我给了主角一个大师球(0x1)之后,运行完美。
001 #org @a1
002 lock
003 faceplayer
004 checkitem 0x1 0x1
005 compare LASTRESULT 0x1
006 if 0x1 goto @a2
007 release
008 end
009  
010  
011 #org @a2
012 message @a3 0x2
013 release
014 end
015  
016 #org @a3
017 = Done.
点击查看原始代码


想死你们了!

TOP

引用:
原帖由 erickoala 于 2009-11-4 00:08 发表


原來是這樣啊~~~
怪不得弄了這麼多次才成功...>..
AM不是可以设定背景音乐么?我记得可以的啊
S脚本要设置var的-。-


想死你们了!

TOP

引用:
原帖由 erickoala 于 2009-11-5 16:15 发表


找到了~~
不知為何我下的中文版不能設定,要用回英文版才行....

那我想問一下setvar後面的數字是不是甚麼數字都能的啊??
即是說我填setvar0x800 0x0或
setvar 0x500 0x0,都不會影響遊戲嗎??
定還是像 ...
参见教程的进阶篇吧,var不是每个都闲着给你的,因为游戏的剧情要用掉一部分(当然你全部重制另当别论)。
另外推荐LZ参考XSE包里自带的guide.chm。
而关于S脚本的情况,参考这里吧:http://www.pokecommunity.com/showthread.php?t=168292,那是我很久以前写的一篇教程。


想死你们了!

TOP

1、任何情况都是setflag;试着看看地图头里的脚本
2、自己写的可以直接以@finish的方法重用,但限于在同时写入时;如果是系统原有的或是以前自己写入过得,需要直接引用实际地址,如goto 0x123456
3、估计你用的汉化版?这问题暂时无解,因为原作者不处理汉化后的版本。对他来说,汉化版只是个改版而已…
顺便说下我的推测。根据出错后的那个提示,貌似是内存读写控制不当造成的,可能是汉化版读出的东西大于了原先的设定。


想死你们了!

TOP

引用:
原帖由 erickoala 于 2009-11-6 01:28 发表


1. 剛看了,好像沒有???
不過,我看到博士的腳本中有用hidesprite,然後再setvar...但暫時未找出是甚麼..>..
脚本我抽空看看。
至于你的ROM,不是有句话说的好么,要常记得备份么-。-要不要重制只能自己把握了……
另外,重制的话先别急,我有样东西给你。


想死你们了!

TOP



想死你们了!

TOP

能举个实例么?因为搜出来空间是不会莫名改变的,除非
1、你压根没有限制空间的大小,也就是说,你可能需要的是500字节,但你只搜了100字节的用
2、你把一段空间用了两次

如果不是上述情况,那么还请举个实例看看-。-不然实在是爱莫能助
至于黑屏,我更是无从谈起。


想死你们了!

TOP

虽然没有仔细看,但你的地址明显有重叠部分,前一个脚本和后一个脚本的移动部分地址太靠近。
不要认为一个地址能够存下无数数据。
假设有地址0x01,那么从0x01到0x02只有一个字节而已;
如果你在0x01写下了N多信息,那么再次利用0x02的时候,必然会导致空间重用。


想死你们了!

TOP

XSE具有动态地址功能,写脚本的时候只需要一个首地址即可。具体请看XSE教程初级篇。


想死你们了!

TOP

我倒着回答你问题吧。
旧的地址可以用,但你要把以前的内容彻底覆盖掉,而且保证不受残留物的影响。另外为了能让软件识别这部分空间,就得自己把里面的内容FF了。
脚本问题道理很简单。
001 checkmoney 0x186A0 0x1
002 if 0x1 goto 0x87285B7
点击查看原始代码
你检查的结果是“是否等于”,而不是“是否大于”或者“是否小于”,这样当然没法继续执行了,因为无论是大于还是小于,都没办法走到0x1的部分啊
看这里:
引用:
小于(0x0)
等于(0x1)
大于(0x2)
小于等于(0x3)
大于等于(0x4)
不等于(0x5)
setmaptile不要用0xc,用0x0。具体原因暂时不解释。
至于地图的问题,我还在想呢


想死你们了!

TOP

嘎啦嘎啦是内嵌进去的,脚本不起作用,那是个完整的special。
-。-那就是没有烈日咯。
改脚本很简单么,把原来的自己变成FF,再写不就完了。

checkmoney后面那个参数不要写0x2,老老实实写0x0,谁教你写的0x2?你写代码还是和之前一样,自己都不知道自己在做什么。而且明白的告诉你,如果那个参数写0x1,那么命令压根就不会执行。
后面IF判断部分才是要改的。
以后脚本再出问题的时候,先给每一句带上注释,搞清楚是在干嘛。


想死你们了!

TOP

其实00和FF本质上没区别,只是火叶里的FF多,被认作是自由空间,宝石中则是00多.


想死你们了!

TOP