Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Program Fishing; // // Servidor Reborn Shard // // // Diagrama mostrando onde pode pegar peixe ou não. (X - pode, 0 - não pode, é o barco., # - é o seu char.): // // \x -6-5-4-3-2-1 0 1 2 3 4 5 6 // y\ // -6 X X X X 0 0 0 0 0 X X X X // -5 X X X X 0 0 0 0 0 X X X X // -4 X X X X 0 0 0 0 0 X X X X // -3 X X X X 0 0 0 0 0 X X X X // -2 X X X X 0 0 0 0 0 X X X X // -1 X X X X 0 0 0 0 0 X X X X // 0 X X X X 0 0 # 0 0 X X X X // 1 X X X X 0 0 0 0 0 X X X X // 2 X X X X X X X X X X X X X // 3 X X X X X X X X X X X X X // 4 X X X X X X X X X X X X X // 5 X X X X X X X X X X X X X // 6 X X X X X X X X X X X X X //Mensagens que podem ser recebidas ao pescar. // //Mes1 = 'Voce retira fish'; //Mes2 = 'You fish a while, but fail to catch anything.'; //Mes3 = 'Nao a peixe aqui.'; //Mes4 = 'Voce nao tem linha de visao do alvo.'; //Mes5 = 'Tente pescar na agua.'; //Mes7 = 'Voce encontrou um Mapa !!!'; // // //Movimentos de um barco. //Com1 = 'Raise Anchor'; //Com2 = 'Drop Anchor'; //Com3 = 'Forward'; //Com4 = 'Back'; //Com5 = 'Left'; //Com6 = 'Right'; //Com7 = 'Stop'; //Com8 = 'Turn Left'; //Com9 = 'Turn Right'; //Answer1 = 'Aye'; //Answer2 = 'We've stopped Cap'n'; //Answer3 = 'There's a boat next to you.' //Answer4 = 'We cannot turn that way Cap'n' {$Include 'all.inc'} const bag = $0E76; // TYPE DA BAG DENTRO DO HATCH { MUDAR AQUI } var x, y, i, j : integer; Time : TDateTime; fish : array [1..4] of integer; map : array [1..2] of integer; fishBox, pole, box, objeto : cardinal; procedure fecharPorta(chave, porta : cardinal); var sair : boolean; begin repeat sair := true; Time := Now; UseObject(chave); WaitTargetObject(porta); wait(200); if InJournalBetweenTimes('unlock', Time, Now) >= 0 then sair := false; until sair; end; procedure fecharBarco; var portaEsquerda, portaDireita, chave : cardinal; begin chave := $400CF3A3; //Colocar o ID da chave do barco. { MUDAR AQUI } portaEsquerda := $400D9CF4; //Colocar o ID da porta (prancha) esquerda. { MUDAR AQUI } portaDireita := $400D9D0B; //Colocaro ID da porta (prancha) direita. { MUDAR AQUI } UseObject(backpack); wait(200); if TargetPresent then CancelTarget; fecharPorta(chave, portaEsquerda); fecharPorta(chave, portaDireita); wait(200); end; procedure virar; var TimeInterno : TDateTime; loop1, loop2 : integer; begin TimeInterno := Now; UOSay('Turn Left'); wait(200); if (inJournalBetweenTimes('boat|cannot', TimeInterno, Now) >= 0) then //Obstáculo begin TimeInterno := Now; loop1 := 0; UOSay('Right'); repeat wait(100) loop1 := loop1 + 1; until (inJournalBetweenTimes('boat|cannot|stopped', TimeInterno, Now) >= 0) OR (loop1 >= 50); if (loop1 < 50) then //Obstáculo à direita. begin TimeInterno := Now; loop2 := 0; UOSay('Left'); repeat wait(100) loop2 := loop2 + 1; until (inJournalBetweenTimes('boat|cannot|stopped', TimeInterno, Now) >= 0) OR (loop2 >= 50); if (loop2 < 50) then //Obstáculo à esquerda. begin UOSay('Back'); wait(5000); virar; end; end; end; end; procedure mover; var TimeInterno : TDateTime; loop : integer; begin TimeInterno := Now; loop := 0; UOSay('Forward'); repeat wait(100) loop := loop + 1; until (inJournalBetweenTimes('stopped', TimeInterno, Now) >= 0) OR (loop >= 150); if (loop < 150) then //Obstáculo à frente. begin virar; mover; end else begin UOSay('Stop'); wait(200); end; end; procedure useObjectIn(objeto : cardinal; x, y : integer); var TimeInterno : TDateTime; k : integer; begin if TargetPresent then CancelTarget; TimeInterno := Now; UseObject(objeto); WaitTargetTile(0, x, y, 251); k := 0; repeat wait(100); k := k + 1; until (inJournalBetweenTimes('pull out|while|no|too|fishing|fail|encontrou', TimeInterno, Now) >= 0) OR (k > 300); if (inJournalBetweenTimes('pull out|fail', TimeInterno, Now) >= 0) then useObjectIn(objeto, x, y); end; procedure contarPeixesMapas(fishbox : cardinal); var a, b, m, p: integer; begin useobject(fishbox); wait(200); useobject(box); wait(200); for a := 1 to 4 do begin wait(200); FindType(fish[a], fishbox); p:= p + FindFullQuantity; // Contando os Fishs end; useobject(fishbox); wait(300); for b := 1 to 2 do begin FindType(map[b], fishbox); m:= m + FindCount; // Contando os Maps end; Addtosystemjournal('O Hatch possui: ' + inttostr(p) + ' Peixes. Valor Arrecadado: ' + inttostr(p*6) + ' Kgps. Maps: ' + inttostr(m) + ' unidades') end; begin Unequip(RhandLayer); Unequip(LhandLayer); fishBox := $400389E9; //Colocar o ID do baú do barco. { MUDAR AQUI } wait(200); useobject(fishbox); wait(200); box := FindType(bag, fishbox); wait(200); pole := FindType($0DBF, backpack); fish[1] := $09CC; fish[2] := $09CD; fish[3] := $09CE; fish[4] := $09CF; map[1] := $14EB; map[2] := $14EC; SetARStatus(true); //Reconnector Hungry(1, backpack); repeat contarPeixesMapas(fishBox); fecharBarco; for x := -5 to 5 do //Muda o alvo no eixo X. begin for y := -5 to 5 do //Muda o alvo no eixo Y. begin ClearJournal; if (y < 2) AND ((x > -3) OR (x < 3)) then continue; Time := Now; UseObjectIn(pole, GetX(self) + x, GetY(self) + y); UseObject(fishBox); //Abre o baú do barco para achar a bag dentro dele. UseObject(box); // Abre a bag dentro do baú do barco para jogar os peixes dentro if (inJournalBetweenTimes('pull out', Time, Now) >= 0) then //Verifica se pegou algum peixe. for i := 1 to 4 do //Para tentar todos os tipos de peixe. if FindType(fish[i], ground) > 0 then begin objeto := FindType(fish[i], ground); MoveItem(objeto, 0, box, 0, 0, 0); //Move o peixe para a bag dentro do baú do navio. wait(200); end else UseObject(fishBox); //Abre o baú do barco para poder jogar o mapa dentro dele. if (inJournalBetweenTimes('encontrou', Time, Now) >= 0) then //Verifica se pegou algum mapa do tesouro. for j := 1 to 2 do //Para tentar todos os tipos de mapa. if FindType(map[j], ground) > 0 then begin objeto := FindType(map[j], ground); MoveItem(objeto, 0, fishBox, 0, 0, 0); //Move o mapa do tesouro para o baú do navio. wait(200); end; end; end; ClearJournal Mover; wait(500); until False; End.