User:Alvin/Sandbox

From Valve Developer Community
Jump to navigation Jump to search

Source Engine 2009

"Garry's Mod" (Tools > Options > Edit > Add)

Game Data Files: (orangebox/bin) HalfLife2.fgd = Ep2 (HL2 as well) base.fgd cstrike.fgd = CS:S dod.fgd = DoD:S hl2mp.fgd = HL2:DM (could be needed) portal.fgd = Portal tf.fgd = TF2 (garrysmod/garrysmod) Garrysmod.fgd (optional lang.)


Default Point Entity class: info_player_start

Default SolidEntity class: func_detail

Cordon Texture: tools/toolsskybox

Game Executable Directory: $SteamUserDir\garrysmod

Game Directory: $SteamUserDir\garrysmod\garrysmod

Hammer VMF Directory: (Where you want to save and load VMF saves for Garrysmod) i use.. $SteamUserDir\garrysmod\garrysmod\maps\vmf

Now go to the last Tab, Build programs..

Game Executable: $SteamUserDir\garrysmod\hl2.exe

BSP $SteamUserDir\sourcesdk\bin\orangebox\bin\vbsp.exe

VIS $SteamUserDir\sourcesdk\bin\orangebox\bin\vvis.exe

RAD $SteamUserDir\sourcesdk\bin\orangebox\bin\vrad.exe

Place compiled maps... $SteamUserDir\garrysmod\garrysmod\maps

It will say that the changes will show when you open hammer another time but you need to restart Source SDK if you made a new config in order to see your new config in the selection menu.


Tagalog, pwede ba? :(

CS:S NPC Lua Script

local Category = "CSS"

local NPC = { Name = "Hostage 1", Class = "npc_citizen", Model = "models/characters/hostage_01.mdl", Health = "100", KeyValues = { Squadname = "hostages" }, KeyValues = { citizentype = 4 }, Category = Category }


list.Set( "NPC", "css_hostage_1", NPC )


local NPC = { Name = "Hostage 2", Class = "npc_citizen", Model = "models/characters/hostage_02.mdl", Health = "100", KeyValues = { Squadname = "hostages" }, KeyValues = { citizentype = 4 }, Category = Category }


list.Set( "NPC", "css_hostage_2", NPC )


local NPC = { Name = "Hostage 3", Class = "npc_citizen", Model = "models/characters/hostage_03.mdl", Health = "100", KeyValues = { Squadname = "hostages" }, KeyValues = { citizentype = 4 }, Category = Category }


list.Set( "NPC", "css_hostage_3", NPC )


local NPC = { Name = "Hostage 4", Class = "npc_citizen", Model = "models/characters/hostage_04.mdl", Health = "100", KeyValues = { Squadname = "hostages" }, KeyValues = { citizentype = 4 }, Category = Category }


list.Set( "NPC", "css_hostage_4", NPC )


local NPC = { Name = "T Arctic", Class = "npc_combine_s", Model = "models/characters/arctic.mdl", Health = "100", KeyValues = { Squadname = "terrors" }, KeyValues = { Numgrenades = "2" }, Category = Category }


list.Set( "NPC", "css_t_arctic", NPC )


local NPC = { Name = "T Guerilla", Class = "npc_combine_s", Model = "models/characters/guerilla.mdl", Health = "100", KeyValues = { Squadname = "terrors" }, KeyValues = { Numgrenades = "2" }, Category = Category }


list.Set( "NPC", "css_t_guerilla", NPC )


local NPC = { Name = "T Leet", Class = "npc_combine_s", Model = "models/characters/leet.mdl", Health = "100", KeyValues = { Squadname = "terrors" }, KeyValues = { Numgrenades = "2" }, Category = Category }


list.Set( "NPC", "css_t_leet", NPC )


local NPC = { Name = "T Phoenix", Class = "npc_combine_s", Model = "models/characters/phoenix.mdl", Health = "100", KeyValues = { Squadname = "terrors" }, KeyValues = { Numgrenades = "2" }, Category = Category }


list.Set( "NPC", "css_t_phoenix", NPC )


local NPC = { Name = "CT SAS", Class = "npc_citizen", Model = "models/characters/gasmask.mdl", Health = "100", KeyValues = { Squadname = "counters" }, KeyValues = { citizentype = 4 }, Category = Category }


list.Set( "NPC", "css_ct_sas", NPC )


local NPC = { Name = "CT GIGN", Class = "npc_citizen", Model = "models/characters/swat.mdl", Health = "100", KeyValues = { Squadname = "counters" }, KeyValues = { citizentype = 4 }, Category = Category }


list.Set( "NPC", "css_ct_gign", NPC )


local NPC = { Name = "CT GSG-9", Class = "npc_citizen", Model = "models/characters/riot.mdl", Health = "100", KeyValues = { Squadname = "counters" }, KeyValues = { citizentype = 4 }, Category = Category }


list.Set( "NPC", "css_ct_gsg9", NPC )


local NPC = { Name = "CT ST-6", Class = "npc_citizen", Model = "models/characters/urban.mdl", Health = "100", KeyValues = { Squadname = "counters" }, KeyValues = { citizentype = 4 }, Category = Category }


list.Set( "NPC", "css_ct_st6", NPC )

Freeman.lua

local Category = "Humans + Resistance"


local NPC = { Name = "Gordon Freeman", Class = "npc_citizen", Model = "models/katharsmodels/gordon_freeman/gordon_freeman.mdl", Health = "100", KeyValues = { citizentype = 4 }, Category = Category }

list.Set( "NPC", "npc_freeman", NPC )

Stargate.lua

-- Small library loader! Therefore no GPL Header (but it's GPLed) StarGate = StarGate or {}; include("stargate/VERSION.lua"); -- Only loads serverside files on server,clientside files on client, shared on both and vgui on client local function ValidToInclude(state) return (state == "server" and SERVER) or ((state == "client" or state == "vgui") and CLIENT) or state == "shared"; end --################# Loads the libraries @aVoN function StarGate.Load() MsgN("======================================================="); MsgN("StarGate Pack: Initializing"); MsgN("Version: "..StarGate.VERSION.."\n"); for _,state in pairs({"shared","server","client","vgui"}) do -- Init always comes at first! if(ValidToInclude(state) and #file.FindInLua("stargate/"..state.."/init.lua") == 1) then MsgN("Loading: stargate/"..state.."/init.lua"); include("stargate/"..state.."/init.lua"); end for _,v in pairs(file.FindInLua("stargate/"..state.."/*.lua")) do if(SERVER and state ~= "server") then AddCSLuaFile("stargate/"..state.."/"..v); -- Add clientside files end if(ValidToInclude(state) and v ~= "init.lua") then MsgN("Loading: stargate/"..state.."/"..v); include("stargate/"..state.."/"..v); end end end if(SERVER) then AddCSLuaFile("autorun/stargate.lua"); -- Ourself of course! AddCSLuaFile("stargate/VERSION.lua"); -- Version AddCSLuaFile("weapons/gmod_tool/stargate_base_tool.lua"); -- Special GMOD Basetool end MsgN("======================================================="); end StarGate.Load();

--################# For the concommand @aVoN function StarGate.CallReload(p,override) -- Override is called in stargate_base/init.lua if someone calls lua_reloadents if(override or (not ValidEntity(p) or SinglePlayer() or p:IsAdmin())) then StarGate.Load(); for _,v in pairs(player.GetAll()) do v:SendLua("StarGate.Load()"); end else p:SendLua("StarGate.Load()"); end end

if SERVER then concommand.Add("stargate_reload",StarGate.CallReload); end

Ringtransporter init.lua

AddCSLuaFile( "cl_init.lua" ) AddCSLuaFile( "shared.lua" ) include('shared.lua')

function ENT:Initialize() self.Entity:SetModel("models/Zup/sg_rings/ring.mdl") self.Entity:PhysicsInit( SOLID_VPHYSICS ) self.Entity:SetMoveType(MOVETYPE_VPHYSICS) self.Entity:SetSolid(SOLID_VPHYSICS)

self.Phys=self.Entity:GetPhysicsObject() self.Phys:EnableCollisions(false) self.Phys:Wake() self.Phys:EnableMotion(true)

self.Parent=self.Entity:GetParent() self.Entity:SetParent(nil)

self.ReachedPos=true self.DesiredPos=self.Entity:GetPos() self.Return=true self.Ang=self.Entity:GetAngles() self.Entity:StartMotionController()

self.Entity:SetTrigger(true) end

function ENT:PhysicsSimulate( phys, deltatime ) phys:Wake() local pr={} pr.secondstoarrive = 1 local pos=self.Parent:LocalToWorld(self.DesiredPos) pr.pos = pos if self.Return then pr.pos = self.Parent:GetPos() end pr.maxangular = 5000 pr.maxangulardamp = 10000 pr.maxspeed = 10000 pr.maxspeeddamp = 100000 pr.dampfactor = 0.2 if not self.Return and self.ReachedPos then pr.secondstoarrive = 0.01 pr.dampfactor = 1 end pr.teleportdistance = 10000 pr.angle = self.Ang pr.deltatime = deltatime phys:ComputeShadowControl(pr) end

function ENT:GotoPos(len) if not self or not self.Entity or not self.Entity:IsValid() then return end self.Return=false self.ReachedPos=false self.DesiredPos=len end

function ENT:StartTouch(ent) if self.ReachedPos then return end if ent:GetClass()=="prop_physics" or ent:IsPlayer() then ent:TakeDamage(1000, self.Entity) end end

function ENT:ReturnPos() if not self or not self.Entity or not self.Entity:IsValid() then return end self.Return=true end

function ENT:Think() if not self.ReachedPos then local pos=self.Parent:LocalToWorld(self.DesiredPos) if self.Entity:GetPos():Distance(pos)<10 then self.ReachedPos=true self.Parent:ReportReachedPos(self.Entity) end end end

Extra NPC.lua

ocal Category = "Humans + Resistance" local NPC = { Name = "ResistanceTurret", Class = "npc_turret_floor", OnFloor = true, TotalSpawnFlags = SF_FLOOR_TURRET_CITIZEN, Skin = 1, Offset = 8, Icon = "materials\VGUI\entities\Rebelturret", Category = Category }

list.Set( "NPC", "Rebelturret", NPC )

local NPC = { Name = "Fisherman", Class = "npc_fisherman", Category = Category }

local Category = "Animals"

local NPC = { Name = "Ichthyosaur", Class = "npc_ichthyosaur", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


Category = "Combine"

local NPC = { Name = "Rollermine", Class = "npc_rollermine", Offset = 16, Category = Category }

list.Set( "NPC", NPC.Class, NPC )

local NPC = { Name = "Turret", Class = "npc_turret_floor", OnFloor = true, TotalSpawnFlags = 0, Offset = 2, Category = Category }

list.Set( "NPC", NPC.Class, NPC )

local NPC = { Name = "Combine Soldier", Class = "npc_combine_s", Model = "models/combine_soldier.mdl", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Prison Guard", Class = "npc_combine_s", Model = "models/combine_soldier_prisonguard.mdl", Category = Category }

list.Set( "NPC", "CombinePrison", NPC )


local NPC = { Name = "Combine Elite", Class = "npc_combine_s", Model = "models/combine_super_soldier.mdl", Category = Category }

list.Set( "NPC", "CombineElite", NPC )


local NPC = { Name = "City Scanner", Class = "npc_cscanner", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Manhack", Class = "npc_manhack", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Strider", Class = "npc_strider", Category = Category }


list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Hopper", Class = "combine_mine", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Camera", Class = "npc_combine_camera", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Drop ship", Class = "npc_combinedropship", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Gunship", Class = "npc_combinegunship", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Stalker", Class = "npc_stalker", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Claw scanner", Class = "npc_clawscanner", Category = Category }

list.Set( "NPC", NPC.Class, NPC )


local NPC = { Name = "Sniper", Class = "npc_sniper", Category = Category }

list.Set( "NPC", NPC.Class, NPC )

Hoverbike.lua

local V = { Name = "Hover Bike", Class = "prop_vehicle_airboat", Category = "Half-Life 2", Author = "Alvin Luzon", Information = "", Model = "models/hoverbike.mdl",

KeyValues = { vehiclescript = "scripts/vehicles/hoverbike_script.txt" } }

list.Set( "Vehicles", "hoverbike", V )

mad_physgun_limited.lua

if (SERVER) then AddCSLuaFile("mad_physgun_limited.lua") end

/*---------------------------------------------------------

  Name: MadPhysgunPickup()
  Desc: Return true if player can pickup entity (Alvin Luzon is playing dumb)

*/

function MadPhysgunPickup(ply, ent)

// Never pick up a grenade if (ent:GetClass() == "ent_mad_grenade") then return false end

// Never pick up a grenade launcher if (ent:GetClass() == "ent_mad_grenadelauncher") then return false end

// Never pick up a mine if (ent:GetClass() == "ent_mad_mine") then return false end

// Never pick up a rocket if (ent:GetClass() == "ent_mad_rocket") then return false end

// Never pick up a C4 if (ent:GetClass() == "ent_mad_c4") then return false end

// Never pick up a flare if (ent:GetClass() == "ent_mad_flare") then return false end

// Never pick up a flash grenade if (ent:GetClass() == "ent_mad_flash") then return false end

// Never pick up a smoke grenade if (ent:GetClass() == "ent_mad_smoke") then return false end end hook.Add("PhysgunPickup", "MadPhysgunPickup", MadPhysgunPickup)

Laserlib.lua

/* Playing dumb again lol. Ayoko na mag i-Cafe.

  • /

LaserLib = LaserLib or {};


////////////////////////////// //// Shared Functions //// //////////////////////////////

function LaserLib.GetReflectedVector( incidentVector, surfaceNormal )

return incidentVector - 2 * ( surfaceNormal:DotProduct( incidentVector ) * surfaceNormal );

end

function LaserLib.DoBeam ( laserEnt, beamDir, beamStart, beamLength, ... ) local trace = {};

local beamStart = util.LocalToWorld(laserEnt, beamStart);

laserEnt.IgnoreList = laserEnt.IgnoreList or {}; local beamFilter = table.Copy(laserEnt.IgnoreList); table.insert(beamFilter, laserEnt);

if ( SERVER ) then inflictor = laserEnt.ply; beamDamage = unpack(arg); laserEnt.Targets = {}; -- we'll store here what we hit end

if ( CLIENT ) then beamPoints = { beamStart }; beamIgnore = {}; beamWidth, beamMaterial = unpack(arg); end

local bounces = 0;

repeat if ( StarGate ~= nil ) then trace = StarGate.Trace:New( beamStart, beamDir:Normalize() * beamLength, beamFilter ); else trace = util.QuickTrace( beamStart, beamDir:Normalize() * beamLength, beamFilter ); end

if ( CLIENT ) then table.insert( beamPoints, trace.HitPos ); end

-- we can bounce! if ( trace.Entity and trace.Entity:IsValid() and ( ( (trace.Entity:GetClass() == "event_horizon" and ValidEntity(trace.Entity.Target) and trace.Entity:GetForward():DotProduct(trace.Normal) < 0 and trace.Entity ~= trace.Entity.Target) or trace.Entity:GetModel() == "models/madjawa/laser_reflector.mdl" or trace.Entity:GetMaterial() == "debug/env_cubemap_model" ) and trace.Entity:GetClass() ~= "gmod_laser_crystal" ) ) then

isMirror = true;

beamFilter = table.Copy(laserEnt.IgnoreList); table.insert(beamFilter, trace.Entity); if (trace.Entity:GetClass() == "event_horizon") then if (not (CLIENT and not trace.Entity.DrawRipple) // HAX and not (SERVER and (not trace.Entity:IsOpen() or trace.Entity.ShuttingDown))) then -- STARGATE! beamStart, beamDir = trace.Entity:GetTeleportedVector(trace.HitPos, beamDir); if (CLIENT) then local n = table.insert( beamPoints, beamStart ); beamIgnore[n] = true; -- prevents from rendering a beam between the two stargates end table.insert(beamFilter, trace.Entity.Target); if (SERVER) then trace.Entity:EnterEffect(trace.HitPos, laserEnt:GetBeamWidth()); trace.Entity.Target:EnterEffect(beamStart, laserEnt:GetBeamWidth()); end else isMirror = false; end else beamStart = trace.HitPos; beamDir = LaserLib.GetReflectedVector( beamDir, trace.HitNormal ); end beamLength = beamLength - beamLength * trace.Fraction;

elseif (SERVER and ValidEntity(trace.Entity) and trace.Entity:GetClass() == "event_horizon") then trace.Entity:EnterEffect(trace.HitPos, laserEnt:GetBeamWidth()); else isMirror = false; end

bounces = bounces + 1;

if ( SERVER ) then if ( ValidEntity(trace.Entity) and ( trace.Entity:GetClass() == "gmod_laser_reflector" or trace.Entity:GetClass() == "gmod_laser_crystal" ) and not table.HasValue( trace.Entity.Hits, laserEnt ) ) then trace.Entity:UpdateBounceCount(laserEnt); end end

if (SERVER and ValidEntity(trace.Entity)) then table.insert(laserEnt.Targets, trace.Entity); end

until ( isMirror == false or bounces > GetConVar("laser_maxbounces"):GetInt() )

if( SERVER and beamDamage > 0 and trace.Entity and trace.Entity:IsValid() and trace.Entity:GetClass() ~= "gmod_laser_crystal" and trace.Entity:GetClass() ~= "gmod_laser" and trace.Entity:GetModel() ~= "models/madjawa/laser_reflector.mdl" ) then

LaserLib.DoDamage( trace.Entity, trace.HitPos, trace.Normal, beamDir, beamDamage, inflictor, laserEnt:GetDissolveType(), laserEnt:GetPushProps(), laserEnt:GetKillSound(), laserEnt );

end

if ( CLIENT ) then --Fucking FIXME: weird bugs/shadows/laser disappearing seem to caused by renderbounds local prevPoint = beamPoints[1]; local bbmin, bbmax = laserEnt:GetRenderBounds();

if not matTab or not matTab[beamMaterial] then matTab[beamMaterial] = Material(beamMaterial); end render.SetMaterial( matTab[beamMaterial] );

for k, v in pairs ( beamPoints ) do if ( prevPoint ~= v and not beamIgnore[k]==true) then render.DrawBeam( prevPoint, v, beamWidth, 13*CurTime(), 13*CurTime() - ( v - prevPoint ):Length()/9, Color( 255, 255, 255, 255 ) ); end prevPoint = v;

local pos = laserEnt:WorldToLocal(v); if ( pos.x < bbmin.x ) then bbmin.x = pos.x; end if ( pos.y < bbmin.y ) then bbmin.y = pos.y; end if ( pos.z < bbmin.z ) then bbmin.z = pos.z; end if ( pos.x > bbmax.x ) then bbmax.x = pos.x; end if ( pos.y > bbmax.y ) then bbmax.y = pos.y; end if ( pos.z > bbmax.z ) then bbmax.z = pos.z; end end

laserEnt.NextEffect = laserEnt.NextEffect or CurTime(); if ( not trace.HitSky and laserEnt:GetEndingEffect() and CurTime() >= laserEnt.NextEffect ) then if ( trace.Entity and trace.Entity:IsValid() and trace.Entity:GetClass() == "gmod_laser_crystal" ) then return; end

if not (trace.Entity:IsValid() and trace.Entity:GetClass() == "event_horizon") then local effectdata = EffectData(); effectdata:SetStart( trace.HitPos ); effectdata:SetOrigin( trace.HitPos ); effectdata:SetNormal( trace.HitNormal ); effectdata:SetScale( 1 ); util.Effect( "AR2Impact", effectdata ); end laserEnt.NextEffect = CurTime() + 0.1; end

laserEnt:SetRenderBounds( bbmin, bbmax, Vector()*6 ); end

return trace.Entity; end


////////////////////////////// //// Server Functions //// //////////////////////////////

if ( SERVER ) then

AddCSLuaFile( "autorun/laserlib.lua" );

function LaserLib.SpawnDissolver( ent, position, attacker, dissolveType ) Dissolver = ents.Create( "env_entity_dissolver" ); Dissolver.Target = "laserdissolve"..ent:EntIndex(); Dissolver:SetKeyValue( "dissolvetype", dissolveType ); Dissolver:SetKeyValue( "magnitude", 0 ); Dissolver:SetPos( position ); Dissolver:SetPhysicsAttacker( attacker ); Dissolver:Spawn();

return Dissolver; end

function LaserLib.DoDamage( target, hitPos, normal, beamDir, damage, attacker, dissolveType, pushProps, killSound, laserEnt )

laserEnt.NextLaserDamage = laserEnt.NextLaserDamage or CurTime();

if ( pushProps and target:GetPhysicsObject():IsValid() ) then local phys = target:GetPhysicsObject(); local mass = phys:GetMass(); local mul = math.Clamp( mass * 10, 0, 2000 ); if ( mul ~= 0 and mass <= 500 ) then phys:ApplyForceOffset( beamDir * mul, hitPos ); end end

if ( target:GetClass() == "weapon_striderbuster" ) then return end;

if ( CurTime() >= laserEnt.NextLaserDamage ) then if ( target:IsVehicle() and target:GetDriver():IsValid() ) then -- we must kill the driver! target = target:GetDriver(); target:Kill(); -- takedamage doesn't seem to work on a player inside a vehicle end

if ( target:GetClass() == "shield" ) then target:Hit( laserEnt, hitPos, math.Clamp( damage / 2500 * 3, 0, 4), -1*normal ); laserEnt.NextLaserDamage = CurTime() + 0.3; return; -- we stop here because we hit a shield end

if ( target:Health() <= damage ) then if ( target:IsNPC() or target:IsPlayer() ) then local dissolverEnt = LaserLib.SpawnDissolver( laserEnt, target:GetPos(), attacker, dissolveType );

-- dissolving the NPC's weapon too if ( target:IsNPC() and target:GetActiveWeapon():IsValid() ) then target:GetActiveWeapon():SetName( dissolverEnt.Target ); end

target:TakeDamage( damage, attacker, laserEnt ); -- we kill the player/NPC to get his ragdoll

if ( target:IsPlayer() ) then if ( not target:GetRagdollEntity() or not target:GetRagdollEntity():IsValid() ) then return; end target:GetRagdollEntity():SetName( dissolverEnt.Target ); -- thanks to Nevec for the player ragdoll idea, allowing us to dissolve him the cleanest way else if ( target.DeathRagdoll and target.DeathRagdoll:IsValid() ) then -- if Keep Corpses is disabled, DeathRagdoll is nil, so we need to check this target.DeathRagdoll:SetName( dissolverEnt.Target ); else target:SetName( dissolverEnt.Target ); end end

dissolverEnt:Fire( "Dissolve", dissolverEnt.Target, 0 ); dissolverEnt:Fire( "Kill", "", 0.1 ); dissolverEnt:Remove(); -- Makes sure it's removed. It MIGHT prevent the "no free edicts" error (I don't see what other entity could cause it right now) end

if ( killSound ~= nil and ( target:Health() ~= 0 or target:IsPlayer() ) ) then WorldSound( Sound( killSound ), target:GetPos() ); target:EmitSound( Sound( killSound ) ); end else laserEnt.NextLaserDamage = CurTime() + 0.3; end

target:TakeDamage( damage, attacker, laserEnt ); end end

function LaserLib.AssignNPCRagdoll( entity, ragdoll ) -- it seems that's the only clean way to get the NPC's ragdoll in the DoDamage function -- Thanks to Kogitsune entity.DeathRagdoll = ragdoll; end

hook.Add( "CreateEntityRagdoll", "LaserLib.AssignNPCRagdoll", LaserLib.AssignNPCRagdoll );

end


////////////////////////////// //// Client Functions //// //////////////////////////////

if ( CLIENT ) then matTab = matTab or {};

function LaserLib.UpdateIgnoreList(um) local laserEnt = ents.GetByIndex(um:ReadLong()); local nbEnt = um:ReadLong();

laserEnt.IgnoreList = {}; for i=1, nbEnt do table.insert(laserEnt.IgnoreList, ents.GetByIndex(um:ReadLong())); end end usermessage.Hook("Laser.UpdateIgnoreList", LaserLib.UpdateIgnoreList) end

Friends

ALLIES

• Caroline Gomez • Jerico Cruz • Miggy Nazareno • Renato De Castro • Owey Ramirez • Chadster Guererro • Roberto Patino


AXIS

• Jonard Bonggat • Dale Del Rosario • Mark Sacriz