Ik heb een msn-bot en ik wil nu dat als mensen Hallo typen dat hij niet altijd de standaard-tekst neemt. Ik heb dat nu zo gedaan:
$getal = rand(1, 3);
$hallo1 = Hoi
$hallo2 = Ej
$hallo3 = Moi

Als message zend ik nu $hallo$getal dat werkt niet hoe kan ik het klaar krijgen dat hij $hallo+RANDOM GETAL
doet?
Arjan? kan jij me hier mee helpen?

$sbconn = fsockopen("messenger.hotmail.com",1863) or die("<script language=javascript>\r\ndocument.getElementById('status').innerHTML=\"<font class=status>{$_LANG['noconnect']}</font>\";\r\n</script>");


fout:


Warning: fsockopen(): php_hostconnect: connect failed in /home/httpd/vhosts/game-clans.nl/httpdocs/MSN/p10.php on line 487

Warning: fsockopen(): unable to connect to messenger.hotmail.com:1863 in /home/httpd/vhosts/game-clans.nl/httpdocs/MSN/p10.php on line 487
Arjan schreef op 01.04.2006 14:13
IK ga deze denk ik gebruiken met arrays is het moeilijk extra erbij te maken ;)
Huh? Met arrays is het juist veel gemakkelijker:

$hallo = array();
$hallo[] = "hoi";
$hallo[] = "moi";
$hallo[] = "yo";
$hallo[] = "hee";

en zo door tot in het oneindige ;-)

Als je op die manier $hallo hebt gevuld, kun je een random-waarde als volgt bepalen:

$rnd = rand(0, count($hallo)-1);

echo $hallo[$rnd];

Op die manier kun je begroetingen toevoegen en verwijderen zoveel je wilt, en hoef je nooit te tellen hoeveel er zijn.

Met je $hallo<num> - constructie, krijg je een probleem als je later besluit om $hallo2 weg te halen. Je moet dan $hallo3 tot en met $hallo32767 opnieuw gaan nummeren en je rand()-commando aanpassen. Dat hoeft allemaal niet als je goed met arrays omgaat.

EDIT: En uiteraard kan het nóg eenvoudiger ;-) Zet al je begroetingen in een bestand hallo.txt; 1 begroeting per regel. Lees vervolgens je bestand als volgt in een array:
<?
$hallo = file("hallo.txt");
$numhallo = count($hallo);
$rndhallo = rand(0, $numhallo-1);
$groet = $hallo[$rndhallo];
echo $groet;
?>
Het toevoegen of verwijderen van een begroeting kun je nu doen door hallo.txt aan te passen. Omdat er geen wijzigingen in je code meer nodig zijn, hoef je niet bang te zijn voor tikfouten waardoor je script ermee stopt.
Dan kan je gewoon de laatste weghalen en die op de 2e plek neerzetten ;)
Arjan schreef op 01.04.2006 15:35
Dan kan je gewoon de laatste weghalen en die op de 2e plek neerzetten ;)
Als je je begroetingen hebt gesorteerd (en gesorteerd wilt houden) wordt dat wat lastiger. Bovendien moet je dan nog steeds je rand()-commando aanpassen.
Het is inmiddels helemaal gelukt
Nu nog iets anders gebruikers typen een bericht als $msg en krijgen een bericht terug als $message
Hoe kan ik het zo maken dat als gebruikers intypen 8*8 dat hij dan dat uitrekent?
preg_match (of ereg, net wat je prettiger vind) op nummers en *,+,-,/,^, en dan uitrekenen :)
Deze valt niet te downloaden
Arjan schreef op 01.04.2006 16:37
Het is inmiddels helemaal gelukt
Nu nog iets anders gebruikers typen een bericht als $msg en krijgen een bericht terug als $message
Hoe kan ik het zo maken dat als gebruikers intypen 8*8 dat hij dan dat uitrekent?


Je zou een regex kunnen maken die kijkt of een string alleen uit cijfers en operatoren bestaat.

Indien dat het geval is, kun je met eval($berichttekst) de code laten uitvoeren.
Ik weet niet wat je nou precies bedoeld ik ben eigenlijk net begonnen met php zou je iets meer hierover kunnen zeggen?

Reageren