08-20-2012, 06:44 AM | #81 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
I got it all working except the clip refill. It says:
Attempted to create unknown entity type func_regenerate! Can't init func_regenerate The damage script works though. |
|
08-20-2012, 07:32 AM | #82 |
Stuff Do-er
Lua Team
Wiki Team Fortress Forever Staff |
Not sure where that error is coming from, but it's not the Lua (Lua errors/messages are all prefixed with [SCRIPT]). I just tested the resupply script I posted and it seems to work for me.
Could you post your whole Lua?
__________________
#FF.Pickup ¤ Fortress-Forever pickups My Non-official Maps Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic Beta FF_Myth - FF_Redlight_Greenlight Sick of the people on the internet, always moanin'. They just moan. - Karl Pilkington Last edited by squeek.; 08-20-2012 at 07:33 AM. |
|
08-20-2012, 07:39 AM | #83 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
Code:
----------------------------------------------------------------------------- -- set class limits ----------------------------------------------------------------------------- function startup() SetGameDescription("Fly!") -- set up team limits on each team SetPlayerLimit(Team.kBlue, 0) SetPlayerLimit(Team.kRed, 0) SetPlayerLimit(Team.kYellow, -1) SetPlayerLimit(Team.kGreen, -1) local team = GetTeam(Team.kBlue) team:SetClassLimit(Player.kCivilian, -1) team:SetClassLimit(Player.kSniper, SNIPER_LIMIT) team = GetTeam(Team.kRed) team:SetClassLimit(Player.kCivilian, -1) team:SetClassLimit(Player.kSniper, SNIPER_LIMIT) end ----------------------------------------------------------------------------- -- Player spawn: give full health, armor, and ammo ----------------------------------------------------------------------------- function player_spawn( player_entity ) local player = CastToPlayer( player_entity ) player:AddHealth( 400 ) player:AddArmor( 400 ) player:AddAmmo( Ammo.kNails, 400 ) player:AddAmmo( Ammo.kShells, 400 ) player:AddAmmo( Ammo.kRockets, 400 ) player:AddAmmo( Ammo.kCells, 400 ) end ----------------------------------------------------------------------------- -- Spawn functions ----------------------------------------------------------------------------- redspawn = { validspawn = redallowedmethod } bluespawn = { validspawn = blueallowedmethod } greenspawn = { validspawn = greenallowedmethod } yellowspawn = { validspawn = yellowallowedmethod } SetPlayerLimit(Team.kBlue, 0) SetPlayerLimit(Team.kRed, 0) SetPlayerLimit(Team.kYellow, -1) SetPlayerLimit(Team.kGreen, -1) resupply_settings = { resupply_interval = 1, -- in seconds reload_clips = true, health = 0, armor = 0, grenades = 0, -- blue/green pipes shells = 0, nails = 0, rockets = 0, cells = 0, detpacks = 0, mancannons = 0, gren1 = 0, gren2 = 0 } -- utility function to return a list of all players in the server function resupply_getallplayers() local players = {} for index=1,22 do local player = GetPlayerByID(index) if (player ~= nil) then table.insert( players, player ); end end return players end -- so we don't overwrite startup local resupply_savedfuncs = {} resupply_savedfuncs.startup = startup function startup() -- check to make sure the saved function is actually a function if type(resupply_savedfuncs.startup) == "function" then -- call the saved function resupply_savedfuncs.startup() end -- start resupply schedule AddScheduleRepeating( "resupply_schedule", resupply_settings.resupply_interval, resupply_scheduled ); end function resupply_scheduled() local players = resupply_getallplayers(); for i,player in pairs(players) do resupply( player ) end end function resupply( player ) if IsPlayer( player ) then -- reload clips if resupply_settings.reload_clips == true then player:ReloadClips() end -- give player health and armor if resupply_settings.health ~= nil then player:AddHealth( self.health ) end if resupply_settings.armor ~= nil then player:AddArmor( self.armor ) end -- give player ammo if resupply_settings.nails ~= nil then player:AddAmmo(Ammo.kNails, self.nails) end if resupply_settings.shells ~= nil then player:AddAmmo(Ammo.kShells, self.shells) end if resupply_settings.rockets ~= nil then player:AddAmmo(Ammo.kRockets, self.rockets) end if resupply_settings.cells ~= nil then player:AddAmmo(Ammo.kCells, self.cells) end if resupply_settings.detpacks ~= nil then player:AddAmmo(Ammo.kDetpack, self.detpacks) end if resupply_settings.mancannons ~= nil then player:AddAmmo(Ammo.kManCannon, self.mancannons) end if resupply_settings.gren1 ~= nil then player:AddAmmo(Ammo.kGren1, self.gren1) end if resupply_settings.gren2 ~= nil then player:AddAmmo(Ammo.kGren2, self.gren2) end end end -- so we don't overwrite the function local nodamage_savedfuncs = {} nodamage_savedfuncs.player_ondamage = player_ondamage function player_ondamage( player, damageinfo ) -- check to make sure the saved function is actually a function if type(nodamage_savedfuncs.player_ondamage) == "function" then -- call the saved function nodamage_savedfuncs.player_ondamage( player, damageinfo ) end -- if no damageinfo do nothing if not damageinfo then return end -- set damage to zero damageinfo:SetDamage(0) end |
|
08-20-2012, 08:04 AM | #84 |
Stuff Do-er
Lua Team
Wiki Team Fortress Forever Staff |
Here's a working version:
Changes I made: - Removed team:SetClassLimit(Player.kSniper, SNIPER_LIMIT) lines in startup() as SNIPER_LIMIT wasn't defined and therefore broke things (error in console was [SCRIPT] Error calling startup (no overload of 'Team:SetClassLimit' matched the arguments (Team, number, nil) candidates are: Team:SetClassLimit(number, number)) - Fixed indenting because it bothered me - Removed the four SetPlayerLimit() calls outside of startup because they shouldn't exist - Included base_teamplay as its just a good idea in general unless you really know what you're doing
__________________
#FF.Pickup ¤ Fortress-Forever pickups My Non-official Maps Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic Beta FF_Myth - FF_Redlight_Greenlight Sick of the people on the internet, always moanin'. They just moan. - Karl Pilkington Last edited by squeek.; 08-20-2012 at 08:04 AM. |
|
08-20-2012, 08:20 AM | #85 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
Yes sir that worked. Thank you very much squeek.
|
|
08-20-2012, 08:24 AM | #86 |
Stuff Do-er
Lua Team
Wiki Team Fortress Forever Staff |
No problem.
__________________
#FF.Pickup ¤ Fortress-Forever pickups My Non-official Maps Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic Beta FF_Myth - FF_Redlight_Greenlight Sick of the people on the internet, always moanin'. They just moan. - Karl Pilkington |
|
09-06-2012, 10:37 PM | #87 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
Would it be possible for a lua to spawn a player with a diminishing buff that you usually get from the medic. And then when ever you get a kill, reload your clips and resup you to that buff?
|
|
09-07-2012, 12:36 AM | #88 |
Stuff Do-er
Lua Team
Wiki Team Fortress Forever Staff |
Not sure what you mean by "usually get from the medic," but it sounds possible.
__________________
#FF.Pickup ¤ Fortress-Forever pickups My Non-official Maps Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic Beta FF_Myth - FF_Redlight_Greenlight Sick of the people on the internet, always moanin'. They just moan. - Karl Pilkington |
|
09-07-2012, 01:14 AM | #89 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
|
|
09-07-2012, 01:33 AM | #90 |
Stuff Do-er
Lua Team
Wiki Team Fortress Forever Staff |
Not actually sure if Lua can give players health above 100%. If it doesn't, it'd be easy to add that functionality.
__________________
#FF.Pickup ¤ Fortress-Forever pickups My Non-official Maps Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic Beta FF_Myth - FF_Redlight_Greenlight Sick of the people on the internet, always moanin'. They just moan. - Karl Pilkington |
|
09-07-2012, 08:56 AM | #91 |
Gets tickled by FF
Fortress Forever Staff
Join Date: Jun 2007
Location: UK
Class/Position: Med Solly HW Gametype: Any/CTF Posts Rated Helpful 41 Times
|
That'd work well for a king of the hill kinda scenario for those that are king
|
|
09-07-2012, 07:50 PM | #92 | |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
Quote:
Seeing as how it's partly about manuvering the terrain, the buff helps take away some of the penalty of your first couple rocket jumps. http://steamcommunity.com/sharedfile...s/?id=94592638 Plan is to to have multiple rooms like that for people to choose from. And I'm gonna need help with the lua, because I'm dumb. |
|
|
01-19-2013, 09:15 AM | #93 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
Ok I'd like to request a lua if anyone is willing to help. It may be a little bit hefty. It comes down to three main things.
It's going to be a DM map with multiple arenas. So I'd like a lua that makes it so when you die in a certain area, you spawn in one of the spawn points in that area. Let me know what I need to do on the mapping end to acheive this. (naming spawn points, making a trigger, w/e is needed) This next part is what we were talking about earlier in the thread. So if it's possible I'd like every time a player spawns, for them to spawn at 125% 150% health, what ever the medic buffs limit is. I want it to act exactly like the buff a medic can apply to his team. Spawn at the buff cap, and have it slowly diminish. The map features lots of terrain to fight for, on, around. This buff makes it much more viable to rocket jump on all this stuff. And the last part is a resup/clip refill on kill. I'd like it so that any time a player kills someone, their clips are refilled, and health restored. I'd also like it so that it restores their health to the buff they spawned at. This keeps the pace going, and eliminates any need to take a break to go grab bags and reload. So is this possible, and what do I need to do on the mapping end?
__________________
Currently equipped: Rad Scarf of liberating happiness. Last edited by FDA_Approved; 01-19-2013 at 09:16 AM. |
|
02-16-2013, 11:45 AM | #94 |
Join Date: Jun 2011
Location: USA
Class/Position: Soldier & Medic Affiliations: ( ir :: ) iv| K^ † Posts Rated Helpful 80 Times
|
Hi.
I'm trying to remake 55 from TFC. There's two main things I need help with lua wise. 1. I need two sets of capture points. A normal one on the bats and a second set in a pit worth 20 points. I tried to use this from the FF wiki: Code:
-- This is my first base trigger! endzone = trigger_ff_script:new({ points_per_score = 6, fortpoints_per_score = 100 allowedmethod = redTeamOnly }) --Access to events is typically in the following format: function endzone:ontrigger( entity ) --What to do when this method is called --return anything, if necessary end 2. In 55, there are two yard vents on each base that use a trigger to push you into the opposite team's battlements. The yard vents work just fine, but I need them to differentiate between classes. As it stands, each class is pushed the same distance. I need heavier classes to be pushed at a decreased rate so as to be true to the TFC version and combat heavy Offense usage. Here's the vent part of the lua: Code:
-------------------------------------------------------------------------- -- Yard Lift -------------------------------------------------------------------------- base_angle_jump = trigger_ff_script:new( {pushz=0, pushx=0, pushy=0} ) function base_angle_jump:ontouch( trigger_entity ) if IsPlayer(trigger_entity) then local player = CastToPlayer(trigger_entity) local playerVel = player:GetVelocity() if self.pushz ~= 0 then playerVel.z = self.pushz end if self.pushx ~= 0 then playerVel.x = self.pushx end if self.pushy ~= 0 then playerVel.y = self.pushy end player:SetVelocity( playerVel ) end end yardvent_red = base_angle_jump:new( {pushz=760, pushx=-0, pushy=1800} ) yardvent_blue = base_angle_jump:new( {pushz=760, pushx=-0, pushy=-1800} ) fr_vent_red2 = base_angle_jump:new( {pushy=-1600} ) fr_vent_blue2 = base_angle_jump:new( {pushy=1600} ) I didn't even know where to begin with the lua here, but Squeek mentioned it was possible. Also, I'm bad and dumb. So, I might have silly followup questions. Thanks in advanced.
__________________
|
|
02-16-2013, 12:36 PM | #95 |
Stuff Do-er
Lua Team
Wiki Team Fortress Forever Staff |
Code:
-- save all the functions in a table -- so we don't accidentally overwrite any saved functions in other files local saved_functions = {} -- save the function in the table saved_functions.basecap = {} saved_functions.basecap.ontrigger = basecap.ontrigger function basecap:ontrigger( trigger_entity ) -- save last points per capture local last_points_per_cap = POINTS_PER_CAPTURE local last_fortpoints_per_cap = FORTPOINTS_PER_CAPTURE -- set points per capture to this cap points settings if they are defined if self.teampoints ~= nil then POINTS_PER_CAPTURE = self.teampoints end if self.fortpoints ~= nil then FORTPOINTS_PER_CAPTURE = self.fortpoints end if type(saved_functions.basecap.ontrigger) == "function" then -- call the saved function saved_functions.basecap.ontrigger( self, trigger_entity ) end -- reset points per cap to what it was POINTS_PER_CAPTURE = last_points_per_cap FORTPOINTS_PER_CAPTURE = last_fortpoints_per_cap end -- cap points that give 20 points instead of 10 blue_cap_bonus = blue_cap:new({teampoints = 20, fortpoints = 2000}) red_cap_bonus = red_cap:new({teampoints = 20, fortpoints = 2000}) yellow_cap_bonus = yellow_cap:new({teampoints = 20, fortpoints = 2000}) green_cap_bonus = green_cap:new({teampoints = 20, fortpoints = 2000}) -------------------------------------------------------------------------- -- Yard Lift with push based on the triggering class's speed -- Push is multiplied by the class's speed / 400 (scout speed) to the power of speedbias -- Higher speedbias = slow classes get pushed a lot less and vice versa -------------------------------------------------------------------------- base_angle_jump = trigger_ff_script:new( {pushz=0, pushx=0, pushy=0, speedbias=0} ) function base_angle_jump:ontouch( trigger_entity ) if IsPlayer(trigger_entity) then local player = CastToPlayer(trigger_entity) local playerVel = player:GetVelocity() local speedRatio = (player:MaxSpeed() / 400) ^ self.speedbias; if self.pushz ~= 0 then playerVel.z = self.pushz * speedRatio end if self.pushx ~= 0 then playerVel.x = self.pushx * speedRatio end if self.pushy ~= 0 then playerVel.y = self.pushy * speedRatio end player:SetVelocity( playerVel ) end end yardvent_red = base_angle_jump:new( {pushz=760, pushx=-0, pushy=1800, speedbias = 1} ) yardvent_blue = base_angle_jump:new( {pushz=760, pushx=-0, pushy=-1800, speedbias = 1} ) fr_vent_red2 = base_angle_jump:new( {pushy=-1600} ) fr_vent_blue2 = base_angle_jump:new( {pushy=1600} ) The cap point stuff had to be done in a dumb way because the base Lua's were written in a dumb way. It wouldn't be hard to add proper support for points set per cap point. I'll edit base_teamplay for the next patch.
__________________
#FF.Pickup ¤ Fortress-Forever pickups My Non-official Maps Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic Beta FF_Myth - FF_Redlight_Greenlight Sick of the people on the internet, always moanin'. They just moan. - Karl Pilkington Last edited by squeek.; 02-18-2013 at 02:17 AM. |
1 members found this post helpful. |
02-16-2013, 06:22 PM | #96 |
Join Date: Jun 2011
Location: USA
Class/Position: Soldier & Medic Affiliations: ( ir :: ) iv| K^ † Posts Rated Helpful 80 Times
|
Squeek, you never cease to amaze.
__________________
|
|
10-26-2013, 02:31 AM | #97 |
Jay|mOfO|Mills
Beta Tester
Join Date: Feb 2009
Location: Santa Fe, NM
Gametype: Snag the flag beotches Posts Rated Helpful 8 Times
|
Engy spanner func_button help?
I am trying to create a button that when ANY engineer hits it a certain number of times it creates a few outputs. Only needs to activate once. I borrowed ff_security_b1 code and tried to change it and also tried to just create what I needed.... I didnt receive lua errors but the func_button I named engy_spanner_button didnt fire... I didn't receive any console lua errors either. Please help this noob, maps almost done.
heres the code: ---------------------------- --first attempt modified slightly from ff_security_b1 ---------------------------- NUM_HITS_TO_REPAIR = 10 FORT_POINTS_PER_REPAIR = 100 function gen_onrepair( team ) -- outputs, add any thing you want to happen when the generator is repaired here -- teamstring is either "red" or "blue" OutputEvent( "beam2", "TurnOn" ) OutputEvent( "tele_2_trigger", "Enable" ) BroadCastMessage("Beam 2 has been activated") end function gen_onclank( player ) -- add any thing you want to happen when the generator is hit by a wrench (while its detted) here BroadCastMessage("whats going on here?") end generators = { [Team.kUnassigned] = { status=0, repair_status=0 } } base_gen = func_button:new({ team = Team.kUnassigned }) function base_genndamage() if IsPlayer( GetPlayerByID(info_attacker) ) then local player = CastToPlayer( GetPlayerByID(info_attacker) ) if info_classname == "ff_weapon_spanner" then generators[self.team].repair_status = generators[self.team].repair_status + 1 if generators[self.team].repair_status >= NUM_HITS_TO_REPAIR then player:AddFortPoints( FORT_POINTS_PER_REPAIR, "Repairing the Crane" ) gen_onrepair( self.team ) generators[self.team].status = 0 else gen_onclank( player ) end end end end ---------------------------------------------------------- -- my attempt to create a engy spanner button ----------------------------------------------------------- base_gen = func_button:new({ team = Team.kUnassigned }) function base_genndamage() if IsPlayer( GetPlayerByID(info_attacker) ) then local player = CastToPlayer( GetPlayerByID(info_attacker) ) if info_classname == "ff_weapon_spanner" then generators.repair_status = generators.repair_status + 1 if generators.repair_status >= NUM_HITS_TO_REPAIR then player:AddFortPoints( FORT_POINTS_PER_REPAIR, "Repairing the Crane" ) OutputEvent( "beam2", "TurnOn" ) OutputEvent( "tele_2_trigger", "Enable" ) BroadCastMessage("Beam 2 has been activated") else gen_onclank( player ) end end end end engy_spanner_button = base_gen:new({ team = Team.kUnassigned }) |
|
10-26-2013, 03:45 AM | #98 |
internet user
Fortress Forever Staff
Join Date: Jun 2007
Posts Rated Helpful 42 Times
|
try this for base_gen : ondamage (and generators)
Code:
generators = { status = 0, repair_status = 0 } function base_gen:ondamage() if info_classname == "ff_weapon_spanner" then generators.repair_status = generators.repair_status + 1 if generators.repair_status >= NUM_HITS_TO_REPAIR then local player = CastToPlayer( GetPlayerByID(info_attacker) ) player:AddFortPoints( FORT_POINTS_PER_REPAIR, "Repairing the Crane" ) OutputEvent( "beam2", "TurnOn" ) OutputEvent( "tele_2_trigger", "Enable" ) BroadCastMessage("Beam 2 has been activated") generators.repair_status = 0 else gen_onclank( player ) end end return true end
__________________
9:17 PM - DEXTER: can you teach me how to play o 9:17 PM - squeek.: you jump a lot 9:18 PM - squeek.: and do sweet moves 8:55 PM - FDA: fart in you fridge and blame it on wild animals |
|
10-27-2013, 03:25 AM | #99 |
Jay|mOfO|Mills
Beta Tester
Join Date: Feb 2009
Location: Santa Fe, NM
Gametype: Snag the flag beotches Posts Rated Helpful 8 Times
|
ok so Dexter's code from above works, but if I have this code in the lua as well the func_button named engy_spanner_button and gen_onclank doesn't work. Everything else in my lua is fine, I tested it, but this code here makes the func_button not operate when both are in the same lua.....
Code:
FORT_POINTS_PER_DET = 100 detpack_trigger = trigger_ff_script:new({}) function detpack_trigger:onexplode( trigger_entity ) if IsDetpack( trigger_entity ) then detpack = CastToDetpack( trigger_entity ) if IsPlayer( detpack:GetOwner() ) then local player = detpack:GetOwner() --if player:GetTeamId() ~= self.team then BroadCastMessage("Beam 1 has been activated") OutputEvent("beam1", "TurnOn") OutputEvent("wrecking_ball_trigger", "Enable") OutputEvent("beam_sound", "PlaySound") player:AddFortPoints( FORT_POINTS_PER_DET, "Detting the generator" ) end end return EVENT_ALLOWED end -- Don't want any body touching/triggering it except the detpack function trigger_detpackable_door:allowed( trigger_entity ) return EVENT_DISALLOWED end Last edited by Dexter; 10-27-2013 at 04:40 AM. |
|
10-27-2013, 04:41 AM | #100 |
internet user
Fortress Forever Staff
Join Date: Jun 2007
Posts Rated Helpful 42 Times
|
i stuck your code in code tags so the smileys stop messing it up, taking a look now
__________________
9:17 PM - DEXTER: can you teach me how to play o 9:17 PM - squeek.: you jump a lot 9:18 PM - squeek.: and do sweet moves 8:55 PM - FDA: fart in you fridge and blame it on wild animals |
|
Currently Active Users Viewing This Thread: 2 (0 members and 2 guests) | |
|
|