じ☆ve冰风 发表于 3 天前

Basic Evented Alchemy Gathering using tile swaps

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

# binary split of the two elements
@bLEFT = @thirdvalue # REGION ID IN BINARY
@bRIGHT = @thirdvalue # SHADOW ID IN BINARY

@bLEFT = "%6b" % reg_id

@newvalue = @bLEFT.to_s + @bRIGHT.to_s
@newvalue = @newvalue.to_i(2)

self.data = @newvalue

end
def getTileRegion(reg_x,reg_y)

# gets a 14 bit long binary string from the map data array
@thirdvalue = "%14b" % self.data

# binary split of the two elements
@bLEFT = @thirdvalue # REGION ID IN BINARY
@bRIGHT = @thirdvalue # 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

# returns binary split of the two elements
@bLEFT = @thirdvalue # REGION ID IN BINARY
@bRIGHT = @thirdvalue # 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)
end

def setTileIDByLayer(x,y,layer,tile_ID)
self.data = 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 = [] if @swapped_pos_tiles.nil?
@swapped_pos_tiles = 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




本贴来自国际rpgmaker官方论坛作者:Quailar处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/basic-evented-alchemy-gathering-using-tile-swaps.38041/
页: [1]
查看完整版本: Basic Evented Alchemy Gathering using tile swaps