AMXX-BG.INFO portal.inc Raw include

portal.inc

Original include source with line numbers.

Back Download .inc
1 new mapPortals[MAX_PORTALS]
2 new mapTargets[MAX_TARGETS]
3 new mapAllrounds[MAX_ALLROUNDS]
4 new mapBlackholes[MAX_BLACKHOLES]
5
6 new numPortals
7 new numTargets
8 new numAllrounds
9 new numBlackholes
10
11 new g_filename[120];
12
13 /*
14 //DEBUG mode switch
15 #define DEBUG
16 */
17
18 public create_ent_portal( Float:pOrigin[3]){
19 new portal= create_entity("info_target")
20 entity_set_string(portal,EV_SZ_classname,"amx_portal")
21
22 entity_set_model(portal, portal_model)
23 entity_set_int(portal, EV_INT_flags, FL_ALWAYSTHINK)
24 set_rendering(portal, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
25
26 new Float:MinBox[3] = {-16.0, -16.0, 0.0}
27 new Float:MaxBox[3] = {16.0, 16.0, 16.0}
28 entity_set_vector(portal, EV_VEC_mins, MinBox)
29 entity_set_vector(portal, EV_VEC_maxs, MaxBox)
30
31 entity_set_int(portal, EV_INT_solid, 1)
32 entity_set_origin(portal,pOrigin);
33 mapPortals[numPortals] = portal
34 ++numPortals
35 }
36 public create_ent_target( Float:pOrigin[3]){
37 new target=create_entity("info_target")
38 entity_set_string(target,EV_SZ_classname,"amx_ptarget")
39
40 entity_set_model(target, target_model)
41 entity_set_int(target, EV_INT_flags, FL_ALWAYSTHINK)
42 set_rendering(target, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
43
44 entity_set_origin(target,pOrigin);
45 mapTargets[numTargets] = target
46 ++numTargets
47 }
48 public create_ent_allround( Float:pOrigin[3]){
49 new allround = create_entity("info_target")
50 entity_set_string(allround,EV_SZ_classname,"amx_aportal")
51
52 entity_set_model(allround, allround_model)
53 entity_set_int(allround, EV_INT_flags, FL_ALWAYSTHINK)
54 set_rendering(allround, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
55
56 new Float:MinBox[3] = {-16.0, -16.0, 0.0}
57 new Float:MaxBox[3] = {16.0, 16.0, 16.0}
58 entity_set_vector(allround, EV_VEC_mins, MinBox)
59 entity_set_vector(allround, EV_VEC_maxs, MaxBox)
60
61 entity_set_int(allround, EV_INT_solid, 1)
62
63 entity_set_origin(allround,pOrigin)
64
65 mapAllrounds[numAllrounds] = allround
66 ++numAllrounds
67 }
68 public create_ent_blackhole(Float:vNewOrigin[3],Float:vEntAngles[3]){
69 new blackhole = create_entity("info_target")
70
71 entity_set_string(blackhole, EV_SZ_classname, "amx_blackhole")
72
73 entity_set_model(blackhole, blackhole_model)
74 entity_set_size(blackhole, Float:{-40.0,-30.0,-40.0}, Float:{40.0,30.0,40.0})
75
76 entity_set_int(blackhole, EV_INT_solid, 1)
77 entity_set_int(blackhole, EV_INT_flags, FL_ALWAYSTHINK)
78
79 entity_set_origin(blackhole, vNewOrigin)
80 entity_set_vector(blackhole, EV_VEC_angles, vEntAngles)
81
82 mapBlackholes[numBlackholes] = blackhole
83 ++numBlackholes
84 return blackhole;
85 }
86 saveToFile(file,i,Float:origin[3]){
87 new line[30];
88 formatex(line,30,"[%d]^n",i);
89 fputs(file,line);
90 for(new i=0;i<3;i++){
91 formatex(line,30,"%.0f^n",origin[i]);
92 fputs(file,line);
93 }
94 }
95 saveBHToFile(file,i,Float:origin[3],Float:angles[3]){
96 new line[30];
97 formatex(line,30,"[%d]^n",i);
98 fputs(file,line);
99 for(new i=0;i<3;i++){
100 formatex(line,30,"%.0f^n",origin[i]);
101 fputs(file,line);
102 }
103 for(new i=0;i<3;i++){
104 formatex(line,30,"%.0f^n",angles[i]);
105 fputs(file,line);
106 }
107 }
108 public savePortals(id,level,cid){
109 if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
110 new filename[120];
111 new Float:origin[3];
112 formatex(filename,119,"%s/portals/portals/%s",cfgFolder,mapName);
113 new file=fopen(filename,"w");
114 for(new i=0; i<numPortals;i++){
115 entity_get_vector(mapPortals[i],EV_VEC_origin, origin);
116 saveToFile(file,i,origin);
117 }
118 fclose(file);
119 formatex(filename,119,"%s/portals/targets/%s",cfgFolder,mapName);
120 file=fopen(filename,"w");
121 for(new i=0; i<numTargets;i++){
122 entity_get_vector(mapTargets[i],EV_VEC_origin, origin);
123 saveToFile(file,i,origin);
124 }
125 fclose(file);
126 formatex(filename,119,"%s/portals/allrounds/%s",cfgFolder,mapName);
127 file=fopen(filename,"w");
128 for(new i=0; i<numAllrounds;i++){
129 entity_get_vector(mapAllrounds[i],EV_VEC_origin, origin);
130 saveToFile(file,i,origin);
131 }
132 fclose(file);
133 formatex(filename,119,"%s/portals/blackholes/%s",cfgFolder,mapName);
134 file=fopen(filename,"w");
135 for(new i=0; i<numBlackholes;i++){
136 new Float:angles[3];
137 entity_get_vector(mapBlackholes[i], EV_VEC_origin, origin);
138 entity_get_vector(mapBlackholes[i], EV_VEC_angles, angles);
139 saveBHToFile(file,i,origin,angles);
140 }
141 fclose(file);
142 client_print(id, print_center,"Saved");
143 return PLUGIN_HANDLED;
144 }
145 bool:loadFromFile(i,Float:origin[3]){
146 new line[10];
147 new l;
148 read_file(g_filename,i++, line,9,l);
149 if(line[0]=='[' && line[2]==']'){
150 for(new j=i;j<i+3;j++){
151 read_file(g_filename,j, line,9,l);
152 origin[j-i]=str_to_float(line);
153 }
154 return true;
155 }
156 return false;
157
158 }
159 bool:loadBHFromFile(i,Float:origin[3],Float:angle[3]){
160 new line[10];
161 new l;
162 read_file(g_filename,i++, line,9,l);
163 if(line[0]=='[' && line[2]==']'){
164 for(new j=i;j<i+3;j++){
165 read_file(g_filename,j, line,9,l);
166 origin[j-i]=str_to_float(line);
167 }
168 i+=3;
169 for(new j=i;j<i+3;j++){
170 read_file(g_filename,j, line,9,l);
171 angle[j-i]=str_to_float(line);
172 }
173 return true;
174 }
175 return false;
176
177 }
178 public loadPortals(){
179 new i=0;
180 new Float:origin[3];
181 formatex(g_filename,119,"%s/portals/portals/%s",cfgFolder,mapName);
182 if(file_exists(g_filename)){
183 while(loadFromFile(i,origin)){
184 create_ent_portal(origin);
185 #if defined DEBUG
186 log_amx("Portal: %.0f %.0f %.0f",origin[0],origin[1],origin[2]);
187 #endif
188 i+=4;
189 }
190 }
191 i=0
192 formatex(g_filename,119,"%s/portals/targets/%s",cfgFolder,mapName);
193 if(file_exists(g_filename)){
194 while(loadFromFile(i,origin)){
195 create_ent_target(origin);
196 #if defined DEBUG
197 log_amx("Target: %.0f %.0f %.0f",origin[0],origin[1],origin[2]);
198 #endif
199 i+=4;
200 }
201 }
202 i=0
203 formatex(g_filename,119,"%s/portals/allrounds/%s",cfgFolder,mapName);
204 if(file_exists(g_filename)){
205 while(loadFromFile(i,origin)){
206 create_ent_allround(origin);
207 #if defined DEBUG
208 log_amx("Allround: %.0f %.0f %.0f",origin[0],origin[1],origin[2]);
209 #endif
210 i+=4;
211 }
212 }
213 i=0;
214 formatex(g_filename,119,"%s/portals/blackholes/%s",cfgFolder,mapName);
215 if(file_exists(g_filename)){
216 new Float:angle[3];
217 while(loadBHFromFile(i,origin,angle)){
218 create_ent_blackhole(origin,angle);
219 #if defined DEBUG
220 log_amx("Blackhole: %.0f %.0f %.0f",origin[0],origin[1],origin[2]);
221 log_amx("Blackhole angle: %.0f %.0f %.0f",angle[0],angle[1],angle[2]);
222 #endif
223 i+=7;
224 }
225 }
226 }
227