RSSy MYGO.pl Opublikowano Grudzień 26, 2020 o 13:58 RSSy Udostępnij Opublikowano Grudzień 26, 2020 o 13:58 Code: #include <amxmodx> #include <engine> #include <fakemeta> #include <hamsandwich> #include <cstrike> #include <fun> #include <fakemeta_util> #define MAX_NETS 2 new g_Trail; new const PLUGIN_NAME[] = "Jailbreak football" new const PLUGIN_AUTHOR[] = "CreePs & lolz123 & @f0rce" new const PLUGIN_VERSION[] = "2.0" new const PLUGIN_PREFIX[] = "Ball" new const cluster_trail[] = "sprites/flame.spr" static const g_szBallBounce[] = "Ball/bounce.wav" static const g_szBallModel[] = "models/Ball/ball.mdl" static const g_szBallName[] = "ball" new const CatchBallSound[ ] = "Ball/gotball.wav" new const KickBallSound[ ] = "Ball/kicked.wav" enum { FIRST_POINT = 0, SECOND_POINT } new g_szFile[128] new g_szMapname[32] new g_buildingstage[33] new gBall new g_iTrailSprite new ball_speed new ball_distance new countnets = 0 new bool:g_bHighlight[33][2] new bool:g_buildingNet[33] new bool:g_bNeedBall new bool:g_bScored new Float:g_vOrigin[3] new Float:g_fOriginBox[33][2][3] new Float:g_fLastTouch new g_OwnerOrigin[3] new g_Owner new g_iMainMenu new g_iBallMenu new g_iNetMenu new g_SayText public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR) ball_speed = register_cvar("jb_ball_speed", "200.0") ball_distance = register_cvar("jb_ball_distance", "600") register_logevent("EventRoundStart", 2, "1=Round_Start") register_event("CurWeapon", "CurWeapon", "be") register_forward(FM_PlayerPreThink, "PlayerPreThink", 0) register_forward(FM_Touch, "FwdTouch", 0) RegisterHam(Ham_ObjectCaps, "player", "FwdHamObjectCaps", 1) register_think(g_szBallName, "FwdThinkBall") register_touch(g_szBallName, "player", "FwdTouchPlayer") //register_touch(g_szBallName, "JailNet", "touchNet") remove_entity_name("func_pushable") new const szEntity[][] = { "worldspawn", "func_wall", "func_door", "func_door_rotating", "func_wall_toggle", "func_breakable", "func_pushable", "func_train", "func_illusionary", "func_button", "func_rot_button", "func_rotating" } for(new i; i < sizeof(szEntity); i++) register_touch(g_szBallName, szEntity[i], "FwdTouchWorld") CreateMenus() register_clcmd("say /ball", "ShowMainMenu") register_clcmd("say /reset", "UpdateBall") g_SayText = get_user_msgid("SayText") } public CreateMenus() { g_iMainMenu = register_menuid("Soccer Main") g_iBallMenu = register_menuid("Soccer Ball") g_iNetMenu = register_menuid("Soccer Net") register_menucmd(g_iMainMenu, 1023, "HandleMainMenu") register_menucmd(g_iBallMenu, 1023, "HandleBallMenu") register_menucmd(g_iNetMenu, 1023, "HandleNetMenu") } public ShowMainMenu(id) { new szBuffer[512], iLen new col[3], col2[3] col = get_user_flags(id) & ADMIN_RCON ? "\r" : "\d" col2 = get_user_flags(id) & ADMIN_RCON ? "\w" : "\d" iLen = formatex(szBuffer, sizeof szBuffer - 1, "\r[\wBall JailBreak\r] \wJail Football^n^n", PLUGIN_PREFIX) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r1. \wBall Menu^n") iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r2. \wNet Menu^n^n") iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s3. %sLoad All^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s4. %sDelete All^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s5. %sSave All^n^n^n^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r0. \yExit", col, col2) new iKeys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 ) show_menu(id, iKeys, szBuffer, -1, "Soccer Main") } public ShowBallMenu(id) { new szBuffer[512], iLen new col[3], col2[3] col = get_user_flags(id) & ADMIN_RCON ? "\r" : "\d" col2 = get_user_flags(id) & ADMIN_RCON ? "\w" : "\d" iLen = formatex(szBuffer, sizeof szBuffer - 1, "\r[\wBall JailBreak\r] \wJail Ball^n^n", PLUGIN_PREFIX) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s1. %sCreate Ball^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s2. %sHighlight Ball^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s3. %sDelete Ball^n^n^n^n^n^n^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r0. \yBack") new iKeys = ( 1<<0 | 1<<1 | 1<<2 | 1<<9 ) show_menu(id, iKeys, szBuffer, -1, "Soccer Ball") } public ShowNetMenu(id) { new szBuffer[512], iLen new col[3], col2[3] col = get_user_flags(id) & ADMIN_RCON ? "\r" : "\d" col2 = get_user_flags(id) & ADMIN_RCON ? "\w" : "\d" iLen = formatex(szBuffer, sizeof szBuffer - 1, "\r[\wBall JailBreak\r] \wJail Net^n^n", PLUGIN_PREFIX) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s1. %sCreate Net^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s2. %sHighlight Net^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s3. %sDelete Net^n^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "%s4. %sNet Move^n^n^n^n^n", col, col2) iLen += formatex(szBuffer[iLen], (sizeof szBuffer - 1) - iLen, "\r0. \yBack") new iKeys = ( 1<<0 | 1<<1 | 1<<2 | 1<<9 ) show_menu(id, iKeys, szBuffer, -1, "Soccer Net") } public PlayerPreThink(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE) && g_buildingNet[id]) { new Float:fOrigin[3], fOriginn[3] get_user_origin(id, fOriginn, 3) IVecFVec(fOriginn, fOrigin) if(g_buildingstage[id] == FIRST_POINT) { g_buildingstage[id] = SECOND_POINT g_fOriginBox[id][FIRST_POINT] = fOrigin ColorChat(id, "Now set the origin for the bottom left corner of the box.") } else { g_buildingstage[id] = FIRST_POINT g_buildingNet[id] = false g_fOriginBox[id][SECOND_POINT] = fOrigin CreateNet(g_fOriginBox[id][FIRST_POINT], g_fOriginBox[id][SECOND_POINT]) ColorChat(id, "Successfully created net #%d", ++countnets) } } if(is_valid_ent(gBall)) { static iOwner iOwner = pev(gBall, pev_iuser1) if(iOwner != id) ResetMaxspeed(id) } return PLUGIN_HANDLED } public CurWeapon(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE if(is_valid_ent(gBall)) { static iOwner iOwner = pev(gBall, pev_iuser1) if(iOwner == id) entity_set_float(id, EV_FL_maxspeed, get_pcvar_float(ball_speed)) } return PLUGIN_HANDLED } public UpdateBall(id) { if(!id || get_user_flags(id) & ADMIN_KICK) { if(is_valid_ent(gBall)) { entity_set_vector(gBall, EV_VEC_velocity, Float:{ 0.0, 0.0, 0.0 }) entity_set_origin(gBall, g_vOrigin) entity_set_int(gBall, EV_INT_movetype, MOVETYPE_BOUNCE) entity_set_size(gBall, Float:{ -15.0, -15.0, 0.0 }, Float:{ 15.0, 15.0, 12.0 }) entity_set_int(gBall, EV_INT_iuser1, 0) } } return PLUGIN_HANDLED } public MoveBall(where) { if(!is_valid_ent(gBall)) return PLUGIN_HANDLED switch(where) { case 0: { new Float:orig[3] for(new x=0;x<3;x++) orig[x] = -9999.9 entity_set_origin(gBall,orig) } case 1: { if(is_valid_ent(gBall)) { new vOrigin[3] entity_set_vector(gBall, EV_VEC_velocity, Float:{ 0.0, 0.0, 0.0 }) entity_set_origin(gBall, g_vOrigin ) entity_set_int(gBall, EV_INT_movetype, MOVETYPE_BOUNCE) entity_set_size(gBall, Float:{ -15.0, -15.0, 0.0 }, Float:{ 15.0, 15.0, 12.0 }) entity_set_int(gBall, EV_INT_iuser1, 0) g_bScored = false FVecIVec(g_vOrigin, vOrigin) flameWave(vOrigin, 0, 255, 0, 15) } } } return PLUGIN_HANDLED } public plugin_precache() { precache_model(g_szBallModel) precache_sound(g_szBallBounce) precache_sound(CatchBallSound); precache_sound(KickBallSound); g_Trail = precache_model(cluster_trail) precache_sound( "Ball/goal.wav" ); get_mapname(g_szMapname, 31) strtolower(g_szMapname ) new szDatadir[64] get_localinfo("amxx_datadir", szDatadir, charsmax(szDatadir)) formatex(szDatadir, charsmax( szDatadir ), "%s", szDatadir) if(!dir_exists( szDatadir)) mkdir(szDatadir) formatex(g_szFile, charsmax(g_szFile), "%s/ball.ini", szDatadir) if(!file_exists(g_szFile)) { write_file(g_szFile, "// Soccerjam Ball/Nets Spawn Editor", -1) write_file(g_szFile, "// Credits to us ", -1) return } LoadAll(0) } public LoadAll(id) { new szData[512] new szMap[32] new szOrigin[3][16] new szfPoint[2][3][16], szlPoint[2][3][16] new iFile = fopen(g_szFile, "rt") while(!feof(iFile)) { fgets(iFile, szData, charsmax(szData)) if(!szData[0] || szData[0] == ';' || szData[0] == ' ' || ( szData[0] == '/' && szData[1] == '/' )) continue parse(szData, szMap, 31, szOrigin[0], 15, szOrigin[1], 15, szOrigin[2], 15,\ szfPoint[0][0], 15, szfPoint[0][1], 15, szfPoint[0][2], 15,\ szlPoint[0][0], 15, szlPoint[0][1], 15, szlPoint[0][2], 15,\ szfPoint[1][0], 15, szfPoint[1][1], 15, szfPoint[1][2], 15,\ szlPoint[1][0], 15, szlPoint[1][1], 15, szlPoint[1][2], 15) if(equal(szMap, g_szMapname)) { new Float:vOrigin[3] new Float:fPoint[2][3] new Float:lPoint[2][3] vOrigin[0] = str_to_float(szOrigin[0]) vOrigin[1] = str_to_float(szOrigin[1]) vOrigin[2] = str_to_float(szOrigin[2]) for(new i = 0; i < 2; i++) { for(new j = 0; j < 3; j++) { fPoint[i][j] = str_to_float(szfPoint[i][j]) lPoint[i][j] = str_to_float(szlPoint[i][j]) } } CreateBall(0, vOrigin) CreateNet(fPoint[0], lPoint[0]) CreateNet(fPoint[1], lPoint[1]) g_vOrigin = vOrigin countnets = 2 break } } fclose(iFile) } public SaveAll(id) { new iBall, iNets[2], ent, i new Float:vOrigin[3] new Float:fMaxs[3] new Float:fOrigin[3] new Float:vfPoint[2][3] new Float:vlPoint[2][3] while((ent = find_ent_by_class(ent, g_szBallName)) > 0) iBall = ent while((ent = find_ent_by_class(ent, "JailNet")) > 0) iNets[i++] = ent if(iBall > 0 && iNets[0] > 0 && iNets[1] > 0 && countnets == 2) { entity_get_vector(iBall, EV_VEC_origin, vOrigin) for(new i = 0; i < 2; i++) { entity_get_vector(iNets[i], EV_VEC_origin, fOrigin) entity_get_vector(iNets[i], EV_VEC_maxs, fMaxs) for(new j = 0; j < 3; j++) { vfPoint[i][j] = fOrigin[j] + fMaxs[j] vlPoint[i][j] = fOrigin[j] - fMaxs[j] } } } else return PLUGIN_HANDLED new bool:bFound, iPos, szData[32], iFile = fopen(g_szFile, "r+") if(!iFile) return PLUGIN_HANDLED while(!feof(iFile)) { fgets(iFile, szData, 31) parse(szData, szData, 31) iPos++ if(equal(szData, g_szMapname)) { bFound = true new szString[512] formatex(szString, 511, "%s %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", g_szMapname, vOrigin[0], vOrigin[1], vOrigin[2],\ vfPoint[0][0], vfPoint[0][1], vfPoint[0][2], vlPoint[0][0], vlPoint[0][1], vlPoint[0][2],\ vfPoint[1][0], vfPoint[1][1], vfPoint[1][2], vlPoint[1][0], vlPoint[1][1], vlPoint[1][2]) write_file(g_szFile, szString, iPos - 1) break } } if(!bFound) fprintf(iFile, "%s %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f^n", g_szMapname, vOrigin[0], vOrigin[1], vOrigin[2],\ vfPoint[0][0], vfPoint[0][1], vfPoint[0][2], vlPoint[0][0], vlPoint[0][1], vlPoint[0][2],\ vfPoint[1][0], vfPoint[1][1], vfPoint[1][2], vlPoint[1][0], vlPoint[1][1], vlPoint[1][2]) fclose(iFile) ColorChat(id, "Successfully saved ball & nets!") return PLUGIN_HANDLED } public HandleMainMenu(id, key) { if((key == 2 || key == 3 || key == 4) && !( get_user_flags(id) & ADMIN_RCON)) { ShowMainMenu(id) return PLUGIN_HANDLED } switch(key) { case 0: { ShowBallMenu(id) return PLUGIN_HANDLED } case 1: { ShowNetMenu(id) return PLUGIN_HANDLED } case 2: { if(is_valid_ent(gBall)) { entity_set_vector(gBall, EV_VEC_velocity, Float:{ 0.0, 0.0, 0.0 }) entity_set_origin(gBall, g_vOrigin ) entity_set_int(gBall, EV_INT_movetype, MOVETYPE_BOUNCE) entity_set_size(gBall, Float:{ -15.0, -15.0, 0.0 }, Float:{ 15.0, 15.0, 12.0 }) entity_set_int(gBall, EV_INT_iuser1, 0) ColorChat(id, "Successfully loaded entity!") } } case 3: { new ent new ball, net while((ent = find_ent_by_class(ent, g_szBallName)) > 0) { remove_entity(ent) ball++ } while((ent = find_ent_by_class(ent, "JailNet")) > 0) { remove_entity(ent) countnets-- net++ } ColorChat(id, "Successfully removed^x03 %d^x01 ball and^x03 %d^x01 nets", ball, net) } case 4: SaveAll(id) case 9: return PLUGIN_HANDLED } ShowMainMenu(id) return PLUGIN_HANDLED } public HandleBallMenu(id, key) { if(key != 9 && !( get_user_flags(id) & ADMIN_RCON)) { ShowBallMenu(id) return PLUGIN_HANDLED } switch(key) { case 0: { if(pev_valid(gBall)) return PLUGIN_CONTINUE new ball ball = CreateBall(id) if(pev_valid(ball)) ColorChat(id, "Successfully created ball!") else ColorChat(id, "Failled to create ball!") } case 1: { if(!g_bHighlight[id][1]) { set_rendering(gBall, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 255) entity_set_float(gBall, EV_FL_renderamt, 1.0) g_bHighlight[id][1] = true ColorChat(id, "Ball highlight has been^x04 Enabled^x01.") } else { set_rendering(gBall, kRenderFxNone, 0, 0, 255, kRenderNormal, 255) entity_set_float(gBall, EV_FL_renderamt, 1.0) g_bHighlight[id][1] = false ColorChat(id, "Ball highlight has been^x03 Disabled^x01.") } } case 2: { new ent new bool:bFound while((ent = find_ent_by_class(ent, g_szBallName)) > 0) { remove_entity(ent) bFound = true } if(bFound) ColorChat(id, "Successfully removed ball!") else ColorChat(id, "No ball was found to remove") } case 9: { ShowMainMenu(id) return PLUGIN_HANDLED } } ShowBallMenu(id) return PLUGIN_HANDLED } public HandleNetMenu(id, key) { if(key != 9 && !( get_user_flags(id) & ADMIN_RCON)) { ShowNetMenu(id) return PLUGIN_HANDLED } switch(key) { case 0: { if(g_buildingNet[id]) { ColorChat(id, "Already in building net mod.") ShowNetMenu(id) return PLUGIN_HANDLED } if(countnets >= MAX_NETS) { ColorChat(id, "Sorry, limit of nets reached (%d).", countnets) ShowNetMenu(id) return PLUGIN_HANDLED } g_buildingNet[id] = true ColorChat(id, "Set the origin for the top right corner of the box.") } case 1: { if(!g_bHighlight[id][0]) { set_task(1.0, "taskShowNet", 1000 + id, "", 0, "b", 0) g_bHighlight[id][0] = true ColorChat(id, "Net highlight has been^x04 Enabled^x01.") } else { remove_task(1000+id) g_bHighlight[id][0] = false ColorChat(id, "Net highlight has been^x03 Disabled^x01.") } } case 2: { new ent, body new bool:bFound static classname[32] get_user_aiming(id, ent, body, 9999) entity_get_string(ent, EV_SZ_classname, classname, charsmax(classname)) if(is_valid_ent(ent) && equal(classname, "JailNet")) { remove_entity(ent) countnets-- bFound = true } else { new Float:fPlrOrigin[3], Float:fNearestDist = 9999.0, iNearestEnt new Float:fOrigin[3], Float:fCurDist pev(id, pev_origin, fPlrOrigin) new ent = -1 while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "JailNet")) != 0) { pev(ent, pev_origin, fOrigin) fCurDist = vector_distance(fPlrOrigin, fOrigin) if(fCurDist < fNearestDist) { iNearestEnt = ent fNearestDist = fCurDist } } if(iNearestEnt > 0 && is_valid_ent(iNearestEnt)) { remove_entity(iNearestEnt) countnets-- } bFound = true } if(bFound) ColorChat(id, "Successfully removed net!") else ColorChat(id, "No net was found to remove") } case 9: { ShowMainMenu(id) return PLUGIN_HANDLED } } ShowNetMenu(id) return PLUGIN_HANDLED } public EventRoundStart() { if(!g_bNeedBall) return if(!is_valid_ent(gBall)) CreateBall(0, g_vOrigin) else { entity_set_vector(gBall, EV_VEC_velocity, Float:{ 0.0, 0.0, 0.0 }) entity_set_origin(gBall, g_vOrigin) entity_set_int(gBall, EV_INT_solid, SOLID_BBOX) entity_set_int(gBall, EV_INT_movetype, MOVETYPE_BOUNCE) entity_set_size(gBall, Float:{ -15.0, -15.0, 0.0 }, Float:{ 15.0, 15.0, 12.0 }) entity_set_int(gBall, EV_INT_iuser1, 0) } } public FwdHamObjectCaps(id) { if(pev_valid(gBall) && is_user_alive(id)) { static iOwner iOwner = pev(gBall, pev_iuser1) if(iOwner == id) { KickBall(id) g_Owner = iOwner get_user_origin(id, g_OwnerOrigin) } } } public FwdThinkBall(ent,sprite,life,size,R,G,B,F) { if(!is_valid_ent(gBall)) return PLUGIN_HANDLED static Float:vOrigin[3], Float:vBallVelocity[3] entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.05) entity_get_vector(ent, EV_VEC_origin, vOrigin) entity_get_vector(ent, EV_VEC_velocity, vBallVelocity) static iOwner static iSolid iSolid = pev(ent, pev_solid) iOwner = pev(ent, pev_iuser1) static Float:flGametime, Float:flLastThink flGametime = get_gametime() if(flLastThink < flGametime) { if(floatround(vector_length(vBallVelocity)) > 10) { Trail(ent,g_Trail,12,8,255,155,55,255) } flLastThink = flGametime + 3.0 } if(iOwner > 0) { static Float:vOwnerOrigin[3] static const Float:vVelocity[3] = { 1.0, 1.0, 0.0 } entity_get_vector( iOwner, EV_VEC_origin, vOwnerOrigin ) if(!is_user_alive(iOwner)) { vOwnerOrigin[ 2 ] += 5.0 entity_set_int(ent, EV_INT_iuser1, 0) entity_set_origin(ent, vOwnerOrigin) entity_set_vector(ent, EV_VEC_velocity, vVelocity) return PLUGIN_CONTINUE } if(iSolid != SOLID_NOT) { set_pev(ent, pev_solid, SOLID_NOT) emit_sound(iOwner, CHAN_VOICE, CatchBallSound, 1.0, ATTN_NORM, 0, PITCH_NORM) set_hudmessage(255, 20, 20, -1.0, 0.4, 1, 1.0, 1.5, 0.1, 0.1, 2) show_hudmessage(iOwner, "** YOU HAVE THE BALL! **") } static Float:vAngles[3], Float:vReturn[3] entity_get_vector( iOwner, EV_VEC_v_angle, vAngles ) vReturn[0] = (floatcos(vAngles[1], degrees) * 55.0) + vOwnerOrigin[0] vReturn[1] = (floatsin(vAngles[1], degrees) * 55.0) + vOwnerOrigin[1] vReturn[2] = vOwnerOrigin[2] vReturn[2] -= (entity_get_int(iOwner, EV_INT_flags) & FL_DUCKING) ? 10 : 30 entity_set_vector(ent, EV_VEC_velocity, vVelocity) entity_set_origin(ent, vReturn) } else { if(iSolid != SOLID_BBOX ) set_pev(ent, pev_solid, SOLID_BBOX) static Float:flLastVerticalOrigin if(vBallVelocity[2] == 0.0) { static iCounts if(flLastVerticalOrigin > vOrigin[2]) { iCounts++ if( iCounts > 10 && !g_bScored) { iCounts = 0 UpdateBall(0) } } else { iCounts = 0 if(PointContents(vOrigin) != CONTENTS_EMPTY && !g_bScored) UpdateBall(0) } flLastVerticalOrigin = vOrigin[2] } } return PLUGIN_CONTINUE } KickBall(id) { ResetMaxspeed(id) static Float:vOrigin[3] entity_get_vector(gBall, EV_VEC_origin, vOrigin) if(PointContents(vOrigin) != CONTENTS_EMPTY) return PLUGIN_HANDLED new Float:vVelocity[3] velocity_by_aim( id, get_pcvar_num(ball_distance), vVelocity) set_pev(gBall, pev_solid, SOLID_BBOX) entity_set_size(gBall, Float:{ -15.0, -15.0, 0.0 }, Float:{ 15.0, 15.0, 12.0 }) entity_set_int(gBall, EV_INT_iuser1, 0) entity_set_vector(gBall, EV_VEC_velocity, vVelocity) emit_sound(id, CHAN_VOICE, KickBallSound, 1.0, ATTN_NORM, 0, PITCH_NORM) return PLUGIN_CONTINUE } public Goal() { new name[32], fdistance new Float:fOrigin[3] entity_get_vector(gBall, EV_VEC_origin,fOrigin) new Origin[3] FVecIVec(fOrigin, Origin) get_user_name(g_Owner, name,31) fdistance = get_distance(Origin, g_OwnerOrigin) set_hudmessage(random_num(0,255), random_num(0,255), random_num(0,255), -1.0, -1.0, 0, 6.0, 6.0) if(g_Owner != 0) show_hudmessage(0, "%s^nScored A Goal^n[%i Units]", name, fdistance) client_cmd( 0, "spk ^"sound/Ball/goal.wav^"" ); flameWave(Origin, 0, 0, 255, 4) g_bScored = true MoveBall(0) set_task(5.0, "MoveBall", 1) } public FwdTouchPlayer(Ball, id, ent) { if(is_user_bot(id)) return PLUGIN_CONTINUE static iOwner iOwner = pev(Ball, pev_iuser1) if( iOwner == 0 ) { entity_set_int(Ball, EV_INT_iuser1, id) entity_set_float(id, EV_FL_maxspeed, get_pcvar_float(ball_speed)) } return PLUGIN_CONTINUE } public FwdTouchWorld(Ball, World, ent) { static Float:vVelocity[3] entity_get_vector(Ball, EV_VEC_velocity, vVelocity) if(floatround(vector_length(vVelocity)) > 10) { vVelocity[0] *= 0.85 vVelocity[1] *= 0.85 vVelocity[2] *= 0.85 entity_set_vector(Ball, EV_VEC_velocity, vVelocity) emit_sound(Ball, CHAN_ITEM, g_szBallBounce, 1.0, ATTN_NORM, 0, PITCH_NORM) } return PLUGIN_CONTINUE } public FwdTouch(ent, id) { static szNameEnt[32], szNameId[32] pev(ent, pev_classname, szNameEnt, sizeof szNameEnt - 1) pev(id, pev_classname, szNameId, sizeof szNameId - 1) static Float:fGameTime fGameTime = get_gametime() if(equal(szNameEnt, "JailNet") && equal(szNameId, g_szBallName) && (fGameTime - g_fLastTouch) > 0.1) { Goal() g_fLastTouch = fGameTime } } CreateBall(id, Float:vOrigin[ 3 ] = { 0.0, 0.0, 0.0 }) { if(!id && vOrigin[0] == 0.0 && vOrigin[1] == 0.0 && vOrigin[2] == 0.0) return 0 g_bNeedBall = true gBall = create_entity("info_target") if(is_valid_ent(gBall)) { entity_set_string(gBall, EV_SZ_classname, g_szBallName) entity_set_int(gBall, EV_INT_solid, SOLID_BBOX) entity_set_int(gBall, EV_INT_movetype, MOVETYPE_BOUNCE) entity_set_model(gBall, g_szBallModel) entity_set_size(gBall, Float:{ -15.0, -15.0, 0.0 }, Float:{ 15.0, 15.0, 12.0 }) entity_set_float(gBall, EV_FL_framerate, 0.0) entity_set_int(gBall, EV_INT_sequence, 0) entity_set_float(gBall, EV_FL_nextthink, get_gametime() + 0.05) if(id > 0) { new iOrigin[3] get_user_origin(id, iOrigin, 3) IVecFVec(iOrigin, vOrigin) vOrigin[2] += 5.0 entity_set_origin(gBall, vOrigin) } else entity_set_origin(gBall, vOrigin) g_vOrigin = vOrigin return gBall } return -1 } CreateNet(Float:firstPoint[3], Float:lastPoint[3]) { new ent new Float:fCenter[3], Float:fSize[3] new Float:fMins[3], Float:fMaxs[3] for ( new i = 0; i < 3; i++ ) { fCenter[i] = (firstPoint[i] + lastPoint[i]) / 2.0 fSize[i] = get_float_difference(firstPoint[i], lastPoint[i]) fMins[i] = fSize[i] / -2.0 fMaxs[i] = fSize[i] / 2.0 } ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) if (ent) { engfunc(EngFunc_SetOrigin, ent, fCenter) set_pev(ent, pev_classname, "JailNet") dllfunc(DLLFunc_Spawn, ent) set_pev(ent, pev_movetype, MOVETYPE_FLY) set_pev(ent, pev_solid, SOLID_TRIGGER) engfunc(EngFunc_SetSize, ent, fMins, fMaxs) } } ResetMaxspeed(id) { static Float:max_speed switch ( get_user_weapon(id) ) { case CSW_SG550, CSW_AWP, CSW_G3SG1: max_speed = 210.0 case CSW_M249: max_speed = 220.0 case CSW_AK47: max_speed = 221.0 case CSW_M3, CSW_M4A1: max_speed = 230.0 case CSW_SG552: max_speed = 235.0 case CSW_XM1014, CSW_AUG, CSW_GALIL, CSW_FAMAS: max_speed = 240.0 case CSW_P90: max_speed = 245.0 case CSW_SCOUT: max_speed = 260.0 default: max_speed = 250.0 } entity_set_float(id, EV_FL_maxspeed, max_speed) } public sqrt(num) { new div = num new result = 1 while (div > result) { div = (div + result) / 2 result = num / div } return div } stock Float:get_float_difference(Float:num1, Float:num2) { if(num1 > num2) return (num1-num2) else if(num2 > num1) return (num2-num1) return 0.0 } stock Trail(ent,sprite,life,size,R,G,B,F) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) write_short(ent) write_short(sprite) write_byte(life) write_byte(size) write_byte(R) write_byte(G) write_byte(B) write_byte(F) message_end() } public taskShowNet(id) { id -= 1000 if(!is_user_connected(id)) { remove_task(1000 + id) return } new ent new Float:fOrigin[3], Float:fMins[3], Float:fMaxs[3] new vMaxs[3], vMins[3] new iColor[3] = { 255, 0, 0 } while((ent = find_ent_by_class(ent, "JailNet")) > 0) { pev(ent, pev_mins, fMins) pev(ent, pev_maxs, fMaxs) pev(ent, pev_origin, fOrigin) fMins[0] += fOrigin[0] fMins[1] += fOrigin[1] fMins[2] += fOrigin[2] fMaxs[0] += fOrigin[0] fMaxs[1] += fOrigin[1] fMaxs[2] += fOrigin[2] FVecIVec(fMins, vMins) FVecIVec(fMaxs, vMaxs) fm_draw_line(id, vMaxs[0], vMaxs[1], vMaxs[2], vMins[0], vMaxs[1], vMaxs[2], iColor) fm_draw_line(id, vMaxs[0], vMaxs[1], vMaxs[2], vMaxs[0], vMins[1], vMaxs[2], iColor) fm_draw_line(id, vMaxs[0], vMaxs[1], vMaxs[2], vMaxs[0], vMaxs[1], vMins[2], iColor) fm_draw_line(id, vMins[0], vMins[1], vMins[2], vMaxs[0], vMins[1], vMins[2], iColor) fm_draw_line(id, vMins[0], vMins[1], vMins[2], vMins[0], vMaxs[1], vMins[2], iColor) fm_draw_line(id, vMins[0], vMins[1], vMins[2], vMins[0], vMins[1], vMaxs[2], iColor) fm_draw_line(id, vMins[0], vMaxs[1], vMaxs[2], vMins[0], vMaxs[1], vMins[2], iColor) fm_draw_line(id, vMins[0], vMaxs[1], vMins[2], vMaxs[0], vMaxs[1], vMins[2], iColor) fm_draw_line(id, vMaxs[0], vMaxs[1], vMins[2], vMaxs[0], vMins[1], vMins[2], iColor) fm_draw_line(id, vMaxs[0], vMins[1], vMins[2], vMaxs[0], vMins[1], vMaxs[2], iColor) fm_draw_line(id, vMaxs[0], vMins[1], vMaxs[2], vMins[0], vMins[1], vMaxs[2], iColor) fm_draw_line(id, vMins[0], vMins[1], vMaxs[2], vMins[0], vMaxs[1], vMaxs[2], iColor) } } public flameWave(Origin[3], r, g, b, speed) { } stock fm_draw_line(id, x1, y1, z1, x2, y2, z2, g_iColor[3]) { message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, SVC_TEMPENTITY, _, id ? id : 0) write_byte(TE_BEAMPOINTS) write_coord(x1) write_coord(y1) write_coord(z1) write_coord(x2) write_coord(y2) write_coord(z2) write_short(g_iTrailSprite) write_byte(1) write_byte(1) write_byte(10) write_byte(5) write_byte(0) write_byte(g_iColor[0]) write_byte(g_iColor[1]) write_byte(g_iColor[2]) write_byte(200) write_byte(0) message_end() } stock ColorChat(const id, const string[], {Float, Sql, Resul,_}:...) { new msg[191], players[32], count = 1 static len len = formatex(msg, charsmax(msg), "^x03[%s]^x01 ", PLUGIN_PREFIX) vformat(msg[len], charsmax(msg) - len, string, 3) if(id) players[0] = id else get_players(players,count,"ch") for (new i = 0; i < count; i++) { if(is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, g_SayText,_, players[i]) write_byte(players[i]) write_string(msg) message_end() } } } Code: L 12/26/2020 - 15:53:08: [FAKEMETA] Invalid entity L 12/26/2020 - 15:53:08: [AMXX] Displaying debug trace (plugin "JbBall.amxx") L 12/26/2020 - 15:53:08: [AMXX] Run time error 10: native error (native "pev") L 12/26/2020 - 15:53:08: [AMXX] [0] JbBall.sma::FwdTouch (line 890) how to fix that? Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi