World of Gothic Archiv > NWN-Hilfe
Diebes-XP-Script
Seite 1 von 1  1 
12.08.2002, 16:54 #1
Hanah
Beiträge: 11
Diebes-XP-Script
Moinmoin!
Obwohl dies mein erstes Posting ist, ist mir das Forum nicht fremd. :D
Ich habe im NWN-Forum ein paar Diebes-XP-Scripts gesehen und versucht, sie so umzuwandeln, dass man direkt mit dem Laden des Moduls als Dieb bei Benutzen des Skills anwenden kann. Leider funktioniert es nicht. (Vielleicht hätte ich mich als Scripting-Newbie an was leichteres ranwagen sollen. )
Kann jemand helfen? Hier der Code:

object oPC = GetEnteringObject();
void main()
{
int nPosition;
int nRogueTrue;
for (nPosition = 1; nPosition = 2; nPosition = 3);
nRogueTrue = GetLocalInt(oPC, (GetClassByPosition(nPosition, oPC));
}
if (nRogueTrue = CLASS_TYPE_ROGUE);
{
object oLocked = (OBJECT_TYPE_DOOR, OBJECT_TYPE_PLACEABLE);
if oPC = ActionUseSkill(SKILL_OPEN_LOCK, object oLocked);
{
float EXP_MULTIPLIER = 1.5;
int nLockDC = GetLockUnlockDC(oLocked);
int nXPGain = FloatToInt(IntToFloat(nLockDC) * EXP_MULTIPLIER);
GiveXPToCreature(oPC, nXPGain);
}
object oTrapped = (OBJECT_TYPE_AREA_OF_EFFECT, OBJECT_TYPE_DOOR, OBJECT_TYPE_PLACEABLE);
if oPC = ActioinUseSkill(SKILL_DISABLE_TRAP, object oTrapped);
{
float EXP_MULTIPLIER = 1.5;
int nTrapDC = GetTrapDisarmDC(oTrapped);
int nTrapType = GetTrapBaseType(oTrapped);
string sTrapThreat = "11241233233423443345344534551122123311221122";
int nXPGain = FloatToInt(IntToFloat(nTrapDC) * EXP_MULTIPLIER * StringToFloat(GetSubString(sTrapThreat,nTrapType,1)));
GiveXPToCreature(oPC, nXPGain);
}
}

Danke!
12.08.2002, 17:25 #2
GuradonHellsing
Beiträge: 232

So erstma geordnet
naja man wächst nur an seinen aufgaben:


code\:

void main()
{
object oPC = GetEnteringObject();
int nPosition;
int nRogueTrue;
int nLockDC;
int nXPGain;
int nTrapDC;
int nTrapType;

float EXP_MULTIPLIER ;

string sTrapThreat = "11241233233423443345344534551122123311221122";

object oLocked = GetObjectByTyp(OBJECT_TYPE_DOOR,OBJECT_TYPE_PLACEABLE);
object oTrapped = GetObjectByTyp(OBJECT_TYPE_AREA_OF_EFFECT, OBJECT_TYPE_DOOR, OBJECT_TYPE_PLACEABLE);



//????????
//--------------------------------------------
for (nPosition = 1; nPosition = 2; nPosition = 3)
{nRogueTrue = GetLocalInt(oPC, (GetClassByPosition(nPosition, oPC));
}
if (nRogueTrue == CLASS_TYPE_ROGUE && oPC = ActionUseSkill(SKILL_OPEN_LOCK, object oLocked))
{
EXP_MULTIPLIER = 1.5;
nLockDC = GetLockUnlockDC(oLocked);
nXPGain = FloatToInt(IntToFloat(nLockDC) * EXP_MULTIPLIER);
GiveXPToCreature(oPC, nXPGain);
}

if oPC = ActioinUseSkill(SKILL_DISABLE_TRAP, object oTrapped);
{
EXP_MULTIPLIER = 1.5;
nTrapDC = GetTrapDisarmDC(oTrapped);
nTrapType = GetTrapBaseType(oTrapped);

nXPGain = FloatToInt(IntToFloat(nTrapDC) * EXP_MULTIPLIER * StringToFloat(GetSubString(sTrapThreat,nTrapType,1)));
GiveXPToCreature(oPC, nXPGain);
}


mh das ist nix gegen dich aber da sind recht grobe syntax fehler drin wiedermal mein standard tipp geh auf www.c-plusplus.de und lies dir ein grundlagen tutorial durch weil dieses zusammen packen bringt nix weil du ja nicht verstehst was du schreibst.


___________________________

visite NWN Scripts
-------------------------------
http://nwvault.ign.com/
http://www.nwndev.de.vu/
http://nwn.lyoness.com/
http://www.reapers.org/nwn/reference/
-------------------------------
Forgotten Book
http://www.ribenschi.de/
--------------------------------
Mein Mod wo ich mitarbeite
http://talos.redclaw-network.de/
--------------------------------[/font]
12.08.2002, 18:29 #3
Hanah
Beiträge: 11

Gemacht. Habe mir gerade ein Tutorial runtergeladen. (Das zu C.)

Obwohl Du wahrscheinlich recht hast mit dem nicht verstehen, ist es nicht so, als wenn ich mir nichts dabei gedacht hätte.
Wenn ich Dich recht verstehe, wird es so, wie es jetzt ist, trotzdem nicht funzen, oder?
12.08.2002, 19:30 #4
GuradonHellsing
Beiträge: 232

ne und ich hab auch nicht die zeit momentan mir alles reinuzuziehen
lies dir am besten erstma das tut durch und dann den scripting kurs auf nwnvault siehe meine sig
dann versuchte das selbst zu scripten und dann wenns problemegibt wendeste dich wieder hier ins forum aber es hat keinen sinn sich jedes script von jemand anderes erstellen zulassen wenn man nich wenigstens im ansatz versteht wie es funktioniert so kann man auch nich sagen was das script tuen soll und so kann dir auch keiner helfen,aber keine sorge du bist nicht der erste user hier im board,der das problem hat ......
14.08.2002, 15:25 #5
Hanah
Beiträge: 11

Wie kommt es nur, dass ich mich von Deinen KOmmentaren angegriffen fühle?
;)
14.08.2002, 15:43 #6
Rhaegar
Beiträge: 296

Nimm's nicht so schwer, er hat's sicher nicht böse gemeint.
Und er hat absolut recht, wenn er dir den Tipp gibt dich selbst mit Skripten zu beschäftigen, da man es beim Erschaffen eines Moduls eigentlich ständig braucht. Und wenn du dann jedesmal 12 Stunden in einem Forum auf das Skript warten musst ist das eben nicht so optimal :) !

Zum Thema:
Was immer dieses "Machwerk" (nicht Böse gemeint ;) ) anstellt. Es funktioniert ganz sicher nicht :D !
Wo steht eigentlich dieses Skript bzw. von wo aus wird es aufgerufen?

Beschreib' mal, was du genau willst und ich schau was sich machen lässt...

Ich würd' das Ganze jedenfalls so machen:
code\:

void main()
{
int nDc=GetLockUnlockDC(OBJECT_SELF);
int nFactor=2;//hier regelst du die erhaltenen Xp
int nXp=nDc*nFactor;
object oOpener=GetLastUnlocked();
GiveXPToCreature(oOpener,nXp);
}


..ins Unlock-Script eines verschlossenen Gegenstandes

code\:

void main()
{
int nDc=GetTrapDisarmDC(OBJECT_SELF);
int nFactor=2;//hier regelst du die erhaltenen Xp
int nXp=nDc*nFactor;
object oDisarmer=GetLastDisarmed();
GiveXPToCreature(oDisarmer,nXp);
}


..ins OnDisarm-Script der Falle.

Ist zwar anfangs etwas umständlich jeden Gegenstand und jede Falle damit auszustatten, aber wozu kann man schliesslich Vorlagen erstellen?
14.08.2002, 16:13 #7
Hanah
Beiträge: 11

Danke für den Tip. ;)
Ich arbeite gerade ein Buch mit dem Titel: "easy C++" durch und hoffe, danach mehr machen zu können.
Scripte, die ich bei Schlössern oder Fallen einfügen kann, habe ich schon. die funzen auch. Meine Idee war es, bei OnEnter des Moduls gleich die Anweisung zu geben, dass ein PC, der die Talente "Fallen entschärfen" und "Schlösser öffnen" benutzt, von vornherein die Möglichkeit bekommt, Erfahrungspunkte zu sammeln, ohne dass ich das jedesmal neu eingeben muss.
14.08.2002, 16:21 #8
Rhaegar
Beiträge: 296

Also im OnEnter-Script ist sowas AFAIK nicht zu realisieren.

Denn das wird ja nur einmal ausgeführt, eben ganz am Anfang und danach schläft es den Schlaf der Gerechten.

Und die anderen Slots eignen sich auch nicht sonderlich, da es ja keinen OnUnlockPlacable Slot oder Ähnliches gibt.

Am ehesten würde sich noch OnUserDefined eignen, aber den müsste man auch auslösen, was man wiederrum über die Unlock/Disarm-Slots bei den einzelnen Placables machen müsste, womit wir wieder beim Anfang wären.

Du könntest höchstens im Heartbeat-Skript alle 6 Sekunden sämtliche Behälter und Fallen nach ihrem letzten Unlocker/Disarmer abfragen und diesem dann die XP zukommen lassen, aber das würde vermutlich tierisch auf die Performance drücken (und ich weiss auch nicht, ob man ausserhalb des OnUnlock/OnDisarm-Events überhaupt ohne weiteres an die Unlocker/Disarmer rankommt).
Guradon möge mich berichtigen, wenn ich total danebenliege, ich lerne immer gerne dazu :) .
14.08.2002, 16:43 #9
GuradonHellsing
Beiträge: 232

Mh also zu dem oben gesagten mit onenter wer es möglich wenn man
eben scheckt ober der pc die talente besitzt und wenn ja weist man ihm einfach ne variable zu die muss man dann bei jeder kiste truhe etc. abfragen.

Aber Prinzipiell ist Rhaegars Variante (für schlösser und fallen)
wohl die beste.

Ansonsten könnte man ja auch immer beim disarmen und unlocken kleines script setzten dasn zähler um 1 erhöht und am area ausgang einen trigger der dan anhand der geöffneten fallen und schlösser exp gibt...
14.08.2002, 17:00 #10
Hanah
Beiträge: 11

Obwohl ich die Kritk ernst nehme und weiter an dem Buch arbeite, habt Ihr zwei mir ne Menge Arbeit erspart! Wenn man solche Dinge nicht im OnEnterScript einfach hinbiegen kann, putz ich mir auch mal all die anderen kleinen Änderungen, die mir im Koopf rumschwirren, von der Backe!
:D

Vielen Dank!
Seite 1 von 1  1