Avatar billede mwm77 Nybegynder
18. september 2007 - 15:36 Der er 7 kommentarer og
1 løsning

Parse fra CharacterProfiler.lua fil - world of warcraft continue

Hej.

Jeg fundet ud af man kan få sin guild hjemmeside til at opdater automatisk ved hjælp af læsning fra en characterprofiler.lua fil der ligger i spillet. Jeg har lige fået vist hvordan jeg udtrækker alt indholdet som array text:

<?php
$content = file_get_contents('file.lua');
if(preg_match_all('/\["(.+?)"\]\s=\s(.+?),/', $content, $match))
{
echo '<pre>';
print_r($match);
echo '</pre>';
}
?>

Jeg sad og rodet lidt med at isoler de forskellige ting, og skal ha det hele ud sådan at det blir en simpel php værdi.

$character_name = Laris; eksempel
$character_lvl = 70; eksempel

min tidligere post kan ses her, der kan du/i se hele filen der skal udtrækkes fra.

http://www.eksperten.dk/spm/795215

Mit spørgsmål skåret ned er vel hvordan isoler jeg en ting og måske dens under emner. og alt udstyr på den liste har et nummer som man kan linke til og få billedet af den ting. og siden opdater automatisk..

$Charactername = preg_match_all('/\["Charactername"\]\s=\s(.+?),/', $content, $match);

Helt helt korrekt, men jeg tror næste det er sådan noget lign. håber du/i lige gider hjælpe..

              Mvh...MWM
Avatar billede mwm77 Nybegynder
18. september 2007 - 15:37 #1
ikke
Avatar billede pidgeot Nybegynder
18. september 2007 - 18:35 #2
Jeg sad for lidt over halvandet år siden og skulle parse den slags selv. I den forbindelse lavede jeg et par PHP scripts der kunne omdanne Lua-arrayet til et PPH-array - måske kan du bruge det som grundlag for at hive dataene ud:

http://wow.birdiesoft.dk/lua_php_parsers.zip

Du bør bruge parse.secure.php til formålet - parse.php burde være lidt hurtigere, men ikke sikker når der er ukontrollerbart input.

Jeg kan se at du har mere end et array i din fil - hvis du skal håndtere det, skal du lave en kopi af if-kommandoen i while(!feof($file))-løkken, der kigger efter det andet navn.
Avatar billede mwm77 Nybegynder
24. september 2007 - 22:56 #3
Hej igen.

Du må lige undskyld jeg først lige for svaret tilbage nu her. Jeg havde glemt at få sat abonnër på. Jeg skal ha lavet sådan en upload form på guild siden hvpr folk kan uploade deres .lua fil, men det gør jeg lige med noget php og sådan. De forskellige informationer skal indsættes i en database bagefter eller ved upload. Men jeg kan ikke få isoleret de forskellige ting. Jeg fik fra min første post og hvad jeg har kunne snuse mig frem til, fået .lua filen ud som arrays, men jeg skal isoler dem enkeltvis så jeg kan få lavet en value.

<?php
$content = file_get_contents('file.lua');
if(preg_match_all('/\["(.+?)"\]\s=\s(.+?),/', $content, $match))
{
echo '<pre>';
print_r($match);
echo '</pre>';
}

med denne kode komme hele .lua filen ud som arrays, men jeg skal bruge en:

$name = preg_match_all('/\["Charactername"\]\s=\s(.+?),/', $content, $match);

Så der ville stå kun "name"

Håber du/i lige forstår og en der lige kan hjælpe..

            Mvh..MWM
Avatar billede pidgeot Nybegynder
25. september 2007 - 17:05 #4
Hvis du nu i stedet bruger min parser, så vil du ende med PHP-arrays der direkte stemmer overens med de Lua-arrays der ligger i filen. Eksempelvis vil de characters der ligger på Runetotem kunne findes i $myProfile['Runetotem']['Characters'] - et array du kan løbe igennem med foreach for at få behandlet hver enkelt character:

foreach($myProfile['Runetotem']['Characters'] as $charname => $chardata) {
  //blot et eksempel på hvad ud kan gøre
  $gender=$chardata['sex'];
  $race=$chardata['race'];
  echo('Detected character: ' . $charname . ', ' . $gender . ' ' . $race);
}

Det eneste du skal vide er hvor i characterens array du finder tingene - og det kan du jo se i din egen fil.
Avatar billede mwm77 Nybegynder
24. oktober 2007 - 06:23 #5
problemet blev løst ved jeg fik lavet en Xml læser..vedkommendne der hjalp mig ved selv hvem han er...cool tusind tak ven...og tak til alle andre her også...

Mvh..Mwm..
Avatar billede olebole Juniormester
24. oktober 2007 - 09:11 #6
<ole>

Du skal bare huske at skrive løsningen her - så du er i overensstemmelse med E's regler  :)

/mvh
</bole>
Avatar billede mwm77 Nybegynder
24. oktober 2007 - 21:09 #7
Jo men når nu ingen kom med løsningen herinde fra alligevel, men det skal jeg nok huske i fremtiden, som også plejer at ske ved folk skriver hjælpen.. :-)

      Mvh..Mwm
Avatar billede pidgeot Nybegynder
24. oktober 2007 - 23:07 #8
Jeg kunne godt tænke mig at vide hvordan det jeg har skrevet ikke løste dit problem, eller i det mindste fik dig til at stille et specifikt spørgsmål om den. For mig at se holdt du fast i den (i hvert fald efter min mening) ikke-brugbare løsning med preg_match_all, uden overhovedet at have kigget på det jeg gav dig.

Jeg kunne også godt tænke mig at vide hvordan en XML-parser hjælper dig med at læse en .lua-fil - med mindre du da i stedet har valgt at hente dataene ved at parse Armory (den er jeg ikke sikker på hvorvidt Blizzard egentlig tillader, men det vil jeg ikke gå mere i detaljer med - siger blot jeg ikke ved om man må).

Og når nu Ole har nævnt det med reglerne, er det måske en ide - bare som reference til folk der ikke lige er klar over det - at påpege at de regler der omhandler løsnigner på spørgsmål er §2.1.12, §2.1.13 og §2.10, der til sammen angiver at det ikke er tilladt at lukke et spørgsmål hvis ens problem er løst, og løsningen ikke er tilgængelig for andre - uanset om det er lavet af en herinde fra, eller om det er en udefra. I dette tilfælde er det kun §2.10 der har relevans, da det ikke er en løsning herfra du har brugt, men kan være meget rart lige at vide hvad de andre er ^-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester