Lumberjacking
Moderátor: Caleb
-
- Walking Scribbler
- Příspěvky: 39
- Registrován: 11 úno 2010 17:03
- Kontaktovat uživatele:
Lumberjacking
Nejsem žadnej vědator ale rad bych se zeptal jestli se bude dělat a nebo ma někdo makro na lumber nevim jak předělat a nebo přidat makro z joka ostatně bych byl rad za samostatny makro na fenu než něco tahat z joka abych si tpak cely rozhasil.Když sem tu už viděl mininf a fishing tak by mě zajimalo jak je to s Lumberjackingem.
Re: Lumberjacking
Zdravim,
je vo fene nejakym sposobom mozne vyhladavat Tile(stromy, kamene...) v okoli postavy? Snazim sa vyrobit lumber skript ktory bude sekat vzdy do najblizsieho stromu, ale FindType mi Tile nenajde a k inemu sposobu vyhladavania v okoli postavy som sa nedopatral. Pripadne, neviete kde sa vo fene pridavaju objekty do World.Ground property? Dik.
je vo fene nejakym sposobom mozne vyhladavat Tile(stromy, kamene...) v okoli postavy? Snazim sa vyrobit lumber skript ktory bude sekat vzdy do najblizsieho stromu, ale FindType mi Tile nenajde a k inemu sposobu vyhladavania v okoli postavy som sa nedopatral. Pripadne, neviete kde sa vo fene pridavaju objekty do World.Ground property? Dik.
Pain, DoHR
Re: Lumberjacking
Jde..Leinad píše:Zdravim,
je vo fene nejakym sposobom mozne vyhladavat Tile(stromy, kamene...) v okoli postavy? Snazim sa vyrobit lumber skript ktory bude sekat vzdy do najblizsieho stromu, ale FindType mi Tile nenajde a k inemu sposobu vyhladavania v okoli postavy som sa nedopatral. Pripadne, neviete kde sa vo fene pridavaju objekty do World.Ground property? Dik.
ale nejsnažší metoda na udělání, je přes waittile a davat si do podminky stromky, ktere jsi už sekal, a tak vždy pujde k dalsimu ..
Re: Lumberjacking
uz som to vyriesil inak, ale aj tak dik za odpoved : )Smoce píše: Jde..
ale nejsnažší metoda na udělání, je přes waittile a davat si do podminky stromky, ktere jsi už sekal, a tak vždy pujde k dalsimu ..
Pain, DoHR
Re: Lumberjacking
Leinad píše:uz som to vyriesil inak, ale aj tak dik za odpoved : )Smoce píše: Jde..
ale nejsnažší metoda na udělání, je přes waittile a davat si do podminky stromky, ktere jsi už sekal, a tak vždy pujde k dalsimu ..
J je to lehký, někde jsme měl celé makro napsané , ale nemůžu ho najít a dalších xxx maker ...
Re: Lumberjacking
Mohl bych poprosit nejakeho dobrodince o zverejneni fena script na lumber? Pokud tedy je, diky
Edit 24.6.: uz je to mesic, nechce se mi verit ze by nikdo nemel script na lumber
Tak jinak, mohl by se na to nejaky scripter vrhnout? Pokud ten script bude samocinny, vysekavat strom od stromu, sbirat special drevo, ostatni vyhazovat, jsem ochotny se po domluve nejak odmenit
Edit 24.6.: uz je to mesic, nechce se mi verit ze by nikdo nemel script na lumber
Tak jinak, mohl by se na to nejaky scripter vrhnout? Pokud ten script bude samocinny, vysekavat strom od stromu, sbirat special drevo, ostatni vyhazovat, jsem ochotny se po domluve nejak odmenit
Legie (navzdy!!)
Re: Lumberjacking
Pracuje na tom někdo? myslím, že by to hodně hráčů ocenilo. Díky
Re: Lumberjacking
Mianek píše:Mohl bych poprosit nejakeho dobrodince o zverejneni fena script na lumber? Pokud tedy je, diky
Edit 24.6.: uz je to mesic, nechce se mi verit ze by nikdo nemel script na lumber
Tak jinak, mohl by se na to nejaky scripter vrhnout? Pokud ten script bude samocinny, vysekavat strom od stromu, sbirat special drevo, ostatni vyhazovat, jsem ochotny se po domluve nejak odmenit
Lumber má každý lepší scripter, není to takovej velkej problém i přes to, že Phoenix neumí v základu hledat static podle ushort stromu ..
A kdyby byli všechny scripty zveřejněné , kdo by s toho pak něco měl
Re: Lumberjacking
Ok, rozumim. Tak pokud bude nekdo tak laskav a podeli se se mnou o script na lumber a ja se odmenim, samozrejme ze po domluve s autorem scriptu ho nebudu dal sirit, kdyz uz ho budu muset zaplatit (nemyslim tim real ) nejde mi o nic jineho nez si domaxnout si crafta nez to tu zavrou
Legie (navzdy!!)
Re: Lumberjacking
Teda nevim, jak jste to resili vy panove, ale ja spokojeny nejsem, protoze jsem neprisel na zpusob, ktery by byl univerzalni. Pouze napevno dokazi vytezit urcitou oblast (a to jeste nemam poradne dokonceny blindfolded pathfinding)...
Zarazi me, ze jsem nenasel nic na zjisteni staticGraphic krome maker.
Pro ty, kteri tapou, velice rad poskytnu informace o tom, jak jsem postupoval. Zacal jsem nahravat makro a obesel jsem stromy, ktere chci posekat a na kazdy z nich jsem dal ,info. V logu makra se uklada pozice (x,y,z) a staticGraphic (to jsem nikde jinde nez v makrech nenasel) a pak jsem si napsal skript, ktery pres WaitTargetTile(x,y,z,staticGraphic) seka stromy, pomoci Track (konkretni implementace se da najit v kopani mapek na smoceho webu) ukazuje, kam se pokousi dojit dal a pomoci skriptu na chozeni, ktery jeste nemam osetreny na kvalitni vyhybani se prekazek, se snazi na danou pozici dojit. Takze dokazi vytezit jen pevne dany set stromu a jakmile narazim na slozitejsi prekazku, jsem v... xD
Je pravda, ze Phoenix vidim prakticky poprve, ale jak lepe poresit Lumberjacking nevidim. Sofistikovanejsi dotazy klidne do PM/ICQ. Skript nema smysl poskytovat (neprisel jsem na zpusob, jak tezit obecne, pouze v pevne dane lokalite), jeho jadro jsem tady popsal.
Zarazi me, ze jsem nenasel nic na zjisteni staticGraphic krome maker.
Pro ty, kteri tapou, velice rad poskytnu informace o tom, jak jsem postupoval. Zacal jsem nahravat makro a obesel jsem stromy, ktere chci posekat a na kazdy z nich jsem dal ,info. V logu makra se uklada pozice (x,y,z) a staticGraphic (to jsem nikde jinde nez v makrech nenasel) a pak jsem si napsal skript, ktery pres WaitTargetTile(x,y,z,staticGraphic) seka stromy, pomoci Track (konkretni implementace se da najit v kopani mapek na smoceho webu) ukazuje, kam se pokousi dojit dal a pomoci skriptu na chozeni, ktery jeste nemam osetreny na kvalitni vyhybani se prekazek, se snazi na danou pozici dojit. Takze dokazi vytezit jen pevne dany set stromu a jakmile narazim na slozitejsi prekazku, jsem v... xD
Je pravda, ze Phoenix vidim prakticky poprve, ale jak lepe poresit Lumberjacking nevidim. Sofistikovanejsi dotazy klidne do PM/ICQ. Skript nema smysl poskytovat (neprisel jsem na zpusob, jak tezit obecne, pouze v pevne dane lokalite), jeho jadro jsem tady popsal.
Re: Lumberjacking
ad. Leny-m
Obchazeni se by se dalo vyřešit jako to mám u miningu - minpohyb(). http://www.darkparadise.cz/Forum/viewto ... =67&t=4057
Tady máte můj, ale už si nepamatuju jestli vůbec funguje a nebo jestli je jen rozdělaný, ale třeba někomu něco píchne :p
Obchazeni se by se dalo vyřešit jako to mám u miningu - minpohyb(). http://www.darkparadise.cz/Forum/viewto ... =67&t=4057
Tady máte můj, ale už si nepamatuju jestli vůbec funguje a nebo jestli je jen rozdělaný, ale třeba někomu něco píchne :p
Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.Text;
using Phoenix;
using Phoenix.WorldData;
using System.Linq;
using System.Windows.Forms;
using System.Threading;
namespace Phoenix.Scripts {
public class Lumber {
public Lumber() {
treeGraphics = new List<Graphic>() {
0x0cca, 0x0ccb, 0x0ccc, 0x0ccd, 0x0cd0, 0x0cd3, 0x0cd6, 0x0cd8, 0x0cda, 0x0cdd, 0x0ce0, 0x0ce3, 0x0d01
};
}
private List<Graphic> treeGraphics;
private bool MoveToTile( StaticItem tree ) {
UO.PrintInformation( "Moving to " + tree.X + "," + tree.Y + "," + tree.Z );
Func<bool> isInRange = new Func<bool>( () => {
return Math.Max( Math.Abs( World.Player.X - tree.X ), Math.Abs( World.Player.Y - tree.Y ) ) <= 2;
} );
while ( !isInRange() ) {
while ( !isInRange() && World.Player.X > tree.X && World.Player.Y > tree.Y && MakeStep( 7 ) )
;
while ( !isInRange() && World.Player.X < tree.X && World.Player.Y < tree.Y && MakeStep( 3 ) )
;
while ( !isInRange() && World.Player.X > tree.X && World.Player.Y < tree.Y && MakeStep( 5 ) )
;
while ( !isInRange() && World.Player.X < tree.X && World.Player.Y > tree.Y && MakeStep( 1 ) )
;
while ( !isInRange() && World.Player.X > tree.X && MakeStep( 6 ) )
;
while ( !isInRange() && World.Player.X < tree.X && MakeStep( 2 ) )
;
while ( !isInRange() && World.Player.Y > tree.Y && MakeStep( ( byte )0 ) )
;
while ( !isInRange() && World.Player.Y < tree.Y && MakeStep( 4 ) )
;
}
return true;
}
private void HarvestTile( StaticItem tree ) {
UO.PrintInformation( "Harvesting at " + tree.X + "," + tree.Y + "," + tree.Z );
do {
UOItem hatchet = World.Player.Layers[ Layer.LeftHand ];
if ( hatchet.Graphic != 0x0F43 )
hatchet = World.Player.Backpack.AllItems.Where( i => i.Graphic == 0x0f43 ).FirstOrDefault();
if ( hatchet == null )
throw new ScriptErrorException( "Hatchet not found" );
Journal.Clear();
UO.WaitTargetTile( tree.X, tree.Y, tree.Z, tree.Graphic );
hatchet.Use();
Journal.WaitForText( "There are no logs left here to chop.", "You hack at the tree for a while, but fail to produce any useable wood.", "You put the log" );
UO.Wait( 500 );
} while ( !Journal.Contains( "There are no logs left here to chop." ) );
}
[Executable( "lumber" ), BlockMultipleExecutions( "lumber" )]
public void Start() {
Start( 10 );
}
[Executable( "lumber" ), BlockMultipleExecutions( "lumber" )]
public void Start(int radius) {
using ( Map map = new Map() ) {
IEnumerable<StaticItem> trees = map.GetStaticItems( World.Player.X - radius, World.Player.Y - radius, World.Player.X + radius, World.Player.Y + radius, i => treeGraphics.Contains( i.Graphic ) ).OrderBy( i => Math.Max( Math.Abs( World.Player.X - i.X ), Math.Abs( World.Player.Y - i.Y ) ) );
while ( trees.Count() > 0 ) {
StaticItem tree = trees.FirstOrDefault();
if ( MoveToTile( tree ) )
HarvestTile( tree );
UO.PrintInformation( "Remaining " + trees.Count() + " trees" );
trees = trees.Skip( 1 ).OrderBy( i => Math.Max( Math.Abs( World.Player.X - i.X ), Math.Abs( World.Player.Y - i.Y ) ) );
}
}
UO.PrintInformation( "Lumber finished" );
}
#region Movement
private MessageCallback RegisterMessageCallback( bool client, MessageCallback callback, params byte[] opcodes ) {
foreach ( byte opcode in opcodes )
if ( client )
Core.RegisterClientMessageCallback( opcode, callback );
else
Core.RegisterServerMessageCallback( opcode, callback );
return callback;
}
private bool MakeStep( byte direction ) {
return MakeStep( direction, 0 );
}
private bool MakeStep( byte direction, int depth ) {
if ( depth >= 8 )
return false;
while ( !Step( direction ) )
MakeStep( ( byte )( ( direction + 1 ) % 8 ), ++depth );
return true;
}
public bool Step( byte direction ) {
Keys[] directions = {
Keys.PageUp, // 0
Keys.Right, // 1
Keys.PageDown, // 2
Keys.Down, // 3
Keys.End, // 4
Keys.Left, // 5
Keys.Home, // 6
Keys.Up, // 7
};
Keys key = directions[ direction ];
return ( World.Player.Direction != direction ? Step( key ) : true ) && Step( key );
}
public bool Step( Keys key ) {
bool result = false;
using ( ManualResetEvent handled = new ManualResetEvent( false ) ) {
using ( ManualResetEvent requested = new ManualResetEvent( false ) ) {
MessageCallback requestedCallback = RegisterMessageCallback( true, ( d, p ) => {
requested.Set();
handled.WaitOne( 500 );
return p;
}, 0x02 );
try {
UO.Press( key );
if ( !requested.WaitOne( 500 ) )
return false;
}
finally {
handled.Set();
Core.UnregisterClientMessageCallback( 0x02, requestedCallback );
}
}
handled.Reset();
using ( ManualResetEvent responded = new ManualResetEvent( false ) ) {
MessageCallback respondedCallback = RegisterMessageCallback( false, ( d, p ) => {
result = d[ 0 ] == 0x22;
responded.Set();
handled.WaitOne( 500 );
return p;
}, 0x21, 0x22 );
try {
if ( !responded.WaitOne( 40000 ) ) {
UO.PrintWarning( "Walk response timeout" );
return false;
}
}
finally {
handled.Set();
Core.UnregisterServerMessageCallback( 0x21, respondedCallback );
Core.UnregisterServerMessageCallback( 0x22, respondedCallback );
}
}
}
UO.Wait( 400 );
return result;
}
#endregion
}
}
Re: Lumberjacking
- grafika statiku opravdu zjistit jde
- pathfinding jde take krasne vyuzit
Z informaci, ktere jsem nasbiral tady na foru a trochu od strejdy G, se mi podarilo dat dohromady obecneho lumberjacka, ktery je schopny tezit libovolne stromy v Yewu (sekam tam, tak jsem grafiky jinych stromu nesbiral). Staci mit ulozene typy stromu, ktere se tam vyskytuji a skript uz skenuje sve okoli a hleda stromy, po vysekani je jednoduse pridava do ignore listu a jede dal. Nejede v mrizce, pouze "first come, first chop", scan je ve ctverci a roste, pokud nic nevrati. Semtam to odtahne domu na dalsi zpracovani.
Takze opravdu to napsat jde a je to pomerne jednoduche. Nicmene musim rict, ze bez Cardy bych to nezvladl. Vubec jsem nemel ani poneti, co vsechno je mozne a informace a kod, ktery poskytl povazuji za zlato Jeste jednou diky.
- pathfinding jde take krasne vyuzit
Z informaci, ktere jsem nasbiral tady na foru a trochu od strejdy G, se mi podarilo dat dohromady obecneho lumberjacka, ktery je schopny tezit libovolne stromy v Yewu (sekam tam, tak jsem grafiky jinych stromu nesbiral). Staci mit ulozene typy stromu, ktere se tam vyskytuji a skript uz skenuje sve okoli a hleda stromy, po vysekani je jednoduse pridava do ignore listu a jede dal. Nejede v mrizce, pouze "first come, first chop", scan je ve ctverci a roste, pokud nic nevrati. Semtam to odtahne domu na dalsi zpracovani.
Takze opravdu to napsat jde a je to pomerne jednoduche. Nicmene musim rict, ze bez Cardy bych to nezvladl. Vubec jsem nemel ani poneti, co vsechno je mozne a informace a kod, ktery poskytl povazuji za zlato Jeste jednou diky.
Re: Lumberjacking
Len maly dotaz, co mi chyba (Ocroc script), ked to prudi s tymto?
error CS0246: The type or namespace name 'StaticItem' could not be found (are you missing a using directive or an assembly reference?)
asi nevie co je to StaticItem, hroza toto
error CS0246: The type or namespace name 'StaticItem' could not be found (are you missing a using directive or an assembly reference?)
asi nevie co je to StaticItem, hroza toto
Re: Lumberjacking
taky jsem se na to chtěl podívat a píše mi to stejnou chybu že to nezná staticitem, nevím odkud se to vzalo protože v dokumentaci k phoenixu tam taková třída není ... ani třída map která static itemy načítá. tak asi stará dokumentace jenom bych taky rád věděl co s tímSeverka píše:Len maly dotaz, co mi chyba (Ocroc script), ked to prudi s tymto?
error CS0246: The type or namespace name 'StaticItem' could not be found (are you missing a using directive or an assembly reference?)
asi nevie co je to StaticItem, hroza toto
Re: Lumberjacking
k tomuto vlastne vznikla odpoveď? ja som tiež po použití tohto skriptu dostal chybovú hlášku "Název typu nebo oboru názvu StaticItem nebyl nalezen (pravděpodobně ste neuvedli direktivu using nebo odkaz na sestavení), a to rovno 2x.
predpokladám, že to je 2x lebo odkazuje na 2 miesta v skripte.
skúsil som odstrániť "StaticItem", čo vyústilo do inej chyby (už nepamätám akej) a pridať do daného riadku "using", čo vyústilo do asi 10 chýb.
predpokladám, že to je 2x lebo odkazuje na 2 miesta v skripte.
skúsil som odstrániť "StaticItem", čo vyústilo do inej chyby (už nepamätám akej) a pridať do daného riadku "using", čo vyústilo do asi 10 chýb.
moja armáda núbov zahŕňa - Ecki (vamp), Joneleth (necro), Nubik Obycajny (loladin), Astar (cleric), Katrina (craft), Silverblade (craft), Beregond (warr), Elliara (mage), Asminia (ranger). because I can... ICQ = 261129403, email = eckister@gmail.com
Re: Lumberjacking
Nie, tento skript nefunguje Ani Boh nevie co chcel StaticItemom basnik povedat... Ono su hraci, co maju tento skript funkcny, tak skus posliedit a potom to skusit cez PM zohnat... GOOD LUCK!
Re: Lumberjacking
Zdravím, chtěl bych poprosit o funkční skript na lumber, miningu je všude dost, ale použitelný lumber jsem zatím nenašel a nebo je chráněn heslem.
jestli by mi někdo pomohl a podělil se se mnou, bohužel na skriptovaní nemam vlohy
jestli by mi někdo pomohl a podělil se se mnou, bohužel na skriptovaní nemam vlohy