|
-
G1 Taschendiebstahl in G2
In G1 konnte man sich ja von hinten an einen npc anschleichen und ihm die taschen ausleeren indem man sein inventar "öffnet" und sich dann bedient.
den taschendiebstahl in G2 fand ich schon immer total langweilig, das kann man auf 10 meter entfernung und selbst wenn jemand zusieht. eigentlich wäre es garnicht so schwer das umzusetzen, ich würd sagen, es wird abgefragt, ob der spieler schleicht, ob der npc ihn sehen kann und dann das inventar geöffnet.
das problem ist jetzt nur das inventar zu öffnen. wie geht das eigentlich wenn an einen bewusstlosen npc plündert? geht das über die engine oder könnte man das auch irgendwie nutzen? vllt den npc über die dauer des diebstahls in den zustand der bewusstlosigkeit verfrachten, obwohl der sich dann ja nicht mehr wehren könnte wenn er den diebstahl bemerkt
wie würdet ihr das angehen?
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
Die Idee hatte ich bereits auch, hab sie aber bisher verschoben weil sie in keiner Mod wirklich gepasst hätte ;D
aber hier gibts ein ähnliches problem über das Inventar und Lehona und Gottfried lassen viele Engine Funktionen und Adressen im Bereich inventar fallen
Ansonsten musst du definitiv noch die Wahrnehmung des zu beklauenden Ändern und natürlich auch die der anderen, es soll ja schließlich jemand auf den Diebstahl reagieren wenn du gesehen wirst
Vorzeitig nicht mehr aktiv, aber per PN erreichbar
Sektenwahn
[/CENTER]
-
Zitat von Icebox
die einzige funktion zum inventar die ich entdecken kann ist:
Code:
void __thiscall oCNpc::OpenInventory(int) 0x00762250 public: void __thiscall oCNpc::OpenInventory(int)
obwohl das ja schon gut ist. OpenInventory sollte ja das inventar öffnen. muss ich statt oCNpc dort die konkrete instanz des Npc hinschreiben (die ich in einer variable speichern würde welche mir den focus zurückgibt) und schon klappts? das wäre ja geil
verdammt dass ich das grad nicht ausprobieren kann
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
Zitat von Assasine91
die einzige funktion zum inventar die ich entdecken kann ist:
Code:
void __thiscall oCNpc::OpenInventory(int) 0x00762250 public: void __thiscall oCNpc::OpenInventory(int)
obwohl das ja schon gut ist. OpenInventory sollte ja das inventar öffnen. muss ich statt oCNpc dort die konkrete instanz des Npc hinschreiben (die ich in einer variable speichern würde welche mir den focus zurückgibt) und schon klappts? das wäre ja geil
verdammt dass ich das grad nicht ausprobieren kann
Nicht statt oCNPC die Instanz hinschreiben; Du musst die Funktion oCNpc::OpenInventory(int) hooken und in der Funktion, die du einschiebst eine Abfrage machen, welcher NPC im Fokus ist. Allerdings wäre ich mir dabei nicht so sicher, ob das funktioniert; also ich meine, ob das die richtige Funktion ist. Bei mir war das die Funktion, die etwas zurückgibt, wenn der Spieler das Inventar öffnet.
Ich habe hier noch eine andere interessante gefunden, die du mal testen könntest: oCNpc::OpenSteal(void) - Die sieht mir irgendwie ziemlich danach aus.
LG
Grekain
-
Eigentlich müsstest du bloß oCNpc::OpenInventory() für den richtigen NPC aufrufen (ie einfach den entsprechenden NPC in ECX schieben bzw. bei __thiscall von Ikarus als this angeben). Aber dann hast du ein offenes Inventar von dem und das hilft dir nicht weiter, weil du dann noch keine Items in das Inventar des Helden verfrachten lassen kannst. Das lässt sich zwar auch regeln, aber eventuell möchtest du das ja mit Bordmitteln läsen (ie quasi ein Handelsbildschirm, wie wenn man bei einem Händler was kauft oder wenn man eine Truhe plündert).
-
naja müsste vllt ein handelsmenü geben ohne es bezahlen zu müssen, oder halt die truhe. ich weiß nur nicht wie das geregelt wird.
was sagst du aber zu oCNpc::OpenSteal(void) das grekain gefunden hat?
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
24.10.2012 12:20
#7
Zitat von Assasine91
was sagst du aber zu oCNpc::OpenSteal(void) das grekain gefunden hat?
Die öffnet zwar das Inventar eines NPC's, man kann aber nichts entnehmen (bei mit ist es zumindest so)
-
Zitat von Assasine91
naja müsste vllt ein handelsmenü geben ohne es bezahlen zu müssen, oder halt die truhe. ich weiß nur nicht wie das geregelt wird.
[...]
Das sollte machbar sein. Schön an der Sache ist, dass man so einem NPC auch unbemerkt etwas unterjubeln kann ...
-
Zitat von Der Ahnungslose
Das sollte machbar sein. Schön an der Sache ist, dass man so einem NPC auch unbemerkt etwas unterjubeln kann ...
Wenn du auf die Quest mit Sarah(?) und dem Brief von Onar anspielen willst, da gehst du doch nur ins Handelsmenü und "verkaufst" es ihr.
-
Zitat von Der Ahnungslose
Das sollte machbar sein. Schön an der Sache ist, dass man so einem NPC auch unbemerkt etwas unterjubeln kann ...
beim handelsmenü ohne zu bezahlen hatte ich grad im sinn, einfach den geldbetrag den man zahlen müsste in form von gold ins inventar des hero zu setzen aber so schnell dass er es nicht merkt und beim "händler" abziehen (nullsummenspiel) und wenn man ihm etwas unterjubelt natürlich den goldausgleich bei beiden. wobei plündern für mich schöner aussähe. ach mensch, doofes inventar :<
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
Zitat von Grekain
Wenn du auf die Quest mit Sarah(?) und dem Brief von Onar anspielen willst, da gehst du doch nur ins Handelsmenü und "verkaufst" es ihr.
Das ist doch aber schon eine Notbehelfs-Lösung von den Piranhas. Ich fand dieses Unterjubeln beim Verkaufen immer recht unrealistisch. Ich fände ein echtes Unterjubeln, bei dem der NPC ähnlich wie beim Taschendiebstahl mit dem Rücken zu dir steht viel geiler und realistischer. Zudem müsstest du auch hier deine Geschicklichkeit ausspielen, was ja bei Sarah auch nie eine Rolle spielte.
Zitat von Assasine91
beim handelsmenü ohne zu bezahlen hatte ich grad im sinn, einfach den geldbetrag den man zahlen müsste in form von gold ins inventar des hero zu setzen aber so schnell dass er es nicht merkt und beim "händler" abziehen (nullsummenspiel) und wenn man ihm etwas unterjubelt natürlich den goldausgleich bei beiden. wobei plündern für mich schöner aussähe. ach mensch, doofes inventar :<
Warum so kompliziert? Zumindest was Gothic I angeht lässt sich der Accept des Handelsgeschäfts hooken. In der entsprechenden Funktion stehen Wert der Ware und Wert der Tauschware jeweils auf eax und ecx+irgendwas. Auswendig weiß ich es nicht, bin nicht zu Hause am Rechner. Was denkst du, wie ich sonst das Feilschen in DzdP realisieren könnte . Wenn du geduldig bist, ich denke ich komme am späten Abend nochmals vor die Kiste.
-
Bei G2 wird ja direkt beim Klick der Handel abgeschlossen, es gibt keine "Mitte" mehr, daher könnte es anders sein.
-
Stimmt, ich bin einfach so weit weg von G2 zurzeit. Es bliebe noch die Möglichkeit den Value des Items zu nullen, wenn das Item im NPC-Inventar angesteuert ist, also die Item-Description eingeblendet wird. Dazu müsstest du nach oCItem:: GetDescription(void) Ausschau halten.
-
Also ich hatte das Über OpenSteal gelöst.
Erst habe ich den WalkString auf Schleichen überprüft, dann ob der Gegner einen sehen kann (oCNpc::CanSee => Damit man hinter diesem stehen muss) und dann OpenSteal eingefügt.
Ich glaube NPC's haben auch automatisch drauf reagiert, bzw. war es so: Sollte dein Taschendiebstahlskill (Von G1 befindet sich dieser noch immer in den scripten von G2 Glaube das war Skill 6) zu niedrig sein, geht bei einem klick das Inventar komplett zu (Du wurdest erwischt, kA ob die KI darauf reagiert). Ist der Skill hoch genug, und mit ein wenig Glück (eben wie bei Gothic 1) erhälst du das Item.
-
26.10.2012 13:07
#15
So hab ich das bei mir auch probier, doch egal wie hoch ich den Skill einstelle: 1 , 2, 5 100, 1000, der Stealcontainer geht immer zu. Kann natürlich sein dass ich einfach nur zu blöd dafür bin.
-
Zitat von mainclain
Also ich hatte das Über OpenSteal gelöst.
Erst habe ich den WalkString auf Schleichen überprüft, dann ob der Gegner einen sehen kann (oCNpc::CanSee => Damit man hinter diesem stehen muss) und dann OpenSteal eingefügt.
Ich glaube NPC's haben auch automatisch drauf reagiert, bzw. war es so: Sollte dein Taschendiebstahlskill (Von G1 befindet sich dieser noch immer in den scripten von G2 Glaube das war Skill 6) zu niedrig sein, geht bei einem klick das Inventar komplett zu (Du wurdest erwischt, kA ob die KI darauf reagiert). Ist der Skill hoch genug, und mit ein wenig Glück (eben wie bei Gothic 1) erhälst du das Item.
hmm wäre es falsch zu fragen, ob du dein skript in der MDB hochladen würdest? dann müssten wir das rad ja nicht neu erfinden
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
Zitat von Assasine91
hmm wäre es falsch zu fragen, ob du dein skript in der MDB hochladen würdest? dann müssten wir das rad ja nicht neu erfinden
Ich hab das Ganze in C# geschrieben wird dir also nicht viel helfen (Der Source ist aber offen, aber wie gesagt, für die Funktion lohnt's sichs nicht, da reinzugucken)
Ansonsten hätte ich das ganze schon längst getan :P
Zitat von GornLester
So hab ich das bei mir auch probier, doch egal wie hoch ich den Skill einstelle: 1 , 2, 5 100, 1000, der Stealcontainer geht immer zu. Kann natürlich sein dass ich einfach nur zu blöd dafür bin.
Zu jedem Talent gibts ja ein Skill und eine Value, hier muss glaub ich die Value gesetzt werden (Schon ein paar Monate her, bin mir gerade nicht ganz sicher).
Geändert von mainclain (26.10.2012 um 14:25 Uhr)
-
Zitat von mainclain
Ich hab das Ganze in C# geschrieben wird dir also nicht viel helfen (Der Source ist aber offen, aber wie gesagt, für die Funktion lohnt's sichs nicht, da reinzugucken)
wozu hast du das in C# geschrieben? ich dachte das wäre eine gothic-funktion und du würdest das in gothic einbringen oô
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
Zitat von Assasine91
wozu hast du das in C# geschrieben? ich dachte das wäre eine gothic-funktion und du würdest das in gothic einbringen oô
Für den Multiplayer, da hab ich das meiste in C# geschrieben (ausser paar kleine helfer funktionen) (Hätte ich auch in Daedalus machen können, aber dann wäre das kuddelmuddel perfekt gewesen :P )
-
3 Jahre später bin ich immer noch nicht weiter gekommen. OpenInventory bringt keine Transaktionsmöglichkeiten. B_GiveTradeInv erschafft bloß Items im Inventar eines Npcs aber hat nirgends eine Funktion die das Interface aufruft. Gleiches gilt beim Dead-Zustand, der zwar ein Inventar gibt, aber keine Interface-Öffnung anzeigt.
Die G1-Skripte sind nicht aufschlussreicher.
Jemand anderes hat es wohl über den Dead-Zustand geregelt. Orkherrschaft oder so.
Hm dann häng ich das wohl an den Nagel.
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|