World of Gothic Archiv > NWN-Hilfe
Zufällige items in Truhen
Seite 1 von 1  1 
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...
Seite 1 von 1  1