CMUD
Re: CMUD
~[(*)~] najprościej (-: (~ nie wiem czy konieczna, ale dla pewności można dać)
Re: CMUD
~[(*)~] czy tam zamiast (*) wklepujesz to co ustaliliśmy parę postów wyżej:
~[(%w %w {@rasa})~]
CMUD posiada takie wygodne narzędzie, które się nazywa 'pattern' (w oknie tworzenia triggera). Można tam sprawdzać czy dany tekst pasuje/nie pasuje do naszego patternu, jakie wartości przyjmą odpowiednie zmienne pobrane z tego tekstu i parę innych użytecznych rzeczy. M.in można wpisać tekst:
[maly ukryty elf]
a potem strzałeczką 'set pattern' przesłać go do góry, otrzymując
~[maly ukryty elf~]
Teraz tylko kwestia zastąpienia 'maly ukryty elf' przez odpowiedni pattern.
~[(%w %w {@rasa})~]
CMUD posiada takie wygodne narzędzie, które się nazywa 'pattern' (w oknie tworzenia triggera). Można tam sprawdzać czy dany tekst pasuje/nie pasuje do naszego patternu, jakie wartości przyjmą odpowiednie zmienne pobrane z tego tekstu i parę innych użytecznych rzeczy. M.in można wpisać tekst:
[maly ukryty elf]
a potem strzałeczką 'set pattern' przesłać go do góry, otrzymując
~[maly ukryty elf~]
Teraz tylko kwestia zastąpienia 'maly ukryty elf' przez odpowiedni pattern.
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).
Re: CMUD
Zurwen: z testerem jest jednak problem - dostałem nawet informację oficjalnie od Zuggsoftu, że często ten tester nie działa tak jak powinien (najczęściej kiedy używa się w patternie funkcji, ale nie tylko). Jest on przydatnym dodatkiem, ale też nie ma co ślepo się nim sugerować.
Re: CMUD
Witam,
Mam pytanie odnośnie mapera, a właściwie podążania mapera jak się chodzi w drużynie.
Na nie których lokacjach są nietypowe opisy, jak np.
"Wraz z Xxx podazasz za Yyy przez kladke." - taki sam opjs jest w obie strony.
Na lokacji nie moge zrobić triga w "room script" bo jak przechodzę to zanim tekst z gry dotrze do Cmuda to trig przestaje działać.
Macie jakiś pomysł na podążanie mapera w takich niestandardowych sytuacjach?
Mam pytanie odnośnie mapera, a właściwie podążania mapera jak się chodzi w drużynie.
Na nie których lokacjach są nietypowe opisy, jak np.
"Wraz z Xxx podazasz za Yyy przez kladke." - taki sam opjs jest w obie strony.
Na lokacji nie moge zrobić triga w "room script" bo jak przechodzę to zanim tekst z gry dotrze do Cmuda to trig przestaje działać.
Macie jakiś pomysł na podążanie mapera w takich niestandardowych sytuacjach?
Re: CMUD
#temp w roomscripcie działał
Inna możliwość to triggery multistate, teleportujące do lokacji na mapie po wyswietleniu shorta nowej lokacji.
Czyli
Trigger: "Podazasz blabla..."
Within 2: Short lokacji. -> teleport do odpowiedniego miejsca na mapie.
Ale ja bym obstawał przy #tempach.
Inna możliwość to triggery multistate, teleportujące do lokacji na mapie po wyswietleniu shorta nowej lokacji.
Czyli
Trigger: "Podazasz blabla..."
Within 2: Short lokacji. -> teleport do odpowiedniego miejsca na mapie.
Ale ja bym obstawał przy #tempach.
Do kontaktów z czarodziejami służy komenda ‚zglos’ (błąd/pomysl/mg).
Re: CMUD
Room script powinien być w lokacji, w której jest to wyjście, nie w docelowej.Fruef pisze:Na nie których lokacjach są nietypowe opisy, jak np.
"Wraz z Xxx podazasz za Yyy przez kladke." - taki sam opjs jest w obie strony.
Można też rozwiązać to inaczej, w bardziej złożony sposób, też używając room script. Triggera lepiej upakować w jedną linię, wklejam tak dla przejrzystości. Oczywiście w zmiennej @lider musisz mieć imię (może być w mianowniku) lub short prowadzącego (w narzędniku).
Kod: Zaznacz cały
#VAR nonstd_exit_desc "" "" {Wyjscia}
#VAR nonstd_exit_cmd "" "" {Wyjscia}
#ALIAS nonstd_exit {nonstd_exit_desc = %1; nonstd_exit_cmd = %2; #SH Wyjscie '%1' prowadzi na '%2'}
#TRIGGER podazasz_za {^(?:> |)(?:Wraz z.*|)[Pp]odazasz za (?:@lider\a+|kims|@lider) (.*)\.}
{
$dir = %1;
#IF ( $dir = @nonstd_exit_desc)
{
$dir = @nonstd_exit_cmd;
}
$dir = %replace( $dir, "na ", "");
$dir = %replace( $dir, "gore", "gora");
} {Druzyna} regex
Kod: Zaznacz cały
#TRIGGER podazasz_za {^(?:> |)(?:Wraz z.*|)[Pp]odazasz za (?:@lider\a+|kims|@lider) (.*)\.} {$dir = %1;#IF ( $dir = @nonstd_exit_desc) {$dir = @nonstd_exit_cmd} $dir = %replace( $dir, "na ", ""); $dir = %replace( $dir, "gore", "gora"); } {Druzyna} regex
Kod: Zaznacz cały
nonstd_exit "przez kladke" "polnoc"
Kod: Zaznacz cały
nonstd_exit "przez kladke" "n"
Kod: Zaznacz cały
nonstd_exit "na dno rozpadliny" "d"
Jeszcze wersja z wykorzystaniem sqlite, bez room scriptów. Praktycznie gotowy kod, w którym wystarczy zmienić ścieżkę do mapy i ewentualnie dodać własną funkcjonalność.
Kod: Zaznacz cały
#CLASS Exits
#VAR map_db "D:\Soft\Cmud333\Arkadia\Mapa.mdb"
#VAR nonstd_exits "" {}
#TEMPVAR sql_map_check_table "SELECT name FROM sqlite_master WHERE type='table' AND name='NonStdTbl'"
#TEMPVAR sql_map_create_table "CREATE TABLE NonStdTbl ([ExitId] INTEGER PRIMARY KEY AUTOINCREMENT,[RoomId] INTEGER,[DirDesc] VARCHAR(40),[DirCmd] VARCHAR(10))"
#FUNCTION sql_map_query($query)
{ #SQLDB @map_db; #RETURN %sql( @map_db, $query) }
#ALIAS create_tables {
#IF (@sql_map_query(@sql_map_check_table).RecordCount = 0) {
#CALL @sql_map_query(@sql_map_create_table) } }
#FUNCTION sql_mapq( $cond) {
#RETURN @sql_map_query( %format( "SELECT * FROM NonStdTbl WHERE (%s)", $cond))}
#FUNCTION sql_map_select( $room, $cmd) {
$cond = %format( "RoomId=%d",$room)
#IF ($cmd) {
$cond = %format( "%s AND DirDesc='%s'", $cond, $cmd)
}
#RETURN @sql_mapq($cond)}
#FUNCTION sql_map_exists( $room, $cmd) {
#RETURN @sql_map_select( $room, $cmd).RecordCount}
#FUNCTION sql_map_insert($room, $desc, $dir) {
$query = "";
#IF (@sql_map_exists( $room, $desc))
{
$query = %format( "UPDATE NonStdTbl SET DirCmd='%s' WHERE (RoomId=%d AND DirDesc='%s')", $dir, $room, $desc)
} {
$query = %format( "INSERT INTO NonStdTbl (RoomId,DirDesc,DirCmd) VALUES (%d,'%s','%s')",$room,$desc,$dir)
}
#RETURN @sql_map_query( $query) }
#ALIAS nonstd_exit_local {
$r = %1
$desc = %2
$cmd = %3
$roomnstd = %db( @nonstd_exits, $r)
$roomnstd = %addkey( $roomnstd, $desc, $cmd)
#ADDKEY nonstd_exits $r $roomnstd
#IF (!%4) {#SH Dodaje wyjscie do lokacji nr $r. Idac '$desc' pojdziesz na '$cmd'} }
#ALIAS nonstd_exit {
$r = %1
$dir = %2
$move = %3
#IF (!$r) {$r = %roomnum}
#SH Num=$r, Dir=$dir, Move=$move
#CALL @sql_map_insert( $r, $dir, $move)
nonstd_exit_local {$r} {$dir} {$move} {%4}}
#ALIAS populate_nonstd_exits {
nonstd_exits = ""
$res = @sql_mapq( "RoomId > 0")
#WHILE ( !$res.Eof) {
$tmp = %json($res.Item)
$r = $tmp.RoomId
$desc = $tmp.DirDesc
$cmd = $tmp.DirCmd
nonstd_exit_local {$r} {$desc} {$cmd} %1
#CALL $res.Next
} }
#VAR exits_long_to_short "dol=d|wschod=e|poludniowy-wschod=se|zachod=w|poludniowy-zachod=sw|polnocny-wschod=ne|poludnie=s|polnoc=n|polnocny-zachod=nw|gore=u|gora=u" {} {Exits}
#TRIGGER podazasz_za_liderem {^(?:> |)(?:Wraz z.*|)[Pp]odazasz za (?:@lider\a+|kims|@lider) (.*)\.} {
$nonstd = @nonstd_exits.%roomnum
$cmd = %db( $nonstd, %1)
#IF ($cmd) {#MOVE $cmd} {
$tmp = %replace( %1, "na ", "")
#IF ($tmp = "gore") {$tmp = "gora"}
$tmp = @exits_long_to_short.$tmp
#IF (!$tmp) {$tmp = %1}
#move $tmp } } {Exits} regex
#CLASS 0
Kod: Zaznacz cały
nonstd_exit %roomnum "na dno rozpadliny" "d"
nonstd_exit %roomnum "przez kladke" "n"
Kod: Zaznacz cały
populate_nonstd_exits
-
- Posty: 20
- Rejestracja: 10 lis 2011 14:46
Re: CMUD
Dzięki za poprzednią pomoc, myślałem, że nic z tego nie wyjdzie, ale chyba samo się naprawiło i działa.
Teraz mam kilka innych problemów:
a)
co zrobić jak: mam tak zeby jesli:
znajduje zzz yyy cos
to zamienialo zzz yyy cos (uu+)
Chodzi o ogólna zasadę robienia trigów do takich var
to sobie kolegów podepnę
zioła i co tam sobie zechcę
b)
Jak zrobić, żeby mi kolorowało to co chcę w subie?
Pomijam te dopasowanie do @rasy i jakieś nie wiadomo jakie "if" czy nawet wyciąganie kolegów z drużyny poprzez @var, ale jak zrobić w samym subie zwykły trig na kolorowanie? Coś jak to
zzzz zaslania yyy przed ddd
c) Możliwe żeby Cmud lagował przez skrypty, bo coś przestał chodzić tak płynnie, a mam chyba wystarczającego lapka... skoto 7 na nim chodzi płynnie.
Kod: Zaznacz cały
<trigger priority="2001" id="1224">
<pattern>(%w) (%w) {@rasy}{%p|%s}</pattern>
<value>#cw peru,black</value>
</trigger>
<var name="rasy" Autotype="A" id="1223">kobieta|polelfem|polelf|elfka|halflingiem|halfling|krasnoludem|krasnolud|niziolka|mutantka|halflinka|gnomem|gnom|krasnoludka|elfem|elfa|elf|gnomke|gnomka|niziolkiem|niziolek|mezczyzne|mezczyzna|polelfka|mutantem|mutanta|mutant|mutantke|mutantka|ogrem|ogra|ogr|ogrzyca</var>
Teraz mam kilka innych problemów:
a)
co zrobić jak: mam tak zeby jesli:
znajduje zzz yyy cos
to zamienialo zzz yyy cos (uu+)
Chodzi o ogólna zasadę robienia trigów do takich var
to sobie kolegów podepnę
zioła i co tam sobie zechcę
b)
Jak zrobić, żeby mi kolorowało to co chcę w subie?
Pomijam te dopasowanie do @rasy i jakieś nie wiadomo jakie "if" czy nawet wyciąganie kolegów z drużyny poprzez @var, ale jak zrobić w samym subie zwykły trig na kolorowanie? Coś jak to
zzzz zaslania yyy przed ddd
Kod: Zaznacz cały
(*) zrecznie zaslania (*) przed ciosami (*).$
#SUB {--->> > %1 < - !!ZASLANIA!! - >> %2 << PRZED >> %3 <<}