VIP Boost Банери Кредити
Основно Начало Сървъри Marketplace Новини Форум Сървъри
Общности Хостинг Добави Boost
Ресурси
Библиотеки Карти Видеа Магазин
Инструменти
Builder Demo CFG HUD
AMXX API
Вход Регистрация
/ Библиотеки / portal.inc

portal.inc

DEBUG mode switch

.inc 6.1 KB 227 реда 04.04.2026
Pawn / AMX Mod X
new mapPortals[MAX_PORTALS]
new mapTargets[MAX_TARGETS]
new mapAllrounds[MAX_ALLROUNDS]
new mapBlackholes[MAX_BLACKHOLES]

new numPortals
new numTargets
new numAllrounds
new numBlackholes

new g_filename[120];

/*
//DEBUG mode switch
#define DEBUG
*/

public create_ent_portal( Float:pOrigin[3]){
	new portal= create_entity("info_target")
	entity_set_string(portal,EV_SZ_classname,"amx_portal")
	
	entity_set_model(portal, portal_model)
	entity_set_int(portal, EV_INT_flags, FL_ALWAYSTHINK)
	set_rendering(portal, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
	
	new Float:MinBox[3] = {-16.0, -16.0, 0.0}
	new Float:MaxBox[3] = {16.0, 16.0, 16.0}
	entity_set_vector(portal, EV_VEC_mins, MinBox)
	entity_set_vector(portal, EV_VEC_maxs, MaxBox)
	
	entity_set_int(portal, EV_INT_solid, 1)
	entity_set_origin(portal,pOrigin);
	mapPortals[numPortals] = portal
	++numPortals
}
public create_ent_target( Float:pOrigin[3]){
	new target=create_entity("info_target")
	entity_set_string(target,EV_SZ_classname,"amx_ptarget")
	
	entity_set_model(target, target_model)
	entity_set_int(target, EV_INT_flags, FL_ALWAYSTHINK)
	set_rendering(target, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
	
	entity_set_origin(target,pOrigin);
	mapTargets[numTargets] = target
	++numTargets
}
public create_ent_allround( Float:pOrigin[3]){
	new allround = create_entity("info_target")
	entity_set_string(allround,EV_SZ_classname,"amx_aportal")
	
	entity_set_model(allround, allround_model)
	entity_set_int(allround, EV_INT_flags, FL_ALWAYSTHINK)
	set_rendering(allround, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 255)
	
	new Float:MinBox[3] = {-16.0, -16.0, 0.0}
	new Float:MaxBox[3] = {16.0, 16.0, 16.0}
	entity_set_vector(allround, EV_VEC_mins, MinBox)
	entity_set_vector(allround, EV_VEC_maxs, MaxBox)
	
	entity_set_int(allround, EV_INT_solid, 1)
	
	entity_set_origin(allround,pOrigin)
	
	mapAllrounds[numAllrounds] = allround
	++numAllrounds
}
public create_ent_blackhole(Float:vNewOrigin[3],Float:vEntAngles[3]){
	new blackhole = create_entity("info_target")
	
	entity_set_string(blackhole, EV_SZ_classname, "amx_blackhole")
	
	entity_set_model(blackhole, blackhole_model)
	entity_set_size(blackhole, Float:{-40.0,-30.0,-40.0}, Float:{40.0,30.0,40.0})
	
	entity_set_int(blackhole, EV_INT_solid, 1)
	entity_set_int(blackhole, EV_INT_flags, FL_ALWAYSTHINK)
	
	entity_set_origin(blackhole, vNewOrigin)
	entity_set_vector(blackhole, EV_VEC_angles, vEntAngles)
	
	mapBlackholes[numBlackholes] = blackhole
	++numBlackholes
	return blackhole;
}
saveToFile(file,i,Float:origin[3]){
	new line[30];
	formatex(line,30,"[%d]^n",i);
	fputs(file,line);
	for(new i=0;i<3;i++){
		formatex(line,30,"%.0f^n",origin[i]);
		fputs(file,line);
	}
}
saveBHToFile(file,i,Float:origin[3],Float:angles[3]){
	new line[30];
	formatex(line,30,"[%d]^n",i);
	fputs(file,line);
	for(new i=0;i<3;i++){
		formatex(line,30,"%.0f^n",origin[i]);
		fputs(file,line);
	}
	for(new i=0;i<3;i++){
		formatex(line,30,"%.0f^n",angles[i]);
		fputs(file,line);
	}
}
public savePortals(id,level,cid){
	if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
	new filename[120];
	new Float:origin[3];
	formatex(filename,119,"%s/portals/portals/%s",cfgFolder,mapName);
	new file=fopen(filename,"w");
	for(new i=0; i<numPortals;i++){
		entity_get_vector(mapPortals[i],EV_VEC_origin, origin);
		saveToFile(file,i,origin);
	}
	fclose(file);
	formatex(filename,119,"%s/portals/targets/%s",cfgFolder,mapName);
	file=fopen(filename,"w");
	for(new i=0; i<numTargets;i++){
		entity_get_vector(mapTargets[i],EV_VEC_origin, origin);
		saveToFile(file,i,origin);
	}
	fclose(file);
	formatex(filename,119,"%s/portals/allrounds/%s",cfgFolder,mapName);
	file=fopen(filename,"w");
	for(new i=0; i<numAllrounds;i++){
		entity_get_vector(mapAllrounds[i],EV_VEC_origin, origin);
		saveToFile(file,i,origin);
	}
	fclose(file);
	formatex(filename,119,"%s/portals/blackholes/%s",cfgFolder,mapName);
	file=fopen(filename,"w");
	for(new i=0; i<numBlackholes;i++){
		new Float:angles[3];
		entity_get_vector(mapBlackholes[i], EV_VEC_origin, origin);
		entity_get_vector(mapBlackholes[i], EV_VEC_angles, angles);
		saveBHToFile(file,i,origin,angles);
	}
	fclose(file);
	client_print(id, print_center,"Saved");
	return PLUGIN_HANDLED;
}
bool:loadFromFile(i,Float:origin[3]){
	new line[10];
	new l;
	read_file(g_filename,i++, line,9,l);
	if(line[0]=='[' && line[2]==']'){
		for(new j=i;j<i+3;j++){
			read_file(g_filename,j, line,9,l);
			origin[j-i]=str_to_float(line);
		}
		return true;
	}
	return false;
	
}
bool:loadBHFromFile(i,Float:origin[3],Float:angle[3]){
	new line[10];
	new l;
	read_file(g_filename,i++, line,9,l);
	if(line[0]=='[' && line[2]==']'){
		for(new j=i;j<i+3;j++){
			read_file(g_filename,j, line,9,l);
			origin[j-i]=str_to_float(line);
		}
		i+=3;
		for(new j=i;j<i+3;j++){
			read_file(g_filename,j, line,9,l);
			angle[j-i]=str_to_float(line);
		}
		return true;
	}
	return false;
	
}
public loadPortals(){
	new i=0;
	new Float:origin[3];
	formatex(g_filename,119,"%s/portals/portals/%s",cfgFolder,mapName);
	if(file_exists(g_filename)){	
		while(loadFromFile(i,origin)){
			create_ent_portal(origin);
#if defined DEBUG
				log_amx("Portal: %.0f %.0f %.0f",origin[0],origin[1],origin[2]);
#endif
			i+=4;
		}
	}
	i=0
	formatex(g_filename,119,"%s/portals/targets/%s",cfgFolder,mapName);
	if(file_exists(g_filename)){	
		while(loadFromFile(i,origin)){
			create_ent_target(origin);
#if defined DEBUG
				log_amx("Target: %.0f %.0f %.0f",origin[0],origin[1],origin[2]);
#endif
			i+=4;
		}
	}
	i=0
	formatex(g_filename,119,"%s/portals/allrounds/%s",cfgFolder,mapName);
	if(file_exists(g_filename)){	
		while(loadFromFile(i,origin)){
			create_ent_allround(origin);
#if defined DEBUG
				log_amx("Allround: %.0f %.0f %.0f",origin[0],origin[1],origin[2]);
#endif
			i+=4;
		}
	}
	i=0;
	formatex(g_filename,119,"%s/portals/blackholes/%s",cfgFolder,mapName);
	if(file_exists(g_filename)){	
		new Float:angle[3];
		while(loadBHFromFile(i,origin,angle)){
			create_ent_blackhole(origin,angle);
#if defined DEBUG
				log_amx("Blackhole: %.0f %.0f %.0f",origin[0],origin[1],origin[2]);
				log_amx("Blackhole angle: %.0f %.0f %.0f",angle[0],angle[1],angle[2]);
#endif
			i+=7;
		}
	}
}
РЕКЛАМИРАЙ ПРИ НАС!
AMXX-BG.INFO
КАК ДА ИЗПОЛЗВАМ
Добави в началото на .sma файла:
#include <portal>
1. Изтегли
Свали файла от бутона по-горе
2. Копирай
Постави в scripting/include/
3. Включи
Добави #include директивата
4. Компилирай
Използвай amxxpc или scripting/compile.exe