Forum

> > CS2D > Scripts > [Solved] Hat code now broken!
Forums overviewCS2D overview Scripts overviewLog in to reply

English [Solved] Hat code now broken!

25 replies
Page
To the start Previous 1 2 Next To the start

old [Solved] Hat code now broken!

cs2d_is_a_Gem
User Off Offline

Quote
I have errors in this code and I can not find the solution. Could someone solve it?
the truth my skills in this subject are terrible and I can not open my server because of this code.

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
hattable = {
     {name = "Devil|>", path = "gfx/hat/devil.png"},
     {name = "Skull|>", path = "gfx/hat/skull.png"},
	 {name = "CT|>", path = "gfx/hat/Soldado ct.png"},
	 {name = "TT|>", path = "gfx/hat/Soldado tt.png"},
	 {name = "C.America|>", path = "gfx/hat/captain america hat by spike.png"},
}


function initArray(m)
     local array={}
     for i=1, m do
          array[i]=0
     end
     return array
end

currenthat = initArray(32)
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("leave","savedata")
function savedata(id,reason)
     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
edited 4×, last 09.05.18 05:07:53 am

old Re: [Solved] Hat code now broken!

SQ
Moderator Off Offline

Quote
@user cs2d_is_a_Gem: Everything works, I've put this additional code to call menu from serveractions:
1
2
3
4
addhook("serveraction","hat")
function hat(id)
	callmenu(id, 1)
end

@user Gaios: It's already at least 5th time I see you spamming non-helpfully.

old Re: [Solved] Hat code now broken!

cs2d_is_a_Gem
User Off Offline

Quote
@user SQ: when using the hat from the menu if the hat appears but when leaving the game or the next round the hat disappears.
I do not see the reason.
to you if it worked correctly?

old Re: [Solved] Hat code now broken!

Cure Pikachu
User Off Offline

Quote
1
2
3
4
5
6
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
I think this should do it. BTW cs2d lua cmd image is a function, not a hook.

old Re: [Solved] Hat code now broken!

cs2d_is_a_Gem
User Off Offline

Quote
You're right I'll work on my logic, it's deteriorated.
the example is very good, but I can not make the hat appear at the moment of entering the next round, the image of the hat simply does not appear.

finish the round and the imgen disappears
edited 2×, last 08.05.18 10:17:50 pm

old Re: [Solved] Hat code now broken!

minos
User Off Offline

Quote
user Cure Pikachu has written
1
2
3
4
5
6
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
I think this should do it. BTW cs2d lua cmd image is a function, not a hook.


use startround hook instead of spawn hook

old Re: [Solved] Hat code now broken!

Cure Pikachu
User Off Offline

Quote
@user minos: Wrong. If I do use cs2d lua hook startround, since it has no parameters for player ID, I'll have to loop through every living player. In addition to that, what if you want to use the script on a gamemode that lets you respawn, which is all except Standard?

old Re: [Solved] Hat code now broken!

Cure Pikachu
User Off Offline

Quote
@user minos: Nope, just ends up being redundant. And I have already established that it works, at least on my end.
But what if...
1
2
3
4
5
6
7
8
9
10
11
addhook("spawn","hat_spawn")
function hat_spawn(id)
	timer(1,"hat_spawn_delay",id)
end

function hat_spawn_delay(id)
	id = tonumber(id)
	if currenthat[id] > 0 then
		hatimg[id] = image(hattable[currenthat[id]].path,1,1,200+id)
	end
end

old Re: [Solved] Hat code now broken!

cs2d_is_a_Gem
User Off Offline

Quote
@user Cure Pikachu: Only the one wearing the hat is seen with the hat Other players on the server do not see the hat.

look at the code works, but in the dedicated server it does not work correctly. you when using the scrip as a server you see the hat but the players that enter the server do not see the hat.
when entering the server does not load the hat either.


in other versions of cs2d this code worked correctly.

plis tested in dedicated server for windows and get error but it does not appear in the console.
To the start Previous 1 2 Next To the start
Log in to reply Scripts overviewCS2D overviewForums overview