ArchW Skrevet 26. juli 2005 Del Skrevet 26. juli 2005 Jeg skulle gjerne satt opp ett script som sjekker om battle.net bot'n min er online eller ikke, kansje ikke supernyttig men er mest for å lære meg PHP. Problemet er at jeg ikke helt vet hvordan jeg skal gå frem for at koden skal finne ut om bot'n er online eller ikke, tenkte kansje scriptet kan lytte på porten men bot'n er vel der uansett om den er nede eller ikke. Vet dere noen måter jeg kan klare dette på? Vil det være en veldig teknisk oppgave? Tenkte noe sånt som dette.. if( <bool funksjon som sjekker om bot'n er oppe>); echo "MyBot is ONLINE!"; // muligens grønn font her } else() { echo "MyBot is OFFLINE!"; // muligens rød font her } Tror den funksjonen som skal teste om bot'n er oppe eller ikke kommer til å bli temmelig innviklet, eller er det bare jeg som ikke vet bedre? Lenke til kommentar
ZoRaC Skrevet 26. juli 2005 Del Skrevet 26. juli 2005 Problemet er at et PHP-script ikke kan stå å "lytte". Det må startes av noe. Kan ta en ping mot serveren via PHP og kjøre en cron-job som kjører det PHP-scriptet f.eks hvert 15 min da... Lenke til kommentar
ArchW Skrevet 26. juli 2005 Forfatter Del Skrevet 26. juli 2005 Hvordan ville du gått frem for å pinge serveren i såfall? Kan jeg ikke lage en funksjon som pinger hver gang noen oppdaterer siden? Husk at jeg vil vite om bot'n er nede og ikke hele ip adressen! Om jeg tar ned bot'n på grunn av <god grunn her> men selv har lyst å være tilkoblet bnet med brukerkontoen min vil jeg ikke at scriptet skal tro at bot'n er online når det egentlig bare er jeg som bruker samme ip adresse. Bot'n i seg selv kan ikke pinges. Kan selvfølgelig scripte en ping kommunikasjon som forteller scriptet om nettet hos meg er nede eller ikke men vil helst bare vite om bot'n er nede. Lenke til kommentar
???????? Skrevet 26. juli 2005 Del Skrevet 26. juli 2005 Det er nok bedre å sette opp et script som åpner en tilkobling til den rettes proten, se fsockopen() i manualen - der finner du sikkert ferdige eksempler også. Hvis dette skal skje automatisk må du sette opp en cron tab (cron jobs) Lenke til kommentar
ArchW Skrevet 26. juli 2005 Forfatter Del Skrevet 26. juli 2005 Det er nok bedre å sette opp et script som åpner en tilkobling til den rettes proten, se fsockopen() i manualen - der finner du sikkert ferdige eksempler også. Hvis dette skal skje automatisk må du sette opp en cron tab (cron jobs) Usikker på om det du nevner er komplisert eller ikke, kan sikkert få det til om jeg googler på hva du sa og følger instrukser, men om det er avanserte funksjoner tror jeg at jeg venter med det til jeg har en grunnleggende forståelse av PHP da dette begynte som en ide å bygge på mens jeg pløyet igjennom diverse looper. Sikker på at det ikke er mulig å få en bool funksjon til å sjekke feks port 1337 om den går ut på nett og derav gi true eller false til loop body? I praksis vil jeg at denne funksjonen bare skal sjekke porten i øyeblikket jeg refresher nettsiden og avslutte seg selv etter at den har kjørt seg ut av koden. Lenke til kommentar
???????? Skrevet 26. juli 2005 Del Skrevet 26. juli 2005 (endret) Jeg antar at du ikke en gang kikket i manualen som jeg skerv du burde gjøre, for der hadde du funnet denne: <?php$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.example.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } ?> Bare å skrive den om slik: sjekke_server($adresse, $port){ $fp = fsockopen$adresse, $port, $errno, $errstr, 30); if (!$fp) { return false; } else { return true; } } Nå har jeg bare klippet å limt den i det lille hurtigsvarvinduet, så det kan hene du må rette litt på den. Endret 26. juli 2005 av ???????? Lenke til kommentar
ArchW Skrevet 26. juli 2005 Forfatter Del Skrevet 26. juli 2005 Takk, det jeg mente var at blir koden for avansert er det ikke vits å bruke tid på å få det til å fungere fordi jeg ikke vil forstå den som vil resultere i at jeg ikke lærer noe av det. Hadde jeg hatt lyst på cut paste script hadde jeg sjekket hotscripts.com først. Lenke til kommentar
Torbjørn Skrevet 27. juli 2005 Del Skrevet 27. juli 2005 Vel, ditt skript må uansett hente inn informasjon om hvorvidt boten er oppe eller ikke - hvordan er den informasjonen tilgjengelig? hvis boten lytter på en port, er ????'s måte den beste og mest logiske. hva slags bot er dette forresten? Lenke til kommentar
ArchW Skrevet 27. juli 2005 Forfatter Del Skrevet 27. juli 2005 Det er en VB bot (bruker ihvertfall VBS til scripting) laget av Stealth, derav navnet Stealthbot med formål til å fungere på Blizzard's spillserver, Battle.net. Tror du kan sette valgfri "bnet vennelig" port som bot'n skal bruke for å kommunisere med battle.net, standard port er 6112. Vil det fungere å lytte på port 6112 og bruke resultatet til å bedømme om bot'n er oppe eller nede? Kan jeg bruke noen annen form for å teste om den er online eller ikke? (kunne pinget b.net men dette ville jo bare gjelde om b.net var nede..) Lenke til kommentar
???????? Skrevet 27. juli 2005 Del Skrevet 27. juli 2005 Hvis det ikke er noe som svarer på porten så får den ikke opprettet noen tilkobling, og skal returnere false - men det kan finnes unntak dersom serveren/tjenesten er satt opp slik at den automatisk skal svare. Lenke til kommentar
Torbjørn Skrevet 27. juli 2005 Del Skrevet 27. juli 2005 hva svarer denne boten på da? hvordan kommuniserer den? Lenke til kommentar
ArchW Skrevet 27. juli 2005 Forfatter Del Skrevet 27. juli 2005 Den bruker ett chat interface opp mot battle.net sitt innebygde chat system. For å kommunisere brukes en type trigger forran kommandonavn for å utføre kommandoer. Eksempel: Nunyah: !whois PlayerB MyBot: PlayerB is using Warcraft III. Rank [Peon] Nunyah: !kick PlayerB caps abuse MyBot: /kick playerB caps abuse (playerB was kicked by MyBot. (caps abuse)) Er det mulig å få scriptet til å sjekke om bot'n er online ved å sjekke chat interface? "Hvis jeg er inne i en kanal, kjør echo "MyBot is ONLINE!";, hvis ikke kjører jeg echo "MyBot is OFFLINE!";. Lenke til kommentar
Torbjørn Skrevet 27. juli 2005 Del Skrevet 27. juli 2005 da må ditt skript koble seg opp til samme kanal og sjekke da.. er dette IRC? Lenke til kommentar
ArchW Skrevet 27. juli 2005 Forfatter Del Skrevet 27. juli 2005 Vet ikke helt om du tenker på metoden IRC eller om du misforstår og tror jeg mener at dette handler om en IRC bot til en spesifik irc kanal. Battle.net er en spillserver med integrert login i Blizzard Entertainment's populære spill (starcraft, warcraft, diablo etc). For å kunne logge deg på kreves det at du har en unik nøkkel (cd key) og at ingen andre er pålogget med den samme nøkkelen. Når du er tilkoblet serveren har du ett chat interface (ikke så ulikt IRC sitt) der du kan opprette kanaler og bruke enkle kommandoer med "/" som utløser til kommandoene. Du kan også ved hjelp av en meny sette opp eller koble deg til spill med andre brukere. Bot'n jeg bruker er ferdig programmert og kan lastes gratis ned fra www.stealthbot.net. Du må konfigurere den selv og legge til en unik cd key. Medfølger script fil så du kan "bygge på" bot'n og gi den nye kommandoer og muligheter. Bot'n logger seg på battle.net automatisk med brukernavn og passord å dukker opp i den kanalen du spesifiserte i config filen, feks MinKanal, der den ser ut som en vanlig spiller. Bot'n bruker et 3rd party chat program i bakgrunn av battle.net som fanger opp kommandoene i battle.net sine chat kanaler. Du kan også chatte via bot'n direkte med dette programmet. DNS navn til en av battle.net serverne er useast.battle.net (ikke helt sikker, er på jobb så får ikke sjekket..) port 6112. (standard, men ikke den eneste som kan brukes) Ikke meningen å fornærme deg med å gi deg "dummies" svar. Mye av dette er kjent for de fleste, men siden du spør så svarer jeg så godt som mulig, dette for å forhindre misforståelser. Lenke til kommentar
Torbjørn Skrevet 27. juli 2005 Del Skrevet 27. juli 2005 Jeg mente å spørre om dette foregår over protokollen IRC, isåfall gjørd et det enklere. Virker som den eneste måten boten kommuniserer på, er gjennom "chat interface" med battle net. litt googling vil kanskje gi deg spec. for denne kommunikasjonen? Lenke til kommentar
ArchW Skrevet 27. juli 2005 Forfatter Del Skrevet 27. juli 2005 Regner med jeg kan få noen gode svar om jeg spør på stealthbot.net's forum om hvordan chat spec bot'n bruker, selv vet jeg lite om hva som er "under panseret" til bot'n min og har veldig liten kunnskap forbi grunnleggende nettverks kommunikasjon og protokoller. Mulig at noen som har brukt battle.net her på forumet kan si mer om chat interface'et er basert på Internet Relay Chat og hvordan en bot kommuniserer via battle.net serveren. Vet at battle.net blandt annet bruker UDP protokoll, om dette er 'stand alone' eller i lag med TCP/IP vet jeg ikke. Men tilbake til alternative løsninger, ville det gått å fått scriptet til å sniffe på feks port 6112 å sjekke om den går ut på nett og dermed avgjøre om bot'n er online eller ikke? Dette virker som en langt mindre problematisk løsning enn den nevnt over. Ett annet alternativ kunne kansje vært at scriptet sjekket lokalt på bot'n sitt chat interface (3rd party programmet) om den er tilkoblet battle.net eller ikke? feks kjøre en kontrolltest om bot'n er inne på en kanal eller ikke.. Lenke til kommentar
Torbjørn Skrevet 27. juli 2005 Del Skrevet 27. juli 2005 du tenker fornuftig hvertfall. med en protokoll menes bare et skjema for hvordan man skal kommunisere, det er ikke noe problem å sende informasjon (tall og bokstaver eller andre tegn) server må vite hva som er autentisering, hva som er melding til chatten etc... av alt som kommer over nettforbindelsen HTTP er en protokoll for eksempel. den innebærer at klient kobler opp til server over tcp, deretter sier den en av følgende: GET, POST, HEAD, PUT, .... og noen til, som er regelsettet for hvordan snakke http. f.eks: GET /index.php HTTP/1.0 tilsvarende skjema/definisjon for hvordan kommunisere over battlenet finnes også, da som en "protokoll". Hvis den bruker IRC, er det bra, fordi det finnes mange php applikasjoner som implementerer IRC. Hvis boten også kommuniserer lokalt (lar deg lese av status eller har et lokalt interface av noe slag) kan du alternativt undersøke hvordan det fungerer. Lenke til kommentar
Yankes Skrevet 27. juli 2005 Del Skrevet 27. juli 2005 (endret) nunya; står boten på din server/en server du har tilgang så har jeg et uptime script jeg har mekka, utifra det så kan du jo endre svarene.. Sånn som på det scriptet jeg har så svarer PHP scriptet ikke noe hvis serveren er nede, men den svarer "Uptime: <uptime her...>" hvis serveren er online. Men dette scriptet sjekker da om serveren er online og ikke bare boten (men jeg regner med at boten er online hele tiden hvis serveren er det!) Endret 27. juli 2005 av YaNkEs Lenke til kommentar
nthing Skrevet 27. juli 2005 Del Skrevet 27. juli 2005 på battle.net er det jo account så du må jo da koble deg på den account'en på en måte lissom... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå