Basic Evented Alchemy Gathering
I was searching for a way to create a harvest/gather system for alchemy or cooking. I wanted a system that didnt use events to create items for harvest.
By using Terrain tags and tile layer Ids, you can place as many harvesting items you want n a map without using an event for each.
You will need this game extension here or in demo:
http://forums.rpgmakerweb.com/index.php?/topic/25040-ace-useful-script-call-reference/
Spoiler#--------------------------------------------------------------------------
#Modifications
#--------------------------------------------------------------------------
#Changed Line 88 in Game_Event
#from
# if near_the_screen? && @stop_count > stop_count_threshold
#to
# if @stop_count > stop_count_threshold
#--------------------------------------------------------------------------
# REGION MANIPULATION
#--------------------------------------------------------------------------
class Game_Map
def setTileRegion(reg_x,reg_y,reg_id)
if reg_id > 63 || reg_id < 0
reg_id = 0
end
@thirdvalue = "%14b" % self.data[reg_x, reg_y, 3]
# binary split of the two elements
@bLEFT = @thirdvalue[0,6] # REGION ID IN BINARY
@bRIGHT = @thirdvalue[6,8] # SHADOW ID IN BINARY
@bLEFT = "%6b" % reg_id
@newvalue = @bLEFT.to_s + @bRIGHT.to_s
@newvalue = @newvalue.to_i(2)
self.data[reg_x, reg_y, 3] = @newvalue
end
def getTileRegion(reg_x,reg_y)
# gets a 14 bit long binary string from the map data array
@thirdvalue = "%14b" % self.data[reg_x, reg_y, 3]
# binary split of the two elements
@bLEFT = @thirdvalue[0,6] # REGION ID IN BINARY
@bRIGHT = @thirdvalue[6,8] # SHADOW ID IN BINARY
# converts the binary string back to an integer and returns
return(@bLEFT.to_i(2))
end
def getTileShadowID(reg_x,reg_y)
# gets a 14 bit long binary string from the map data array
@thirdvalue = "%14b" % self.data[reg_x, reg_y, 3]
# returns binary split of the two elements
@bLEFT = @thirdvalue[0,6] # REGION ID IN BINARY
@bRIGHT = @thirdvalue[6,8] # SHADOW ID IN BINARY
# converts the binary string back to an integer and returns
return(@bRIGHT.to_i(2))
end
#--------------------------------------------------------------------------
# MAP MANIPULATION
#--------------------------------------------------------------------------
def getTileIDByLayer(x,y,layer)
return(self.data[x,y,layer])
end
def setTileIDByLayer(x,y,layer,tile_ID)
self.data[x,y,layer] = tile_ID
end
end
#--------------------------------------------------------------------------
# Save Tile Manipulation
#--------------------------------------------------------------------------
class Game_System
def changeTileByInternalID(map_id,x,y,layer,intID)
initialize_pos_list(map_id, layer)
tid = intID
@swapped_pos_tiles[map_id][layer][y] = [] if @swapped_pos_tiles[map_id][layer][y].nil?
@swapped_pos_tiles[map_id][layer][y][x] = tid
$game_map.load_new_map_data
end
end
#--------------------------------------------------------------------------
# Battler Additions
#--------------------------------------------------------------------------
class Game_Battler < Game_BattlerBase
def wtype_equipped?(wtype_id)
return weapons.any? {|weapon| weapon.wtype_id == wtype_id }
end
def atype_equipped?(atype_id)
return armors.any? {|armor| armor.atype_id == atype_id}
end
end
No tutorial, should be fairly simple demo.
Setup:
1 - Parallel
1- Common Event
Label all tileset items to be used for harvesting with Terrain tag #
You will need to know your tile layers by ID# for swap(using
XS-Variable HUD is a great easy way to get them)
Press Enter When over item for harvest
Features:
Unlimited number of harvestabe items.
No map events required
Uses tile swaps
Demo:
http://s000.tinyupload.com/?file_id=10899988343447240067
[/url][url=https://forums.rpgmakerweb.com/attachments/gathering2-png.19965/][url=https://forums.rpgmakerweb.com/attachments/gathering3-png.19966/][/url]
本贴来自国际rpgmaker官方论坛作者:Quailar处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:
https://forums.rpgmakerweb.com/threads/basic-evented-alchemy-gathering-using-tile-swaps.38041/