Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
quickstart:spacer:mobsplatzieren:ocmobswitch [2026/08/21 05:18] 43.173.179.127 alte Version wiederhergestellt (2026/08/15 02:32) |
quickstart:spacer:mobsplatzieren:ocmobswitch [2026/08/27 06:05] (aktuell) 43.173.180.12 alte Version wiederhergestellt (2026/08/17 07:50) |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | |||
| ====== oCMobSwitch ====== | ====== oCMobSwitch ====== | ||
| Zeile 10: | Zeile 11: | ||
| *Eine Empfehlung von mir: Wer seine Schalter als oCMobSwitch setzt, findet sie im Object_**List**_Fenster im Ordner oCMobSwitch bequem wieder, wenn sie als ocMobInter gesetzt sind, dann sind die Schalter durcheinander gemixt und man muss sie mühselig suchen, zwischen Kochkesseln und Bänken und Stühlen... etc. | *Eine Empfehlung von mir: Wer seine Schalter als oCMobSwitch setzt, findet sie im Object_**List**_Fenster im Ordner oCMobSwitch bequem wieder, wenn sie als ocMobInter gesetzt sind, dann sind die Schalter durcheinander gemixt und man muss sie mühselig suchen, zwischen Kochkesseln und Bänken und Stühlen... etc. | ||
| + | ===== 1. Einsetzen ===== | ||
| * **1.1.0 oCVob(abstract) -> oCMob -> oCMobInter -> oCMobSwitch** | * **1.1.0 oCVob(abstract) -> oCMob -> oCMobInter -> oCMobSwitch** | ||
| Zeile 15: | Zeile 17: | ||
| {{: | {{: | ||
| - | 1.1.0 - Einstellungen und Eintragungen im Objektfenster | + | ===== 2.Einstellungen ===== |
| - | * vobName: | + | |
| + | 2.0.0 - Einstellungen und Eintragungen im Objektfenster | ||
| + | |||
| + | | ||
| * **cdDyn: | * **cdDyn: | ||
| + | |||
| * **vobFarClipZScale: | * **vobFarClipZScale: | ||
| - | * Wenn ihr ein wichtiges Vob/Mob hättet in einem grossen Saal, und dieses wird ausgeblendet, | + | * Wenn ihr ein wichtiges Vob/Mob hättet in einem grossen Saal und dieses wird ausgeblendet, |
| - | * focusName | + | |
| + | * **focusName: | ||
| + | * **triggerTaget: | ||
| - | ====== Schalter mit FKW beschiessen ====== | + | {{: |
| - | Man kann mit dem Schalter ein nettes Feature bauen, wo man mit dem Bogen bspw. einen Schalter beschiesst, der dann auslöst. Beispiel eine Zielscheibe beschiessen | + | * **useWithItem: |
| - | 1. Zielscheibe setzen als Vob (Kollission geben) | + | |
| - | 2. Schalter setzen (Touchplate_Stone) | + | * **conditionFunc: |
| - | 2.a Den Schalter so positionieren, | + | |
| - | | + | |
| - | 2.c Schalter eintragen FocusOverride = TRUE (Sonst kann der Bogen oder Crossbow das Ziel nicht erfassen.) | + | |
| - | 2.d Schalter mit Focusname = Zielscheibe versehen. | + | |
| - | | + | |
| + | < | ||
| + | { | ||
| + | if (Npc_IsPlayer(PC_Hero)) | ||
| + | { | ||
| + | Wld_SendTrigger(" | ||
| + | return TRUE; | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | return FALSE | ||
| + | }; // Nur der Hero darf den Switch bedienen | ||
| + | };</ | ||
| + | * **onStateFunc** | ||
| + | * Beispiel für den Eintrag im Spacer Objektfenster - __MYSWITCH__ | ||
| - | | + | |
| + | < | ||
| + | { | ||
| + | Wld_SendTrigger(" | ||
| + | };</ | ||
| - | 3. Triggerscript setzen. Boundingbox mindestens 20x20x20, sonst reagiert der Trigger eventuell nicht auf den Pfeil. Jetzt kommt es darauf an was man will, je kleiner die Boundingbox, | + | * **rewind: |
| - | 3.a Boundingbox in die Mitte vor der Zielscheibe setzen | + | |
| - | 3.b Triggerscript auf Damage = True setzen, (reagiert | + | |
| - | PC = False, NPC = False, sonst kann das durch körperliche Berührung ausgelöst werden. | + | |
| - | Jetzt sollte das funzen. | + | =====3. Switch mit FKW beschiessen===== |
| + | | ||
| - | Damit das beim Schiessen nicht so langweilig wird würde ich einen Treffer Zufallsgenerator einbauen. | + | **3.0.0 - Man kann mit einem Schalter ein nettes Feature bauen, wo man mit dem Bogen bspw. einen Schalter beschiesst, der dann auslöst. Beispiel eine Zielscheibe beschiessen** |
| - | Code: | + | |
| - | func void ZIELSCHEIBE() | + | * 3.0.1 - Zielscheibe setzen als Vob (Kollission geben) |
| - | { | + | |
| - | | + | |
| - | if (zufall_Zielscheibe == 1) | + | |
| - | { | + | |
| - | | + | |
| - | }; | + | |
| - | if (zufall_Zielscheibe == 2) | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | if (zufall_Zielscheibe == 3) | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | if (zufall_Zielscheibe == 4) | + | |
| - | { | + | |
| - | | + | |
| - | }; | + | |
| - | if (zufall_Zielscheibe == 5) | + | |
| - | { | + | |
| - | PRINT("KEIN TREFFER" | + | |
| - | }; | + | |
| - | }; | + | * 3.1.0 - Schalter setzen (__Touchplate_Stone__) |
| + | * 3.1.1 - Den Schalter so positionieren, | ||
| + | * 3.1.2 - **Objectfenster - Einträge** | ||
| + | * - __showVisual: | ||
| + | * - __focusOverride: | ||
| + | * - __focusname: | ||
| + | * focusName in der Datei Text.d eintragen < | ||
| - | Vielleicht noch die Zehn als Count hochzählen | + | * 3.1.3 - Der Schalter ist nur ein Fake und hat mit dem gezählten Treffer nichts zu tun. Er gibt lediglich den Namen an (Zielscheibe) |
| - | EDIT WICHTIG Den Scriptfunc vom Trigger benutzen, nicht den vom Schalter und den Schalter mit dem Trigger nicht verlinken. | + | **3.2.0 - Einschlag registrieren ....** |
| + | * 3.2.1 - Triggerscript setzen. | ||
| + | * Boundingbox mindestens 20x20x20, sonst reagiert der Trigger eventuell nicht auf den Pfeil. Jetzt kommt es darauf an was man will, je kleiner die Boundingbox, | ||
| + | * 3.2.2 - Boundingbox direkt in die Mitte __**vor**__ der Zielscheibe setzen. | ||
| + | * 3.2.3 - Triggerscript auf Damage = True setzen, (reagiert nur auf Bolzen und Pfeile, nicht auf Schwert etc ..) | ||
| + | |||
| + | **3.3.0 - Treffer generieren** - Damit das beim Schiessen nicht so langweilig wird würde ich einen Treffer Zufallsgenerator einbauen. | ||
| + | *3.3.1 - Script Trefferquote Zufallsgenerator | ||
| + | *< | ||
| + | { | ||
| + | var int zufall; zufall=Hlp_Random(6); | ||
| + | if (zufall == 0) { PRINT(" | ||
| + | if (zufall == 1) { PRINT( " | ||
| + | if (zufall == 2) { PRINT( " | ||
| + | if (zufall == 3) { PRINT( " | ||
| + | if (zufall == 4) { PRINT( " | ||
| + | if (zufall == 5) { PRINT(" | ||
| + | }; | ||
| + | *</ | ||
| + | *3.3.2 - Vielleicht noch jede getroffene Zehn als Count hochzählen und wer genug Zehner geschossen hat, hat auch genügend geübt und kann seine Belohnung abholen? (Talent hochsetzen) | ||
| + | **WICHTIG - Den Scriptfunc vom Trigger benutzen und den Schalter mit dem Trigger nicht verlinken.** | ||