CMUD

Forum techniczne Arkadii.
Awatar użytkownika
Talisa
Posty: 144
Rejestracja: 21 kwie 2015 23:40
Lokalizacja: Skellige IRL

Re: CMUD

Post autor: Talisa » 03 gru 2016 13:47

A masz jakies suby czy triggery co obrabiaja walke? Bo samo z siebie tak nie powinno.
Everyone is fighting their own battle to be free from their past, to live in the present, and create a meaningful future for themselves. Don't judge, have a heart.

Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern » 03 gru 2016 20:12

Spróbuj odznaczyć "Use GA/EOR for prompt" w Preferences -> Session -> Emulation.
(Właściwie jedyne co tam jest potrzebne, to ANSI, Telnet, GMCP, MCCP - ale głowy z tym nie dam)

Iverin
Posty: 6
Rejestracja: 03 gru 2016 10:29

Re: CMUD

Post autor: Iverin » 04 gru 2016 09:16

Dziekuje Haern pomoglo :)

Iverin
Posty: 6
Rejestracja: 03 gru 2016 10:29

Re: CMUD

Post autor: Iverin » 04 gru 2016 10:06

To z innej beczki :)
Przykladowo mam coś takiego:

Kod: Zaznacz cały

Jakas lokacja.
Maly dziwny piesek, dziki duzy piesek, maly osowialy kotek, cudownie sliczna panienka i brzydka szmaragdowooka lampucera.
Chciałbym uzyskać coś takiego:

Kod: Zaznacz cały

Jakas lokacja.
[a]Maly dziwny piesek, [b]dziki duzy piesek, [c]maly osowialy kotek, [d]cudownie sliczna panienka i [e]brzydka szmaragdowooka lampucera.
i teraz aliasy:
alias "xa" - zabij ob_(numer z GMCP malego dziwnego pieska)
alias "xb" - zabij ob_(numer z GMCP dzikiego duzego pieska)
alias "xc" - zabij ob_(numer z GMCP malego osowialego kotka)
alias "xd" - zabij ob_(numer z GMCP cudownie slicznej panienki)
alias "xe" - zabij ob_(numer z GMCP brzydkiej szmaragdowookiej lampucery)

Moze ktos ma zrobione cos takiego i moglby sie podzielic lub ktos
wie jak to zrobic lub ma cos podobnego? Patrzylem na skrypt Zurwena ale
tam trzeba klikac myszka co jest dosc toporne :(
Jak powinien wygladac kod?

Z góry dziekuję za pomoc :)

Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern » 04 gru 2016 10:59

Nie polecam - mocno obciążające dla CMUDa (aktualizacja zmiennych przy każdym "zerknij" i każdej zmianie lokacji), i suby w jednej linii się często krzaczą. I choć na pierwszy rzut wydaje się, że to "fajny" skrypt, to moim zdaniem tak naprawdę jest to średnio przydatne poza walkami PvP (a tam można to zrobić lepiej i wydajniej, bo w ograniczonym zakresie).

Iverin
Posty: 6
Rejestracja: 03 gru 2016 10:29

Re: CMUD

Post autor: Iverin » 04 gru 2016 11:44

Może i racja z tymi krzaczącymi się subami, a co dokładnie masz na myśli pisząc:
Haern pisze:(...)(a tam można to zrobić lepiej i wydajniej, bo w ograniczonym zakresie).
Będę wdzięczny za jakiś kod który mógłbym wrzucić do swoich skryptów.

Na chwilę obecną to klikam w okienku "kondycje" myszką i w ten sposób atakuje zasłaniam itd, tak jak to napisał Zurwen,
jednak to jest bardzo niefunkcjonalne na dłuższą metę.

Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern » 04 gru 2016 12:17

Chodzi o to, żeby patterny były jak najwęższe, to znacząco zwiększa prędkość działania całego programu (tzn. im więcej masz triggerów z szerokim patternem typu (*), tym wolniej chodzi cały CMUD). Nie wiem jak zbudowany jest skrypt Zurwena, ale jeśli wyłapuje osoby i podstawia je gdzieś w innym okienku, to najprawdopodobniej możesz też zrobić aliasy/makra odnoszące się do tych osób (zamiast klikać). Z konkretami nie pomogę niestety.

Iverin
Posty: 6
Rejestracja: 03 gru 2016 10:29

Re: CMUD

Post autor: Iverin » 04 gru 2016 14:07

Skrypt Zurwena to raptem jedna funkcja

Funkcja uaktualnij_kondycje:

Kod: Zaznacz cały

#execwin kondycje {#clr}

$kwinYou = %null
$kwinTeam = %null
$kwinEnemy = %null
$kwinRest = %null

$updateFight = 0
fightAttack = %null
#LOOPDB @GMCP_OBJECTS_DATA
{
  $val = %val.attack_num
    
  #IF ($val = "false")
  {
    #IF (%iskey(@fightAttack, %key))
    {
      #DELKEY fightAttack %key      
    }
    
    #CONTINUE
  }
  
  #IF (%db(@fightAttack, %key) != $val)
  {
    #ADDKEY fightAttack %key $val
  }
}

fightAttackedBy = %null
#LOOPDB @fightAttack
{
  #addkey fightAttackedBy %val %additem(%key, %db(@fightAttackedBy, %val))
}

#LOOPDB @GMCP_OBJECTS_DATA
{
  $jaka = %val.hp + 1
  $atakuja = %db(@fightAttackedBy, %key)
  $ile = %numitems($atakuja)
  $sub = "["$ile"]["%if( $jaka = 7, %repeat( "##", 7), %repeat( "##", $jaka)%repeat( "--", 6-$jaka)"--")"] "
  $atakujaOpisy = %null
  $atakujaSub = %null
  
  #if ($ile)
  {
    #forall $atakuja
    {
      $desc = @GMCP_OBJECTS_DATA.%i.desc
      
      $atakujaOpisy = %additem(%if($desc, $desc, "ty"), $atakujaOpisy)
    }
    
    $atakujaSub = "<== "%expandlist($atakujaOpisy, ", ")
  }
    
  #if (%val.avatar = "true") {
    $sub = %ansi( @kolor_z_kondycji( $jaka/2))$sub"<send 'rozkaz wszystkim zaslonic ciebie;wskaz siebie jako cel obrony' 'rozkaz zaslonic'>"Ty"</send> "$atakujaSub
    $kwinYou = $sub
    #CONTINUE
    }
  #if (%val.team = "true")
  {
    $sub = $sub[T]" <send 'zaslon ob_"%key"|rozkaz wszystkim zaslonic ob_"%key";wskaz ob_"%key" jako cel obrony|wycofaj sie za ob_"%key"' 'zaslon|rozkaz zaslonic|wycofaj sie za'>"%proper( %val.desc)"</send> "$atakujaSub
    #additem $kwinTeam $sub
    #CONTINUE
    }
  #if (%val.enemy = "true")
  {
    $sub = $sub[E]" <send 'zabij ob_"%key"|przelam obrone ob_"%key"|rozkaz wszystkim zaatakowac ob_"%key";wskaz ob_"%key" jako cel ataku|zaslon przed ob_"%key"|zablokuj ob_"%key"' 'zabij|przelam|rozkaz zaatakowac|zaslon przed|zablokuj'>"%proper( %val.desc)"</send> "$atakujaSub
    #additem $kwinEnemy $sub
    #CONTINUE
    }  
  $sub = $sub"<send '|zabij ob_"%key"|przelam obrone ob_"%key"|rozkaz wszystkim zaatakowac ob_"%key";wskaz ob_"%key" jako cel ataku|zaslon przed ob_"%key"|zablokuj ob_"%key"' 'brak domyslnej akcji|zabij|przelam|rozkaz zaatakowac|zaslon przed|zablokuj'>"%proper( %val.desc)"</send> "$atakujaSub
  #additem $kwinRest $sub
  }
  
#win "kondycje" $kwinYou
#forall {$kwinTeam} {#win "kondycje" %i}
#forall {$kwinEnemy} {#win "kondycje" %i}
#forall {$kwinRest} {#win "kondycje" %i}
ale jak ja zmodyfikowac pod aliasy to juz dla mnie czarna magia :)

Awatar użytkownika
Talisa
Posty: 144
Rejestracja: 21 kwie 2015 23:40
Lokalizacja: Skellige IRL

Re: CMUD

Post autor: Talisa » 04 gru 2016 16:27

Ten skrypt to wysylanie do okna juz. Podstawa lezy w triggerze 'Objects' I zrzut danych do GMCP_objects_data I nums. Z nich trzeba sobie zbudowac wylapywacz do aliasow I ewt suby (to najgorszy mozliwy pomysl w cmudzie akurat, krzaczy...)
Everyone is fighting their own battle to be free from their past, to live in the present, and create a meaningful future for themselves. Don't judge, have a heart.

Haern
Posty: 756
Rejestracja: 13 lut 2009 14:03

Re: CMUD

Post autor: Haern » 04 gru 2016 16:35

Suby/numerki polecam dodać nie do listy osób na lokacji (pojedyncza linijka), ale do kondycji. Jako że leci w osobnych linijkach - nic się nie krzaczy. Ponadto można zawrzeć wszystko w jednym triggerze o patternie wyłapującym kondycję.

ODPOWIEDZ