TXT - Wiki

Svety sú piesok vo vetre...

Nástroje používateľa

Nástoje správy stránok


problematika_leave_meet_enter_akcii

Problematika leave/meet/enter akcii


Akcie #meet/#leave definovane objektom a pre miestnosti #enter/#leave akcie sa volaju pri roznych prilezitostiach.
Sposob detekovania o aku situaciu sa jedna nie je uplne jednoduchy.
Je to mozne urobit kontrolou systemovych premennych $rom_exec_executor,$rom_exec_owner a $rom_exec_owner_action.

Kedze to nie je uplne intuitivne tak urcite stoji za vyskusanie nasledujuci priklad:
- 4 miestnosti spojene do “stvorca/kruhu”
- kazda miestnost ma staticky objekt
- jeden objekt ma kruzivy pohyb (2 prikazy = 1 krok)

example.dat
{
#roomid=room_test1;
  #name=ROOM Test 1;
  #description=Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam nisl velit, dapibus vel erat non, placerat congue tellus. Integer eget sagittis mauris, ultrices vehicula nisi. Nullam ut ligula sit amet felis ullamcorper ultricies ut vitae arcu. Quisque ac urna tellus.;
  #east=room_test2;
  #north=room_test4;
  #enter={#vprintLn <c>error</c>ROOM1 E exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>ROOM1 L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}
 
{
#objectid=object_1;
  #name=Objekt 1;
  #description=Lorem ipsum dolor sit amet.;
  #location=room_test1;
  #meet={#vprintLn <c>error</c>Obj1 M exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>Obj1 L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}
 
{
#roomid=room_test2;
  #name=ROOM Test 2;
  #description=Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent odio nibh, auctor a lacus in, pellentesque varius metus. Donec hendrerit tempus turpis et tempus. Proin non nibh ullamcorper, vulputate sem in, iaculis libero. Nullam ac neque vel turpis euismod vehicula.;
  #west=room_test1;
  #north=room_test3;
  #enter={#vprintLn <c>error</c>ROOM2 E exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>ROOM2 L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}
 
{
#objectid=object_2;
  #name=Objekt 2;
  #description=Lorem ipsum dolor sit amet.;
  #location=room_test2;
  #meet={#vprintLn <c>error</c>Obj2 M exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>Obj2 L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}
 
{
#roomid=room_test3;
  #name=ROOM Test 3;
  #description=Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vel felis a libero cursus tristique quis nec odio. Mauris volutpat efficitur porttitor. Mauris malesuada egestas neque non fermentum. Vivamus a rhoncus dui. Nunc non sollicitudin neque. Aliquam bibendum dolor dolor.;
  #south=room_test2;
  #west=room_test4;
  #enter={#vprintLn <c>error</c>ROOM3 E exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>ROOM3 L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}
 
{
#objectid=object_3;
  #name=Objekt 3;
  #description=Lorem ipsum dolor sit amet.;
  #location=room_test3;
  #meet={#vprintLn <c>error</c>Obj3 M exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>Obj3 L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}
 
{
#objectid=object_npc;
  #name=Objekt Bezec;
  #description=Lorem ipsum dolor sit amet.;
  #visibility=#true;
 
  #location=room_test3;
 
  #territory=room_test3;
  #territory=room_test4;
  #territory=room_test1;
  #territory=room_test2;
 
    #move=#followyou;
    #move=#random;
    #move=#line;
    #move=#teleporttoyou;
  #move=#circle;
 
  #movementSpeedBasedOnMove=0;
  #movementSpeedBasedOnCommand=2;
  #movementSpeedBasedOnTime=0;
 
  #meet={#vprintLn <c>error</c>NPC M exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>NPC L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}
 
{
#roomid=room_test4;
  #name=ROOM Test 4;
  #description=Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi id molestie tortor, sit amet aliquet nisl. Nam at metus dui. Morbi hendrerit semper leo, eu dignissim sapien finibus id. Nulla facilisi. Duis fringilla id massa nec ultrices. Vivamus iaculis hendrerit.;
  #east=room_test3;
  #south=room_test1;
  #enter={#vprintLn <c>error</c>ROOM4 E exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>ROOM4 L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}
 
{
#objectid=object_4;
  #name=Objekt 4;
  #description=Lorem ipsum dolor sit amet.;
  #location=room_test4;
  #meet={#vprintLn <c>error</c>Obj4 M exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
  #leave={#vprintLn <c>error</c>Obj4 L exec:<#var>$rom_exec_executor</#var> owner:<#var>$rom_exec_owner</#var> act:<#var>$rom_exec_owner_action</#var>;};
}


Vysledky prikladu:

Pri spusteni/restarte sa spustia #meet akcie vsetkych objektov na hracovej pozicii.
Systemove premenne budu nastavene nasledovne:
  #meet akcia =>
    $rom_exec_executor=#you $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#meet
 
Pri pohybe objektu NPC sa volaju akcie s nastavenim premennych nasledovne
  1)
    #leave akcia objektu =>
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#leaveobject
    #meet akcia objektu =>
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#meetobject
 
  2)
    #leave akcia objektu =>
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#leaveobject
    #meet akcia NPC objektu => (ak stretne hraca)
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktory sa pohybuje $rom_exec_owner_action=#meet
    #meet akcia objektu =>
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#meetobject
 
  3)
    #leave akcia NPC objektu => (ak opusta hraca)
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktory sa pohybuje $rom_exec_owner_action=#leave
    #leave akcia objektu =>
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#leaveobject
    #meet akcia objektu =>
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#meetobject
 
Pri hracovom pohybe
  #leave akcia miestnosti =>
    $rom_exec_executor=smer pohybu napr. #north $rom_exec_owner=ID miestnosti ktorej patri akcia $rom_exec_owner_action=#leave
  #leave akcia objektu =>
    $rom_exec_executor=smer pohybu napr. #north $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#leave
  #enter akcia miestnosti =>
    $rom_exec_executor=smer pohybu napr. #north $rom_exec_owner=ID miestnosti ktorej patri akcia $rom_exec_owner_action=#enter
  #meet akcia objektu =>
    $rom_exec_executor=smer pohybu napr. #north $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#meet
  Ak je NPC v pohybe
    #leave akcia objektu =>
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#leaveobject
    #meet akcia objektu =>
      $rom_exec_executor=ID objektu ktory sa pohybuje $rom_exec_owner=ID objektu ktoremu patri akcia $rom_exec_owner_action=#meetobject
problematika_leave_meet_enter_akcii.txt · Posledná úprava: 2020/07/13 20:49 od wolf