Project1

标题: 某礼物系统脚本 [打印本页]

作者: 越前リョーマ    时间: 2008-1-12 01:35
标题: 某礼物系统脚本
其实就是想找各位帮我写个脚本……|||
(自己又不会写)

就是说,
一个比较小的框(对话框的一半大概),
里面显示我所设置的所有[礼物]的图标,
主角有这个物品就显示原色彩,
没有就带灰色调显示。

然后有一个光标一样的方框框着第一个图标,
然后可以上下左右移动,
选中自己想送的礼物时按回车确定。

判断是否有该物品,
有的话执行公共事件5,
没有的话直接显示文章:对不起,你没有该物品。
然后该系统退出,恢复游戏画面。
(需要有一个脚本调用)

=====================
PS。感觉好像伸手派……—
[LINE]1,#dddddd[/LINE]
大概这个样子:

[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 越前リョーマ    时间: 2008-1-12 01:35
标题: 某礼物系统脚本
其实就是想找各位帮我写个脚本……|||
(自己又不会写)

就是说,
一个比较小的框(对话框的一半大概),
里面显示我所设置的所有[礼物]的图标,
主角有这个物品就显示原色彩,
没有就带灰色调显示。

然后有一个光标一样的方框框着第一个图标,
然后可以上下左右移动,
选中自己想送的礼物时按回车确定。

判断是否有该物品,
有的话执行公共事件5,
没有的话直接显示文章:对不起,你没有该物品。
然后该系统退出,恢复游戏画面。
(需要有一个脚本调用)

=====================
PS。感觉好像伸手派……—
[LINE]1,#dddddd[/LINE]
大概这个样子:

[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 火鸡三毛老大    时间: 2008-1-12 01:56
脚本我不太会,我只能提示一下

提示:
用物品仓库改造一下可能变成你这种系统
作者: 越前リョーマ    时间: 2008-1-12 02:06
我是一点脚本都不会改呀……
作者: o∩_∩o    时间: 2008-1-12 02:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前リョーマ    时间: 2008-1-12 04:26
以下引用o∩_∩o于2008-1-11 18:43:42的发言:

写脚本的话,悬赏似乎会更有效率。

正有此打算……|||

明天还没人的话再悬赏吧~{/hx}
作者: 光郎    时间: 2008-1-12 04:33
预先算好的礼物的话…只要是八个可能以内的会很好的。礼物越多越复杂……
作者: 越前リョーマ    时间: 2008-1-12 06:17
为了窗口美观,

设置为大概一排6个的话最少得3~4排……{/hx}
作者: o∩_∩o    时间: 2008-1-12 06:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前リョーマ    时间: 2008-1-12 06:31
以下引用o∩_∩o于2008-1-11 22:25:41的发言:

可否发张设计图上来?

OK……

我做的简单的图片。
上传ING……
作者: 越前リョーマ    时间: 2008-1-12 06:35
大概这个样子:


作者: o∩_∩o    时间: 2008-1-12 06:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前小号    时间: 2008-1-12 06:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: o∩_∩o    时间: 2008-1-12 07:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 火鸡三毛老大    时间: 2008-1-12 07:02
LS   LZ要的不是在菜单中显示  
他只是要一次性的
作者: o∩_∩o    时间: 2008-1-12 07:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: 火鸡三毛老大    时间: 2008-1-12 07:27
LZ要的是 NPC送给主角礼物还是主角送给NPC啊?

如果是送NPC  事件就可以完成

还有一个思路可行...

新建地图--把地图弄美观一点(当背景用!)

设置礼物事件事件--允许穿透(每个礼物事件都要设置)--
固定朝向--行走图用物品的图片--条件分歧检查有无物品--
检查到有就赠送--送完后可以问主角要不要继续送或这离开--
检查到没有就说话 你没有此物品

调用方法:场所移动到礼物系统地图里

截图(注意看图片里的字):


作者: 光郎    时间: 2008-1-12 07:54
我觉得…应该是物品图鉴的变种。
100~124号物品在新的自定义框中中显示,(X+12)(Y+14)
直接在ICON中用“ID”“ID_2”的图片素材判定你是否有该礼物,有的话用“ID”并可点击看详情。没有就说“还未收到该礼物”。
作者: 亿万星辰    时间: 2008-1-12 16:44
LZ要求的只是这样的一个scene,至于是给NPC的,还是NPC给的...留好接口,让LZ自由发挥即可
作者: 越前リョーマ    时间: 2008-1-12 20:03
是主角给NPC……
NPC给主角的话直接加减物品不就好了……{/hx}

那个,
用事件做的方法不是我要的那种。
是在对话的那张地图上出现对话框,
这样传送到新地图再移动主角选择的话太……|||
作者: 光郎    时间: 2008-1-12 20:30
越前从物品图鉴入手吧~送出去的话只要物品分类下不让礼物显示在一般物品中,思路还是上面的。
作者: 越前リョーマ    时间: 2008-1-12 20:34
以下引用光郎于2008-1-12 12:30:12的发言:

越前从物品图鉴入手吧~送出去的话只要物品分类下不让礼物显示在一般物品中,思路还是上面的。

恩,
差不多就是一开始在物品里设置好代码然后显示。

问题是我又不会改脚本……{/hx}
作者: 越前リョーマ    时间: 2008-1-13 00:00
结果还是跟预料的一样……
作者: yangff    时间: 2008-1-13 00:01
我帮你做,这个帖子接了!{/dy}
作者: o∩_∩o    时间: 2008-1-13 00:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: 光郎    时间: 2008-1-13 01:11
手机不能写脚本嘛…不然就直接帮忙了。
作者: 越前リョーマ    时间: 2008-1-13 01:49
突然有这么多人帮我真是感动啊……{/hx}
作者: yangff    时间: 2008-1-13 21:50
做出来了,不过八成大概因该,脚本没人看的懂(窗口),太乱了(没注解)防盗
OK了
http://rpg.blue/upload_program/files/礼物_80660741.rar
注意NPC的事件那里在$scene = Scene_Pr.new
后面必须等待20针以上,否则。。。
自己试吧~~
----------------------------

$item=
[
1,2,3,4,5,6,
7,8,9,10,9,9,
9,9,9,9,9,9,
9,9,9,9,9,9,
]
设置穿口中每种图标代表的物品
作者: yangff    时间: 2008-1-13 21:51
没有就带灰色调显示。
恩,没素材
作者: yangff    时间: 2008-1-13 22:06
发现问题!!!!
用以下脚本替换“窗口”,把图标改成了物品图标
使用色调实现灰色
  1. $item=
  2. [
  3. 1,2,3,4,5,6,
  4. 7,8,9,15,9,9,
  5. 9,9,9,9,9,9,
  6. 9,9,9,9,9,9
  7. ]
  8. class Window_Pr < Window_Base
  9.   attr_accessor :index             # index
  10.   attr_accessor :hindex             # index
  11.   attr_accessor :hh             # index
  12.   def initialize #一行6个 4 行
  13.     super(160, 300, 7 * 32, 5 * 32)
  14.     self.contents = Bitmap.new(width - 32, height - 32)
  15. #    self.index = 0
  16. @index = 0
  17. @hindex = 0
  18. @hh = 0
  19.     @pic = []
  20.     x = 16
  21.     y = 1
  22.            x = 16
  23.        y = 1
  24.        @pic = nil
  25.         @pic = []
  26.             for i in 1..24
  27.      if i % 6 == 1
  28.         y += 32
  29.         x = 16
  30.       end
  31.       @pic[i-1] = Sprite.new
  32.       @pic[i-1].x = x + 160
  33.       @pic[i-1].y = y + 300 - 16
  34.       @pic[i-1].z = 9999 * i
  35.       if $game_party.item_number($item[i]) >= 1  
  36.       @pic[i-1].bitmap = RPG::Cache.icon($data_items[$item[i-1].to_i].icon_name)
  37.     #  @pic[i-1].bitmap.hue_change(0)
  38.     else
  39.       if $data_items[$item[i-1].to_i] == nil
  40.         @pic[i-1].bitmap = RPG::Cache.icon("037-Item06")
  41.         else
  42.       @pic[i-1].bitmap = RPG::Cache.icon($data_items[$item[i-1].to_i].icon_name)
  43.       end
  44.       @pic[i-1].tone.set(0, 0, 0, 255) # = RPG::Cache.icon("037-Item06")
  45.       
  46.       end
  47.       x += 32
  48. #      refresh
  49.     end

  50.      refresh
  51.   end
  52.       def refresh
  53.        self.cursor_rect.set(got_x(@hindex) - 18,got_y(@hh)-5,32, 32)
  54.     end
  55. def got_x(hindex)
  56.   x = 16
  57.   x += hindex * 32
  58.   return x
  59. end
  60. def got_y(hh)
  61. y = 1
  62. y += hh * 32
  63. return y
  64. end

  65.   def update
  66.     super
  67.     if Input.repeat?(Input::UP)
  68.       go_up
  69.     end
  70.     if Input.repeat?(Input::DOWN)
  71.       go_down
  72.     end
  73.     if Input.repeat?(Input::LEFT)
  74.       go_left
  75.     end
  76.     if Input.repeat?(Input::RIGHT)
  77.       go_right
  78.     end
  79.   end
  80.   def go_up
  81.     if @hh == 0
  82.       @hh = 3
  83.       @index += 18
  84.     else
  85.       @index -= 6
  86.       @hh -= 1
  87.     end
  88.     refresh
  89.   end

  90.   def go_down
  91.     if @hh == 3
  92.       @hh = 0
  93.       @index -= 18
  94.     else
  95.       @hh += 1
  96.       @index += 6
  97.     end
  98.     refresh
  99.   end
  100.   def go_left
  101.     if @hindex == 0
  102.       @hindex = 5
  103.       @index += 5
  104.     else
  105.       @hindex -= 1
  106.       @index -= 1
  107.     end
  108.     refresh
  109.   end
  110.   def go_right
  111.     if @hindex == 5
  112.       @hindex = 0
  113.       @index -= 5
  114.     else
  115.       @hindex += 1
  116.       @index += 1
  117.     end
  118.     refresh
  119.   end
  120.   def pic_cont
  121.     for i in 1..24
  122.       @pic[i-1].bitmap.dispose
  123.       @pic[i-1].dispose
  124.     end
  125.     @pic = []
  126.       @pic = nil
  127.   end
  128. end
复制代码

作者: 越前リョーマ    时间: 2008-1-13 22:21
以下引用yangff于2008-1-13 13:50:51的发言:

做出来了,不过八成大概因该,脚本没人看的懂(窗口),太乱了(没注解)防盗
OK了
http://rpg.blue/upload_program/files/礼物_80660741.rar
注意NPC的事件那里在$scene = Scene_Pr.new
后面必须等待20针以上,否则。。。
自己试吧~~
----------------------------

$item=
[
1,2,3,4,5,6,
7,8,9,10,9,9,
9,9,9,9,9,9,
9,9,9,9,9,9,
]
设置穿口中每种图标代表的物品

这里的1、2之类的数字是指物品的编号?

还问个问题,
这个送了以后有什么反映吗?{/gg}
需要送了以后执行公共事件19……
不然无法判断每个人送礼物后不通的友好度增加……{/gg}
作者: 越前リョーマ    时间: 2008-1-14 02:06
还没问完呢……

FF呢……
作者: yangff    时间: 2008-1-14 03:10
这里的1、2之类的数字是指物品的编号?
就是数据库里001、002那个

这个送了以后有什么反映吗?
需要送了以后执行公共事件19……
把Scene_Pr的底53行改成$game_temp.common_event_id = 19
既调用19号公共事件(我写成5号了 {/gg})
作者: 亿万星辰    时间: 2008-1-14 04:15
里面的都是物品吧,图片和物品的icon关联上,点下去后,执行物品对应的公共事件...
作者: °[Sorry。    时间: 2008-1-15 02:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangff    时间: 2008-1-15 04:25
以下引用°[Sorry。于2008-1-14 18:05:49的发言:

为什么一定要等待20帧-_-||,我把他删了的话他就会脚本前面的东西全部无视,然后一直循环,怎么解决-_-||

因为对话框确定后=按下确定,再次激发事件(这里的对话=并行)
作者: wu3846111    时间: 2008-1-15 04:27
跟我一样,美工+脚本盲{/gg}
作者: yangff    时间: 2008-1-15 05:38
还有BUG {/gg}
覆盖“窗口”
  1. $item=
  2. [
  3. 1,2,3,4,5,6,
  4. 7,8,9,15,9,9,
  5. 9,9,9,9,9,9,
  6. 9,9,9,9,9,9
  7. ]
  8. class Window_Pr < Window_Base
  9.   attr_accessor :index             # index
  10.   attr_accessor :hindex             # index
  11.   attr_accessor :hh             # index
  12.   def initialize #一行6个 4 行
  13.     super(160, 300, 7 * 32, 5 * 32)
  14.     self.contents = Bitmap.new(width - 32, height - 32)
  15. #    self.index = 0
  16. @index = 0
  17. @hindex = 0
  18. @hh = 0
  19.     @pic = []
  20.     x = 16
  21.     y = 1
  22.            x = 16
  23.        y = 1
  24.        @pic = nil
  25.         @pic = []
  26.             for i in 1..24
  27.      if i % 6 == 1
  28.         y += 32
  29.         x = 16
  30.       end
  31.       @pic[i-1] = Sprite.new
  32.       @pic[i-1].x = x + 160
  33.       @pic[i-1].y = y + 300 - 16
  34.       @pic[i-1].z = 9999 * i
  35.       if $game_party.item_number($item[i-1]) >= 1  
  36.       @pic[i-1].bitmap = RPG::Cache.icon($data_items[$item[i-1].to_i].icon_name)
  37.     #  @pic[i-1].bitmap.hue_change(0)
  38.     else
  39.       if $data_items[$item[i-1].to_i] == nil
  40.         @pic[i-1].bitmap = RPG::Cache.icon("037-Item06")
  41.         else
  42.       @pic[i-1].bitmap = RPG::Cache.icon($data_items[$item[i-1].to_i].icon_name)
  43.       end
  44.       @pic[i-1].tone.set(0, 0, 0, 255) # = RPG::Cache.icon("037-Item06")
  45.       
  46.       end
  47.       x += 32
  48. #      refresh
  49.     end

  50.      refresh
  51.   end
  52.       def refresh
  53.        self.cursor_rect.set(got_x(@hindex) - 18,got_y(@hh)-5,32, 32)
  54.     end
  55. def got_x(hindex)
  56.   x = 16
  57.   x += hindex * 32
  58.   return x
  59. end
  60. def got_y(hh)
  61. y = 1
  62. y += hh * 32
  63. return y
  64. end

  65.   def update
  66.     super
  67.     if Input.repeat?(Input::UP)
  68.       go_up
  69.     end
  70.     if Input.repeat?(Input::DOWN)
  71.       go_down
  72.     end
  73.     if Input.repeat?(Input::LEFT)
  74.       go_left
  75.     end
  76.     if Input.repeat?(Input::RIGHT)
  77.       go_right
  78.     end
  79.   end
  80.   def go_up
  81.     if @hh == 0
  82.       @hh = 3
  83.       @index += 18
  84.     else
  85.       @index -= 6
  86.       @hh -= 1
  87.     end
  88.     refresh
  89.   end

  90.   def go_down
  91.     if @hh == 3
  92.       @hh = 0
  93.       @index -= 18
  94.     else
  95.       @hh += 1
  96.       @index += 6
  97.     end
  98.     refresh
  99.   end
  100.   def go_left
  101.     if @hindex == 0
  102.       @hindex = 5
  103.       @index += 5
  104.     else
  105.       @hindex -= 1
  106.       @index -= 1
  107.     end
  108.     refresh
  109.   end
  110.   def go_right
  111.     if @hindex == 5
  112.       @hindex = 0
  113.       @index -= 5
  114.     else
  115.       @hindex += 1
  116.       @index += 1
  117.     end
  118.     refresh
  119.   end
  120.   def pic_cont
  121.     for i in 1..24
  122.       @pic[i-1].bitmap.dispose
  123.       @pic[i-1].dispose
  124.     end
  125.     @pic = []
  126.       @pic = nil
  127.   end
  128. end
复制代码

作者: 越前リョーマ    时间: 2008-1-17 01:15
看来这个系统还是无法完成了……|||

FF的话我也没听懂……|||
这个到底能不能执行公共事件……?
MS还需要一个判断友好度的变量,
那就是特殊变量,
这个是送了之后,
如果有就将某变量更改为该物品的编号。

变量就设置为50号好了……{/hx}
作者: yangff    时间: 2008-1-17 01:18
$item=
[
1,2,3,4,5,6,
7,8,9,15,9,9,
9,9,9,9,9,9,
9,9,9,9,9,9
]
标号是设置物品那里的001、002 {/hx}


那就是特殊变量,
这个是送了之后,
如果有就将某变量更改为该物品的编号。

变量就设置为50号好了……


把Scene_Pr的$set = $item[@window.index]更改为$game_variables[50]=$item[@window.index]
作者: yangff    时间: 2008-1-17 01:19
调用公共事件把Scene_Pr的        $game_temp.common_event_id = 5
修改为        $game_temp.common_event_id = 公共事件便号 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1