Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [XP] Script befehl Item auswählen



MissingLink
26.09.2013, 18:45
Hallo,

ich nutze ein Ring-Menü Script. Hier der betreffende Teil:




class Scene_items_rc
def main
@actor= $game_party.actors[0]
@data= []
@icon_name = []
@name= []
@description=[]
@anzahl= []
get_item
# @status.active=false
@command_window = Window_Ring_Command.new(1,$game_player.screen_x-30, $game_player.screen_y-50, @icon_name, 60)
@beschreibung_window = Window_beschreibung.new(@name,@description,@anzahl)
@beschreibung_window.z = 400
@spriteset = Spriteset_Map.new
# Main loop
Graphics.transition
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
Graphics.freeze
# Dispose of command window
@command_window.dispose
@beschreibung_window.dispose
@spriteset.dispose


end
def update
@command_window.update
@beschreibung_window.update
@item = @data[@command_window.index]
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
wählen
end
if Input.repeat?(Input:: LEFT )
@command_window.move_left
$game_system.se_play($data_system.cursor_se)
@item = @data[@command_window.index]
end
if Input.repeat?(Input::RIGHT)
@command_window.move_right
$game_system.se_play($data_system.cursor_se)
@item = @data[@command_window.index]
end
if Input.trigger? (Input::UP)
#$scene = Scene_skill_rc.new
$scene = Scene_Menu.new
end
if Input.trigger? (Input::DOWN)
#$scene = Scene_waffen.new
$scene = Scene_Menu.new
end


# case Input.dir4
# when 4 then @command_window.move_left
# $game_system.se_play($data_system.cancel_se)
# when 6 then @command_window.move_right
# $game_system.se_play($data_system.cancel_se)

#end
#@index = 0
#while @command_window.index != @index and @command_window.index !=0
# @index= @command_window.index
end
def wählen
unless @item.is_a?(RPG::Item)
$game_system.se_play($data_system.buzzer_se)
return
end
unless $game_party.item_can_use?(@item.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.xas_item_id = @item.id
@ausgerüstet = @item
update_icons

$scene = Scene_Map.new
return


end
def update_icons
@data.clear
@icon_name.clear
@name.clear
@description.clear
@anzahl.clear
get_item
@command_window.update_icons(@icon_name)
@beschreibung_window.refresh
end
def get_item
unless @ausgerüstet == nil
@data.push(@ausgerüstet)
@icon_name.push(@ausgerüstet.icon_name)
@name.push(@ausgerüstet.name)
@description.push(@ausgerüstet.description)
@anzahl.push($game_party.item_number($game_system.xas_item_id))
end
for i in 1...$data_items.size
if $game_party.item_number(i) > 0 and $data_items[i] != @ausgerüstet
@data.push($data_items[i])
@icon_name.push($data_items[i].icon_name)
@name.push($data_items[i].name)
@description.push($data_items[i].description)
@anzahl.push($game_party.item_number($data_items[i].id))

end
end

if @data[0] == nil
@data.push("nix")
@icon_name.push("nix")
@name.push("")
@description.push("")
end




end
end



Alles funktioniert hervorragend, mit Ausnahme des Auswählens eines Items.
Sobald ich im Menü ein Item benutzen will erhalte ich folgende Fehlermeldung:

Script "Scene_items_rc" line 92: NoMethodError occured.
Undefined method "xas_item_id=" for #<Game_System:0xad6a3b0>

Ich habe die betreffende Zeile im Code fett makiert.
Nun weiß ich, dass es ein XAS-Abs gibt und hatte vermutet, dass dies vielleicht ein Befehl aus diesem Script ist.
Oder handelt es sich hierbei nur um einen Zufall? Wenn ja, gibt es eine Möglichkeit das Problem dennoch zu beheben?

Jedenfalls wäre ich sehr verbunden, wenn mir jemand hierbei auf die Sprünge hilft.
Immerhin wäre es schade dieses wunderbare Script nur wegen einer Kleinigkeit nicht benutzen zu können.

Vielen Dank im vorraus.

Nemica
26.09.2013, 18:54
Nun weiß ich, dass es ein XAS-Abs gibt und hatte vermutet, dass dies vielleicht ein Befehl aus diesem Script ist.
Also aus Jux wird der Ersteller des Skripts das Ding sicher nicht xas_item_id genannt haben.

Ich nehme also an, dass das Script ein Teil vom XAS ist und ohne nicht funktioniert.

MissingLink
26.09.2013, 19:16
Genau das nehme ich auch an.

Da jedoch alles andere ausnahmslos perfekt funktioniert, wäre es interessant zu wissen,
ob jemand das "pendant" zu "$game_system.xas_item_id" im Standardscript kennt.

Ich habe bereits versucht das ".xas" einfach weg zu lassen. Es gibt keine Fehlermeldung mehr,
aber das Common Event das dem Item zugewiesen ist startet dennoch nicht.

Nemica
26.09.2013, 19:55
Das XAS verändert eine Menge Basisklassen, da kann man nicht einfach eine äquivalente Variable finden. Was soll xas_item_id überhaupt sein? Der Name ist nicht wirklich aussagekräftig.

MissingLink
26.09.2013, 20:19
Ich glaube ich habe es geschafft.
Der Code um über ein Item ein Common Event zu starten lautet:



if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
end