04-02-2015, 08:54 AM | #1 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
Lua request.
If any of you lua wizards would be so kind, there's a map I've been wanting to make for a while, and I believe some lua functionality was recently added that will make it fully functional.
I would need: On spawn, buff health to 125%. On kill, refill clips and buff health to 125% It's going to be a map with multiple arenas, so I would also need some sort of functionality so that when you die in a certain arena you respawn at one of the random spawn points in that specific arena. Am dumb plz help.
__________________
Currently equipped: Rad Scarf of liberating happiness. |
|
04-02-2015, 05:50 PM | #2 |
Kawaii! ルーキー
Lua Team
Wiki Team Fortress Forever Staff Join Date: Jan 2008
Location: Nowhere, Kansas
Class/Position: Random Gametype: CTF Affiliations: BiG, Kawaii!, MustacheBrigade, GoodFellas Posts Rated Helpful 82 Times
|
Just fyi, the health tics down like the Medic over heal. You can increase the value of 1.25 if you want to start with more health. As far as the spawn points go I'm going to need more information about your map. You Can send me a PM when you get close to finishing.
Code:
function player_spawn( player ) local player = CastToPlayer ( player ) local MaxHealth = (player:GetMaxHealth() * 1.25) - player:GetMaxHealth() player:AddHealth(MaxHealth, true) end function player_killed( player, damageinfo ) -- suicides have no damageinfo if not damageinfo then return end local player = CastToPlayer( player ) local attacker_entity = damageinfo:GetAttacker() local attacker = CastToPlayer(attacker_entity) if not attacker then return end if IsPlayer( attacker ) then if player:GetId() ~= attacker:GetId() then local MaxHealth = (attacker:GetMaxHealth() * 1.25) - attacker:GetMaxHealth() attacker:ReloadClips() attacker:AddHealth(100, false) attacker:AddHealth(MaxHealth, true) end elseif IsSentrygun(attacker) then elseif IsDetpack(attacker) then elseif IsDispenser(attacker) then else return end end
__________________
Released: [ Island ] [ Rookie ] [ Limbo ] [ Sonic ] [ Tomb ] [ Skydive2 ] [ Bunkerwars ] Beta: [ Argon ] [ Reflection ] [ Urbantag ] Lua: [ game_rules ] Last edited by R00Kie; 04-02-2015 at 05:55 PM. |
1 members found this post helpful. |
04-02-2015, 10:02 PM | #3 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
Thank you very much. Yeah the overheal decay is a desired effect. I'll send you a pm soon.
__________________
Currently equipped: Rad Scarf of liberating happiness. |
|
04-04-2015, 09:31 PM | #4 |
Kawaii! ルーキー
Lua Team
Wiki Team Fortress Forever Staff Join Date: Jan 2008
Location: Nowhere, Kansas
Class/Position: Random Gametype: CTF Affiliations: BiG, Kawaii!, MustacheBrigade, GoodFellas Posts Rated Helpful 82 Times
|
FDA, Here's the second part to the lua for spawn point control you asked for.
The starting spawn point should be named spawn0. All the others in different arenas should be named spawn1, spawn2, ect. The players can switch between arenas with the '!arena [number]' chat command. For example !arena 3 will put them in arena 3 and continue to spawn them there until they change their arena. If you have more or less than 6 arenas then change the ARENA_NUM variable to how many you have. If you have any issues, send me a PM. Code:
player_table = {} ARENA_NUM = 6 -- Increase this number if you want more spawn points. function player_connected( player ) player_table[player:GetId()] = { arena = 0 } end base_spawn = info_ff_teamspawn:new({ arena_number = 0, validspawn = function(self,player) return player:GetTeamId() == Team.kRed or player:GetTeamId() == Team.kBlue and self.arena_number == player_table[player:GetId()].arena end }) -- For setting a spawnpoint Use spawn1, spawn2, ect. -- Use Spawn0 as the inital spawn point. for i = 0, ARENA_NUM do _G["spawn"..i] = base_spawn:new({ arena_number = i }) end function player_onchat( player, chatstring ) local player = CastToPlayer( player ) -- string.gsub call removes all control characters (newlines, return carriages, etc) -- string.sub call removes the playername: part of the string, leaving just the message local message = string.sub( string.gsub( chatstring, "%c", "" ), string.len(player:GetName())+3 ) for i = 1, ARENA_NUM do if message == "!arena "..i then ChatToPlayer(player, "Sending you to Arena "..tostring(i)) player_table[player:GetId()].arena = i ApplyToPlayer(player, { AT.kRespawnPlayers }) return false end end return true end
__________________
Released: [ Island ] [ Rookie ] [ Limbo ] [ Sonic ] [ Tomb ] [ Skydive2 ] [ Bunkerwars ] Beta: [ Argon ] [ Reflection ] [ Urbantag ] Lua: [ game_rules ] |
2 members found this post helpful. |
04-04-2015, 10:22 PM | #5 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
You're the best, very much appreciated.
__________________
Currently equipped: Rad Scarf of liberating happiness. |
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|