World of Gothic Archiv > Editing
Waffen abgeben
Seite 1 von 1  1 
07.10.2003, 12:23 #1
Makador
Beiträge: 431
Waffen abgeben
Ich würde gerne eine Wache baun, die einem in einem Dialog alle Waffen abnimmt. Das Problem dabei ist, der Hero kann ja jede beliebige Waffe bei sich haben und daher bräuchte ich ein Skript, dass wirklich alle Waffen erkennt.

Gibt es sowas, bzw. ist es überhaupt möglich?
07.10.2003, 13:38 #2
LigH
Beiträge: 241

So nach dem Motto: "In dieser Taverne ist das Tragen von Waffen verboten - bitte geben Sie sie am Eingang ab"? Na, hoffentlich werden sie beim Verlassen wieder herausgegeben...
07.10.2003, 15:18 #3
Makador
Beiträge: 431

Genau so meine ich dass ;)

Wär ja nicht schlimm, wenn es nicht möglich ist, würde aber was zum Flair beitragen wenns klappt.

Btw suche ich noch etwas anderes:
Ich wollte eine If-Abfrage in den Wait Loop eines NPcs einsetzen. Diese soll den Npc dazu bringen nach einem bestimmten Gespräch um eine bestimmte Uhrzeit am Lagerfeuer zu stehen.

code\:

if (Wld_IsTime(23,00,00,00) >= time <= Wld_IsTime(00,00,03,00) && Kjanwaerter ==1 )
{
AI_GotoWP (self, ORK_LAGER_10_03);
}



Was muss ich für time einsetzen? Ich finde einfach nirgendwo einen Befehl wo die Zeit abgefragt wird.

Eigentlich wollte ich das ganze nur so wie hier einfügen, aber irgendwie mochte er dass nicht... bzw. es tut sich nix (bleibt alles beim alten).

code\:
func void Rtn_Start_666 ()
{
if (Kjanwaerter == 0) {
TA_MeisterLuDorWait (0,00,13,00, "ORK_LAGER_09_04");
TA_MeisterLuDorWait (13,00,0,00, "ORK_LAGER_09_04");
}
else {
TA_MeisterLuDorWait (02,00,23,00, "ORK_LAGER_09_04");
TA_MeisterLuDorWait (23,00,2,00, "ORK_LAGER_10_03");
};
};
07.10.2003, 15:53 #4
GülleMüller
Beiträge: 472

High,
Tja du mußt dir wohl oder übel eine solche Funktion selber basteln. Schau mal in externals.d nach den Itemfunktionen, denn damit geht es. Allerdings sollte sicher auch gespeichert werden, welche und wieviele Waffen der hero besitzt, um sie ihm später wieder zu geben.

Aber damit du nicht ganz im dunkeln stehst mal ein Beispiel wie ich es realisieren würde:
code\:

void R_RemoveWeapons (C_NPC vict)
{
// alle Waffen ablegen
AI_UnequipWeapons (vict);

// gib mir die Waffe im ersten Slot (in item gespeichert)
int numWeapon = Npc_GetInvItemBySlot(vict,INV_WEAPON,1);

// sollte geprüft werden, weil die Waffenkategorie leer sein kann
if(Hlp_IsValidItem(item))
{
// ist item ein Knüppel?
if(Hlp_GetInstanceID(item) == ItMw_1H_Club_01)
{
// erhöhe Knüppelvariable (sollte nur geschehen, wenn
// vict der Spieler selbst ist)
HeroKnueppel += 1;
Npc_RemoveInvItem (vict,ItMw_1H_Club_01);
}
else { ...}
...
};
};



Diese Funktion müßte allerdings mehrmals aufgerufen werden,z.B. in einem TA, um alle Waffen zu entfernen. Besser ist vielleicht dem Hero alle Waffen ablegen zu lassen (mittels AI_UnequipWeapons(self);).
Naja, eigentlich fänd ich es schon goil, wenn der Türsteher sich erstmal in seinem TA um deine Waffen "kümmert" ;)

cu
GüMü

[EDIT]
quote:
if (Wld_IsTime(23,00,00,00) >= time <= Wld_IsTime(00,00,03,00) && Kjanwaerter ==1 )

Ohoh, da haben wir aber einen ganz bösen Logikbug ;)
Besser: if(Wld_IsTime(23,00,03,00) && Kjanwaerter)
Weil, "// Liefert "1" wenn aktuelle Weltzeit zwischen den beiden angegebenen Zeiten liegt (von - bis)"

So, und die Rtn_Start_666 wird nur aufgerufen, wenn der NPC einen Npc_ExchangeRoutine() darauf bekommt, oder er mit dieser Funktion startet.

Um ihn ans LF zu setzen erstellen einen neuen TA Rtn_WaitLF_666 und wenn die o.g. Abfrage erfolgreich war machst du Npc_ExchangeRoutine(self,"WAITLF"); .

[/EDIT]
07.10.2003, 16:03 #5
Makador
Beiträge: 431

Hm naja... ich werds erstmal rauslassen. Ist ja nur Feinarbeit und ich hab noch n riesen Menge anderer Skript Arbeit vor mir. Wenn der Rest fertig ist, werd ich es einmal probieren.
Seite 1 von 1  1