Gotowe klasy - [UT'99] Authorizer - trigger na klucze by Raven dnia: 20 Kwiecien 2008, 13:02
     Opis
Jest to zwykly trigger na klucze. W celu otwarcia go, gracz musi miec odpowiedni klucz. Klasa klucza musi byc podklasa Inventory.

     Zmienne
Widoczne
class KeyClass: klasa klucza (najlepiej z inventory)
bool bDestroyKey: jesli wartosc zmiennej bedzie równa true, to klucz zostanie zniszczony zaraz po wejsciu gracza na trigger
bool bCheckKeyOnceOnly: jesli wartosc zmiennej bedzie równa true, to trigger stanie sie normalny zaraz po znalezieniu klucza
bool bShowSuccessMessage: jesli wartosc zmiennej bedzie równa true, to trigger bedzie pokazywal informacje o znalezieniu klucza
bool bShowFailtureMessage: jesli wartosc zmiennej bedzie równa true, to trigger bedzie pokazywal informacje o braku klucza
localized String SuccessMessage: wiadomosc o znalezieniu klucza
localized String FailtureMessage: wiadomosc o braku klucza

Ukryte
bool bWasOpened: przyjmuje wartosc true tylko jesli klucz zostal znaleziony i zmienna bCheckKeyOnceOnly ma takze wartosc true

Unreal Script:
  1. //=================================================
  2. // Authorizer: This Trigger can replace
  3. // KeyMover (as base I use KeyMover avidible
  4. // form http://chimeric.beyondunreal.com/tutorials/tut11.html).
  5. //=================================================
  6. // by Raven
  7. // http://turniej.unreal.pl/rp
  8. // for The Chosen One SP mod
  9. //=================================================
  10. class Authorizer extends Trigger;
  11.  
  12. var() class< Inventory > KeyClass;
  13. var() bool bDestroyKey;
  14. var() bool bCheckKeyOnceOnly;
  15. var() bool bShowSuccessMessage;
  16. var() bool bShowFailtureMessage;
  17. var() localized String SuccessMessage;
  18. var() localized String FailtureMessage;
  19. var bool bWasOpened;
  20.  
  21. replication
  22. {
  23.         // Variables the server should send to the client.
  24.         reliable if( Role==ROLE_Authority )
  25.                 bWasOpened;
  26. }
  27.  
  28. function Touch( actor Other )
  29. {
  30.         local Inventory key;
  31.         local actor A;
  32.  
  33.         if (Other.IsA('Pawn') && KeyClass != none && !bWasOpened)
  34.         {
  35.                 key = Pawn(Other).FindInventoryType(KeyClass);
  36.  
  37.                 if (key != none && Event != '' && !bCheckKeyOnceOnly)
  38.                         foreach AllActors( class 'Actor', A, Event )
  39.                                 A.Trigger( Other, Other.Instigator );
  40.  
  41.                 if(bDestroyKey)
  42.                         if(!bWasOpened) Pawn(Other).DeleteInventory(key);
  43.                 if(bCheckKeyOnceOnly)
  44.                         bWasOpened=true;
  45.         }
  46.         if(bWasOpened && Event != '')
  47.                 foreach AllActors( class 'Actor', A, Event )
  48.                         A.Trigger( Other, Other.Instigator );
  49.         if(bShowSuccessMessage && PlayerPawn(Other) != none)
  50.                 PlayerPawn(Other).ClientMessage(SuccessMessage);
  51.         if(bShowFailtureMessage && !bWasOpened)
  52.                 PlayerPawn(Other).ClientMessage(FailtureMessage);
  53. }
  54.  
  55. defaultproperties
  56. {
  57.      bShowFailtureMessage=True
  58.      SuccessMessage="Access granded."
  59.      FailtureMessage="You need a key to open this door."
  60. }