RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - AgentMolder -  09-22-2012
 
 
 (09-22-2012, 12:08 PM)natsukikung Wrote:  เอ สคลิประยะการมองมอนเตอร์นี่ผมยังไม่เคยใช้แต่ไปตั้งค่าที่ตัวอีเวนท์แทนได้ไหมครับแทนที่จะให้เข้าหาตัวเอกอย่างเดียวก็เปลี่ยนเป็นบังคับการกระทำให้เข้าหาตัวเอกสลับกับการสุ่มเดินโดยตั้งให้เข้าหาตัวเอกมากกว่าการสุ่มเดินเวลาที่มันติดอะไรการสุ่มเดินจะได้ทำให้มันเดินไปต่อได้ไม่ไปค้างที่จุดไหน ถ้าผิดพลาดก็ขออภัยครับ เดี๋ยวผมจะ Post ให้ลองโหลดไปใช้นะครับ เป็น Script Monster Detection ครับ  
 
ส่วนถ้าใช้เหตุการณ์มันไม่ได้ครับลองแล้ว เพราะเวลาเดินเข้ามาในแมพปุ๊บ มอนที่เรา set ให้เดินหาฮีโร่ มันจะแห่กันมาเลยครับ แมพจะกว้าง 200x200 ก็วิ่งมาหาเรา แต่ script นี้มันจะเชคระยะ 5 ช่องครับ ถ้าหนีพ้น หรือเดินพ้น ก็จะเลิกตาม ปกติสคริปนี้เขาใช้กับเกมส์เดินฟันครับ แต่ผมเอามาดัดแปลง 
 
Code: #-------------------------------------------------------------------------- 
# Enemy Detection System 
# by Gubid - 8/12/07 
# v 1.2.2 Updated 10/2/07 
#-------------------------------------------------------------------------- 
#Description: 
#This system allows events that are named something including "ENEMY" then 
#that event will be told to approach Game_Player, until Game_Player has gotten 
#a specified distance away. At that time event will return to its original 
#position if desired. If you happen to get close enough to the returning event 
#it will begin to follow you again. 
# 
#Thanks to Near Fantasia for supplying the slightly modified path finding script. 
#-------------------------------------------------------------------------- 
#if there are any questions as to the use of this script or 
#modifications/additions/etc, please post it to the thread on CreationAyslum.net 
#-------------------------------------------------------------------------- 
 
#-------------------------------------------------------------------------- 
#Update_Detect - How to Stop Detection if desired 
#-------------------------------------------------------------------------- 
#1. Within a event, add a SCRIPT (3rd page) 
#2. type "update_detect(EVENT_ID, TRUE/FALSE)" -Note: it defaults to false 
 
#-------------------------------------------------------------------------- 
#RETURN TO POSITION 
#-------------------------------------------------------------------------- 
#Use this to determine if you would like the event to return to its original 
#position or not. 
#-------------------------------------------------------------------------- 
RETURN_TO_POSITION = true 
 
#-------------------------------------------------------------------------- 
#CHASE_SPEED and ENABLE_SPEED_CHANGE 
#-------------------------------------------------------------------------- 
#Use this to set the speed in which enemies will approach after spotting you 
#and whether or not their speed will change. 
#-------------------------------------------------------------------------- 
CHASE_SPEED = 5 
ENABLE_SPEED_CHANGE = true 
 
#-------------------------------------------------------------------------- 
#VIEW_RANGE 
#-------------------------------------------------------------------------- 
#Use this to set the distance in which you must be in order to start the detection 
#process, or escape to stop. 
#-------------------------------------------------------------------------- 
VIEW_RANGE = 3 
 
#-------------------------------------------------------------------------- 
#ESCAPE_RANGE 
#-------------------------------------------------------------------------- 
#Use this to set the distance in which you must escape to stop the detection process 
#-------------------------------------------------------------------------- 
ESCAPE_RANGE = 5 
 
#-------------------------------------------------------------------------- 
#Other Notes 
#-------------------------------------------------------------------------- 
#If the event has a custom move route, they will resume that route when finished 
#chasing you, but if you dont set RETURN_TO_POSITION, then they will resume 
#their custom route at the location they stopped chasing you. 
 
class Game_Map 
#-------------------------------------------------------------------------- 
# * Frame Update 
#-------------------------------------------------------------------------- 
alias en_detect_gm_update update 
def update 
en_detect_gm_update 
 
# Update map event 
for event in @events.values 
if !event.name.include?("detect") 
next 
else 
if event.character_name != "" 
if event.stop_detect? 
next 
end 
if check_distance(event.id) == true 
if event.exclamation == false 
event.old_type = event.move_type 
event.move_type = 2 
if ENABLE_SPEED_CHANGE 
event.old_speed = event.move_speed 
event.move_speed = CHASE_SPEED 
end 
event.exclamation = true 
event.animation_id = 98 #98 happens to be the exclamation animation 
event.f_route.clear 
end 
else 
if event.exclamation == true 
event.exclamation = false 
if RETURN_TO_POSITION == true 
if event.x != @map.events[event.id].x or event.y != @map.events[event.id].y 
route = get_route(event, @map.events[event.id].x, @map.events[event.id].y) 
event.run_route(route) 
end 
else 
event.restore_route 
end 
end 
end 
end 
end 
end 
end 
 
def check_distance(id = nil) 
unless id == nil 
event = $game_map.events[id] 
range = ($game_player.x - event.x).abs + ($game_player.y - event.y).abs 
 
if range <= VIEW_RANGE and range > 0 
return true 
elsif range <= ESCAPE_RANGE and range > 0 and event.exclamation 
return true 
end 
end 
end 
 
def get_route(event, x=0, y=0) 
target_x = x 
target_y = y 
max = (target_x - event.x).abs + (target_y - event.y).abs + 5 
position = [[event.x, event.y]] 
route = [[]] 
more_step = [0] 
for i in more_step 
x = position[i][0] 
y = position[i][1] 
if !position.include?([x, y + 1]) and event.passable?(x, y, 2) 
position.push([x, y + 1]) 
route.push(route[i] + [2]) 
if route[i].size + 1 < max 
more_step.push(route.index(route[i] + [2])) 
end 
end 
 
if !position.include?([x - 1, y]) and event.passable?(x, y, 4) 
position.push([x - 1, y]) 
route.push(route[i] + [4]) 
if route[i].size + 1 < max 
more_step.push(route.index(route[i] + [4])) 
end 
end 
 
if !position.include?([x + 1, y]) and event.passable?(x, y, 6) 
position.push([x + 1, y]) 
route.push(route[i] + [6]) 
if route[i].size + 1 < max 
more_step.push(route.index(route[i] + [6])) 
end 
end 
 
if !position.include?([x, y - 1]) and event.passable?(x, y, 8) 
position.push([x, y - 1]) 
route.push(route[i] + [8]) 
if route[i].size + 1 < max 
more_step.push(route.index(route[i] + [8])) 
end 
end 
end 
if position.index([target_x, target_y]) == false 
return [2] 
else 
return route[position.index([target_x, target_y])] 
end 
end 
end 
 
 
class Game_Event 
attr_accessor :move_type 
attr_accessor :move_speed 
attr_accessor :old_speed 
attr_accessor :exclamation 
attr_accessor :old_type 
attr_accessor :stop_trigger 
attr_reader :f_route 
 
def initialize(map_id, event) 
super() 
@map_id = map_id 
@event = event 
@id = @event.id 
@erased = false 
@starting = false 
@through = true 
@name = @event.name 
@exclamation = false 
@f_route = [] 
@step = 0 
@old_type = @move_type 
@old_move_route = @move_route 
@old_speed = @move_speed 
@stop_trigger = false 
moveto(@event.x, @event.y) 
refresh 
end 
 
def stop_detect? 
return @stop_trigger 
end 
 
def restore_route 
@move_type = @old_type 
@move_route_index = @original_move_route_index 
@move_speed = @old_speed 
refresh 
return 
end 
 
def name 
return @name 
end 
 
alias en_det_update update 
def update 
if @f_route.size > 0 
run_path unless self.moving? 
if @f_route.size == 0 
restore_route 
end 
end 
en_det_update 
end 
 
def run_route(route) 
@f_route = route 
@step = 0 
end 
 
def run_path 
if @f_route.size > 0 
if @f_route[@step] == nil 
@f_route = [] 
end 
action = @f_route[@step] 
@step += 1 
case action 
when 2 
self.move_down 
when 4 
self.move_left 
when 6 
self.move_right 
when 8 
self.move_up 
end 
end 
end 
end 
 
class Interpreter 
def update_detect(id, set = false) 
$game_map.events[id].stop_trigger = set 
end 
 
def spotted? 
is_true = 0 
for event in $game_map.events.values 
if event.exclamation 
is_true += 1 
end 
end 
if is_true > 0 
return true 
else 
return false 
end 
end 
 
def change_switch(id = 0, value = false, type = 0, switch = "A") 
if id > 0 
if type == 0 #for use of main switches 
#id is switch_id and value should set to true or false 
$game_switches[id] = value 
elsif type == 1 #For use of self switches 
#id is event.id and switch is the desired selfswitch. It must be text! 
#value is true or false 
key = [$game_map.map_id, id, switch] 
# Updates self switch 
$game_self_switches[key] = value 
end 
# Refresh map 
$game_map.need_refresh = true 
return true 
end 
end 
end
  
 (09-22-2012, 02:19 PM)youtoue087 Wrote:  ![[Image: uki05.jpg]](http://upic.me/i/e6/uki05.jpg)  
หมายถึงอะไรครับตรงRPGXPเนื่ยครับ/ohgod  
น่าจะกดเข้าเกมส์ผิด file นะครับ
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - hengmana -  09-22-2012
 
 
Quote:เดี๋ยวผมจะ Post ให้ลองโหลดไปใช้นะครับ เป็น Script Monster Detection ครับ  
- - ลองอันนี้ แทนกันได้ไหม Scriptไม่ยาว ปรับระยะเองได้สะดวกดี  
http://littledrago.blogspot.com/2011/09/rgss-simple-event-sensor.html
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - AgentMolder -  09-22-2012
 
 
 (09-22-2012, 09:50 PM)hengmana Wrote:  Quote:เดี๋ยวผมจะ Post ให้ลองโหลดไปใช้นะครับ เป็น Script Monster Detection ครับ  
- - ลองอันนี้ แทนกันได้ไหม Scriptไม่ยาว ปรับระยะเองได้สะดวกดี  
http://littledrago.blogspot.com/2011/09/rgss-simple-event-sensor.html ผมลองปรับแก้ script ผมแล้วครับ โดยไปปิด false ที่ Return to old position น่าจะหายนะครับ ผมอัพโหลดใหม่ละ 
 
อัพเดต Patch 2.1 ครับ 
- แก้ไขบัคเจอมอนแล้วเด้งครับ 
- file ด้านหน้าเช่นเดิม
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - youtoue087 -  09-23-2012
 
 
[img] [/img] 
แล้วอันนี้คืออะไรครับ 
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - JigsawKungTv -  09-23-2012
 
 
มีคำถามครับ ท่าไม้ตายทำไงถึงจะใช้ได้อ่ะครับ ใช้ได้แต่เซท
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - hengmana -  09-23-2012
 
 
^ 
^ ต้องไปตั้งค่าสกิลไม้ตายก่อน
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - top0409 -  09-23-2012
 
 
พี่ครับ เอาท่าประสาน def up all ยังไงอะ เดินไปหาผียังไงหรอคับ
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - hengmana -  09-24-2012
 
 
ถึงเมืองช่างตีเหล็ก (หาคนใต้ดินไม่เจอ = =) 
ได้รหัสประตูแล้วไปเอาท่าที่เกาะ 
พอประลอง กดท่าประสาน(อันแรก) ไม่มีคู่เป็นแบบนี้ 
http://image.free.in.th/z/iy/2untitled16.jpg 
 
ปล.ในเมืองช่าง บันไดติดประตู พอขึ้นบันไดแล้วหันเข้าประตู จะเข้าไปในบ้านได้
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - AgentMolder -  09-25-2012
 
 
 (09-23-2012, 10:04 AM)youtoue087 Wrote:  [img] [/img] 
แล้วอันนี้คืออะไรครับ/poker.gif)  อันนี้น่าจะ short cut ไม่ตรงมั๊งครับ ลองเชคดูครับ 
 
 (09-23-2012, 12:17 PM)JigsawKungTv Wrote:  มีคำถามครับ ท่าไม้ตายทำไงถึงจะใช้ได้อ่ะครับ ใช้ได้แต่เซท ต้องได้ท่าไม้ตายก่อนครับ เปิดเกมส์มายังไม่ได้ท่าไม้ตาย 
 
 (09-23-2012, 02:33 PM)top0409 Wrote:  พี่ครับ เอาท่าประสาน def up all ยังไงอะ เดินไปหาผียังไงหรอคับ เดินไปทางใต้ดินครับ ถ้าเล่นถึงเนื้อเรื่องไปเหมืองได้แล้ว พอลงหลุมศพ เดินไปทางซ้ายครับจะมีทางขึ้นไปเอาครับ 
 
 (09-24-2012, 06:36 PM)hengmana Wrote:  ถึงเมืองช่างตีเหล็ก (หาคนใต้ดินไม่เจอ = =) 
ได้รหัสประตูแล้วไปเอาท่าที่เกาะ 
พอประลอง กดท่าประสาน(อันแรก) ไม่มีคู่เป็นแบบนี้ 
http://image.free.in.th/z/iy/2untitled16.jpg 
 
ปล.ในเมืองช่าง บันไดติดประตู พอขึ้นบันไดแล้วหันเข้าประตู จะเข้าไปในบ้านได้ ท่านเฮง มาเจอบัคเอาตอนผมเพิ่งอัพแพทช์อีกละ รูป icon Weak ผมว่าผมตัด Status Weak ในเกมส์ออกไปแล้วนา..ยังไงท่านเฮงช่วยเล่าหน่อยว่าเจอตอนไหนครับ ใช้สกิลชื่ออะไร จะตรวจสอบให้ครับ ส่วนบันได ช่างมันก่อน 555
 
 
 
RE: The Gate : The Remnant Memory ตัวเต็ม มาแล้วคร้าบบบ - hengmana -  09-25-2012
 
 
- - น่าจะเป็นท่าภูติลมนะ  
Flash Pierce = หอกสายลม ตัดขาศัตรู ทำให้อ่อนแอ และความเร็วลดลง 
พอใช้แล้วติด จบรอบ แล้วเลือกตัวนั่น Erorr
 
 
 
 |