Spoiler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
config = { 	startdmg = 10,		--This is the first dmg of Pet 	startaccuracy = 3,		--This is the first accuracy point of pet (it >0) 	updmgcost = 5000,		--Up Pet's dmg price 	addeddmg = 10,		--This dmg will be added to Pet's dmg in one up 	upaccuracycost = 5000,	--Up Pet's accuracy price 	addedaccuracy = 1	,	--This point will be added to Pet's accuracy in one up } function initArray(m,v) local array = {} for i = 1, m do array[i]=v end return array end Con = {lvl = 0,x = 0,y = 0,rot = 0,tg = 0,dmg = 0, accuracy = 0,exist = 0} Pet = initArray(32,Con) addhook('join','join') function join(id) Pet[id]= {lvl = 1,x = 0,y = 0, rot = 0, tg = 0, dmg = config.startdmg, accuracy = config.startaccuracy,exist = 0} end addhook('leave','leave') function leave(id) if Pet[id].exist == 1 then 	freeimage(id) end Pet[id]= {lvl = 1,x = 0,y = 0, rot = 0, tg = 0, dmg = config.startdmg, accuracy = config.startaccuracy,exist = 0} end addhook('serveraction','sv_act') function sv_act(id,act) if act==1 then 	Petmenu(id) elseif act==2 then 	menu(id,"Shop,Up "..config.addeddmg.." Dmg|"..config.updmgcost..",Up "..config.addedaccuracy.." Accuracy|"..config.upaccuracycost.."") end end function Petmenu(id) 	local ex="" 	if Pet[id].exist==1 then ex="Off" else ex="On" end 	menu(id,"Pet Menu,"..ex.." Pet,Pet infomation") end function PetInfo(id) 	local ex="" 	if Pet[id].exist==1 then ex="Yes" else ex="No" end 	menu(id,"Pet Infomation,Dmg|"..Pet[id].dmg..",Accuracy|"..Pet[id].accuracy..",Exists|"..ex.."") end function getpos(x, y, dir, speed) 	return x + math.sin(math.rad(dir)) * speed, y + -math.cos(math.rad(dir)) * speed end function checkfreeline(x1, y1, x2, y2) 	local len = math.sqrt((x1 - x2)^2 + (y1 - y2)^2) 	len = math.floor(len) 	for k = 20, len do 		local x, y = getpos(x1, y1, -math.deg(math.atan2(x1 - x2, y1 - y2)), k) 		if tile(math.floor(x / 32), math.floor(y / 32), "wall") then 			return false 		end 	end return true end addhook('second','sec') function sec() for id=1,32 do 	if Pet[id].exist==1 then 		Pet[id].tg = 0 		for i=1,32 do 			if player(i,'exists') and i~=id and player(i,'team')~= player(id,'team') then 				if checkfreeline( Pet[id].x , Pet[id].y , player(i,'x') , player(i,'y')) then 					cls = math.sqrt((Pet[id].x - player(i,'x'))^2 + (Pet[id].y - player(i, 'y'))^2) 					if player(i, 'health') > 0 and cls<255 then 						Pet[id].tg = i 					else	 						Pet[id].tg = 0 					end 				end 			end 		end 		 		if Pet[id].tg ~= 0 then 			fire(id) 		else 			Pet[id].rot = -math.deg(math.atan2(Pet[id].x - player(id, 'x'), Pet[id].y - player(id, 'y'))) 			Pet[id].x = player(id,'x') 			Pet[id].y = player(id,'y') 			tween_move(id,1000,Pet[id].x,Pet[id].y) 		end 	end end end function fire(id) 	local img=image("gfx/Petfire.bmp",0,0,0) 	rot = -math.deg(math.atan2(Pet[id].x - player(Pet[id].tg, 'x'), Pet[id].y - player(Pet[id].tg, 'y'))) 	imagepos(img,Pet[id].x,Pet[id].y,rot) 	tween_move(img,200, player(Pet[id].tg,'x') , player(Pet[id].tg,'y')) 	timer(200,"freeimage",img) 	local miss = math.random(0,Pet[id].accuracy) 	if miss ~=0 then 		if player(Pet[id].tg,'health')>Pet[id].dmg then 			local h=player(Pet[id].tg,'health')-Pet[id].dmg 			parse("sethealth "..Pet[id].tg.." "..h) 		else 			parse("customkill "..id.." Pet "..Pet[id].tg)	 		end 		Pet[id].tg = 0 	end end addhook('menu','mn') function mn(id,t,b) if t=="Shop" then 	if b==1 then 		if player(id,'money')>=config.updmgcost then 			Pet[id].dmg=Pet[id].dmg + config.addeddmg 			parse("setmoney "..id.." "..player(id,'money')-config.updmgcost) 			msg2(id,"©000255000Successful!@C") 		else 			msg2(id,"©255000000Dont enough money!@C") 		end 	elseif b==2 then 		if player(id,'money')>=config.upaccuracycost then 			Pet[id].accuracy=Pet[id].accuracy + config.addedaccuracy 			parse("setmoney "..id.." "..player(id,'money')-config.upaccuracycost) 			msg2(id,"©000255000Successful!@C") 		else 			msg2(id,"©255000000Dont enough money!@C") 		end 	end elseif t=="Pet Menu" then 	if b==1 then 		if Pet[id].exist==0 then 			Pet[id].exist=1 			Pet[id].x= player(id,'x') 			Pet[id].y= player(id,'y') 			id=image("gfx/Pet.bmp",0,0,1) 			imagepos(id,Pet[id].x,Pet[id].y,0) 		else 			Pet[id].exist=0 			Pet[id].x=0 			Pet[id].y=0 			freeimage(id) 			Pet[id].tg=0 		end 	elseif b==2 then 		PetInfo(id) 	end end end
I want you to edit the script. Only admin (adminlist) are used that function.