In der alten Version von XSE gehört "callstd" hinter den msgbox Befehl. In der neuen wird es als Pararmeter von msgbox eingearbeitet. Vorher ist es aber auf jeden Fall nicht korrekt.
~Sturmvogel
Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!
Zu der Infoseite von „Die Mo-Mo-Manie“In der alten Version von XSE gehört "callstd" hinter den msgbox Befehl. In der neuen wird es als Pararmeter von msgbox eingearbeitet. Vorher ist es aber auf jeden Fall nicht korrekt.
~Sturmvogel
hab callstd 0x6 entfernt. kein roter screen, ne textbox kommt trotzdem nicht...
'-----------------------
#org 0x80019C
lock
faceplayer
msgbox 0x88002D9 '"Tut mir Leid,\naber du kannst hier ..."
release
end
'---------
' Strings
'---------
#org 0x8002D9
= Tut mir Leid,\naber du kannst hier nicht lang.\lRoute 1 ist momentan für das Training\lder Opalia Omots abgesperrt!
hinter der msgbox speichert das script das nicht ab...
ja... sieht so aus. am script liegt der redscreen jedenfalls nicht und auch sonst fällt mir keine Einstellung ein, die soetwas auslösen und wieder bekommen werden kann. In dem fall ist wohl deine ROM gecrasht. Es wäre also am besten noch mal mit einer clear-ROM zu starten und die Maps/Scripts/Grafiken und anderen Hacks darauf zu übertragen. Dabei natürlich auch immer Backups machen, damit du im Falle eines Falles einfach darauf zurückgreifen kannst und nicht alles erneut machen musst.
hm okay. hab ja zum glück erst 3 maps gemacht :D
wie übetrag ich die denn?
Bei deinem Script fehlt das callstd...
Das muss entweder nach dem msgbox Befehl oder als "0x6" Pararmeter hinten dran(Kommt drauf an welche XSE Version du verwendest, ich denke mal die alte, also unter dem msgbox Befehl)
~Sturmvogel
1. hab leider die beiden Posts über mir wegen der neuen Seite übersehen
2. dennoch sollte ich vllt meine Vermutung etwas genauer ausdrücken:
Der Redscreen wird von einem Crash der Textroutine/Textgrafik ausgelöst. Dies ist aber nur schwer zu fixen (man kann alles fixen, aber sich durch 8-16MB zu arbeiten ist nicht gerade angenehm) und du/wir wissen auch nicht, wo genau er liegt. Letztenendes, falls es also nicht unwahrscheinlicherweise durch SBirds tipps klappt, wäre wohl das Übertragen (abspeichern und einfügen) der Mapps über den AM einfacher, als den Fehler zu suchen.
Hallo liebe Bisafans und Scriptgemeinde,
Ich bin zu euch gestoßen wegen eines Problemes. Ich möchte in meinem selbst kreierten Spiel einen alternativstart einfügen, so dass man, anstatt eines Start-pokemons, einen pokeball hat, mit dem man sich selbst sein erstes pokemon fangen muss.
Die Vorlage zu diesem Script ist das Safariezonenscript, da man aber in diesem script 30 Safaribälle hat und eine gewisse Schrittanzahl, wollte ich es so umändern, dass man unendlich Schritt hat und eine Art Starterball basierend auf dem Meisterball. Leider sind meine Scriptkenntnisse noch nicht so ausgereift und ich hoffe das es jemanden in der comunity gibt der mir helfen könnte. Ich freue mich jetzt schon auf eure tollen Beiträge
#org 0x8165797
'-----------------------------------
special 0xCD
setvar 0x406E 0x2
waitspecial
storeitem 0x0 0x2500
hidebox 0x1 0xF 0x0 0x22
#raw 0xEB
addvar 0x908 0x6B04
end
Also, das hat wenig mit Scripting zu tun ;)
Die 30 Bälle und die 600 Schritte die man hat, werden durch eine Routine im ROM bestimmt..
Ich kann mich ja mal dransetzen und versuchen, diese Routine zu verändern, garantieren kann ich aber nichts :P
Es wäre wahrscheinlich sogar leichter, eine eigene ASM-Routine zu schreiben..
Denn ich glaube kaum dass du Steine und Köder werfen willst, oder? :D
Da wäre es wohl schlauer, sich zu helfen indem man eine Art Safarizone zu erschaffen, dem Spieler einen Meisterball und ein Leihpokémon in die Hand zu drücken und ihm dann den Auftrag zu geben sich ein Pokémon zu fangen. Das Leihpokémon kommt anschließend wieder weg und du hast zumindest eine ähnliche Situation. Du bräuchtest trotzdem etwas um dem Spieler sein Pokémon wieder wegzunehmen und ich weiß ja nicht, ob du dich dahingehend gut genug auskennst.
Laz0r: Meh, 'nuf said
~Sturmvogel
Hallo liebes Forum :)
Ich arbeite nicht zum ersten Mal mit Advance Map, deshalb kenne ich mich mit diesem Programm bereits aus, dennoch habe nun eine Frage:
In Vertania City gibt es ja den alten Mann, der euch erst durchlässt, wenn (er seinen Kaffee bekommen hat)/ihr das Paket zu Prof. Eich gebracht habt.
Ich möchte ihn nun an eine andere Stelle auf dieser Map verschieben, finde ihn aber nirgends in den Events!
Seine Frau und das Skript neben ihm habe ich bereits verschoben, aber wie kann ich den alten Mann verschieben?
Ich hoffe, ich bin hier in speziell diesem Forum richtig ;D
Danke schonmal,
PanCave
Hallo,
Ich versuche gerade eine Map zu erstellen. Allerdings habe ich da ein Problem.
Ich möchte in der ersten Stadt zwischen drei Pokemon auswählen. (Ich benutze die Smaragd Edition)
Ich habe mir auch schon das Script angesehen:
#org 0x1ECF74
lock
faceplayer
setflag 0x860
setflag 0x52
fadescreen 0x1
hidesprite 0x4
movesprite 0xFF 0x6 0xD
applymovement MOVE_PLAYER 0x827DCA5
waitmovement 0x0
special 0x9F
waitstate
applymovement 0x2 0x81ECFEB
waitmovement 0x0
msgbox 0x81ED08A '"PROF. BIRK: Puuuh[.]\pIch habe im h..."
callstd 0x4
special 0x0
setflag 0x2D0
clearflag 0x2D1
setflag 0x2BC
setvar 0x4084 0x2
setvar 0x4060 0x3
clearflag 0x4000
checkgender
compare LASTRESULT 0x0
if 0x1 call 0x81ECFE3
compare LASTRESULT 0x1
if 0x1 call 0x81ECFE7
warp 0x1 0x4 0xFF 0x6 0x5
waitstate
release
end
Kann mir jemand dieses Script umändern? So das ich nur die Auswahl der Pokemon habe oder ein anderes Script wo ich zwischen 3 Starter-Pokemon auswählen kann.
Ich würde mich freuen wenn mir jemand weiter helfen könnte.
Mfg, Sturmscar
Edit:
OK, hab nach vielem herumsuchen, und Blicke auf die Scripte vom G/S Radioquiz und dem Zuchtopa in FR, endlich mal die Lösung gefunden. War einfacher als gedacht. Bin grad nur noch dabei das mit dem richtigen hin und herlatschen zwischen den Räumen hinzubasteln, sollte aber nu werden.
Zitat von Alter Beitrag ---Alles anzeigenWieso hab ich den Thread hier zu anfang nicht gesehn? <_< *blind*
Also:
Ich möchte für das RNGPlaysPokemon Projekt FireRed vs. LeaftGreen den Attackverlerner und den Namensbewerter vom jedem Pokémoncenter aus zugänglich machen. Da der RNG nur allzu gerne Mist baut, wenn man sie ganz normal durch ihre Häuser zugänglich lässt, muss was dagegen getan werden. Es soll sicher gestellt werden das nur eine Mensch zu den beiden Zugang hat, denn zumindest den Namensbewerter brauchen wir von Zeit zur Zeit. In jeden Pokémoncenter würde sich nun oben links eine Tür befinden, vor dieser jedoch ein NPC der von einem Verlangt 10 mal "Yes" zu antworten, erst dann würde er zur Seite gehn. Also Text -> Yes/No -> "Yes" -> Text Yss/No -> "Yes" ... OK -> Walk. Dies wäre eine recht sichere Methode um Unfälle zu vermeiden.
Und genau da ist das Problem: Ich bekomme es nicht hin den NPC 10 mal, geschweige denn 3 mal Fragen zu lassen. So gesehn komme ich nicht über das 2. "Yes" hinaus, dann bricht es ab. Ich weis nicht was ich falsche mache, da ich davon doch seeehr wenig Ahnung habe. Mehr als ein kleines allgemeines Scriptverständnis ist da nicht vorhanden.
Im ganzen Spiel scheint es auch keinen NPC zu geben der einem mehere Fragen stellt, zumindest fällt mir keiner ein der das täte und mir so als Beispiel dienen könnte. Google erwies sich auch als recht nutzlos, überall nur Anleitungen für einmalige Yes/No Fragen bei NPC gesprächen.
Ich könnte zwar versuchen mich zwar durch etliche Tutorials ackern, aber ich bin absolut kein Mensch der mit langen Texten arbeiten kann. Bei sowas komme ich nicht über den ersten Satz hinaus. Ich brauch passende Beispiele für das was ich machen will <_<"
Also momentan sieht es hier so aus. Und ja, ich denke ich weis dass das Ende von dem ganzen mit dem zur Seite gehn wohl nicht so auszusehn hat, aber bis dahin bin ich eh nie gekommen. ^^"
Wurde in PKSV getippt.
CodeAlles anzeigen#org 0x8740001 lock faceplayer msgbox 0x874001B callstd MSG_YESNO ' Yes/No message compare LASTRESULT YES if == jump 0x8740038 ' Equal To jump 0x8740040 #org 0x8740038 msgbox 0x8740099 callstd MSG_YESNO ' Yes/No message compare LASTRESULT YES if == jump 0x8740080 ' Equal To jump 0x8740040 #org 0x8740080 msgbox 0x87400A2 callstd MSG_YESNO ' Yes/No message compare LASTRESULT YES if == jump 0x8740047 ' Equal To jump 0x8740040 #org 0x8740047 msgbox 0x8740062 callstd MSG_NOCLOSE ' Non-closing message applymovement 0x1 0x874007D releaseall end #org 0x8740040 releaseall end #org 0x874007D m walk_left end #org 0x874001B = Text 1 #org 0x8740099 = Text 2 #org 0x87400A2 = Text 3 #org 0x8740062 = Ok, u no RNG or just lucky.
Hi zusammen
Ich hoffe ich bin hier am richtigen Ort, geht eigentlich nicht um Mapping, aber ich habe keine bessere Kategorie gefunden.
Ich bin gerade dran, zum ersten Mal eine ROM (BG) zu hacken.
Da es das erste Mal ist, will ich nicht ein komplett neues Spiel erstellen.
Ich möchte vor allem mappen, die Story ein wenig verändern, neue Orte und Pokémon erstellen...
Besonders das Scripten scheint mir noch zu kompliziert. Ich ändere die Scripts lediglich ab.
Nun komm ich aber kaum drum rum... Es ist folgendermassen:
In der ersten Stadt muss man ja in BG/FR im Markt einen Brief abholen, der zu Professor Eich muss. Die Stadt habe ich komplett umgestaltet, dieser Umstand bleibt aber gleich. Ich möchte jetzt, dass beim Verlassen der Stadt auf die nächste Route ein Mensch steht, der mich nicht durchlässt, bis ich den Brief zu Prof. Eich gebracht habe.
Der soll also quasi da stehen und mich darum bitten, den Brief zu holen und zu Eich zu bringen. Erst wenn ich das getan habe, soll er wieder verschwunden sein oder mich passieren lassen o.ä.
Kann mir vlt jemand einfach erklären, wie man solche Dinge macht?
Oder eine Script-Vorlage geben?
Vielen Dank!
Gruss
Im Grunde genommen lässt sich das mit einer Flag machen, mit der du dem Script sagen kannst, dass ein Event bereits getriggert wurde. Das wird beispielsweise in diesem Thema beim Punkt 3.1 erklärt.
Ich bin gerade damit beschäftigt Pokemon Rubin ein bisschen Umzuscripten...
Ich habe also einen neuen Trainer ins Spiel eingefügt und ein Script geschrieben.
Wenn ich den Trainer von der Seite anspreche (er hat mich nicht zuerst gesehen) dann wird das Script aufgerufen, der Trainer sagt seinen vorbestimmten Text, ich kämpfe gegen ihn und so weiter, alles läuft also nach Plan.
Wenn ich ihn aber nicht anspreche sondern er mich sieht, und auf mich zuläuft dann wird seltsamerweise das Script nicht geöffnet, der Bilschirm wird Pink und das Spiel chrasht.
Woran liegt es, dass das richtige Script nur geöffnet wird wenn den Trainer anspreche und nicht wenn er mich sieht?
Ich benutze übrigens:
Advance Map
Advance Trainer
Pokescript von Pokewitch
MfG Wassili
Ohne den Inhalt des Scripts ist es schwer, die möglichen Fehlerquellen zu bestimmen. Beim nächsten Mal bitte mit angeben.
Ansonsten hilft dir vielleicht der eintrag in folgendem Tutorial bei Punkt 5.8 weiter, da steht erklärt, wie man mit Pokéscript einen Trainerkampf macht: Scripten via Pokescript
Zur Zeit versuche ich eine Attacke zu scripten, die wie Aussetzer und Konfustrahl zusammen funktioniert. Hierbei verwende ich das Pokemon Essentials Kit, bei dem die Attacken schon vorgegeben sind und ich sie im Grunde nur noch kombinieren muss. Das Problem darin liegt allerdings an den Situation in welchen dei Attacken nicht funktionieren. Somit schaffe ich es nicht die Attacke so zu scripten, dass beide Effekte eintreten. Entweder habe ich nur den Effekt von Aussetzer oder nur den Effekt von Konfustrahl. Ein weiteres Problem, dass dann auftreten wird ist, wenn die Attacke trifft, so wie sie sein soll, dann glaube ich, dass nur ein Effekt eintritt. Z.B. ist der Gegner bereits verwirrt, dann soll trotzdem noch der Effekt von Aussetzer eintreten und nicht die Attacke fehl schlagen.
Ich habe mal die Scripts von Konfustrahl und Aussetzer in einen Spoiler gepackt:
Konfustrahl:
def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true) return super(attacker,opponent,hitnum,alltargets,showanimation) if pbIsDamaging? if opponent.pbCanConfuse?(attacker,true,self) pbShowAnimation(@id,attacker,opponent,hitnum,alltargets,showanimation) opponent.pbConfuse @battle.pbDisplay(_INTL("{1} became confused!",opponent.pbThis)) return 0 end return -1 end
Aussetzer:
def pbEffect(attacker,opponent,hitnum=0,alltargets=nil,showanimation=true)
if opponent.effects[PBEffects::Disable]>0
@battle.pbDisplay(_INTL("But it failed!"))
return -1
end
if !attacker.hasMoldBreaker
if opponent.hasWorkingAbility(:AROMAVEIL)
@battle.pbDisplay(_INTL("But it failed because of {1}'s {2}!",
opponent.pbThis,PBAbilities.getName(opponent.ability)))
return -1
elsif opponent.pbPartner.hasWorkingAbility(:AROMAVEIL)
@battle.pbDisplay(_INTL("But it failed because of {1}'s {2}!",
opponent.pbPartner.pbThis,PBAbilities.getName(opponent.pbPartner.ability)))
return -1
end
end
for i in opponent.moves
if i.id>0 && i.id==opponent.lastMoveUsed && (i.pp>0 || i.totalpp==0)
pbShowAnimation(@id,attacker,opponent,hitnum,alltargets,showanimation)
opponent.effects[PBEffects::Disable]=5
opponent.effects[PBEffects::DisableMove]=opponent.lastMoveUsed
@battle.pbDisplay(_INTL("{1}'s {2} was disabled!",opponent.pbThis,i.name))
return 0
end
end
@battle.pbDisplay(_INTL("But it failed!"))
return -1
end
end
Alles anzeigen
Bisher habe ich nur probiert beide Scripts nacheinander aneinander zu hängen, was natürlich nicht funktioniert hat.
Ich würde mich freuen wenn jemand eine Idee hat, wie dieses Script umgesetzt werden kann und mir weiterhelfen kann.
Effektiv musst du die If-Anweisungen passend miteinander verschachteln, um das kombinierte Ergebnis zu erzielen. Wie du sie konkret verschachteln musst, hängt aber davon ab, wie die Kombinationsattacke funktionieren soll. Sollen beide Effekte unabhängig voneinander funktionieren, musst du quasi beide aneinander hängen, darfst aber erst ein return-Statement ausführen, wenn beide Teile abgearbeitet wurden. Soll das eine nicht funktionieren, wenn das andere auch nicht tut, kannst du die returns so lassen etc.
Ein Beispiel für erstgenannte Möglichkeit wäre es, in den Code von Konfustrahl anstelle des "return 0" den kompletten Code von Aussetzer (bis auf die Funktionsdeklaration und das zugehörige end) einzufügen. Sollte so tatsächlich funktionieren, ggfs. solltest du aber noch die Texte anpassen und du musst dir Gedanken darüber machen, wann du -1 und wann 0 zurückgeben möchtest, also unter welchen Umständen die Attacke als erfolgreich betrachtet werden soll und wann nicht.
Ich bräuchte Hilfe für ein Script bei meinem Feuerrot-Hack (englisch, mit "Jpans Hacked Engine").
Ich will einen NPC einbauen, der mir sagt, ob das erste Pokemon in meinem Team bereits die vollen 510 EV gesammelt hat oder nicht. Da es ja in FR/BG keinen EV-Prüfer gibt, sondern nur in RSE, habe ich mir erst einmal das entsprechende Script in Smaragd angeschaut und die dortigen specials in meinem Hack ausprobiert. Wie nicht anders zu erwarten war, hat es natürlich nicht funktioniert (aber hey, probieren geht über studieren).
Meine zweite Idee war also, die einzelnen EV-Werte des Pokemon auszulesen, sie in jeweils eine variable zu stecken und diese Variablen dann miteinander zu addieren, um daraufhin zu überprüfen, ob der Endwert 510 ist oder nicht. Das Auslesen ist kein Problem, dafür aber das Addieren. Denn es gibt zwar "addvar", aber damit kann man nur einen festgelegten Wert zu einer Variable hinzufügen, ich will allerdings keinen festen Wert addieren, sondern eben eine andere Variable.
Meine konkreten Fragen wären also:
1. Gibt es in Feuerrot ein special, das die Vollständigkeit der EV überprüft?
2. Ist es möglich, zwei Variablen miteinander zu addieren, wenn ja, wie?
vorweg, ich hab schon lange nichts mehr in diesem bereich gemacht und ggf gab es neue Erkenntnisse. Im weiteren kenne ich nicht alle features von der hacke-engine, ggs könnte es also auch hier einfachere wege geben.
So weit ich weiß gibt es kein special dafür, die evs sollten aber in den Pokemon-daten stehen
auch das Addieren zweier Variablen dürfte schwer werden. vllt gab es ein special, vermutlich wirst du dir aber mit ASM behilflich sein müssen.