• Anmelden

1

Freitag, 23. April 2010, 10:32

Händler wechelst sein Angeboht nach 1 std.

Hallo,

ich würde jemanden bitten hier mal drüber zugucken und mir sagen ob dieses Script das ist welches ich brauche.

Noch mal ich suche ein Script welches das Angebot des/der Händler nach einer Stunde Spielzeit ändert.

Scripts :

Spoiler

Ruby Quellcode

1
2
3
4
NUMBER_OF_VAR = 0 #Entspricht deiner Gamevariable 1, 
kannst du ändern wies gefällt.
MÖGLICHKEITEN_DES_HÄNDLERS = 3 # Wie 
viele Angebote soll er haben?


Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
$frame_counter = 0
$game_variables[NUMBER_OF_VAR]
 = 0
@max = MÖGLICHKEITEN_DES_HÄNDLERS
if @frame_counter != 244000
$frame_counter
 += 1
else
$game_variables[NUMBER_OF_VAR] += 1 if 
$game_variables[NUMBER_OF_VAR] != @max else 
$game_variables[NUMBER_OF_VAR] = 0 end
$frame_counter = 0
end

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class
 Scene_Save
alias_method(:very_old_saraneths_on_decision, 
:on_decision)
def on_decision(filename)
very_old_saraneths_on_decision
File.open('filename',
 'ab') do |file|
Marshal.dump($frame_counter, file)
end
end
end
class
 Scene_Load
alias_method(:very_old_saraneths_on_decision, 
:on_decision)
def on_decision(filename)
very_old_saraneths_on_decision
File.open('filename',
 'rb') do |file|
$frame_counter = Marshal.load(file)
end
end
end


Dass
obere (Methodenlose) müsste vielleicht jemand in die Scene_map einbauen
und so konfigurieren, dass es in der update der Scene_Map geschiet,
wusste jetzt nicht ob diese eine initialize hat.
Ich glaube es zwar
nicht, aber so kann vielleicht grad noch jemand drübergucken, da ich es
auch nicht testen konnte und imj Scripting noch etwas unsicher bin...


Auf
jeden Fall erstellst du normale Events mit Händler, wobei du jedoch
mehrere Shop-Vorgänge definierst und die über die Gewählte Variable
(Momentan die erste) definierst. Du brauchst so viele mögliche
Posditionen wie du angegeben hast, er fängt dannach wieder bei
Möglichkeit 0 an, mann kann es eventuell auch ändern dass sie einen
zufälligen Shop aufruft.

Dann müsstest du folgendes:

Ruby Quellcode

1
2
3
$game_variables[NUMBER_OF_VAR]
 += 1 if $game_variables[NUMBER_OF_VAR] != @max else 
$game_variables[NUMBER_OF_VAR] = 0 end
Durch dass hier:

Ruby Quellcode

1
2
$game_variables[NUMBER_OF_VAR]
 = rand(@max)
ersetzen.
zum Lesen den Text mit der Maus markieren



Ich danke euch schon mal im voraus ;)
RoterReiter
Ich arbeite grad an dem Spiel "Glory Kings The Game" zusammen mit der Community und den Admins des BrowserGames "Glory Kings" zusammen.

Weitere Infos folgen.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

2

Freitag, 23. April 2010, 10:48

Hab das Script nicht ausprobiert, sieht auf jeden Fall sehr nach dem aus, was du haben wolltest...
(das Script scheint nach jeweils 244000 Frames ein weiteres mögliches Angebot freizuschalten)

Allerdings hättest du dir das ganze auch deutlich einfacher machen können indem du, wenn du den Händler ansprichst, eine Variable auf die aktuelle Spielzeit stellst (unter "Control Variables", "Other", "Play Time") und mithilfe einer Abfrage ("Conditional Branch") das entsprechende Angebot auswählst...
Dürfte aufs selbe herauskommen und du brauchst kein zusätzliches Script dafür...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Irrlicht« (23. April 2010, 11:21)


3

Freitag, 23. April 2010, 10:58

Schön,danke.

Aber zu deiner Idee,
wie genau soll sie gehn ?

Würdese mir das genauer erklären ?
Wenn es wie du schon sagst einfacher ist :)

Und noch ne Frage zim ganzen.
Wie viele Items muss der Händler haben ?
Und wo kann ich genau einstellen wie viele Items er im Angebot hat ?


Danke dir.
Ich arbeite grad an dem Spiel "Glory Kings The Game" zusammen mit der Community und den Admins des BrowserGames "Glory Kings" zusammen.

Weitere Infos folgen.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

4

Freitag, 23. April 2010, 11:24

Ich hab mal ein kleines Testprojekt erstellt:
Hoffe ist einigermaßen verständlich :)
(Ist evtl. nen bischen sehr mit Comments vollgestopft, wenn du einige nicht brauchst und löschst wird es evtl. etwas übersichtlicher^^)

Evtl. wäre noch zu ergänzen dass du bei meiner Lösung mit dem letzten Angebot beginnen solltest... (Da alles, was größer als 7200 Sekunden ist natürlich auch größer als 3600 Sek. sein würde^^)

In deinem Skript müsstest du das über die Variable MÖGLICHKEITEN_DES_HÄNDLERS ändern können, in meinem Beispiel müsstest du einfach ein weiteres Angebot hinzufügen, (in Aluxes' Beispiel einfach mit einer höheren Spielzeit, in Basils Beispiel müsstest du zusätzlich die Zeit korrigieren, nach der das Angebot zurückgesetzt werden soll, in Glorias Beispiel müsstest du die Variable "aktuelles Angebot" von 1-3 auf 1-Anzahl der Angebote ändern...
An sich bräuchtest du nicht ein Sortiment (auch wenn ein Händler ohne Ware iwie fehl am Platz wäre^^), ansonsten kannst du aber auch beliebig viele Angebote machen...

mfG
Irrlicht

Ed: Auch wenns keinen mehr kümmert: Testprojekt aktualisiert
Ed2: Fehler korrigiert (Glorias Bedingungen für die zweite Angebotsmöglichkeit)
»Irrlicht« hat folgende Datei angehängt:
  • Project11.exe (266,1 kB - 7 mal heruntergeladen - zuletzt: 18. Juni 2011, 21:34)

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Irrlicht« (23. April 2010, 19:39)


5

Freitag, 23. April 2010, 11:41

Korreckt,danke - jetzt hab ich es ein wenig verstanden.
Die Zeit die ich haben will muss dem nach immer in Secunden angegenben werden.

Ich werde den man in der Mitte nehmen.

Frage : 60 - 89 Sekunden Spielzeit:
D.h. das er von Sekunde 60-89 das einie Angebot hat und dann von Sekunde 30 - 59 ein anderes ?

Wie wäre den dann das System umzuschreiben wenn ich jede Stunde das angebot wecheln will =?
Ich arbeite grad an dem Spiel "Glory Kings The Game" zusammen mit der Community und den Admins des BrowserGames "Glory Kings" zusammen.

Weitere Infos folgen.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

6

Freitag, 23. April 2010, 11:47

Angebot wechselt jedes Mal wenn die nächsthöhere Bedingung erfüllt ist (in dem Fall sobald 60 Sekunden erreicht sind, 30 Sekunden erreicht sind bzw. 0 Sekunden erreicht sind. In Basils Beispiel werden alle 90 Sekunden-Zeitspannen "abgeschnitten" (ergo die Zeitspanne beginnt für Basils Angebote dann wieder bei 0)


Zu den Zeiten:

Eine Minute entspräche einfach 60 Sekunden,
eine Stunde entspräche 3600 Sekunden,
zwei Stunden entsprächen 7200 Sekunden,
ein Tag entspräche 86400 Sekunden,
usw.

Ergo (für 5 Angebote mit je 1 Std. Abstand):

Wenn Spielzeit >= 14400, dann Angebot 5,
sonst Wenn Spielzeit >= 10800, dann Angebot 4,
sonst Wenn Spielzeit >= 7200, dann Angebot 3,
sonst Wenn Spielzeit >= 3600, dann Angebot 2,
sonst Angebot 1 (Wenn Spielzeit noch kleiner ist)


Müsste sich also auch deinen Zeitvorstellungen anpassen lassen (Wär für ein Testspiel aber ein wenig lange zu warten gewesen^^)

mfG
Irrlicht

7

Freitag, 23. April 2010, 12:01

Ja klar.

Echt klasse Arbeit ;)
Danke dir.

Hat mich echt weiter gebracht.
Danke. ^^
Ich arbeite grad an dem Spiel "Glory Kings The Game" zusammen mit der Community und den Admins des BrowserGames "Glory Kings" zusammen.

Weitere Infos folgen.

WarriorA

Knappe

Motto: Brothers everywhere, raise your hands into the air, we're warriors, warriors of the world!

  • Nachricht senden

8

Freitag, 23. April 2010, 13:05

Ohne jetzt die anderen Vorschläge helesen zu haben:

Es währe sehr simpel, wenn du ein Common Event erstellst, mit einem Wait (bzw ganz vielen) bis halt 1h voll ist (mag ich jetzt nicht ausrechnen, aber 20 Frames = 1 sec) und dann eine Variable +1 zu setzen.

Im Event dann einfach bei Conditions die Variable mit einem Wert nehmen, und ein Shop Processin rein.
Könntest nach der Stunde auch Random Variable setzen, damit es nicht linear hochsteigt, sein angebot.

mfg

- WarriorA -
- Eventer -

  • Allgemeines

    Bild
    Bild
  • Können

    Eventing 10/10
    Mapping 7,5/10
    Grafiken 6,5/10
    Scripting 4/10
    Pixeln 0/10
  • Projekt

    Bild

9

Freitag, 23. April 2010, 13:06

Danke auch dir.
Es klappt aber so schon ;)
Ich arbeite grad an dem Spiel "Glory Kings The Game" zusammen mit der Community und den Admins des BrowserGames "Glory Kings" zusammen.

Weitere Infos folgen.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

10

Freitag, 23. April 2010, 18:48

Wenn du Glorias Möglichkeit noch in Betracht ziehst müsstest du allerdings noch die Bedingung für die zweite Angebotsmöglichkeit korrigieren, da steckte noch ein Fehler drin... (die Variable für "aktuelles Sortiment" muss 2 sein, nicht die für "Spielzeit", ist oben auch korrigiert)

Ansonsten freut mich dass es geholfen hat^^


mfG
Irrlicht

Kagurame

Alopex Lagopus

Motto: Ich Böse, Du Teufel

  • Nachricht senden

11

Dienstag, 27. April 2010, 07:38

Zu der Methjode über dass wait: Sehr umständlich.

erstens würde der wait bei kleinen fehlern irgendwo in der mapo laufen, und er ist sehr unsicher. ausserdem ist es schwer einen wait über alle maps laufen zu lassen, da jede dann ein neues event benötigt. Daher habe ich dies im script eingebaut. mein wait ist demnach die scene_map#update. ist viel sicherer. und deutlich weniger arbeit^^ er muss nur gucken welches angebot sein soll, im grunde genommen nichts anderes als irrlicht, nur eben ohne zeiten errechnen zu müssen (dass wo mit den 244000 frames bei einer rate von 40 frames erwähnt wurde, 20 frames sind falsch^^)

(Post "Einige Fragen (update), dort ist mein script, dass zweite von mikr in dem thema^^)
Bild

  • Hallo

    Tabs klicken unso, ne?
  • Lyric

    Meine schwarze Liste, beginnt mit einem Satz:
    "Wer zuletzt lacht, lacht am besten!", und am Ende ist noch Platz.
    Auf der Liste meiner Feinde, ist auch für euch noch Platz
    Wer zuletzt lacht, lacht am besten!
    Merkt euch diesen Satz!

    Ode an die Feindschaft von Saltatio Mortis

  • Outtakes

    • Nummer 3
      20.09.2012 - 19:46
      "Yah, ich bin ihre Motivazin." "Motivazin - gibts das jetzt in der Apotheke rezeptflichtig?"
    • Ich mag Kekse
    • Nummer 2
      08.09.2012 - 01:29 Uhr
      "Die Erlebnismacher zu Hannovre - Exlibre - ääääh... Excalibur"

      *Lachflash*
    • Nummer 1
      07.09.2012 - 22:58 Uhr
      *Bööarps* - Die Erlebnismacher zu Hannovre - Excalibur... "Mahlzeit... also... doch nicht Mahlzeit... war nur die Website"
      "Ich hab gerülpst -.-" "Du hast was?" *LACHFLASH*
      "Nicht dein Ernst, oder?" "DOCH!" *LACHFLASH second tour*
  • Profile

    Bild
  • Ich

    Dass bin ich:

    Maker: RPG-XP, RPG-VX
    Story:
    Für andere mehr als für mich: 60%

    Grafik:
    Ich werde besser: 35%

    Pixeln:
    Ich stehe an den Anfängen: 7%

    Mapping:
    Es fehlen nur noch (alle) Feinheiten: 67%

    Scripting:
    Informatiker, mittlerweile auch andere Sachen am skripten: 93%
  • Neues aus der SB

    Neues aus der SB:

    Spoiler: Die Camper
    (03:41:36) Kagurame: n8 du
    (03:41:37) Irrlicht: Nacht Mozilla
    (03:41:47) MozillaBabybird: Kagu: der witz war flach
    (03:42:01) Kagurame: welcher witz?
    (03:42:14) Heatra: geh nicht benji
    (03:42:21) Heatra: spiel lieber ats2 :D
    (03:42:25) MozillaBabybird: nacht leute ^^ ijemand sollte diesen verlauf im studio bash posten, damit die mal wissen wer die echten camper hier sind :D
    (03:42:35) Kagurame: ich bin scripten
    (03:42:38) MozillaBabybird: Heat: tut mir sorry xD
    (03:42:40) Kagurame: ich mach das...^^
    (03:42:48) MozillaBabybird: bis .... mittag ?
    (03:42:49) Heatra: ^^
    (03:42:55) MozillaBabybird: ja mittag dürfte passen
    (03:42:56) MozillaBabybird: :D
    (03:42:57) Kagurame: ^^
    (03:43:02) Heatra: ich steh morgen eh erst um 5 uhr mittags auf
    (03:43:07) Kagurame: bis heute
    (03:43:11) Steve: MozillaBabybird verlässt den Chat.
    (03:43:15) Kagurame: ich so um 3
    zum Lesen den Text mit der Maus markieren


    Spoiler: Die Informatiker vom Dienst
    (03:05:32) Ankou: bist du dir SICHER, dass es die Performance an der Stelle kritisch ist und c.a. 30% sind KEIN großer Unterschied?
    (03:05:41) Ankou: oh
    (03:05:45) Ankou: okay
    (03:06:21) Asandril: Oh Ha was habt Ihr gerade für ein Thema?
    (03:06:41) Ankou: das ist in der Tat eine performancekritische angelegenheit, aber ich denke dennoch nicht, dass das die Dinge sind auf die du dein Hauptaugenmerk richten solltest.
    (03:07:01) Heatra: maschine
    (03:07:01) Ankou: derartige Mikrooptimierungen werden Performanceprobleme sogut wie niemals beseitigen können
    (03:07:01) Irrlicht: anhand der Tatsache dass es 20 000 000 Durchläufe waren nicht wirklich :-/
    (03:07:08) Ankou: änder was konzeptionelles oder lass es bleiben.
    (03:07:31) Ankou: evtl. kannst du mehr der Interpretation nach vorne verlagern
    (03:08:06) Ankou: aber solche Dinge zu versuchen wie die case Abfragen durch send zu ersetzen in der Hoffnung ein paar Prozent einzusparen bringens dir nicht
    (03:08:26) Asandril: Bin ich gerade hier in einem Kurs gelandet ..
    (03:08:36) Irrlicht: hatte mal in Erwägung gezogen die Befehle evtl. schonmal etwas "vorzuinterpretieren", aber das dürfte dann mehr Speicher verbrauchen als es Geschwindigkeit bringt...
    (03:09:11) Ankou: Asandril: ja, erstaunlich, angetrunken an Silvester über so etwas zu reden
    (03:09:28) Heatra: -> lampenfieber
    (03:09:40) Asandril: Kann ich nur beipflichten.
    (03:09:46) Irrlicht: atm bin ich mir nicht sicher was genau den doch vergleichsweise erheblichen Lag von Parallel-Process-Events verursacht (oder ob es einfach an der gesammten Masse liegt) wenn ich bei 2 000 000 solcher Durchläufe unter einer Sek. bleibe...
    (03:09:57) Ankou: Irrlicht: das ist durchaus üblich. Speicher gegen Geschwindigkeit einzustauschen ist sehr populär und bringt oft viel
    (03:11:23) Irrlicht: mal schaun :)
    zum Lesen den Text mit der Maus markieren


    Spoiler: Auch noch später^^
    (03:32:35) (Kagurame_AnkündigungImForumMach): es da ne methode wie beim xp?
    (03:32:48) Irrlicht: Cache.system("Iconset")
    bekommst das Iconset
    (03:32:50) (Kagurame_AnkündigungImForumMach): brauche es dringend, aber nix gefunden bisher
    (03:33:01) (Kagurame_AnkündigungImForumMach): und dann per id?
    (03:33:06) (Kagurame_AnkündigungImForumMach): drauf zugreifen?
    (03:33:07) Irrlicht: Index berechnet sich einfach aus
    x = index % 16
    y = index / 16
    (03:33:17) Irrlicht: afaik warens 16 nebeneinander^^
    (03:33:28) (Kagurame_AnkündigungImForumMach): ok, danke.
    (03:33:51) (Kagurame_AnkündigungImForumMach): ich glaub ich scripte dann noch ein bissl
    (03:34:01) Steve: (Kagurame_AnkündigungImForumMach​) heißt jetzt Kagurame.
    (03:34:04) Irrlicht: im XP hast die einzelnen Icons anhand des Namens aus dem Icon-Ordner aufgerufen
    (03:34:09) Steve: Kagurame ist nun Scripten!
    (03:34:17) Irrlicht: (geht natürlich im VX auch, aber wozu gibts das Iconset)
    (03:34:23) Kagurame: ja ich weis, daher war ich heut mittag verwirrt
    zum Lesen den Text mit der Maus markieren

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

12

Dienstag, 27. April 2010, 15:40

1. Stimmt, ich hätte die 244000 Frames nicht einfach übernehmen sollen... *duck*

2. Zu Warriors Event: Muss ja nicht auf jeder Map ein neues Event sein, es reicht ein parallel laufendes Common-Event, das auf allen Maps wirkt (einziger Nachteil: es läuft weder wenn man im Menü ist noch im Kampf...)

3.: Naja, denke mal beide Versionen haben Vor- und Nachteile... Den größten Vorteil meiner Lösung seh ich eig. darin, dass sie ohne einen zusätzlichen Timer auskommt (Spielzeit ist ja schon integriert^^) und auch nur dann das Händlerangebot festgelegt wird wenn man es braucht anstatt es laufend im Hintergrund aktualisieren zu müssen.

Rechnerei hat man eig nur wenn jeder Händler andere Angebotszahlen und -periodendauern haben sollte sodass man die benutzten Variablen nicht einfach C&Pn kann (das sollte soweit ich RoterReiters Problem richtig verstanden hab sowieso nicht der Fall sein), und Zur Not kann man z.B. auch die Spielzeit vor der Abfrage auch durch 3600 teilen um anstatt der Spielzeit in Sekunden die in Stunden zu erhalten. (Zugegeben, die Mühe muss man sich bei deiner Lösung ebenfalls nicht mehr machen^^)


mfG
Irrlicht

Dieser Beitrag wurde bereits 22 mal editiert, zuletzt von »Irrlicht« (27. April 2010, 21:07)


WarriorA

Knappe

Motto: Brothers everywhere, raise your hands into the air, we're warriors, warriors of the world!

  • Nachricht senden

13

Dienstag, 27. April 2010, 16:57

2. Zu Warriors Event: Muss ja nicht auf jeder Map ein neues Event sei, es reicht ein parallel laufendes Common-Event, das auf allen Maps wirkt (einziger Nachteil: es läuft weder wenn man im Menü ist noch im Kampf...)
Man kann eine Variable auch der Playtime setzen, währe dann wohl die bessere lösung,
Wie hoch die Variable ist, wenn 1h Voll ist, weiß ich jetzt nicht, aber daran solls ja nicht scheitern^^ kan bestimmt jeder selber rausfinden =)

mfg

- WarriorA -
- Eventer -

  • Allgemeines

    Bild
    Bild
  • Können

    Eventing 10/10
    Mapping 7,5/10
    Grafiken 6,5/10
    Scripting 4/10
    Pixeln 0/10
  • Projekt

    Bild

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

14

Dienstag, 27. April 2010, 17:06

Playtime rechnet wie oben schon angegeben in Spielsekunden, also entspräche 3600 = eine Stunde :)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Irrlicht« (27. April 2010, 17:34)


Social Bookmarks