[Scripts] Automaton Scriptteile

06/22/2008 11:42 Tom94#16
du meinst wenn das internet es verkraftet ;)

hab das selber mal ausprobiert aber internet is abgekackt xD
übrigens, noch mieser ist @startspam @gall bzw @startspam @guildall (in meinem script)
denn man kann guildinvite autorefuse net anstellen, das heisst niemand kann chatten oder sowas ^^
06/22/2008 12:01 FlyStyler#17
Oder Internet ^^
Aber es kommt immer ein Nettes Feedback von den Leuten die Bespammt werden.
Mhmm mir kommt ne idee ^^
/e Nein Ich werde keinen Den Automaton Schicken, wird schon seinen Grund haben das der nicht mehr geuppt wird
06/22/2008 12:05 d0xs#18
Kann man ein * Script * erstellen wo man Fooden kann weil beim Automaton funkt das nicht :( z.B : @Food 2600 400 also bei wie viel HP er fooden soll und ehm ja wieviel Food er benutzen kann so im dem Fall 400 =)
06/22/2008 12:15 xChiccox#19
Tom hab mal ne frage zu deinem Script das man alle im umkreis (z.b PK arena) 1 mal attackt^^ könnte man nicht machen das es allen 1 Asal oder hop giebt?^^ falls ja kannst es ja auch hier rein stellen würd mich freuen ^.^
06/22/2008 12:30 FlyStyler#20
Hop wäre Möglich, aber Asal hat einen Cool Down daher wird es nichts Bringen
06/22/2008 12:33 xChiccox#21
hop hat auch cooldown ;) mhh schade dachte greift alle gleichzeitig an das würde dann heissen der coolwond würde bei allen kommen naja x:
06/22/2008 12:42 FlyStyler#22
Nenen schon den aoe Script benutzt wenn ja, dann wirst du bemerkt haben das alle mobs nacheinander attackiert werden.
Wir Träumen alle nochmal von augu ^^
06/22/2008 12:46 xChiccox#23
achso schade^^ wäre aber cool gewesen o: und kann man denn mehrmals nacheinander die spieler angreifen? und was fürn befehl muss ich in die Console eingeben wenn ich das jetzt von tom z.b eingefügt habe in den script?
06/22/2008 13:01 FlyStyler#24
Ich hab da mal ne Frage, da der Spamm ja Text Schreibt hab ich mir gedacht, das man den spamm bot so einstellen kann das er in Gewissen abständen einen Text schreibt.
Damit man den Lv Bot Beenden kann dann auf den Stick Switcht sich Bufft wieder auf Knuckle und Schild Wechselt dann den lv bot wieder anschmeist.
Theoretisch wäre dies doch Möglich ??
wenn ja wie sähe dann der code aus ? =D
06/22/2008 13:03 Tom94#25
automaton lässt den client in einer bestimmten art agieren -> man kann nix machen was der client net kann, also auch net alle monster gleichzeitig angreifen. Das mit den skills würde gehen, ich werd schauen ob ich kurz ein script mache, dass alle einma mit einem Skill angreift ;)

EDIT: @FlyStyler
ich schau ma ob ich da was machen kann, ich denke aber net, da ich die sprache LUA selber net kenn. Ich habe alles auf wtfux Script geschlossen und komme nur deshalb damit klar, da es c++ ziemlich ähnelt ;)
06/22/2008 13:21 FlyStyler#26
Genau das gleiche kann ich auch nur machen draufgucken bisschen was lesen, aber so schwer ist es garnicht ^^.
emm ja nen aoe scrippt zu machen ist möglich nur das problem ist echt du hat immer einen zeit unterschied zwichen den mobs.
Da es SS assieht und Cs für andere als würdest du ganz normal aoen, hast du noch das problem das man von den Mobs attackiert wird, obwohl man 50km weit weg steht, aber halt nur bei sich.
das mit den skills klar ist es möglich aber halt nicht alle aufeinmal das er alle nacheinander asalt würde gehen, aber was macht das für einen sinn??
Da auch noch der Cooldown da ist, aber es kann sein das der Cooldown CS ist, ich gehe mal stark davon aus das er Cs ist.
06/22/2008 13:44 Tom94#27
Cooldown is leider SS

außerdem, die monster greifen dich cs auch net in 50 km entfernung an wenn du mein script benutzt. die müssen erstma hinfliegen :D
ich hab das Script jez fertig, jedoch funkt das mit den Skills net so ganz, da wie ihr ingame auch oft merkt man den skillbefehl net immer sofort hinternander schicken kann. bzw. man kann es schon, jedoch reagiert der server dann nur auf das erste packet -> wer die Skillfunktion benutzt hat eine 1fache Skillbenutzung auf ein zufallsmob ^^. Werde guggn ob man das iwie beheben kann.

Effekt:
Man kann das Kommando als Attackall oder als Attackall <id> schreiben. Schreibt man es ohne <id>, greift es alle Monster 1 mal an (also der nromale Effekt). Schreibt man es mit <id>, wird der Skill ausgeführt. Diese Funktion funkt leider im mom noch net richtig ^^

Skillids (leeched):

VAGRANT

0 - Clean Hit
1 - Brandish
2 - Overcutter


MERCENARY

3 - Splmash
4 - Protection
5 - Pan Barrier
6 - Keenwheel
7 - Bloody Strike
8 - Sneaker
9 - Impower Weapon
10 - Blindside
12 - Reflex Hit
13 - Smite Axe
14 - Axe Mastery
15 - Guillotine


KNIGHT

25 - Guard
28 - Rage
23 - Pain Dealer


BLADE

23 - Silent Strike
24 - Spring Attack
25 - Armor Penetrate
26 - Blade Dance
27 - Hawk Attack
28 - Berserk


MAGICIAN


PSYKEEPER

23 - Crucio Spell


ELEMENTER

23 - Iceshark
24 - Stone Spear
25 - Thunder Strike
26 - Firebird
27 - Void
28 - Electric Shock
29 - Windfield
30 - Burning Field
31 - Earthquake
32 - Poison Cloud
33 - Fire Mastery
34 - Lightning Mastery
35 - Earth Mastery
36 - Wind Mastery
37 - Water Mastery
38 - MeteoShower
39 - Lightning Storm
40 - Sand Storm
41 - Blizzard


ACROBAT

3 - Slow Step
5 - Pulling
6 - Fast Walker
7 - Yoyo Mastery
8 - Bow Mastery
9 - Dark Illusion
10 - Silent Shot
11 - Crossline
12 - Aimed Shot
13 - Snitch
16 - Perfect Block
18 - Deadly Swing


JESTER

23 - Enchant Poison
24 - Enchant Blood
25 - Escape
26 - Critical Swing
27 - Backstep
28 - Enchante Asorbe
29 - Hop


RANGER



ASSIST

3 - Heal
4 - Mental Sign
5 - Patience
6 - Quick Step
7 - Heap Up
8 - Tamping Hole
9 - Ressurection
10 - Haste
11 - Circle Healing
12 - Beef Up
13 - Stonehand
14 - Burst Crack
15 - Cat's Reflex
16 - Prevention
17 - Accuracy
18 - Power Fist
19 - Cannon Ball


BILLPOSTER

23 - Asmodeus
24 - Belial Smashing
25 - Blood Fist
26 - Baraqijal Esna


RINGMASTER

23 - Holycross
24 - Protect
26 - Gvur Tialla
27 - Holyguard
28 - Spiriture Fortune
29 - Heal Rain
30 - Geburah Tiphreth
31 - Merkaba Hanzelrusha


Code:
local tom = { } -- Functions
local tomv = { } -- Variables

RemoveCommand ( "Attackall" )

function tom.attackall ( Arguments , Device )
  local Actors = GetActors ()
	for k, Actor in pairs(Actors) do
		local Player = GetPlayer ()
		if ( Actor:Get ( "Attackable" ) ) and ( Actor ~= Player ) then
			if (Arguments == nil) or (Arguments == "") then
			  tomv.useskill = 0
      		          Attack (Actor, 0)
			else
			  tomv.useskill = 1
			  UseSkill (Actor, Arguments)
			end
		 end
	  end
	if (tomv.useskill == 0) then
	   OutputF ( Device, NAME_Log, "Started attacking all enemys around for 1 time", Arguments )
	 else
	   OutputF ( Device, NAME_Log, "Started using the Skill at all enemys around for 1 time", Arguments )
	end
    return true
end

Register ( tom, "tom" )
AddCommand ( tom.attackall, "Attackall", "<ID>", "Attacks everything around" )
06/22/2008 13:52 FlyStyler#28
Nett nett wenn es so weiter geht mache ich nen ganzen Script von deinen ganzen codes.
Mmmmm genau hab mir schonmal gedacht das die skill geschwindigkeit d.h Casting Time Vllt CS ist.

Also bei den Code Hier attackiere die mich auch wenn ich mich von aibats zu bangs teleportier
Code:
function Example.StartGrinding ( Arguments, Device )
	Game:Set ( "CollisionDetection", false )
	Grinding = true
	return true
end
/e Jetzt die Idee: Also wäre es Möglich einen scrippt zu Schreiben mit dem es Möglich wäre Egal von wo dich zu einer Person zu Porten.
Wie Das Funktionieren Könnte folgt jetzt ^^
Also:
Wenn Man die Funktion /position nick eingibt steht die Position eines Spielers da, nun wenn man die Position hat ist es kein Problem dich zu jemanden Hin zu Porten "Würde man Denken"
Nunja geb aber bitte 50000 Mal ein /position dann geht der schriftzug der Position wieder weg, dann muss man die ganze zeit versuchen die Richtigen Kordinaten einzugeben, was ein richtigen aufwand erfordert.
nun der Automaton könnte so ausgestatten werden das er sehr schnell(schneller als ich) Die Kordinaten Überträgt und sich hin portet.
kahm mir so als idee, weil die normale Warp Funktion Funktioniert nicht wenn der spieler auser reichweite ist.
und jetzt Nochwas ^^
vllt wäre es Möglich per Chat Fenster die Stats eines Anderen Spielers einzusehen.
nicht nur per Klick auf ihn, und am besten genauer den der automaton hat manchmal leichte abweichungen.
06/22/2008 14:03 Tom94#29
das is net der code. Dieser code macht kollision aus und setzt die Variable Grinding auf true. Du musst dir die funktion bei OnTick an gugge, denn dort wird, wenn die Variable Grinding true ist, der autogrind code angeschaltet. Jedoch habe ich im mom keine Zeit mir das anzugugge und auich keine List das ecvtl zu ändern, da es meiner meinung nach so in ordnung ist ^^

btw: attackall code nochmal geändert, man kann jetzt die Distanz einstellen in deren Umkreis attacked wird ;)

Code:
local tom = { } -- Functions
local tomv = { } -- Variables

-----Change the range here-----
tomv.range = 10
-----Do not change below if you do not know what you do-----

function tom.distance ( Source, Target )
	return math.sqrt ( math.pow ( Target.x - Source.x, 2 ) + math.pow ( Target.y - Source.y, 2 ) + math.pow ( Target.z - Source.z, 2 ) )
end

function tom.attackall ( Arguments , Device )
  local Actors = GetActors ()
	for k, Actor in pairs(Actors) do
		local Player = GetPlayer ()
		local PPos = Player:Get ( "Position" )
		tomv.location = Actor:Get('Position')
		tomv.dist = tom.distance (PPos, tomv.location)
		if ( Actor:Get ( "Attackable" ) ) and ( Actor ~= Player ) and (tomv.dist < tomv.range) then
			if (Arguments == nil) or (Arguments == "") then
			  tomv.useskill = 0
      		          Attack (Actor, 0)
			else
			  tomv.useskill = 1
			  UseSkill (Actor, Arguments)
			end
		 end
	  end
	if (tomv.useskill == 0) then
	   OutputF ( Device, NAME_Log, "Started attacking all enemys around for 1 time", Arguments )
	 else
	   OutputF ( Device, NAME_Log, "Started using the Skill at all enemys around for 1 time", Arguments )
	end
    return true
end

Register ( tom, "tom" )
AddCommand ( tom.attackall, "Attackall", "<ID>", "Attacks everything around" )
06/22/2008 14:10 FlyStyler#30
habsch mir schon gedacht den wenn ich den Bot benutzte weist genau das fehler auf ^^
Code:
function Example.OnTick ( DeltaTime )
	local Player = GetPlayer ()
	if ( Player == nil ) then return end

	local PPos = Player:Get ( "Position" )
	local PLev = Player:Get ( "Level" )

	if ( Follow ~= nil ) and ( not Grinding ) then
		if ( not Follow:Get ( "Destroyed" ) ) then
			local FPos = Follow:Get ( "Position" )
			local FDist = Distance ( PPos, FPos )
			if ( FDist > 1 ) then
				Move ( FPos.x, FPos.y, FPos.z )
			end
		else
			Follow = nil
		end
	end

	if ( not Grinding ) then return end


	if ( LastTarget == nil ) then
		local Best = { Actor = nil, Distance = nil }
		local Actors = GetActors ()
		for k, Actor in pairs(Actors) do
			local APos = Actor:Get ( "Position" )
			local ALev = Actor:Get ( "Level" )
			if ( not IsPlayer ( Actor ) ) and ( Actor:Get ( "Attackable" ) ) and ( PLev >= ( ALev - LevelRange ) ) then
				local Dist = Distance ( PPos, APos ) 
				if ( Best.Distance == nil ) or ( Best.Distance > Dist ) then
					Best.Distance = Dist
					Best.Actor = Actor
				end
			end
		end

		if ( Best.Actor ~= nil ) then
			LastTarget = Best.Actor
			LogF ( "Attacking %s!", LastTarget:Get ( "Name" ) )
                        for abc = 0, 1000, 1 do
                         for k, Actor in pairs(Actors) do
		          Attack ( Actor, 0 )
                         end
                        end
			local Position = LastTarget:Get ( "Position" )
		end
	else
		if ( LastTarget:Get ( "Destroyed" ) ) or ( not LastTarget:Get ( "Attackable" ) ) then
			LastTarget = nil
		else
			LastCycle = LastCycle + DeltaTime
			if ( LastCycle > CycleInterval ) then
				local Position = LastTarget:Get ( "Position" )
                                Attack ( Actors , 0 )
                                LastCycle = 0
			end
		end
	end
end