[mIRC] Trigger script op meerdere woorden

Pagina: 1
Acties:
  • 529 views sinds 30-01-2008
  • Reageer

  • Sluuut
  • Registratie: Februari 2003
  • Laatst online: 20-02 12:59
Hoi,

Ik ben al een tijdje bezig met een trigger script proberen te fixen maar het wil tot nu toe nog niet lukken. Het idee is dat iemand bijvoorbeeld zegt: Hallo mijn naam is kees en ik heb dorst.
Het script moet dan checken of er Hallo word gezegd, of er kees word gezegd en of er dorst word gezegd. Stel dat dat inderdaad allemaal word gezegd, dan moet het script triggeren.

Ik heb nu dit:
1:TEXT:*:#channel:{
if ( Hallo isin $1- && kees isin $1- && dorst isin $1- ) {
/say Hey kees ik heb nog wel een pak melk staan!
}
}
Iemand enig idee wat ik hier fout doe?

57696520646974206c65657374206973206e657264


  • NaZ-
  • Registratie: Juli 2002
  • Niet online

NaZ-

Hoeblablahoeblabla

code:
1
on 1:TEXT:hello*dorst:#:/msg $chan Hey $nick ik heb nog wel een pak melk staan!


Probeer dat eens?

Zie ook in de Help van mIRC,
on TEXT

The on TEXT event triggers when you receive private and/or channel messages.


Format: on <level>:TEXT:<matchtext>:<*><?><#[,#]>:<commands>
Example: on 1:TEXT:*help*:#mirc,#irchelp:/msg $nick what's the problem?

The on ACTION and on NOTICE events use exactly the same format as on TEXT, and trigger on an action and on a notice event respectively.

The match text can be a wildcard string, where:

* matches any text
& matches any word
text matches if text contains only this word
text* matches if text starts with this word
*text matches if text ends with this word
*text* matches if text contains this word anywhere

The match text can also be a regular expression. See the $ prefix section in Access Levels.

The location where this event occurrs can be specified using:

? for any private message
# for any channel message
#mirc for any messages on channel #mirc
* for any private or channel messages

[ Voor 76% gewijzigd door NaZ- op 01-05-2006 19:54 ]

AMD Pentium 4 32+, 2056MB DDR-ROM, 60INCH HD, Logitech Muis, MS-Toeter


  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Of

code:
1
2
3
on 1:text:*word1*word2*word3*:#: { 
  commands
}

Let wel op, dat de worden ook in die volgorde moeten staan.
Je kan het ook met tokens doen, dan hoeven de worden niet in de juiste volgorde te staan.

code:
1
2
3
4
5
6
7
8
9
10
11
on 1:text:*:#: {
  set %wordtoken word1 word2 word3 word4 word5
  var %i = 0
  while (%i <= $numtok(%wordtoken,32)) {
    inc %i
    if ($istok($1-,$gettok(%wordtoken,%i,32),32) == $true) { 
      msg $chan $gettok(%wordtoken,%i,32) has been said in chan!
      ;eventueel uit de while breaken :?
    }
  }
}

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19:03

krvabo

MATERIALISE!

ZroBioNe schreef op maandag 01 mei 2006 @ 20:01:
Of

code:
1
2
3
on 1:text:*word1*word2*word3*:#: { 
  commands
}

Let wel op, dat de worden ook in die volgorde moeten staan.
Je kan het ook met tokens doen, dan hoeven de worden niet in de juiste volgorde te staan.

code:
1
2
3
4
5
6
7
8
9
10
11
on 1:text:*:#: {
  set %wordtoken word1 word2 word3 word4 word5
  var %i = 0
  while (%i <= $numtok(%wordtoken,32)) {
    inc %i
    if ($istok($1-,$gettok(%wordtoken,%i,32),32) == $true) { 
      msg $chan $gettok(%wordtoken,%i,32) has been said in chan!
      ;eventueel uit de while breaken :?
    }
  }
}
Mijn -god-.. waarom ga je in hemelsnaam splitten op spaties, terwijl mIRC dat al voor je doet ($1 - $2 - $3 - etc) en het ook nog eens *volstrekt* onnodig is hier? :?

De code die de TS geeft is vrij goed..
code:
1
2
3
4
5
on 1:TEXT:*:#channel: {
  if ((hallo isin $1-) && (kees isin $1-) && (dorst isin $1-)) {
   msg $chan Hey kees ik heb nog wel een pak melk staan!
  }
}

dit geeft ook true als je zegt "Krijg dorst kees, hallo." Als dit niet is wat je wil.. wat is er dan mis met de oplossing die ik je 28 april in #test gaf?
«28-04» [21:43:13] <krvabo> on 1:TEXT:*input1*input2*input3*:#channel:/say test
«28-04» [21:43:27] <krvabo> in die volgorde moet het dan gezegd worden

[ Voor 3% gewijzigd door krvabo op 02-05-2006 04:19 ]

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • Cypher87
  • Registratie: Oktober 2004
  • Laatst online: 23-01 17:24
of er Hallo word gezegd, of er kees word gezegd en of er dorst word gezegd.
Zoals ik het lees moet je niet && (and) gebruiken maar || (or)

code:
1
2
3
4
5
on *:TEXT:*:#channel: {
  if ((hallo isin $1-) || (kees isin $1-) || (dorst isin $1-)) {
   msg $chan Hey kees ik heb nog wel een pak melk staan!
  }
}

[ Voor 5% gewijzigd door Cypher87 op 02-05-2006 07:31 ]


Verwijderd

NaZ- schreef op maandag 01 mei 2006 @ 19:48:
code:
1
on 1:TEXT:hello*dorst:#:/msg $chan Hey $nick ik heb nog wel een pak melk staan!


Probeer dat eens?

Zie ook in de Help van mIRC,


[...]
Dat is het eenvoudigste en wordt het meest gebruikt, en als hij een ander programma moet starten op die trigger (wat ik denk dat je uiteindelijk wil gaan doen) dan verander je die /msg $chan etc.. door een custom alias. Die alias moet je dan in je aliases definiëren.

Makkelijkere oplossing : zorg dat je een goede scripter vind :+

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19:03

krvabo

MATERIALISE!

afgezien van de kick ( :P ). klopt het ook niet helemaal wat je zegt.
code:
1
on 1:text:*hoi*:#:/run "C:\program files\mijnmeuk\bla.exe" parameter

werkt net zo goed als
code:
1
2
3
4
5
6
7
on 1:text:*hoi*:#: {
  set %parameter $2-
  draaiexe
}
alias draaiexe {
 run C:\bla.exe %parameter
}


Je kan gewoon aliassen op deze manier in je remotes houden. (net als menu-items)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Verwijderd

Klopt, maar afgezien van het feit dat ik weet waar de TS naar op zoek is denk ik dat het beter is als het in aliases staat en niet allemaal op zo'n hoopje ;)

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19:03

krvabo

MATERIALISE!

Verwijderd schreef op donderdag 18 mei 2006 @ 22:33:
Klopt, maar afgezien van het feit dat ik weet waar de TS naar op zoek is denk ik dat het beter is als het in aliases staat en niet allemaal op zo'n hoopje ;)
Als je netjes programmeerd zet je alles bij elkaar.
- triggers (on text - on notice - etc)
- aliassen (alias bla { } - etc)
- sockets (on sockopen - etc)
- menu-dingen (nicklist - channel - etc)
- dialoogschermen (dialog bla - etc)
- dialoog afhandeling (on did - etc)
- foutafhandeling (on sendfail - on getfail - etc)

Zo hoeft het helemaal niet onduidelijk te zijn wat waar staat. mIRC biedt ook nog ondersteuning voor comments, dus je zou ook een header per onderdeel kunnen pakken door
code:
1
2
3
;#################
;#### Aliassen ####
;################

te pakken oid.

Ik heb genoeg grote scripts gemaakt en bekeken, en zo wordt zo'n beetje elk groot script opgebouwd. (Ook bijv SystemInfo van C}{$, zeker geen kleintje)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Verwijderd

Zo heb ik het ook, maar ik ben zelf niet zo'n goede scripter.. Ik beroep me op mijn geeky vriendenkring LOL :+

  • Sluuut
  • Registratie: Februari 2003
  • Laatst online: 20-02 12:59
Het is overigens gelukt hoor dankzij jullie, wel ff gekloot omdat ik niet zo geweldig kan scripten maar het werkt nu prima :)

En ja meow jij zit inderdaad goed als je denkt dat je weet waar ik het voor nodig heb :P

57696520646974206c65657374206973206e657264


Verwijderd

Ik ben er zeker van ja ;) Gebruik dergelijke zaken al een tijdje, een must-have ;)
Pagina: 1