Witam,
Posiadam zabawę lany poniedziałek na swoim serwerze, zabawa działa prawidłowo, lecz niepokoi mnie błąd w konsoli podczas trwania zabawy, błąd spamuje cały czas konsolę.
ERROR:
L 03/30/2020 - 19:47:42: [FAKEMETA] Invalid entity L 03/30/2020 - 19:47:42: [AMXX] Displaying debug trace (plugin "watergun.amxx", version "0.0.1") L 03/30/2020 - 19:47:42: [AMXX] Run time error 10: native error (native "set_pev") L 03/30/2020 - 19:47:42: [AMXX] [0] watergun.sma::Think (line 335)
watergun.sma
Spoiler
#include <amxmodx> #include <fakemeta> #include <cstrike> #include <hamsandwich> #include <naxe_jailbreak> new g_iForwardIndex new g_pWeaponA[33] new Float:cl_pushangle[33][3] new P_MODEL[] = "models/topmasters_jb/days_mode/wet_mondey/p_water.mdl" new V_MODEL[] = "models/topmasters_jb/days_mode/wet_mondey/v_water.mdl" public plugin_precache() { precache_model(P_MODEL) precache_model(V_MODEL) precache_model("sprites/topmasters/waterstream.spr") precache_sound("weapons/watercannon_shoot1.wav") new iFile if((iFile = fopen(V_MODEL, "rt"))) { new szSoundPath[64], iNumSeq, iSeqIndex, iEvent, iNumEvents, iEventIndex fseek(iFile, 164, 0) fread(iFile, iNumSeq, 4) fread(iFile, iSeqIndex, 4) for(new k, i; i < iNumSeq; i++) { fseek(iFile, iSeqIndex + 48 + 176 * i, 0) fread(iFile, iNumEvents, 4) fread(iFile, iEventIndex, 4) fseek(iFile, iEventIndex + 176 * i, 0) for(k = 0; k < iNumEvents; k++) { fseek(iFile, iEventIndex + 4 + 76 * k, 0) fread(iFile, iEvent, 4) fseek(iFile, 4, 1) if(iEvent != 5004) continue fread_blocks(iFile, szSoundPath, 64, 1) if(strlen(szSoundPath)) { strtolower(szSoundPath) precache_sound(szSoundPath) } } } } fclose(iFile) } public plugin_init() { register_plugin("Weapon Water", "0.0.1", "Shurik07"); register_srvcmd("jail_add_wg", "CmdAddWG") register_forward(FM_UpdateClientData, "UpdateClientData", 1) register_forward(FM_CmdStart, "CmdStart") register_forward(FM_Touch, "Touch") register_forward(FM_Think, "Think") RegisterHam(Ham_Item_Deploy, "weapon_m249", "DeployPost", 1) RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "PrimaryAttackPre") RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "PrimaryAttackPost", 1) RegisterHam(Ham_Item_PostFrame, "weapon_m249", "PostFramePre") RegisterHam(Ham_Weapon_Reload, "weapon_m249", "ReloadPre") RegisterHam(Ham_Weapon_Reload, "weapon_m249", "ReloadPost", 1) RegisterHam(Ham_TraceAttack, "player", "TraceAttackPre") } public CmdAddWG(id) { new int[3]; read_argv(1, int, 2) id = str_to_num(int) g_pWeaponA[id] = true new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "weapon_m249")) if(!pev_valid(ent)) return 0 set_pev(ent, pev_spawnflags, (1<<30)) dllfunc(DLLFunc_Spawn, ent) if(!ExecuteHamB(Ham_AddPlayerItem, id, ent)) { if(pev_valid(ent)) set_pev(ent, pev_flags, pev(ent, pev_flags) | (1<<30)) return 0 } ExecuteHamB(Ham_Item_AttachToPlayer, ent, id) cs_set_weapon_ammo(ent, 100) cs_set_user_bpammo(id, 20, 9999) return 1 } public OnRoundStartPre() { for(new i = 1; i <= MaxClients; i++) { if(!is_user_connected(i) || !g_pWeaponA[i]) continue g_pWeaponA[i] = false } } public OnPlayerConnected(id) g_pWeaponA[id] = false public UpdateClientData(id, SendWeapons, CD_Handle) { if(!g_pWeaponA[id]) return 1 static Float:fGametime; fGametime = get_gametime(); set_cd(CD_Handle, CD_flNextAttack, fGametime + 0.001); return 2 } public PlayBackEvent(flags, invoker, eventindex, Float:delay, Float:origin[3], Float:fvangles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) return 4 public CmdStart(id, UC_Handle, SeeD) { if(!is_user_alive(id) || get_user_weapon(id) != 20 || !g_pWeaponA[id]) return static szClip, szAmmo get_user_weapon(id, szClip, szAmmo) if(!szClip) return static Float:i_flNextAttack; i_flNextAttack = get_pdata_float(id, 83); static bsButtons, i_Buttons; i_Buttons = get_uc(UC_Handle, UC_Buttons) bsButtons = pev(id, pev_oldbuttons) if((i_Buttons & (1<<0)) && !(bsButtons & (1<<0))) { if(i_flNextAttack > 0.0) return set_pdata_float(id, 83, 0.3) UTIL_SenwWeaponAnim(id, 1) } else if((bsButtons & (1<<0)) && !(i_Buttons & (1<<0))) { set_pdata_float(id, 83, 0.0) UTIL_SenwWeaponAnim(id, 3) } } public DeployPost(ent) { if(pev_valid(ent) != 2) return static id; id = get_pdata_cbase(ent, 41, 4) if(!g_pWeaponA[id]) return set_pev(id, pev_viewmodel2, V_MODEL) set_pev(id, pev_weaponmodel2, P_MODEL) set_pdata_float(id, 83, 1.0) set_pdata_float(ent, 48, 1.0, 4) UTIL_SenwWeaponAnim(id, 5) } public PrimaryAttackPre(ent) { if(pev_valid(ent) != 2) return static id; id = get_pdata_cbase(ent, 41, 4) if(!g_pWeaponA[id] || !get_pdata_int(ent, 51, 4)) return UTIL_SenwWeaponAnim(id, 1) pev(id, pev_punchangle, cl_pushangle[id]) g_iForwardIndex = register_forward(FM_PlaybackEvent, "PlayBackEvent") } public PrimaryAttackPost(ent) { if(pev_valid(ent) != 2) return static id; id = get_pdata_cbase(ent, 41, 4) if(!g_pWeaponA[id] || !get_pdata_int(ent, 51, 4)) return emit_sound(id, 1, "weapons/watercannon_shoot1.wav", 1.0, 0.80, 0, 100) UTIL_SenwWeaponAnim(id, 2) new Float:Push[3] pev(id, pev_punchangle, Push) Push[0] = Push[0] - cl_pushangle[id][0]; Push[1] = Push[1] - cl_pushangle[id][1]; Push[2] = Push[2] - cl_pushangle[id][2] Push[0] = Push[0] * 0.001 Push[1] = Push[1] * 0.001 Push[2] = Push[2] * 0.001 Push[0] = Push[0] + cl_pushangle[id][0]; Push[1] = Push[1] + cl_pushangle[id][1]; Push[2] = Push[2] + cl_pushangle[id][2] set_pev(id, pev_punchangle, Push) static Float:vf_Forward[3], Float:vf_vAngle[3], Float:vf_Source[3] UTIL_Weapon_Position(id, vf_Source, 50.0, 4.0, -4.0) global_get(glb_v_forward, vf_Forward) pev(id, pev_v_angle, vf_vAngle) static Float:VelocitySR[3] VelocitySR[0] = 500.0 * vf_Forward[0], VelocitySR[1] = 500.0 * vf_Forward[1], VelocitySR[2] = 500.0 * vf_Forward[2] FlameCreate(vf_Source, VelocitySR, id) set_pdata_float(ent, 46, 0.07, 4) set_pdata_float(ent, 48, 4.0, 4) unregister_forward(FM_PlaybackEvent, g_iForwardIndex) } FlameCreate(Float:origin[], Float:velocity[], id) { static ent; if((ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite")))) { static temp[3] set_pev(ent, pev_origin, origin) set_pev(ent, pev_classname, "szWaterClass") set_pev(ent, pev_movetype, 5) set_pev(ent, pev_solid, 3) set_pev(ent, pev_flags, (1<<0)) engfunc(EngFunc_VecToAngles, velocity, temp) set_pev(ent, pev_angles, temp) engfunc(EngFunc_SetModel, ent, "sprites/topmasters/waterstream.spr") engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_SetSize, ent, Float:{ 0.0, 0.0, 0.0 }, Float:{ 0.0, 0.0, 0.0 }) set_pev(ent, pev_velocity, velocity) set_pev(ent, pev_rendermode, kRenderTransAdd) set_pev(ent, pev_gravity, 0.01) set_pev(ent, pev_renderamt, 255.0) set_pev(ent, pev_scale, 0.3) set_pev(ent, pev_iuser1, id) set_pev(ent, pev_nextthink, get_gametime() + 0.2) } } public PostFramePre(ent) { if(pev_valid(ent) != 2) return static id; id = get_pdata_cbase(ent, 41, 4) if(!is_user_connected(id) || !g_pWeaponA[id]) return static iClip; iClip = get_pdata_int(ent, 51, 4) static iAmmoType; iAmmoType = 376 + get_pdata_int(ent, 49, 4) static iBpAmmo; iBpAmmo = get_pdata_int(id, iAmmoType) if(get_pdata_int(ent, 54, 4) && get_pdata_float(id, 83, 4) <= 4.0) { static j; j = min(100 - iClip, iBpAmmo) set_pdata_int(ent, 51, iClip + j, 4) set_pdata_int(id, iAmmoType, iBpAmmo-j) set_pdata_int(ent, 54, 0, 4) } } public ReloadPre(ent) { if(pev_valid(ent) != 2) return 1 static id; id = get_pdata_cbase(ent, 41, 4) if(!is_user_connected(id) || !g_pWeaponA[id]) return 1 if(!get_pdata_int(id, 376 + get_pdata_int(ent, 49, 4)) || get_pdata_int(ent, 51) >= 100) return 4 return 1 } public ReloadPost(ent) { if(pev_valid(ent) != 2) return 1 static id; id = get_pdata_cbase(ent, 41, 4) if(!g_pWeaponA[id]) return 1 if(!get_pdata_int(id, 376 + get_pdata_int(ent, 49, 4)) || get_pdata_int(ent, 51) >= 100) return 4 set_pdata_float(id, 83, 4.0) set_pdata_float(ent, 48, 4.0, 4) UTIL_SenwWeaponAnim(id, 4) return 1 } public TraceAttackPre(ent, attacker, Float:flDamage) { if(is_user_connected(attacker) && g_pWeaponA[attacker]) return 4 return 1 } public Touch(ent, other) { if(!pev_valid(ent)) return 1 static g_classname[32] pev(ent, pev_classname, g_classname, 31) if(!equali(g_classname, "szWaterClass")) return 1 static Float:flOrigin[3] pev(ent, pev_origin, flOrigin) set_pev(ent, pev_movetype, 0) set_pev(ent, pev_solid, 0) static victim victim = -1 while((victim = engfunc(EngFunc_FindEntityInSphere, victim, flOrigin, 35.0)) != 0) { if(!is_user_alive(victim) || !pev(victim, pev_takedamage)) continue ExecuteHamB(Ham_TakeDamage, victim, ent, pev(ent, pev_iuser1), 15.0, (1<<9)) } engfunc(EngFunc_RemoveEntity, ent) return 1 } public Think(ent) { if(!pev_valid(ent)) return 1 static g_classname[32] pev(ent, pev_classname, g_classname, 31) if(!equali(g_classname, "szWaterClass")) return 1 if(pev(ent, pev_waterlevel) > 1) engfunc(EngFunc_RemoveEntity, ent) set_pev(ent, pev_nextthink, get_gametime() + 0.017) static Float:fv_Frame, Float:fv_Scale pev(ent, pev_frame, fv_Frame) pev(ent, pev_scale, fv_Scale) if(!pev(ent, pev_movetype)) { fv_Frame += 0.65 if(fv_Scale <= 1.5) fv_Scale += 0.01 if(fv_Frame > 21.0) { engfunc(EngFunc_RemoveEntity, ent) return 1 } } else { fv_Frame += 0.8 if(fv_Frame >= 21.0) set_pev(ent, pev_movetype, 0) if(fv_Scale <= 1.5) fv_Scale += 0.05 } set_pev(ent, pev_scale, fv_Scale) set_pev(ent, pev_frame, fv_Frame) return 1 } stock fm_find_ent_by_owner(ent, name[], owner) { while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", name)) && pev(ent, pev_owner) != owner) { } return ent } stock UTIL_SenwWeaponAnim(id, seq) { set_pev(id, pev_weaponanim, seq) message_begin(8, 35, .player = id) write_byte(seq) write_byte(pev(id, pev_body)) message_end() } stock UTIL_Weapon_Position(id, Float:fOrigin[], Float:add_forward, Float:add_right, Float:add_up) { static Float:Angles[3],Float:ViewOfs[3], Float:vAngles[3], Float:Forward[3], Float:Right[3], Float:Up[3] pev(id, pev_v_angle, vAngles) pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, ViewOfs) fOrigin[0] = fOrigin[0] + ViewOfs[0] fOrigin[1] = fOrigin[1] + ViewOfs[1] fOrigin[2] = fOrigin[2] + ViewOfs[2] pev(id, pev_angles, Angles) Angles[0] = vAngles[0] engfunc(EngFunc_MakeVectors, Angles) global_get(glb_v_forward, Forward) global_get(glb_v_right, Right) global_get(glb_v_up, Up) Forward[0] = Forward[0] * add_forward Forward[1] = Forward[1] * add_forward Forward[2] = Forward[2] * add_forward Right[0] = Right[0] * add_right Right[1] = Right[1] * add_right Right[2] = Right[2] * add_right Up[0] = Up[0] * add_up Up[1] = Up[1] * add_up Up[2] = Up[2] * add_up fOrigin[0] = fOrigin[0] + Forward[0] + Right[0] + Up[0] fOrigin[1] = fOrigin[1] + Forward[1] + Right[1] + Up[1] fOrigin[2] = fOrigin[2] + Forward[2] + Right[2] + Up[2] }