RSSy MYGO.pl Opublikowano Grudzień 1, 2020 o 15:22 RSSy Udostępnij Opublikowano Grudzień 1, 2020 o 15:22 Hello i want to ask can i remove include csdm i have other plugins but i need just like this respawn i dont have module i like this respawn PHP Code: /** * csdm_spawn_preset.sma * Allows for Counter-Strike to be played as DeathMatch. * CSDM Spawn Method - Preset Spawning * by Freecode and BAILOPAN * (C)2003-2014 David "BAILOPAN" Anderson * * Give credit where due. * Share the source - it sets you free * http://www.opensource.org/ * http://www.gnu.org/ */ #define MAX_SPAWNS 60 #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <csdm> //Tampering with the author and name lines will violate copyrights new PLUGINNAME[] = "CSDM Spawns" new VERSION[] = CSDM_VERSION new AUTHORS[] = "CSDM Team" //Menus new g_MainMenu[] = "CSDM: Spawn Manager"; new g_MainMenuID = -1; new g_cMain; new g_AddSpawnsMenu[] = "CSDM: Add Spawns Menu"; new g_AddSpawnsMenuID; new g_cAddSpawns; new g_SpawnVecs[MAX_SPAWNS][3]; new g_SpawnAngles[MAX_SPAWNS][3]; new g_SpawnVAngles[MAX_SPAWNS][3]; new g_SpawnTeam[MAX_SPAWNS]; new g_TotalSpawns = 0; new g_MainPlugin = -1; new g_Ents[MAX_SPAWNS]; new g_Ent[33]; // Current closest spawn new Float:red[3] = {255.0,0.0,0.0}; new Float:yellow[3] = {255.0,200.0,20.0}; new g_iszInfoTarget; public csdm_Init(const version[]) { if (version[0] == 0) { set_fail_state("CSDM failed to load.") return } csdm_addstyle("preset", "spawn_Preset") } public csdm_CfgInit() { csdm_reg_cfg("settings", "read_cfg") } public plugin_init() { register_plugin(PLUGINNAME,VERSION,AUTHORS) g_iszInfoTarget = engfunc(EngFunc_AllocString, "info_target"); register_concmd("edit_spawns", "showmen", ADMIN_MAP, "Edits spawn configuration"); g_MainPlugin = module_exists("csdm_main") ? true : false if (g_MainPlugin) { new menu = csdm_main_menu(); menu_additem(menu, "Spawn Editor", "edit_spawns", ADMIN_MAP) } } public read_cfg(action, line[], section[]) { if (action == CFG_RELOAD) { readSpawns() new Map[32], config[32], MapFile[256] get_mapname(Map, 31) get_configsdir(config, 31) format(MapFile, 255, "%s\csdm\%s.spawns.cfg", config, Map) if (g_TotalSpawns) log_amx("Loaded %d spawn points for map %s.", g_TotalSpawns, Map) else log_amx("No spawn points file found (%s)", MapFile) } } readSpawns() { //-617 2648 179 16 -22 0 0 -5 -22 0 // Origin (x,y,z), Angles (x,y,z), Team (0 = ALL, 1 = T, 2 = CT), vAngles(x,y,z), new Map[32], config[32], MapFile[256] get_mapname(Map, 31) get_configsdir(config, 31) format(MapFile, 255, "%s\csdm\%s.spawns.cfg", config, Map) g_TotalSpawns = 0; if (file_exists(MapFile)) { new Data[124], len new line = 0 new pos[12][8] while(g_TotalSpawns < MAX_SPAWNS && (line = read_file(MapFile , line , Data , 123 , len) ) != 0 ) { if (strlen(Data)<2 || Data[0] == '[') continue; parse(Data, pos[1], 7, pos[2], 7, pos[3], 7, pos[4], 7, pos[5], 7, pos[6], 7, pos[7], 7, pos[8], 7, pos[9], 7, pos[10], 7); // Origin g_SpawnVecs[g_TotalSpawns][0] = str_to_num(pos[1]) g_SpawnVecs[g_TotalSpawns][1] = str_to_num(pos[2]) g_SpawnVecs[g_TotalSpawns][2] = str_to_num(pos[3]) //Angles g_SpawnAngles[g_TotalSpawns][0] = str_to_num(pos[4]) g_SpawnAngles[g_TotalSpawns][1] = str_to_num(pos[5]) g_SpawnAngles[g_TotalSpawns][2] = str_to_num(pos[6]) // Teams g_SpawnTeam[g_TotalSpawns]=str_to_num(pos[7]) //v-Angles g_SpawnVAngles[g_TotalSpawns][0] = str_to_num(pos[8]) g_SpawnVAngles[g_TotalSpawns][1] = str_to_num(pos[9]) g_SpawnVAngles[g_TotalSpawns][2] = str_to_num(pos[10]) g_TotalSpawns++; } } return 1; } public spawn_Preset(id, num) { if (g_TotalSpawns < 2) return PLUGIN_CONTINUE new num = 0 new final = -1 new players[32], n, x = 0 new Float:loc[32][3], locnum new Float:FSpawnVecs[3] new Float:FSpawnAngles[3] new Float:FSpawnVAngles[3] new team = get_user_team(id) new ffa = csdm_get_ffa() //cache locations get_players(players, num) for (new i=0; i<num; i++) { if ((is_user_alive(players[i])) && (players[i] != id) && ((get_user_team(players[i]) != team) || ffa)) { pev(players[i], pev_origin, loc[locnum]) locnum++ } } num = 0 //get a random spawn n = random_num(0, g_TotalSpawns-1) while (num <= g_TotalSpawns) { //have we visited all the spawns yet? if (num == g_TotalSpawns) break; if (n < g_TotalSpawns - 1) n++ else n = 0 // inc the number of spawns we've visited num++ if (( (team == _TEAM_T) && (g_SpawnTeam[n]==2) ) || ( (team == _TEAM_CT) && (g_SpawnTeam[n]==1) ) ) continue; final = n IVecFVec(g_SpawnVecs[n], FSpawnVecs) for (x = 0; x < locnum; x++) { new Float:distance = get_distance_f(FSpawnVecs, loc[x]); if (distance < 500.0) { //invalidate final = -1 break } } if (final == -1) continue new trace = csdm_trace_hull(FSpawnVecs, 1) if (trace) continue; if (locnum < 1) { break } if (final != -1) break } if (final != -1) { new Float:mins[3], Float:maxs[3] IVecFVec(g_SpawnVecs[final], FSpawnVecs) IVecFVec(g_SpawnAngles[final], FSpawnAngles) IVecFVec(g_SpawnVAngles[final], FSpawnVAngles) pev(id, pev_mins, mins) pev(id, pev_maxs, maxs) engfunc(EngFunc_SetSize, id, mins, maxs) engfunc(EngFunc_SetOrigin, id, FSpawnVecs) set_pev(id, pev_fixangle, 1) set_pev(id, pev_angles, FSpawnAngles) set_pev(id, pev_v_angle, FSpawnVAngles) set_pev(id, pev_fixangle, 1) return PLUGIN_HANDLED } return PLUGIN_CONTINUE } buildMenu() { // Create Menu g_MainMenuID = menu_create(g_MainMenu, "m_MainHandler"); //Menu Callbacks g_cMain = menu_makecallback("c_Main"); menu_additem(g_MainMenuID, "Add current position to Spawn","1", 0, g_cMain); menu_additem(g_MainMenuID, "Edit closest spawn (yellow) to Current Position","2", 0, g_cMain); menu_additem(g_MainMenuID, "Delete closest Spawn","3", 0, g_cMain); menu_additem(g_MainMenuID, "Refresh Closest Spawn", "4", 0, g_cMain); menu_additem(g_MainMenuID, "Show statistics", "5", 0, -1); menu_additem(g_MainMenuID, "Back", "6", 0, -1); //Add Spawns Menu g_AddSpawnsMenuID = menu_create(g_AddSpawnsMenu, "m_AddSpawnsHandler"); g_cAddSpawns = menu_makecallback("c_AddSpawns"); menu_additem(g_AddSpawnsMenuID, "Add Current Postion as a random spawn","1", 0, g_cAddSpawns); menu_additem(g_AddSpawnsMenuID, "Add Current Postion as a T spawn","2", 0, g_cAddSpawns); menu_additem(g_AddSpawnsMenuID, "Add Current Postion as a CT spawn","3", 0, g_cAddSpawns); menu_additem(g_AddSpawnsMenuID, "Back","4", 0, -1); } public m_MainHandler(id, menu, item) { if (item == MENU_EXIT) { ent_remove(-1); menu_destroy(menu); return PLUGIN_HANDLED; } // Get item info new cmd[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback); new iChoice = str_to_num(cmd); switch(iChoice) { case 1: { menu_display(id, g_AddSpawnsMenuID, 0); } case 2: { new Float:vecs[3], vec[3]; new Float:angles[3], angle[3]; new Float:vangles[3], vangle[3]; pev(id, pev_origin, vecs); pev(id, pev_angles, angles); pev(id, pev_v_angle, vangles); FVecIVec(vecs,vec); FVecIVec(angles,angle); FVecIVec(vangles,vangle); vec[2] += 15; edit_spawn(g_Ent[id],vec,angle,vangle); menu_display(id, g_MainMenuID, 0); } case 3: { ent_unglow(g_Ent[id]); delete_spawn(g_Ent[id]); g_Ent[id] = closest_spawn(id); menu_display(id, g_MainMenuID, 0); } case 4: { ent_unglow(g_Ent[id]); g_Ent[id] = closest_spawn(id); ent_glow(g_Ent[id],yellow); menu_display(id, g_MainMenuID, 0); new szteam[16] switch(g_SpawnTeam[g_Ent[id]]) { case 0: format(szteam,15,"random") case 1: format(szteam,15,"T") case 2: format(szteam,15,"CT") } client_print(id,print_chat,"The closest spawn: number %d , def: team = %s, org[%d,%d,%d], ang[%d,%d,%d], vang[%d,%d,%d]", g_Ent[id] + 1, szteam, g_SpawnVecs[g_Ent[id]][0], g_SpawnVecs[g_Ent[id]][1], g_SpawnVecs[g_Ent[id]][2], g_SpawnAngles[g_Ent[id]][0], g_SpawnAngles[g_Ent[id]][1], g_SpawnAngles[g_Ent[id]][2], g_SpawnVAngles[g_Ent[id]][0], g_SpawnVAngles[g_Ent[id]][1], g_SpawnVAngles[g_Ent[id]][2]) } case 5: { new Float:Org[3]; pev(id, pev_origin, Org); new RD_num=0, TR_num=0, CT_num=0; for (new x=0; x<g_TotalSpawns; x++) { if (g_SpawnTeam[x]==0) RD_num++ if (g_SpawnTeam[x]==1) TR_num++ if (g_SpawnTeam[x]==2) CT_num++ } client_print(id,print_chat,"Total Spawns: %d; Random: %d; T: %d; CT: %d.^nCurrent Origin: X: %f Y: %f Z: %f", g_TotalSpawns, RD_num, TR_num, CT_num, Org[0], Org[1], Org[2]); menu_display(id, g_MainMenuID, 0); } case 6: { ent_remove(-1); menu_display(id, csdm_main_menu(),0); } } return PLUGIN_HANDLED; } public c_Main(id, menu, item) { if (item == MENU_EXIT) return PLUGIN_CONTINUE new cmd[6], fItem[326], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback); new num = str_to_num(cmd); switch(num) { case 1: { if (g_TotalSpawns == MAX_SPAWNS) { format(fItem,325,"Add Spawns - Max Spawn Limit Reached"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else { format(fItem,325,"Add current position to Spawn"); menu_item_setname(menu, item, fItem ); return ITEM_ENABLED; } } case 2: { if (g_TotalSpawns < 1) { format(fItem,325,"Edit Spawn - No spawns"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else if (g_Ents[g_Ent[id]]==0) { format(fItem,325,"Edit Spawn - No spawn marked"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else { format(fItem,325,"Edit closest spawn (yellow) to Current Position"); menu_item_setname(menu, item, fItem ); return ITEM_ENABLED; } } case 3: { if (g_TotalSpawns < 1) { format(fItem,325,"Delete Spawn - No spawns"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else if (g_Ents[g_Ent[id]]==0) { format(fItem,325,"Delete Spawn - No spawn marked"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else { new iorg[3]; get_user_origin(id, iorg); new distance = get_distance(iorg, g_SpawnVecs[g_Ent[id]]); if (distance > 200) { format(fItem,325,"Delete Spawn - Marked spawn far away"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else { format(fItem,325,"Delete closest Spawn"); menu_item_setname(menu, item, fItem ); return ITEM_ENABLED; } } } } return PLUGIN_HANDLED; } public m_AddSpawnsHandler(id, menu, item) { if (item < 0) { ent_remove(-1); return PLUGIN_HANDLED; } // Get item info new cmd[6], iName[64]; new access, callback; new team menu_item_getinfo(menu, item, access, cmd, 5, iName, 63, callback); new iChoice = str_to_num(cmd); if (iChoice == 4) { menu_display (id, g_MainMenuID, 0); return PLUGIN_HANDLED; } new Float:vecs[3], vec[3]; new Float:angles[3], angle[3]; new Float:vangles[3], vangle[3]; switch(iChoice) { case 1: { team = 0 } case 2: { team = 1 } case 3: { team = 2 } } pev(id, pev_origin, vecs); pev(id, pev_angles, angles); pev(id, pev_v_angle, vangles); FVecIVec(vecs,vec); FVecIVec(angles,angle); FVecIVec(vangles,vangle); vec[2] += 15; add_spawn(vec,angle,vangle,team); menu_display (id, g_AddSpawnsMenuID, 0); return PLUGIN_HANDLED; } public c_AddSpawns(id, menu, item) { if (item < 0) return PLUGIN_CONTINUE new cmd[6], fItem[326], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback); new num = str_to_num(cmd); switch (num) { case 1: { if (g_TotalSpawns == MAX_SPAWNS) { format(fItem,325,"Add a random spawn - Max Spawn Limit Reached"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else { format(fItem,325,"Add Current Position as a random spawn"); menu_item_setname(menu, item, fItem ); return ITEM_ENABLED; } } case 2: { if (g_TotalSpawns == MAX_SPAWNS) { format(fItem,325,"Add a T spawn - Max Spawn Limit Reached"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else { format(fItem,325,"Add Current Position as a T spawn"); menu_item_setname(menu, item, fItem ); return ITEM_ENABLED; } } case 3: { if (g_TotalSpawns == MAX_SPAWNS) { format(fItem,325,"Add a CT spawn - Max Spawn Limit Reached"); menu_item_setname(menu, item, fItem ); return ITEM_DISABLED; } else { format(fItem,325,"Add Current Position as a CT spawn"); menu_item_setname(menu, item, fItem ); return ITEM_ENABLED; } } } return PLUGIN_HANDLED; } add_spawn(vecs[3], angles[3], vangles[3], team) { new Map[32], config[32], MapFile[256]; get_mapname(Map, 31) get_configsdir(config, 31 ) format(MapFile, 255, "%s\csdm\%s.spawns.cfg",config, Map); new line[128]; format(line, 127, "%d %d %d %d %d %d %d %d %d %d",vecs[0], vecs[1], vecs[2], angles[0], angles[1], angles[2], team, vangles[0], vangles[1], vangles[2]); write_file(MapFile, line, -1); // origin g_SpawnVecs[g_TotalSpawns][0] = vecs[0]; g_SpawnVecs[g_TotalSpawns][1] = vecs[1]; g_SpawnVecs[g_TotalSpawns][2] = vecs[2]; // Angles g_SpawnAngles[g_TotalSpawns][0] = angles[0]; g_SpawnAngles[g_TotalSpawns][1] = angles[1]; g_SpawnAngles[g_TotalSpawns][2] = angles[2]; // Teams g_SpawnTeam[g_TotalSpawns] = team; // v-Angles g_SpawnVAngles[g_TotalSpawns][0] = vangles[0]; g_SpawnVAngles[g_TotalSpawns][1] = vangles[1]; g_SpawnVAngles[g_TotalSpawns][2] = vangles[2]; ent_make(g_TotalSpawns); g_TotalSpawns++; } edit_spawn(ent, vecs[3], angles[3], vangles[3]) { new Map[32], config[32], MapFile[256]; get_mapname(Map, 31) get_configsdir ( config, 31 ) format(MapFile, 255, "%s\csdm\%s.spawns.cfg",config, Map); if (file_exists(MapFile)) { new Data[124], len; new line = 0; new pos[11][8]; new currentVec[3], newSpawn[128]; new team; while ((line = read_file(MapFile , line , Data , 123 , len) ) != 0 ) { if (strlen(Data)<2) continue; parse(Data,pos[1],7,pos[2],7,pos[3],7,pos[4],7,pos[5],7,pos[6],7,pos[7],7,pos[8],7,pos[9],7,pos[10],7); currentVec[0] = str_to_num(pos[1]); currentVec[1] = str_to_num(pos[2]); currentVec[2] = str_to_num(pos[3]); team = str_to_num(pos[7]); if ( (g_SpawnVecs[ent][0] == currentVec[0]) && (g_SpawnVecs[ent][1] == currentVec[1]) && ( (g_SpawnVecs[ent][2] - currentVec[2])<=15) ) { format(newSpawn, 127, "%d %d %d %d %d %d %d %d %d %d",vecs[0], vecs[1], vecs[2], angles[0], angles[1], angles[2], team, vangles[0], vangles[1], vangles[2]); write_file(MapFile, newSpawn, line-1); ent_remove(ent); g_SpawnVecs[ent][0] = vecs[0]; g_SpawnVecs[ent][1] = vecs[1]; g_SpawnVecs[ent][2] = vecs[2]; g_SpawnAngles[ent][0] = angles[0]; g_SpawnAngles[ent][1] = angles[1]; g_SpawnAngles[ent][2] = angles[2]; g_SpawnVAngles[ent][0] = vangles[0]; g_SpawnVAngles[ent][1] = vangles[1]; g_SpawnVAngles[ent][2] = vangles[2]; ent_make(ent); ent_glow(ent,red); break; } } } } delete_spawn(ent) { new Map[32], config[32], MapFile[256]; get_mapname(Map, 31) get_configsdir ( config, 31 ) format(MapFile, 255, "%s\csdm\%s.spawns.cfg",config, Map); if (file_exists(MapFile)) { new Data[124], len; new line = 0; new pos[11][8]; new currentVec[3]; while ((line = read_file(MapFile , line , Data , 123 , len) ) != 0 ) { if (strlen(Data)<2) continue; parse(Data,pos[1],7,pos[2],7,pos[3],7); currentVec[0] = str_to_num(pos[1]); currentVec[1] = str_to_num(pos[2]); currentVec[2] = str_to_num(pos[3]); if ( (g_SpawnVecs[ent][0] == currentVec[0]) && (g_SpawnVecs[ent][1] == currentVec[1]) && ( (g_SpawnVecs[ent][2] - currentVec[2])<=15) ) { write_file(MapFile, "", line-1); ent_remove(-1); readSpawns(); ent_make(-1); break } } } } closest_spawn(id) { new origin[3]; new lastDist = 999999; new closest; get_user_origin(id, origin); for (new x = 0; x < g_TotalSpawns; x++) { new distance = get_distance(origin, g_SpawnVecs[x]); if (distance < lastDist) { lastDist = distance; closest = x; } } return closest; } ent_make(id) { new iEnt; if(id < 0) { for (new x = 0; x < g_TotalSpawns; x++) { iEnt = engfunc(EngFunc_CreateNamedEntity, g_iszInfoTarget); set_pev(iEnt, pev_classname, "view_spawn"); switch(g_SpawnTeam[x]) { case 0: { engfunc(EngFunc_SetModel, iEnt, "models/player/vip/vip.mdl"); } case 1: { engfunc(EngFunc_SetModel, iEnt, "models/player/terror/terror.mdl"); } case 2: { engfunc(EngFunc_SetModel, iEnt, "models/player/urban/urban.mdl"); } } set_pev(iEnt, pev_solid, SOLID_SLIDEBOX); set_pev(iEnt, pev_movetype, MOVETYPE_NOCLIP); set_pev(iEnt, pev_flags, pev(iEnt, pev_flags) & FL_ONGROUND) set_pev(iEnt, pev_sequence, 1); if (g_Ents[x]) { engfunc(EngFunc_RemoveEntity, g_Ents[x]) } g_Ents[x] = iEnt; ent_unglow(x); } } else { if ((g_SpawnTeam[id]>=0) && (g_SpawnTeam[id]<3)) { iEnt = engfunc(EngFunc_CreateNamedEntity, g_iszInfoTarget); set_pev(iEnt, pev_classname, "view_spawn"); switch (g_SpawnTeam[id]) { case 0: /* CSDM random spawn point */ { engfunc(EngFunc_SetModel, iEnt, "models/player/vip/vip.mdl"); } case 1: /* CSDM terrorist spawn point */ { engfunc(EngFunc_SetModel, iEnt, "models/player/terror/terror.mdl"); } case 2: /* CSDM CT spawn point */ { engfunc(EngFunc_SetModel, iEnt, "models/player/urban/urban.mdl"); } } set_pev(iEnt, pev_solid, SOLID_SLIDEBOX); set_pev(iEnt, pev_movetype, MOVETYPE_NOCLIP); set_pev(iEnt, pev_sequence, 1); set_pev(iEnt, pev_flags, pev(iEnt, pev_flags) & FL_ONGROUND) if (g_Ents[id]) { engfunc(EngFunc_RemoveEntity, g_Ents[id]) } g_Ents[id] = iEnt; ent_unglow(id); } } } ent_remove(ent) { if( ent < 0 ) { for( new i = 0; i < g_TotalSpawns; i++) { if(pev_valid(g_Ents[i])) { engfunc(EngFunc_RemoveEntity, g_Ents[i]); g_Ents[i] = 0 } } } else { if(pev_valid(g_Ents[ent])) { engfunc(EngFunc_RemoveEntity, g_Ents[ent]); //remove_entity(ent) g_Ents[ent] = 0 } } } ent_glow(ent,Float:color[3]) { new iEnt = g_Ents[ent]; if (iEnt) { set_ent_pos(ent); set_pev(iEnt, pev_renderfx, kRenderFxGlowShell); set_pev(iEnt, pev_renderamt, 127.0); set_pev(iEnt, pev_rendermode, kRenderTransAlpha); set_pev(iEnt, pev_rendercolor, color) ; } } ent_unglow(ent) { new iEnt = g_Ents[ent]; if (iEnt) { set_ent_pos(ent); set_pev(iEnt, pev_renderfx, kRenderFxNone); set_pev(iEnt, pev_renderamt, 127.0); set_pev(iEnt, pev_rendermode, kRenderTransAlpha); } } set_ent_pos(ent) { new iEnt = g_Ents[ent]; new Float:org[3]; IVecFVec(g_SpawnVecs[ent],org); set_pev( iEnt, pev_origin, org); new Float:ang[3]; IVecFVec(g_SpawnAngles[ent],ang); set_pev(iEnt, pev_angles, ang); new Float:vang[3]; IVecFVec(g_SpawnVAngles[ent],vang); set_pev(iEnt, pev_v_angle, vang); set_pev(iEnt, pev_fixangle, 1) } public showmen(id, level, cid) { if (!cmd_access(id, level, cid, 1) || !id) return PLUGIN_HANDLED buildMenu(); ent_make(-1); menu_display ( id, g_MainMenuID, 0); return PLUGIN_HANDLED; } Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi