Benutzer-Werkzeuge

Webseiten-Werkzeuge


Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
quickstart:spacer:mobsplatzieren:ocmobswitch [2016/02/08 13:32]
85.180.75.135 [1. Einstellungen]
quickstart:spacer:mobsplatzieren:ocmobswitch [2016/02/09 23:50]
zollaidal
Zeile 1: Zeile 1:
 +
  
 ====== oCMobSwitch ====== ====== oCMobSwitch ======
- 
- 
- 
-.............................................................{{:​spacer:​omega7497construction.gif|}} 
- 
  
   * Vorkenntnisse und das Verstehen des Einbaus eines Standard-Mobs (oCMobInter) wären von Vorteil.   * Vorkenntnisse und das Verstehen des Einbaus eines Standard-Mobs (oCMobInter) wären von Vorteil.
Zeile 15: 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. Einstellungen ​===== +===== 1. Einsetzen ​=====
  
   * **1.1.0 oCVob(abstract) -> oCMob -> oCMobInter -> oCMobSwitch**   * **1.1.0 oCVob(abstract) -> oCMob -> oCMobInter -> oCMobSwitch**
Zeile 22: Zeile 17:
 {{:​quickstart:​spacer:​mobsplatzieren:​12_switch.jpg|}} {{:​quickstart:​spacer:​mobsplatzieren:​12_switch.jpg|}}
  
-1.1.0 - Einstellungen und Eintragungen im Objektfenster +===== 2.Einstellungen ===== 
-  * vobName:​SPEZIELLER_NAME - Falls man den Schalter aufrufen möchte, bspw. mit **Ikarus**\\ [[http://​forum.worldofplayers.de/​forum/​threads/​1299679-Skriptpaket-Ikarus-4]]+ 
 +2.0.0 - Einstellungen und Eintragungen im Objektfenster 
 + 
 +  ​* **vobName:**SPEZIELLER_NAME - Falls man den Schalter aufrufen möchte, bspw. mit **Ikarus**\\ [[http://​forum.worldofplayers.de/​forum/​threads/​1299679-Skriptpaket-Ikarus-4]]
  
   * **cdDyn:​**TRUE - erzeugt Kollision, wird benötigt, wenn man einen Schalter mit Fernwkampfwaffe beschiesst. Zum normalen betätigen eines Schalters durch einen Pc/Npc benötigt man keine Kollision, da ja der Schalter per Animation des Mobs bewegt wird.   * **cdDyn:​**TRUE - erzeugt Kollision, wird benötigt, wenn man einen Schalter mit Fernwkampfwaffe beschiesst. Zum normalen betätigen eines Schalters durch einen Pc/Npc benötigt man keine Kollision, da ja der Schalter per Animation des Mobs bewegt wird.
 +
   * **vobFarClipZScale:​**1 - __vorgegebene Einstellung__ = 1, Das sollte man zumindest bei einem Schalter so belassen.   * **vobFarClipZScale:​**1 - __vorgegebene Einstellung__ = 1, Das sollte man zumindest bei einem Schalter so belassen.
-    * Wenn ihr ein wichtiges Vob/Mob hättet in einem grossen Saalund dieses wird ausgeblendet,​ wenn ihr euch zum Rande des Saales bewegt, dann kann man diesen Wert auf 2 oder 3 ändern (nicht höher, bringt nichts) und das entsprechende Mob/Vob wird später ausgeblendet bei zunehmender Entfernung zum Player. +    * Wenn ihr ein wichtiges Vob/Mob hättet in einem grossen Saal und dieses wird ausgeblendet,​ wenn ihr euch zum Rande des Saales bewegt, dann kann man diesen Wert auf 2 oder 3 ändern (nicht höher, bringt nichts) und das entsprechende Mob/Vob wird dann erst später ausgeblendetbei zunehmender Entfernung zum Player.
-  * focusName  ​+
  
-=====2Switch mit FKW beschiessen=====+  * **focusName:​**MOBNAME_SWITCH (dieser focusName sollte in der Datei Text.d schon eingetragen sein.)
  
-2.0.0 - Man kann mit einem Schalter ein nettes Feature bauenwo man mit dem Bogen bspw. einen Schalter beschiesstder dann auslöstBeispiel ​eine Zielscheibe beschiessen+  * **triggerTaget:​** wird benötigtwenn ihr mit dem Schalter z.B. einen Mover auslösen wolltohne ein Script zu nutzen/​schreiben,​ sondern das direkt hier im Spacer verlinken wolltDann zeigt der Spacer ​eine "blaue Linie" zwischen Schalter und dem verlinkten Objekt, in diesem Falle einem Mover.
  
-  * 2.0.1 Zielscheibe setzen als Vob (Kollission geben)+{{:​quickstart:​spacer:​mobsplatzieren:​14_switch.jpg|}} ​{{:​quickstart:​spacer:​mobsplatzieren:​15_switch.jpg|}}
  
-  * 2.1.0 - Schalter setzen (Touchplate_Stone) +  * **useWithItem:​** hier könnte man eine Item_Instance ​eintragen, dann müsste ​der Npc dieses Item besitzen, um das Mob zu betätigen
-  ​2.1.1 - Den Schalter so positionieren,​ dass das Koordinatenkreuz in der Mitte vor der Zielscheibe sitzt, der Schalter also überhalb der Zielscheibe sich befindet. (Schalterrichtung = Schussrichtung) +
-  ​2.1.2 - Dem Schalter das Visual nehmen (FALSE) +
-  ​2.1.3 - Schalter ​eintragen ​FocusOverride = TRUE (Sonst kann der Bogen oder Crossbow ​das Ziel nicht erfassen.) +
-  * 2.1.4 - Schalter mit focusname:​MOBNAME_ZIELSCHEIBE versehen. +
-    * - focusName in der Datei Text.d eintragen - const string MOBNAME_ZIELSCHEIBE = "​Zielscheibe";​ +
-  * 2.1.5 - Der Schalter ist nur ein Fake und hat mit dem gezählten Treffer nichts ​zu tun. Er gibt lediglich den Namen an (Zielscheibe) und lenkt den Pfeil auf sein Koordinatenkreuz (gelb,​braun,​ weiss).+
  
-3.0.0 Jetzt wird der Einschlag registriert ....+  * **conditionFunc:​** Hier könte man ein Script aufrufen ​**conditionFunc ​wird vor onStateFunc gelesen**  
 +    * Beispiel für den Eintrag im Spacer Objektfenster - __B_MYSWITCH__ (GROSSBUCHSTABEN)
  
-  ​3.0.1 - Triggerscript setzen. ​ +    ​Beispiel für das Script 
-    ​* Boundingbox mindestens 20x20x20, sonst reagiert ​der Trigger eventuell nicht auf den Pfeil. Jetzt kommt es darauf an was man will, je kleiner die Boundingbox,​ desto mehr Fehlschüsse und umgekehrt, je grösser, desto mehr TrefferDabei ist die Tiefe der Box von entscheidender Bedeutung. Wenn der Pfeil in einen Würfel einschlägtwird er eher registriert,​ als wenn du auf eine dünne Boundingbox_Scheibe schiesst. Da wird der Treffer eventuell gar nicht registriert+<​code>​func int B_MYSWITCH() 
-   ​+{  
 +  if (Npc_IsPlayer(PC_Hero))  
 +   ​{ ​ 
 +    ​Wld_SendTrigger("​MYMOVER"​);​  
 +    return TRUE; 
 +   } 
 +  else 
 +   { 
 +    return FALSE 
 +   }; // Nur der Hero darf den Switch bedienen 
 +};</​code>​ 
 +  * **onStateFunc** ​ Auch hier könnte ​man ein Script aufrufenWelche Art von Script ihr wählthängt von der jeweiligen Situation und euren Bedürfnissen ab
 +    * Beispiel für den Eintrag im Spacer Objektfenster - __MYSWITCH__ (GROSSBUCHSTABEN & KEIN _S1)
  
 +    * Beispiel für das Script
 +<​code>​func void MYSWITCH_S1() // Dieses S1 muss ins Script, in besonderen Fällen kann man auch S0 aufrufen
 +{
 +  Wld_SendTrigger("​MYMOVER"​);​
 +};</​code>​
  
 +  * **rewind:​TRUE** Diese Einstellung sollte man bei oCMobSwitch im Normalfalle auf "​TRUE"​. Ansonsten der Schalter bei der nächsten Betätigung nicht reagiert, sondern ers wieder bei der übernächsten Betätigung.
  
 +=====3. Switch mit FKW beschiessen=====  ​
 + ​(Fernkampfwaffe Bogen oder Armbrust)
  
 +**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**
  
- +  * 3.0.1 - Zielscheibe setzen als Vob (Kollission geben)
  
-    ​ +  * 3.1.0 - Schalter setzen (__Touchplate_Stone__) 
-    ​+  * 3.1.1 - Den Schalter so positionieren,​ dass das Koordinatenkreuz in der Mitte vor der Zielscheibe sitzt, der Schalter also __** direkt vor**__ der Zielscheibe sich befindet. (Schalterrichtung = Schussrichtung) 
 +  * 3.1.2 - **Objectfenster - Einträge** 
 +    ​* - __showVisual:​FALSE__ - den Schalter sollte man nicht sehen, wir beschiessen ja die Zielscheibe) 
 +    * - __focusOverride:​TRUE__ - (Sonst kann der Bogen oder Crossbow das Ziel nicht erfassen.) 
 +    * - __focusname:​MOBNAME_ZIELSCHEIBE__ 
 +      * focusName in der Datei Text.d eintragen <​code>​const string MOBNAME_ZIELSCHEIBE = "​Zielscheibe";</​code>​
  
-    ​3.  +  * 3.1.3 - Der Schalter ist nur ein Fake und hat mit dem gezählten Treffer nichts zu tunEr gibt lediglich den Namen an (Zielscheibe) ​und lenkt den Pfeil auf sein Koordinatenkreuz (gelb,braunweiss).
-    3.a Boundingbox in die Mitte vor der Zielscheibe setzen +
-    ​3.b Triggerscript auf Damage = True setzen, ​(reagiert nur auf Bolzen ​und Pfeile, nicht auf Schwert etc ..) +
-    PC = FalseNPC = Falsesonst kann das durch körperliche Berührung ausgelöst werden.+
  
-    Jetzt sollte das funzen.+**3.2.0 - Einschlag registrieren ....**
  
-    ​Damit das beim Schiessen nicht so langweilig wird würde ich einen Treffer Zufallsgenerator einbauen. +  * 3.2.1 - Triggerscript setzen.  
-    Code:+    * Boundingbox mindestens 20x20x20, sonst reagiert der Trigger eventuell nicht auf den Pfeil. Jetzt kommt es darauf an was man will, je kleiner die Boundingbox,​ desto mehr Fehlschüsse und umgekehrt, je grösser, desto mehr Treffer. Dabei ist die __Tiefe der Box von entscheidender Bedeutung__. Wenn der Pfeil in einen Würfel einschlägt,​ wird er eher registriert,​ als wenn du auf eine dünne Boundingbox Scheibe schiesst. Da wird der Treffer eventuell gar nicht registriert. 
 +  * 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.
  
-    ​func void ZIELSCHEIBE()+  *3.3.1 - Script Trefferquote Zufallsgenerator 
 +  *<​code> ​   ​func void ZIELSCHEIBE() ​//​**Scripfunc des Triggers**
     {     {
-         ​zufall_zielscheibe ​= Hlp_Random (5)+1+     var int zufall; zufall=Hlp_Random(6); 
-         ​if (zufall_Zielscheibe ​== 1) +      if (zufall ​== 0) { PRINT("​10"​);​};​  
-         { +      if (zufall ​== 1) { PRINT( "​7"​);​}; ​    
-           PRINT("​10"​);​ +      if (zufall ​== 2) { PRINT( "​9"​);​}; ​    
-         }; +      if (zufall ​== 3) { PRINT( "​8"​);}
-         ​if (zufall_Zielscheibe ​== 2) +      if (zufall == 4) { PRINT( "​3"​); ​}; 
-         { +      if (zufall ​== 5) { PRINT("​KEIN TREFFER"​);​};​
-           PRINT("​7"​);​ +
-         };     +
-         ​if (zufall_Zielscheibe ​== 3) +
-         { +
-           PRINT("​9"​);​ +
-         };     +
-         ​if (zufall_Zielscheibe ​== 4) +
-         { +
-           PRINT("​8"​);​ +
-         ​}; +
-         ​if (zufall_Zielscheibe ​== 5) +
-         { +
-           PRINT("​KEIN TREFFER"​);​ +
-         }; +
     };     };
 +  *</​code>​
  
-    ​Vielleicht noch die Zehn als Count hochzählen und wer die 3te Zehn geschossen hat, hat genug geübt und kann seine Belohnung abholen? +  *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)
- +
-    EDIT WICHTIG Den Scriptfunc vom Trigger benutzen, nicht den vom Schalter und den Schalter mit dem Trigger nicht verlinken.  +
- +
- +
  
 +**WICHTIG - Den Scriptfunc vom Trigger benutzen und den Schalter mit dem Trigger nicht verlinken.** ​
  
  
quickstart/spacer/mobsplatzieren/ocmobswitch.txt · Zuletzt geändert: 2018/04/28 07:18 von 79.239.17.78