World of Gothic Archiv
> NWN-Hilfe Zufällige items in Truhen |
|
12.07.2002, 15:29 | #1 | ||
Omega Darkblade Beiträge: 257 |
Zufällige items in Truhen
Ich habe in meinem Modul viele Truhen in denen einfach nur Sachen sind die das Spiel n bischen lebhafter machen sollen. Kann man es austellen das in diesen Truhen dann trozdem noch zufällige items/Goldmünzen drin sind? |
||
12.07.2002, 15:39 | #2 | ||
Gawain15 Beiträge: 1.084 |
Das selbe Problem gibt es auch bei Kreaturen, die verlieren auch mal nen Trank, Edelstein oder Gold. Bei Truhen etc. müsste das Script für OnOpen ungefähr so aussehen (es gibt mehrere Varianten, je nach Behälter, mehr oder weniger guter "loot") void main() { if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0) { return; } object oLastOpener = GetLastOpener(); GenerateHighTreasure(oLastOpener, OBJECT_SELF); SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1); ShoutDisturbed(); } Ich eigentlich kannst du das ganze Script löschen, wenn du nur die GenerateTreasure zeile löscht gehts auch... |
||
12.07.2002, 15:51 | #3 | ||
Omega Darkblade Beiträge: 257 |
hey danke es funzt :) |
||
12.07.2002, 16:51 | #4 | ||
Fantasyelf Beiträge: 36 |
Mein Editor sagt: Bezeichner nicht definiert (GenerateHighTreasure). Fehlt mir irgendetwas? |
||
12.07.2002, 16:55 | #5 | ||
Gawain15 Beiträge: 1.084 |
hä? Was willste/haste machen? |
||
12.07.2002, 17:00 | #6 | ||
"I" Beiträge: 43 |
Ich finde das gut das immer etwas anders drinn ist.....ausser dem was man selbst reingetan hat. |
||
12.07.2002, 17:09 | #7 | ||
Omega Darkblade Beiträge: 257 |
Ich hab nur die GenerateTreasure Zeile gelöscht. @"I" Ich hatte am Ende von NWN 347000 Goldmünzen. Ein normaler Bauer hat werscheinlich nie mehr als 100 auf einem haufen gesehen geschwige denn besesen. Da finde ich es ein bischen übertriben das in jeder 2ten Kiste(ja auch in Bauernhäusern) n Edelstein drin ist der 20-30 gm gibt ;) |
||
12.07.2002, 17:11 | #8 | ||
Gawain15 Beiträge: 1.084 |
Yo, erstmeal muss man dafür sorgen das weniger Gold spawned (oder weniger Items die viel Gold bringen) und dann die Händler Preise anziehen (aufs 3 Fache oder so). Dann wäre das erst "richtig". Und fürs heilen sowie Rasten auch Gold verlangen. |
||
12.07.2002, 17:18 | #9 | ||
"I" Beiträge: 43 |
Naja ich hab noch NIE den SP gerspielt deshalb weis ich das nicht genau. So ist es aber in jedem Spiel gewesen. Am anfang hast du kein Geld für die richtig guten Items und am ende hast du keine Items die du mit dem Geld bezahlen könntest. ;) @Gamain15 Hast du mich vergessen |
||
12.07.2002, 17:38 | #10 | ||
Omega Darkblade Beiträge: 257 |
@Gawain Bei mir wird es bei den Händlern nur +1 Waffen geben. +2 kann man villeicht auch eine bekommen. Aber den Rest muss man sich schwer zusammensuchen. Dsa mit dem Heilen war in BG ganz gut. Könnte man ein Script machen das Automatisch ds Gels abzieht und wenn nicht genug Geld vorhanden ist der Kleriker nen Satz sagt? |
||
12.07.2002, 17:55 | #11 | ||
Gawain15 Beiträge: 1.084 |
Also das geht mit dem Wizard. Hier im Forum gibt es irgendwo das Heilerscript das man bei erfolgte akionen einfügt. Dann machste ne Textzeile z.B. "PC: Ok ich bezahle dir 50 Gold für Heilung bla bla" --> Text erscheint wenn --> Script einfügen: int StartingConditional() { object oPC = GetPCSpeaker(); if(!GetGold(oPC)>50) return FALSE; return TRUE; } Nun erscheint die Textzeile nur wenn der Spieler 50 Gold bei sich aht (den Betrag kannst du ja ändern) am besten machst du noch eine Textzeile in der Art von "Das kann ich mir leider nicht leisten" damit das Gespräch auch enden kann wenn der Spieler keine 50 Gold bei sich trägt. /e: du willst das der NPC eine Textzeile sagt die nur erscheint wenn der Spieler nicht genug gold hat... dann lass nur die Zeile mit Texterscheitn wenn... drin und danach machst du eine NPC antwort "Du hast leider nicht genügend Godl bei dr wie ich sheen kann" Wenn der Spieler nun nicht genug Gold bei sich hat spricht der NPC automatisch die nächste Zeile da der PC keine andere Anwortmöglichkeit hat. Beim Heilungsscript (kuck vorher nach ob da so eine Zeile schon drin ist, ich weiß jetzt nicht mehr ob man was dafür in der Kampagne bezahlen musste... wenn noch so eine Zeile vorhanden ist gibt es Probleme beim Compilern) fügst du folgende Zeile ein (am besten am Anfang nach der ersten Klammer): TakeGoldFromCreature(50, GetPCSpeaker(), FALSE); Das nimmt dem Spieler 50 Gold weg, den Wert kannst du natüröich auch anpassen. |
||
12.07.2002, 18:25 | #12 | ||
Omega Darkblade Beiträge: 257 |
Hmmm... hab ancheinend irgentwas falsch gemacht. Er/Sie heilt mich..nimt das geld aber nicht. Versuches gleich nochma :) |
||
12.07.2002, 18:36 | #13 | ||
Gawain15 Beiträge: 1.084 |
So OK, meine Schuld nich die erste Klammer sondern die erste eckige Klammer... heut verzapf ich nur Scheisse... folgendes bei Erfolgte Aktionen einfügen void FakeRestore(object oTarget); void main() { TakeGoldFromCreature(50, GetPCSpeaker(), FALSE); object oPC = GetPCSpeaker(); object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oPC); object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oPC); object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oPC); object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED,oPC); object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oPC); ActionPauseConversation(); ActionCastFakeSpellAtObject(SPELL_GREATER_RESTORATION, OBJECT_SELF); ActionDoCommand(FakeRestore(oPC)); if(GetIsObjectValid(oHenchman)) { ActionDoCommand(FakeRestore(oHenchman)); // checks to see if they have any cure crital wound potions; if not, creates it on them. if (!GetIsObjectValid(GetItemPossessedBy(oHenchman,"NW_IT_MPOTION003"))) { CreateItemOnObject("NW_IT_MPOTION003",oHenchman,3); } } if(GetIsObjectValid(oAnimal)) { ActionDoCommand(FakeRestore(oAnimal)); } if(GetIsObjectValid(oFamiliar)) { ActionDoCommand(FakeRestore(oFamiliar)); } if(GetIsObjectValid(oDominated)) { ActionDoCommand(FakeRestore(oDominated)); } if(GetIsObjectValid(oSummoned)) { ActionDoCommand(FakeRestore(oSummoned)); } ActionResumeConversation(); } void FakeRestore(object oTarget) { effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION_GREATER); effect eBad = GetFirstEffect(oTarget); //Search for negative effects while(GetIsEffectValid(eBad)) { if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS || GetEffectType(eBad) == EFFECT_TYPE_DEAF || GetEffectType(eBad) == EFFECT_TYPE_CURSE || GetEffectType(eBad) == EFFECT_TYPE_DISEASE || GetEffectType(eBad) == EFFECT_TYPE_POISON || GetEffectType(eBad) == EFFECT_TYPE_PARALYZE || GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL) { //Remove effect if it is negative. RemoveEffect(oTarget, eBad); } eBad = GetNextEffect(oTarget); } if(GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD) { //Apply the VFX impact and effects int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget); effect eHeal = EffectHeal(nHeal); if (nHeal > 0) ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); } ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget); } |
||
12.07.2002, 19:15 | #14 | ||
Omega Darkblade Beiträge: 257 |
Nope... heilt mich, will aber immer noch kein geld |
||
12.07.2002, 19:46 | #15 | ||
Gawain15 Beiträge: 1.084 |
ich hab das vorhin getestet und geht einwandfrei... kuck mal ins Statusfenster (is glaub ich default mäßig unten links in der Ecke) da müsste irgendwas in gelber schrift stehen nachdem er/sie dich geheilt hat sowasi nder art wie "Ihr habt 50 GM verloren". Das heißt du hast den depp bezahlt... /e: blöder Smiley mußte dran glauben :) |
||
12.07.2002, 20:00 | #16 | ||
Omega Darkblade Beiträge: 257 |
Is ja das Prob das sthet ja grad nicht da. Da steht nur der Text den ich angeklcikt habe und dannw erd ich geheilt. Ich probs nochma aus :) [edit] jetzt gehts natürlich wieder Ich bin zu blöd für die Welt [/edit] |
||
12.07.2002, 20:04 | #17 | ||
Gawain15 Beiträge: 1.084 |
alter ich habs eben extra nochmal probiert es funkktioniert ohne Problem! Kopier den Text einfach in ein neues Script bei Erfolgte Aktionen rein und ersetz alles was vorher da drin stand. |
||
12.07.2002, 20:18 | #18 | ||
Gawain15 Beiträge: 1.084 |
So falls du mir nicht glaubst hab ich mal mein kleines rumspiel Modul hochgeladen... da kannst du dir das Script mal ankucken (sprich einfach den Magier an der gerade den Karren mit den Leichen anbetet...) Hier (klick mich) /e: *doh* hast es ja schon hinbekommen... |
||
13.07.2002, 11:52 | #19 | ||
Omega Darkblade Beiträge: 257 |
Das Modul guck ich mir trozdem mal an :) |
||
13.07.2002, 14:36 | #20 | ||
Gawain15 Beiträge: 1.084 |
Äh das Modul benutze ich nur um Scripte auszutesten, da ist nichts drin nur einmal der (noch "alte Version") Würfelspieler und der Heiler der einen Karren anbetet... Achja und ein paar deppen in lila Rüstung (hey lila is cool :) ) |
||
13.07.2002, 14:38 | #21 | ||
Omega Darkblade Beiträge: 257 |
jo die Deppen kriegt man aug lvl1 aber nicht tod der eine hat mir 91 SP gemacht . |
||
13.07.2002, 15:20 | #22 | ||
Gawain15 Beiträge: 1.084 |
lol echt? Mit meinem Waldläufer Stufe 11 hab ich keine Probleme, aber die soll man auch nicht töten, kuck dir das ding mal im Editor an, da sind 2 Trigger, einer spawned Wachen, Magier, Bogenschützen und Hauptmänner. Der andere ein paar Spinnen beim drüberlaufen. Wenn von einer Seite alle tot sind erneuert sich der Trigger nach einer Sekunde wieder und man kann ihn wieder auslösen (kommen neue Monster) is ganz lustig wenn man das so 10 mal macht und dann überall die Beutel auf dem Boden rumliegen... |
||
|