Forum

> > CS2D > Scripts > Rpg tibia problem
Forums overviewCS2D overview Scripts overviewLog in to reply

English Rpg tibia problem

3 replies
To the start Previous 1 Next To the start

old Rpg tibia problem

Glix
User Off Offline

Quote
can anyone tell what the wrong whit this?
i want add np'c in rpg script to my map not work?
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
NPCs = {
	[1] = {"Morgon", pos={1713, 1624}, rot=180, image="npc5", trade={{307,225},{310,300},{311,500},{312,400},{306,90},{305,200},{300,85},{312,240},{313,150}}},
	[2] = {"Jack", pos={2076, 1578, rot=180, image="npc5", trade={{320,750},{321,1230},{322,700},{323,450},{324,950},{325,670},{10,25},{12,240},{11,150}}},
	[3] = {"Nikolas", pos={1896, 2291}, rot=0, image="npc6", trade={{5,150},{4,150}}},
	[4] = {"Antonio", pos={189, 147}, rot=180, image="npc5", trade={{1,25},{2,100},{4,50},{5,100},{6,90},{7,200},{10,25},{12,240},{11,150}}},
	[5] = {"Guess", pos={561, 435}, rot=0, image="npc3", trade={{304,175},{303,75}}},
	[6] = {"Table seller", pos=1635, 819}, rot=0, image="npc6", trade={{218,150},{219,150}}},
	[7] = {"Bro Antonio", pos={1666, 2188}, rot=0, image="npc5", trade={{1,25},{2,100},{4,50},{5,100},{6,90},{7,200},{10,25},{12,240},{11,150}}},
	[8] = {"pondore", pos={1697, 307}, rot=180, image="npc5", trade={{307,300},{316,600},{326,900},{334,9500},{338,12300},{339,12200},{337,16000},{12,240},{11,150}}},
	[9] = {"Chair buyer", pos={4208, 5040}, rot=90, image="npc3", trade={{-210,75},{-214,75}}},
	[10] = {"Table buyer", pos={3888, 4880}, rot=270, image="npc6", trade={{-218,150},{-219,150}}},
	[11] = {"Doll buyer", pos={3888, 5040}, rot=270, image="npc5", trade={{-220,300},{-221,300},{-222,300},{-223,300}}},
	[12] = {"BlackSmith", pos={2384, 1488}, rot=180, image="npc3", trade={{300,75},{301,150},{302,150},{303,100},{304,150},{305,200},{306,175},{307,300}}},
	[13] = {"Joe", pos={416, 196}, rot=270, image="npc1"}, 
	[14] = {"Food Buyer", pos={1363, 2349}, rot=270, image="npc5", trade={{-1,25},{-4,50},{-6,100},{-7,100},{-8,50}}}, 
	[15] = {"Rune Seller", pos={2089, 780}, rot=0, image="npc4", trade={{100,100},{101,100},{102,75},{103,100},{104,100},{105,100},{106,100}}}, 
	[16] = {"Horse Trader", pos={2220, 2183}, rot=270, image="npc1", trade={{400,1000},{401,1000},{402,1000},{403,1000},{-400,1000},{-401,1000},{-402,1000},{-403,1000}}}, 
	[17] = {"Sweet Seller", pos={6240, 1024}, rot=270, image="npc6", trade={{7,250},{9,25},{10,50},{11,100},{12,150},{13,200},{14,100},{15,150},{16,200}}}, 
}

NPCs[13].func = function(npc, id, words, state)
	if words == "hi" then
		NPCspeak(npc, "Hi do you want rest it's cost only $10 ?")
		PLAYERS[id].tmp.npcstate = {npc, 1}
	elseif state == 1 then
		if words == "yes" then
			if addmoney(id,-10) then
				NPCspeak(npc, "Have good rest !")
				parse('setpos '..id..'534 165')
				PLAYERS[id].tmp.npcstate = {npc, 0}
			else
				NPCspeak(npc, "You don't have enought money bye !")
				PLAYERS[id].tmp.npcstate = {npc, 0}
			end
		elseif words == "no" then
			NPCspeak(npc, "Bye then.")
			PLAYERS[id].tmp.npcstate = {npc, 0}
		end
	end
end
for i, j in ipairs(NPCs) do
	j.image = image("gfx/weiwen/" .. (j.image or "npc1") .. ".png", 0, 0, 0)
	imagepos(j.image, j.pos[1], j.pos[2], j.rot)
	if j.trade then
		local text = j[1] .. ","
		for k, l in ipairs(j.trade) do
			local itemid
			if l[1] < 0 then
				itemid = -l[1]
				text = text .. "sell "
			else
				itemid = l[1]
				text = text .. "buy "
			end
			text = text .. ITEMS[itemid].name .. "|" .. l[2] .. ","
		end
		j.menu = text
	end
end
function contains(words, text) words = words:lower(); return words == text or words:find(text .. " ") or words:find(" " .. text) end
function NPCspeak(npcid, words) return radiusmsg(string.format("©255255100%s %s says : %s", os.date'%X', NPCs[npcid][1], words), NPCs[npcid].pos[1], NPCs[npcid].pos[2]) end
function setNPCpos(npcid, x, y, rot)
	NPCs[npcid].rot = rot or NPCs[npcid].rot
	NPCs[npcid].pos = (x and y) and {x*32+16, y*32+16} or NPCs[npcid].pos
	imagepos(NPCs[npcid].image, NPCs[npcid].pos[1], NPCs[npcid].pos[2], NPCs[npcid].rot)
end
addhook("say", "NPCsay")
function NPCsay(id, words)
	words = words:lower()
	if PLAYERS[id].tmp.npcstate then
		local v = NPCs[PLAYERS[id].tmp.npcstate[1]]
		if inarea(player(id, "x"), player(id, "y"), v.pos[1]-96, v.pos[2]-96, v.pos[1]+96, v.pos[2]+96) then
			NPCs[PLAYERS[id].tmp.npcstate[1]].func(PLAYERS[id].tmp.npcstate[1], id, words, PLAYERS[id].tmp.npcstate[2])
			return
		else
			PLAYERS[id].tmp.npcstate = nil
		end
	end
	if contains(words, "hi") or contains(words, "hello") or contains(words, "yo") or contains(words, "hey") then
		for k, v in ipairs(NPCs) do
			if inarea(player(id, "x"), player(id, "y"), v.pos[1]-96, v.pos[2]-96, v.pos[1]+96, v.pos[2]+96) then
				if v.func then
					v.func(k, id, "hi")
				elseif v.menu then
					menu(id, v.menu)
				else
					NPCspeak(k, "Hello, I'm busy right now, speak to me later.")
					break
				end
				if v.greet then
					NPCspeak(k, string.format(v.greet, player(id, "name")))
				end
				break
			end
		end
	end
end
addhook("menu", "NPCmenu")
function NPCmenu(id, title, button)
	for i, v in ipairs(NPCs) do
		if title == v[1] then
			if button == 0 then
				if v.bye then
					NPCspeak(i, v.bye)
				end
				return
			end
			local itemid = math.abs(v.trade[button][1])
			if itemid then
				print(itemid)
				radiusmsg(string.format("©255255100%s %s says : %s %s", os.date'%X', player(id, 'name'), v.trade[button][2] > 0 and "buy" or "sell", ITEMS[itemid].name), player(id, 'x'), player(id, 'y'))
				if v.trade[button][1] < 0 then
					if removeitem(id, itemid, 1, true) then
						addmoney(id, itemid, v.trade[button][2])
						message(id, "You have recieved $" .. v.trade[button][2] .. ".", "255255255")
						msg2(id, "You have sold " .. ITEMS[itemid].article .. " " .. ITEMS[itemid].name .. " for $" .. v.trade[button][2] .. ".")
						return menu(id, NPCs[i].menu)
					end
					msg2(id, "You do not have " .. ITEMS[itemid].article .. " " .. ITEMS[itemid].name .. " to sell.")
					return
				elseif addmoney(id, -v.trade[button][2]) then
					if additem(id, itemid, 1, true) then
						message(id, "You have lost $" .. v.trade[button][2] .. ".", "255255255")
						msg2(id, "You have bought " .. ITEMS[itemid].article .. " " .. ITEMS[itemid].name .. " for $" .. v.trade[button][2] .. ".")
						return menu(id, NPCs[i].menu)
					end
					msg2(id, "You do not have enough capacity.")
					return
				end
				msg2(id, "You do not have enough money.")
			end
			return
		end
	end
end
edited 2×, last 28.03.11 04:39:23 pm

old Re: Rpg tibia problem

DannyDeth
User Off Offline

Quote
If you wanna toy around with code like that, don't expect others to debug it for you. It's too large and this code is missing a lot of code that would make it actually work.

EDIT: dude, there are rules to this forum. It says you are not allowed to bump your topic. So don't do it!
edited 1×, last 28.03.11 04:41:14 pm

old Re: Rpg tibia problem

KenVo
User Off Offline

Quote
what's the error it gives you in the cs2d_dedicated or in console?

Edit: I tried it on my server and didn't get any errors
edited 1×, last 30.03.11 08:05:54 am

old Re: Rpg tibia problem

REMOVED
BANNED Off Offline

Quote
I have a problem too, please help

LUA ERROR: sys/lua/cs2dtibia/npcs.lua:55: attempt to index field '?' (a nil value)
To the start Previous 1 Next To the start
Log in to reply Scripts overviewCS2D overviewForums overview