PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Nuka Cola Automaten



Holdi
25.12.2008, 19:14
Moin,

ich sitze schon den ganzen Tag daran einen Nuka Cola Autmaten aufzustellen der dann Eiskalte Nuka Colas abliefert wenn man ihn mit normaler füttert.^^

Ich bin auch schon soweit das ich den Automaten aufgestellt habe und ihn auch füttern kann.
Leider frisst der Automat meine Nuka Cola Flaschen anstatt den bestand aufzustocken.

Ich hoffe ihr könnt mir helfen oder erklären wie das ganze funktinieren soll.

Gruß
Holdi :D

HermeZ
03.01.2009, 08:30
Moin!

Habe nach Deinem Post mal meine Nuka Cola Automaten näher betrachtet, und auch dort ist es wie Du beschrieben hast!!!

Habe etwas rumprobiert, aber bis jetzt keinen voll funktionierenden Automaten erstellen können, bei den Jukeboxen / Krankenstationen / Laboren wars kein Thema...

Deshalb dieser Post, damit der Fred nich in der Versenkung verschwindet, irgendwer hier muss doch einen funktionierenden Nuka Cola Automaten in seiner Hütte haben?!?

Mir is noch aufgefallen das in dem Megaton Haus, sowohl der Nuka Cola Automat als auch andere Sachen in der Hütte mit X-Markern ausserhalb der Hütte verknüpft sind, weiss einer was das soll???

Wenn Ihr was beitragen könnt immer her,
brauche INPUT :D

Misantrooper
03.01.2009, 11:06
schon so alt der thread, und ich seh ihn zum ersten mal. naja, besser spät als nie.
also, ich habe das freezer-problem in meiner mod gelösst.
und zwar folgendermassen.
beachte die items in deinem object-window.
es gibt 2 freezer:
hd01NukaVendingMachineClean (automat in megaton)
hd02NukaVendingMachineClean (automat in tenpenny)

es gibt die scripts:
hd01NukaVendingMachineSCRIPT
hd02NukaVendingMachineSCRIPT


beide automaten werden vom spiel an bestimmten orten aufgestellt, und funktionieren AUSSCHLIESSLICH dort.

damit wir nun unseren eigenen automaten in unserer mod bekommen, müssen wir uns einen eigenen automaten mit eigenem script erstellen.

in meiner mod habe ich den freezer:
hd03NukaVendingMachineClean
genannt.

das script demnach:
hd03NukaVendingMachineSCRIPT


nun erstellen wir erstmal diesen neuen freezer.
dazu öffnen wir einfach einen der vorhandenen, und ändern die ID in den von uns gewünschten namen:
hd03NukaVendingMachineClean
diesen platzieren wir nun in unserer mod. den aufgestellten freezer (hd03NukaVendingMachineClean) doppelklicken wir nun, damit sich das refence-window öffnet, und geben dann in der ersten zeile (reference) einen namen an, den später das script verwerten kann.
die reference habe ich der übersichthalber:
hd03NukaVendingMachineREF
genannt.

nun klicken wir in dem selben fenster auf "edit base" was uns zum "hauptfenster" dieses items bringt.
damit unser automat auch weiss das er gemeint ist, bei der aufnahme der neuen gefreezten nukas, müssen wir ihm ein script geben.
wir klicken also neben dem script-dropdownmenü auf den butoon mit den drei punkten. dieser öffnet das aktuell eingestellte script im editor.
da wir ja einen der anderen beiden automaten sozusagen kopiert haben, hat dieser das script von einem der beiden eingangsgenannten scripte zugewiesen.

da ich den hd01..... verwendet habe, habe ich auch dieses script offen, welches so aussieht:



scn HD01NukaVendingMachineScript

;This script is designed to handle the Nuka-Cola Machine that the Player buys for his house
;The Player can add Nuka-Colas to the machine and have them changed to Ice-Cold Nuka-Colas
;He can then dispense them as he wants to take some or drink them

short Button
short NukasOnMe
short GoNuka


begin OnActivate

if ( IsActionRef Player == 1 )
if ( Player.GetItemCount NukaCola >= 1 )
ShowMessage HD00NukaMachineWith
set GoNuka to 2
elseif ( Player.GetItemCount NukaCola < 1 )
ShowMessage HD00NukaMachineWithout
set GoNuka to 1
endif
endif

end

begin gamemode

set Button to GetButtonPressed

if ( Button == 0 ) && ( GoNuka >= 1 )
Activate
set GoNuka to 0
elseif ( Button == 1 ) && ( GoNuka == 2 )
set NukasOnMe to ( Player.GetItemCount NukaCola )
Player.RemoveItem NukaCola NukasOnMe
HD01NukaMachineREF.AddItem MS05IceNukaCola NukasOnMe
set NukasOnMe to 0
set GoNuka to 0
elseif ( Button == 1 ) && ( GoNuka == 1 )
;Do Nothing
set GoNuka to 0
elseif ( Button == 2 ) && ( GoNuka == 2 )
;Do Nothing
set GoNuka to 0
endif

end


wenn wir uns das script mal genau anguggen, finden wir unseren ursprünglichen item-namen wieder, zumindest den anfang:
hd01...
diese stellen interessieren uns. da die code-funktion leider keine zeilennummerierung bietet, werde ich jede zu ändernde zeile nocheinmal neu aufführen, eventuell mit jeweils +1zeile in jede richtung.


zeile 1 macht de anfang:


scn HD03NukaVendingMachineScript


diese zeile ist besonders wichtig, da sie dem script beim speichern den neuen namen "vorschreibt".
also, das script nimmt IMMER den namen an, den man hinter "scn" angibt.

zeile 36:


Player.RemoveItem NukaCola NukasOnMe
HD03NukaMachineREF.AddItem MS05IceNukaCola NukasOnMe
set NukasOnMe to 0


das war eigendlich schon alles. aber was passiert da eigendlich.
zeile 35 nimmt dem spieler die nukas weg
(Player.RemoveItem NukaCola) NukasOnMe, weiss ich auch nicht wirklich, aber ich denke das dies die aktuelle anzahl nukas im spielerinventar ist, da sie in der nächstenzeile wieder in diesem zusammenhang zu finden ist.

in zeile 36:
HD03NukaMachineREF.AddItem MS05IceNukaCola NukasOnMe

bekommt der freezer icenukas in der menge wie eine zeile zuvor die nukas aus meinem inventar entfernt wurden. und in dieser zeile wird klar, das der freezer die nukas nicht "gefressen" hat. sie liegen lediglich entweder im tower(hd02) oder in megaton(hd01), jenachdem welchen freezer du in deiner mod aufgebaut hast.


ich hoffe das ich dir damit weiterhelfen konnte, und vorallem das es verständlich ist. ich schlafe noch halb. aber diese frage konnte ich nicht unbeantwortet lassen.

HermeZ
03.01.2009, 11:35
Ha,
hätt mich ja auch gewundert wenn das hier keiner gewusst hätte!

Dank Dir erstmal für Deinen morgendlichen Einsatz :D
Werd das ganze nachher mal testen, aber klingt ja alles sehr gut!

Gruß, HermeZ

Holdi
03.01.2009, 12:13
Hey vielen dank Misantrooper es funktioniert endlich :D

Ich weiß zwar nicht wo mein Fehler war aber ist ja jetzt auch egal ^^

Danke nochmals

Gruß
Holdi

Misantrooper
03.01.2009, 12:55
dein fehler war sicherlich, einfach nur den automaten aufzustellen, und ihn zu lassen wie er ist.
aber bei solchen dingen, die auf scripte angewiesen sind, MUSS zwingenderweise eine refence angegeben werde, damit das script weiss, womit es zu arbeiten hat.
in der reinen programmierung würde man die refence wahrscheinlich schlicht und einfach variable nennen.

Amon Amarth 93
03.01.2009, 15:16
Ich weiß im moment nicht genau was ich falsch mache aber immer wenn ich die ID umbennen will bekomm ich die Fehlermeldung:

Object ID Error

Object ID is not unique!
Previous Object is type Reference

Mein Englisch ist jetzt leider auch nicht das beste :o

Kojak-XT
03.01.2009, 15:41
Wie wärs mal mit nem Nuka Cola Automaten der auch Quantums nimmt?

Misantrooper
03.01.2009, 16:11
Object ID Error

Object ID is not unique!
Previous Object is type Reference


das sagt dir einfach nur das du da einen namen vergeben willst der schon vergeben ist. am besten ist, du nimmst dir den item-namen und hängst dann "REF" dran:

item:
NukaFreezerMod

dann nennst du die reference
NukaFreezerModREF


das sollte eigendlich immer funktionieren, es sei denn du hast schon einmal diesen referencenamen vergeben, dann wird der sich wieder beschweren, egal ob das objekt noch existiert oder nicht. namen im geck dürfen nur ein einziges mal vorhanden sein.




Wie wärs mal mit nem Nuka Cola Automaten der auch Quantums nimmt?

kannst dich ja dran versuchen. im prinzip funktioniert das genauso. du musst dir ersteinmal eine icequantum erstellen.
das script wird dann etwas komplizierter.

im moment sieht es in etwa so aus:
player hat 10 nuka in der tasche
so viele nukas wie in der playertasche sind, werden im freezer icenukas geadded.


das macht in etwa das momentane script. wenn auch noch quantums gekühlt werden sollen, brauchen wir zum einen noch einen button auf dem das steht das die quantums gelagert werden sollen.
da man nur ein script verknüpfen kann, reicht es nicht, noch ein zusätzliches zu erstellen das die quantums behandelt. sondern das muss alles in einscript.
wir gehen folgendermassen vor.
programmieren besteht in ersterlinie aus fragen stellen, die sich eindeutig beantworten lassen. in unserem fall sollte es eine wenn->dann abfrage sein

wenn ich den button nuka klicke machst du das:
player hat 10 nuka in der tasche
so viele nukas wie in der playertasche sind, werden im freezer icenukas geadded.
wenn nicht dann geh einfach zur nächsten frage

wenn ich den button quantum klicke machst du das:
so viele quantums wie in der playertasche sind, werden im freezer icequantums geadded.
wenn nicht dann geh einfach zur nächsten frage

wenn ich den button nuka rausholen klicke machst du das:
öffne den stash
wenn nicht dann geh einfach zur nächsten frage

wenn ich den button nichts klicke machst du das:
menü schliessen

nur wie das script jetzt wirklich geschrieben wird, kann ich aus dem stehgreif nicht sagen. ich ahne zwar wie die syntax funktioniert, und ich weiss wo ich die variablen finde. damit kann ich schon halbwegs gut arbeiten. ich weiss nichtmal um was für eine programmsprache es sich hier handelt. bisher habe ich nur mit internetprogrammierung zu tun gehabt. aber die abfragen sind überall die selben.