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