[HL2:DM] Zombiewaves

A place for requesting new Source.Python plugins to be made for your server.

Please request only one plugin per thread.
User avatar
Painkiller
Senior Member
Posts: 725
Joined: Sun Mar 01, 2015 8:09 am
Location: Germany
Contact:

[HL2:DM] Zombiewaves

Postby Painkiller » Wed Oct 26, 2016 2:23 pm

Hello,

Would it be possible for someone to write this script to end?

It was originally intended to have zombies automatically spawned at different places of the map.

Perhaps on the map start (number adjustable)

And when all were killed the next wave.

Thank you very much

Syntax: Select all

from players.entity import Player as PlayerEntity

from entities.entity import Entity as BaseEntity
from entities.helpers import create_entity
from entities.helpers import spawn_entity

from filters.entities import EntityIter

from listeners import OnLevelInit
from listeners.tick import tick_delays

from engines.trace import ContentMasks
from engines.trace import engine_trace
from engines.trace import GameTrace
from engines.trace import Ray
from engines.trace import TraceFilterSimple
from engines.server import global_vars

from mathlib import Vector

from menus import PagedMenu, PagedOption


from cvars import cvar


from supermod import functions
from supermod.supermod import spawnpoints



npcs = [
]

health = {
}

damage = {
'sk_headcrab_melee_dmg': 20,
'sk_headcrab_poison_health': 99,
'sk_alien_slave_armor_charge': 30,
'sk_alien_slave_dmg_claw': 50,
'sk_alien_slave_dmg_rake': 50,
'sk_alien_slave_dmg_zap': 50,
'sk_zombie_scientist_dmg_one_slash': 50,
'sk_zombie_scientist_dmg_both_slash': 50,
'sk_zombie_security_dmg_spit': 50,

'sk_helicopter_firingcone': 15,
'sk_helicopter_burstcount': 5,
'sk_helicopter_roundsperburst': 5,
'sk_helicopter_grenadedamage': 50,
'sk_helicopter_grenaderadius': 300,
'sk_helicopter_grenadeforce': 5,
'sk_npc_dmg_helicopter_to_plr': 30,
'sk_npc_dmg_helicopter': 50,
'sk_helicopter_drone_speed': 100,

'npc_strider_height_adj': 15,
'npc_strider_shake_ropes_magnitude': 5,
'npc_strider_shake_ropes_radius': 5,
'sk_strider_num_missiles1': 1,
'sk_strider_num_missiles2': 2,
'sk_strider_num_missiles3': 3,
'strider_always_use_procedural_height': 30,
'strider_ar2_altfire_dmg': 10,
'strider_distributed_fire': 10,
'strider_eyepositions': 15,
'strider_free_knowledge': 5,
'strider_free_pass_cover_dist': 5,
'strider_free_pass_duration': 50,
'strider_free_pass_move_tolerance': 300,
'strider_free_pass_refill_rate': 5,
'strider_free_pass_start_time': 1,
'strider_immolate': 50,
'strider_pct_height_no_crouch_move': 100,
'strider_peek_eye_dist': 15,
'strider_peek_eye_dist': 5,
'strider_peek_time': 5,
'strider_peek_time_after_damage': 5,
'strider_show_cannonlos': 3,
'strider_show_focus': 5,
'strider_show_weapon_los_condition': 3,
'strider_show_weapon_los_z': 3,
'strider_test_height': 1,

}

min = Vector(-100, -100, 0)
max = Vector(100, 100, 200)

enabled = 1

@OnLevelInit
def map_start(mapname):
global enabled
enabled = 1

def disable():
global enabled
enabled = 0

def create_wave():
mapname = str(global_vars.map_name)
if not enabled:
return

if mapname not in spawnpoints:
return

if not len(spawnpoints[mapname]):
return

for hpcvar in health:
hp = cvar.find_var(hpcvar)
if not hp.get_int():
hp.set_int(health[hpcvar])

for dmgcvar in damage:
dmg = cvar.find_var(dmgcvar)
if not dmg.get_int():
dmg.set_int(damage[dmgcvar])

for npc in spawnpoints[mapname]:
for loc in spawnpoints[mapname][npc]:
tick_delays.delay(1, create_npc, npc, loc)

def create_npc(npc, loc):
spawnpoint = Vector(loc[0], loc[1], loc[2])
if not spawnpoint:
return
entity = BaseEntity(create_entity(npc))
entity.origin = spawnpoint
entity.set_key_value_float('wakeradius', 100000000.0)
entity.set_key_value_float('wakesquad', True)
entity.set_key_value_int('sleepstate', 0)
entity.call_input('SetRelationship', 'player D_HT 99')
if npc == 'npc_helicopter':
entity.set_key_value_int('spawnflags', 1379604)
entity.call_input('GunOn')
entity.set_key_value_float('physdamagescale', 1.0)
entity.set_key_value_string('noncombat', 'No')
entity.set_key_value_float('GracePeriod', 2.0)


spawn_entity(entity.index)


def addnpcmenu(index):
m = PagedMenu(title='Choose a NPC')
for npc in npcs:
m.append(PagedOption(npc, npc))
m.select_callback = addnpc
m.send(index)

def addnpc(menu, index, option):
mapname = str(global_vars.map_name)
if mapname not in spawnpoints:
spawnpoints[mapname] = {}

if option.value not in spawnpoints[mapname]:
spawnpoints[mapname][option.value] = []

player = PlayerEntity(index)
x, y, z = player.origin
spawnpoints[mapname][option.value].append([x, y, z])
functions.tell(index, 'You have added a spawnpoint for %s'%option.value)
return menu

def removenpcmenu(index):
mapname = str(global_vars.map_name)
m = PagedMenu(title='Choose a NPC')
for npc in spawnpoints[mapname]:
for loc in spawnpoints[mapname][npc]:
m.append(PagedOption('%s: %s'%(npc, loc), (npc, loc)))
m.select_callback = removenpc
m.send(index)

def removenpc(menu, index, option):
mapname = str(global_vars.map_name)
npc, loc = option.value
spawnpoints[mapname][npc].remove(loc)
functions.tell(index, 'You have removed %s at %s'%(npc, loc))
return menu
User avatar
Painkiller
Senior Member
Posts: 725
Joined: Sun Mar 01, 2015 8:09 am
Location: Germany
Contact:

Re: [HL2:DM] Zombiewaves

Postby Painkiller » Fri Oct 28, 2016 12:57 pm

HAve anybody an idia ?
User avatar
Painkiller
Senior Member
Posts: 725
Joined: Sun Mar 01, 2015 8:09 am
Location: Germany
Contact:

Re: [HL2:DM] Zombiewaves

Postby Painkiller » Tue Nov 01, 2016 3:36 pm

Maybe it's easy to write what I want.

I want to create a zombie spawn points via a chat command.

Which are saved again in a list where I can adjust the respective respawns and interwalle of the waves.

In addition, a line where I can figure out what spawn (zombie, headcrab, antillion, ...)

Thanks in Advance.

Greets Painkiller

Return to “Plugin Requests”

Who is online

Users browsing this forum: No registered users and 11 guests