anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: So 27 Jul, 2025 08:41

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: NPC-Script
BeitragVerfasst: Di 06 Jun, 2006 13:30 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Ja Hallo erstmal :-)

Ich entwickle gerade ein NPC-Script für LOGD. Dabei hab ich ein kleines Problem: Mein Bot soll ja nicht immer reden! Deswegen wäre es ja wohl dumm, eine e_rand Funktion zu nehmen weil wenn z.B. 50 User auf dem Dorfplatz sind... Kann man da was machen?

Edit: Das Script kommt ja auf den Dorfplatz


Und noch ein Problem: Der Bot soll irgendwie auf Kommentare reagieren können. Gibts da ne möglichkeit mit substr() ?

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 07 Jun, 2006 18:08 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Hallo? Hilfe...

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 07 Jun, 2006 23:53 
Offline
Meister
Meister

Registriert: Sa 25 Sep, 2004 11:49
Beiträge: 337
Wohnort: Irgendwo im Sauerland
LoGD: http://www.rulina.de/logd/source.php
Mmmm, mir fällt dazu ein das das Bot System was hier irgendwo auch schon zum download steht mit e_rand arbeitet, kannst dir das mal anschaun (Suche nach NPC, hab grad kein Elan, will ins Bett ;) )

_________________
*Mekkelon - Mitglied im Renais-Völkerbund*
Thread


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 08 Jun, 2006 15:27 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Ja das hatt ich auch mal umgebaut aber da is wohl n Fehler drin...

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 08 Jun, 2006 15:57 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Montekar hat geschrieben:
Ja das hatt ich auch mal umgebaut aber da is wohl n Fehler drin...


Fehler suchen & beheben kommt dir aber nicht in den Sinn, nehm ich an? :?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 08 Jun, 2006 16:17 
Offline
Meister
Meister

Registriert: Sa 25 Sep, 2004 11:49
Beiträge: 337
Wohnort: Irgendwo im Sauerland
LoGD: http://www.rulina.de/logd/source.php
:???:

Nun bin ich verwirrt...

Hier der Thread mit den alten Bot Skript, einschließlich Fehlermeldung von dir


Hier die Lösung, auch von dir

:???:

Ich habs bei mir getestet, das geht mit deinem Fix... Man muss es nur noch übersetzten/anpassen...

_________________
*Mekkelon - Mitglied im Renais-Völkerbund*
Thread


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 08 Jun, 2006 16:26 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
@Eliwood:
Das is ja nicht das Problem das ich meine...
Das mit den Fehlern bekomm ich schon hin nur das da oben checkt ich hat nicht.

@Amerilion:

Das war aber nicht mein Fehler ;-)

_________________
Mal wieder da...


Zuletzt geändert von Montekar am Do 08 Jun, 2006 18:02, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 08 Jun, 2006 16:30 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
So, ich hab jetzt was, aber da ist ein Fehler und ich find ihn nicht alleine.

$this->bbcode_second_pass_code('', '
INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'village','','Was ist?'

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
')

So und der PHP (bzw. SQL) Teil dazu:

[php]
$sql1 = "SELECT * FROM accounts WHERE npc='1'";
$result = db_query($sql1);

$sql2="UPDATE accounts SET laston = '".date("Y-m-d H:i:s",strtotime("+ 300 seconds"))."', alive = '1', loggedin = '1', lasthit = '".date("Y-m-d H:i:s",strtotime("+ 300 seconds"))."', npccommons = '".$row['npccommons']."' WHERE login = '".$row[login]."'";
db_query($sql2);

for ($i=0;$i<db_num_rows($result);$i++) {
$row = db_fetch_assoc($result);
}

$result = db_query("SELECT section,author FROM commentary WHERE comment LIKE '%Seth%' LIMIT 1");
$row = db_fetch_assoc($result);
if ($result>0) {
$sql3 ="INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'village','".$row['acctid']."','Was ist?'";
db_query($sql3) or die(db_error(LINK));
}
[/php]

Der obere Teil geht, nur halt nicht die "Antworte-Funktion". Kann mir da vielleicht jemand helfen?

Edit: Das ganze soll so Funktionieren, das wenn der Kommentar halt Seth enthält "fragt" Seth: Was ist?

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 08 Jun, 2006 19:24 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
[php]$row['npccommons']."' WHERE login = '".$row[login][/php]

Diese Beiden Werte aus dem $row-rray werden glaube ich nicht initialisiert.
zwar steht
[php]$sql1 = "SELECT * FROM accounts WHERE npc='1'";
$result = db_query($sql1); [/php]
Drüber, allerdings erfolgt die auswertung nicht - $row wird also nicht initialisiert!

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 09 Jun, 2006 08:34 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Oh dann hab ich wohl nen Fehler gemacht... Was muss ich denn dann ändern? Also der Bot redet ja schonmal, das klappt...

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 09 Jun, 2006 10:40 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
[php]$sql1 = "SELECT * FROM accounts WHERE npc='1'";
$result = db_query($sql1);
$row = db_fetch_assoc($result) [/php]

versuch es mal so ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 09 Jun, 2006 14:17 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Danke werd ich gleich mal machen!

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 09 Jun, 2006 16:38 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Öhm... Das war schon in der Schleife drin, Auric...
Na ja egal.
Ich habe jetzt ne Funktion, die Seth immer "Was ist?" sagen lässt wenn einer der Kommentare auf dem Platz Seth enthält. Es soll aber nur der letzte "durchsucht" werden...
Kann mir jemand helfen? Warscheinlich irgendwie mit Limit 1 und dann DESC (=absteigend), aber wo soll das DESC hin?

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 09 Jun, 2006 16:47 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
$sql1 = "SELECT * FROM accounts WHERE npc='1'";
$result = db_query($sql1);

$sql2="UPDATE accounts SET laston = '".date("Y-m-d H:i:s",strtotime("+ 300 seconds"))."', alive = '1', loggedin = '1', lasthit = '".date("Y-m-d H:i:s",strtotime("+ 300 seconds"))."', npccommons = '".$row['npccommons']."' WHERE login = '".$row[login]."'";
db_query($sql2);

for ($i=0;$i<db_num_rows($result);$i++) {
$row = db_fetch_assoc($result);
}

Siehst du es? Du brauchst $row noch bevor du es überhaupt initialisiert.
"$sql2=[..]" gehört in die forschleife rein, sonst machts keinen Sinn (Und da nach der initialisierung).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 09 Jun, 2006 17:09 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
OK, das hab ich jetzt. Und wie mach ich das, das mein DP dann nicht so aussieht?

$this->bbcode_second_pass_code('', '
> Barde Seth fragt Waldelbenprinz Montekar: "Was ist?"
> Barde Seth fragt Waldelbenprinz Montekar: "Was ist?"
> Barde Seth fragt Waldelbenprinz Montekar: "Was ist?"
> Barde Seth fragt Waldelbenprinz Montekar: "Was ist?"
> Barde Seth fragt Waldelbenprinz Montekar: "Was ist?"
> Barde Seth fragt Waldelbenprinz Montekar: "Was ist?"
> Barde Seth fragt Waldelbenprinz Montekar: "Was ist?"
||
\/

?')

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 11 Jun, 2006 19:20 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
*sich gegen den Kopf hau*

Au... muss natürlich anders gemacht werden
Wie schafft man es denn (mit PHP, nicht MySQL), das ein Kommentar durchsucht wird? Also ich will wissen, ob eben der letzte Kommentar Seth enthält und darauf reagieren...

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 11 Jun, 2006 20:06 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Montekar hat geschrieben:
*sich gegen den Kopf hau*

Au... muss natürlich anders gemacht werden
Wie schafft man es denn (mit PHP, nicht MySQL), das ein Kommentar durchsucht wird? Also ich will wissen, ob eben der letzte Kommentar Seth enthält und darauf reagieren...


[php]if(strpos($string,'Seth') > 0) {

}[/php]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 12 Jun, 2006 06:48 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
:-D Danke!
Jetzt klappts bestimmt...

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Jun, 2006 14:39 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Hallo!

Also, der Bot ist jetzt so nett und redet auch mit mir, aber manchmal antwortet er zwei mal! :???:
Kann mir da vielleicht jemand helfen?



[php]
$sql = "SELECT * FROM accounts WHERE npc='1'";
$result = db_query($sql);

for ($i=0;$i<db_num_rows($result);$i++) {

$row = db_fetch_assoc($result);
$sql2="UPDATE accounts SET laston = '".date("Y-m-d H:i:s",strtotime("+ 300 seconds"))."', alive = '1', loggedin = '1', lasthit = '".date("Y-m-d H:i:s",strtotime("+ 300 seconds"))."' WHERE login = '".$row['login']."'";
db_query($sql2);

}

$result = db_query("SELECT * FROM commentary ORDER BY postdate DESC LIMIT 1");
$comment = db_fetch_assoc($result);
$me=$row['login'];

if (strpos($comment['comment'],'Guten Tag Seth') >= 0 && $comment['section']==$row['npccommentary'] && $comment['author']!=$row['acctid']) {

$name = db_query("SELECT * FROM accounts WHERE acctid='".$comment['author']."'");
$autor = db_fetch_assoc($name);
$sql3 ="INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'village','".$row['acctid']."','/me antwortet: \"Euch auch einen Guten Tag, ".$autor['name']."\"')";
db_query($sql3) or die(db_error(LINK));
$comment['comment']="/me antwortet: \"Euch auch einen Guten Tag, ".$autor['name']."\"";

} else if (strpos($comment['comment'],'Seth') >= 0 && $comment['section']==$row['npccommentary'] && $comment['author']!=$row['acctid']) {

$name = db_query("SELECT * FROM accounts WHERE acctid='".$comment['author']."'");
$autor = db_fetch_assoc($name);
$sql3 ="INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'village','".$row['acctid']."','/mefragt ".$autor['name']."`&: \"Was ist?\"')";
db_query($sql3) or die(db_error(LINK));
$comment['comment']="/mefragt ".$autor['name']."`&: \"Was ist?\"";

} else {

if (e_rand(1,500)>490) {

switch(e_rand(1,6)){

case 1:
case 2:
$sql3 ="INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'village','".$row['acctid']."',\"".$row['npccomment1']."\")";
db_query($sql3) or die(db_error(LINK));
$comment['comment']="";
break;

case 3:
case 4:
$sql3 ="INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'village','".$row['acctid']."','".$row['npccomment2']."')";
db_query($sql3) or die(db_error(LINK));
$comment['comment']="";
break;

case 5:
case 6:
$sql3 ="INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'village','".$row['acctid']."',\"".$row['npccomment3']."\")";
db_query($sql3) or die(db_error(LINK));
$comment['comment']="";
break;

}
}
}
[/php]

(Sry das ich hier alle nerve, aber das war auch ersmal das letzte mal...)

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum