Forum

> > CS2D > Scripts > save hats error spawn hook don't work
Forums overviewCS2D overview Scripts overviewLog in to reply

English save hats error spawn hook don't work

2 replies
To the start Previous 1 Next To the start

old save hats error spawn hook don't work

jerezinho
User Off Offline

Quote
Hi guys

I need your help again to solve this problem, I'm having a mistake with the moon hats, If someone can help me i would greatly appreciate it
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
hattable = {
     {name = "Devil", path = "gfx/hat/devil.png"},
     {name = "Skull", path = "gfx/hat/skull.png"},
}

currenthat = {}
hatimg = {}

function callmenu(id,page)
     local pages = math.ceil(#hattable/7)
     local output = "Hat Menu Page "..page
     local p = pages * 7
     for a = p-6, p do
          if hattable[a] then
               if (hattable[a].name and hattable[a].path) then
                    if a ~= currenthat[id] then
                         output = output..","..hattable[a].name
                    else
                         output = output..",("..hattable[a].name
                    end
               else
                    output = output..","
               end
          else
               output = output..","
          end
     end
     if page == 1 then
          if currenthat[id] ~= 0 then
               output = output..",No hat"
          else
               output = output..",(No hat"
          end
     else
          output = output..",Back Page |Page "..page-1
     end
     if page == pages then
          if currenthat[id] ~= 0 then
               output = output..",No hat"
          else
               output = output..",(No hat"
          end
     else
          output = output..",Back Page |Page "..page+1
     end
     menu(id,output)
end

addhook("menu","hat_menu")
function hat_menu(id,title,button)
     if string.sub(title,1,14) == "Hat Menu Page " then
          local page = tonumber(string.sub(title,15))
          local pages = math.ceil(#hattable/7)
          if button >= 1 and button <= 7 then
               local pr7 = (page - 1) * 7
               local rsel = pr7 + button
               if currenthat[id] ~= rsel then
                    if hatimg[id] then
                         freeimage(hatimg[id])
                    end
                    currenthat[id] = rsel
                    hatimg[id] = image(hattable[rsel].path,1,1,200+id)
               end
          elseif button == 8 then
               if page == 1 then
                    if hatimg[id] then
                         freeimage(hatimg[id])
                    end
                    hatimg[id] = nil
                    currenthat[id] = 0
               else
                    callmenu(id,page-1)
               end
          elseif button == 9 then
               if page == pages then
                    if hatimg[id] then
                         freeimage(hatimg[id])
                    end
                    hatimg[id] = nil
                    currenthat[id] = 0
               else
                    callmenu(id,page+1)
               end
          end
     end
end

addhook("die","hat_die")
function hat_die(victim)
     if hatimg[victim] then
          freeimage(hatimg[victim])
     end
     hatimg[victim] = nil
end

addhook("spawn","hat_spawn")
function hat_spawn(id)
     if currenthat[id] > 0 then
          hatimg[id] = image(hattable[currenthat[id]].path,1,1,200+id)
     end
end

addhook("leave","savedata")
function savedata(id)
     if player(id,"usgn") > 0 then
          local f = assert(io.open("sys/lua/hats/saves/"..player(id,"usgn")..".txt","w"))
          f:write(currenthat[id])
          f:close()
     end
     if hatimg[id] then
          freeimage(hatimg[id])
     end
     hatimg[id] = nil
     currenthat[id] = nil
end

addhook("join","loaddata")
function loaddata(id)
     local loaded = false
     if player(id,"usgn") > 0 then
          local f = io.open("sys/lua/hats/saves"..player(id,"usgn")..".txt","r")
          if f ~= nil then
               for line in f:lines() do
                    currenthat[id] = tonumber(line)
                    break
               end
               loaded = true
               f:close()
          end
     end
     if not loaded then
          currenthat[id] = 0
     end
end
Here is the error
IMG:https://i.imgur.com/bfu55tA.jpg


bye and thanks
edited 2×, last 27.08.17 06:04:44 pm

old Re: save hats error spawn hook don't work

Cebra
User Off Offline

Quote
your currenthat-table is empty,

add this at the top of your file
1
2
3
4
5
6
7
function initArray(m)
	local array={}
	for i=1, m do
		array[i]=0
	end
	return array
end

and change line 6 to
1
currenthat = initArray(32)

it is the same like
1
currenthat = {0,0,0,0...}

old Re: save hats error spawn hook don't work

_Yank
User Off Offline

Quote
You shouldn't need to do what atomic said as you do that already on the loaddata function that is hooked to the join event.

I think that the problem lies on the file reading part of the code, it's either corrupted or saved with the wrong encoding.

By the way, correct line 121. Also, the error you presented on the thread does not match the script.
edited 2×, last 27.08.17 10:59:06 pm
To the start Previous 1 Next To the start
Log in to reply Scripts overviewCS2D overviewForums overview