Hi guys!
Do anyone intrested remake this eventscripts plugin to Source.Python plugin?
http://addons.eventscripts.com/addons/view/crazytrikz
[CS:S] Trikz
Re: [CS:S] Trikz
I'm not sure if anyone else is working on this, but I had a little bit of time tonight. This is not finished, and I haven't tested any of it. But, it's a place for someone else to start from. If you are working or want to work on this, feel free to use any, all, or none of the following:
Syntax: Select all
# ============================================================================
# >> IMPORTS
# ============================================================================
# Source.Python
from colors import WHITE
from commands.say import SayCommand
from config.manager import ConfigManager
from engines.server import queue_server_command
from entities.hooks import EntityCondition, EntityPreHook
from events import Event
from filters.players import PlayerIter
from mathlib import NULL_VECTOR, Vector
from menus import SimpleMenu, SimpleOption
from players.dictionary import PlayerDictionary
from players.entity import Player
from plugins.manager import plugin_manager
# ============================================================================
# >> GLOBAL VARIABLES
# ============================================================================
info = plugin_manager.get_plugin_info(__name__)
FADED_WHITE = WHITE.with_alpha(100)
# ============================================================================
# >> CONFIGURATION
# ============================================================================
with ConfigManager(info.name, 'trikz_') as config:
enable_ghost = config.cvar(
'enable_ghost', default=0, description='Enable/disable ghosting option.',
)
enable_flash = config.cvar(
'enable_flash', default=0, description='Enable/disable unlimited flashbangs.',
)
unlimited_health = config.cvar(
'unlimited_health', default=0, description='Enable/disable unlimited health.',
)
auto_respawn = config.cvar(
'auto_respawn', default=0, description='Enable/disable auto-respawning on death.',
)
queue_server_command(
'mp_friendlyfire 0;'
'sv_gravity 800;'
'sv_airaccelerate 250;'
'mp_limitteams 0;'
'mp_enableboost 1;'
)
# ============================================================================
# >> CLASSES
# ============================================================================
class TrikzPlayer(Player):
""""""
def __init__(self, index):
super().__init__(index)
self.flash = False
self.ghost = False
self.reset_player()
def reset_player(self):
self.first_checkpoint = NULL_VECTOR
self.second_checkpoint = NULL_VECTOR
def set_ghost(self):
color, noblock = (FADED_WHITE, True) if self.ghost else (WHITE, False)
self.color = color
self.noblock = noblock
player_dict = PlayerDictionary(factory=TrikzPlayer)
# ============================================================================
# >> GAME EVENTS
# ============================================================================
@Event('player_spawn')
def _player_spawn(game_event):
player = player_dict.from_userid(game_event['userid'])
if bool(enable_ghost):
player.set_ghost()
if bool(unlimited_health):
player.health = 1000
@Event('player_hurt')
def _player_hurt(game_event):
if bool(unlimited_health):
player_dict.from_userid(game_event['userid']).health = 1000
@Event('player_death')
def _player_death(game_event):
if bool(auto_respawn):
player_dict.from_userid(game_event['userid']).spawn()
@Event('weapon_fire')
def _weapon_fire(game_event):
if game_event['weapon'] != 'flashbang':
return
player = player_dict.from_userid(game_event['userid'])
if bool(enable_flash) and player.flash:
player.give_named_item('weapon_flashbang')
# ============================================================================
# >> ENTITY PRE-HOOKS
# ============================================================================
@EntityPreHook(
EntityCondition.equals_entity_classname('flashbang_projectile'), 'detonate'
)
def _pre_flashbang_detonate(stack_data):
return False
# ============================================================================
# >> COMMANDS
# ============================================================================
@SayCommand('!trikz')
def _send_menu(command, index, team_only):
main_menu.send(index)
@SayCommand('!switch')
def _switch_ghost(command, index, team_only):
if not bool(enable_ghost):
player = player_dict[index]
player.ghost ^= True
player.set_ghost()
# ============================================================================
# >> MENU CALLBACKS
# ============================================================================
def _main_menu_callback(menu, index, option):
player = player_dict[index]
if option.value == 1:
if player.get_projectile_count('flashbang') in (0, 1):
player.give_named_item('weapon_flashbang')
elif option.value == 2:
if bool(enable_flash):
player.flash ^= True
elif option.value == 3:
if bool(enable_ghost):
player.ghost ^= True
player.set_ghost()
elif option.value == 4:
pass
elif option.value == 5:
if player.dead:
player.spawn()
# ============================================================================
# >> MENU DECLARATION
# ============================================================================
main_menu = SimpleMenu(select_callback=_main_menu_callback)
main_menu.append('Trikz Settings Menu')
main_menu.append('-' * 20)
main_menu.append(SimpleOption(1, 'Give Flash (1)'))
main_menu.append(SimpleOption(2, 'Toggle Auto-Flash'))
main_menu.append(SimpleOption(3, 'Toggle Blocking'))
main_menu.append(SimpleOption(4, 'Checkpoints Menu'))
main_menu.append(SimpleOption(5, 'Respawn'))
main_menu.append('-' * 20)
main_menu.append('0. Close')
Re: [CS:S] Trikz
Thats nice sadly i just learning python so im pretty noob atm .. i hope someone take it and remake it
Re: [CS:S] Trikz
Well if anyone intrested to make it and have time for that please do it :)
Re: [CS:S] Trikz
Okay lets do this way.. since no one want to make it ill seach private maker who got time .. send me message here if you are intrested!
Re: [CS:S] Trikz
My script above should do everything except the Checkpoints (if I remember correctly). Though, again, it is untested. I might have some time to work on it this coming weekend if no one else has added anything to it by then.
Re: [CS:S] Trikz
satoon101 wrote:My script above should do everything except the Checkpoints (if I remember correctly). Though, again, it is untested. I might have some time to work on it this coming weekend if no one else has added anything to it by then.
wow that would be nice .. i tested it it works but flashbangs dont disappear they stay on the ground and need to add text after you push block or autoflash like "Block is On" "Block is OFF"
Re: [CS:S] Trikz
I can take a look as well next week.
Re: [CS:S] Trikz
Got it! I used Satoon's script as a template:
The code is (hopefully) mostly straightforward. I haven't commented it, though.
The following info.ini file should be placed right besides the script:Edit the info therein as you like.
@Satoon I replaced setting the convar values using queue_command_string(), because I encountered an issue with these lines that are in your code:
Loading the script like that produces the following error on Windows, and if I remember correctly, on Linux also:Is this behavior expected?
Syntax: Select all
# ============================================================================
# >> IMPORTS
# ============================================================================
# Source.Python
# Colors
from colors import ORANGE
from colors import WHITE
# Commands
from commands.say import SayCommand
# Config
from config.manager import ConfigManager
# Core
from core import SOURCE_ENGINE
# Engines
from engines.server import queue_command_string
# Entities
from entities.hooks import EntityCondition
from entities.hooks import EntityPreHook
# Events
from events import Event
# Menus
from menus import SimpleMenu
from menus import SimpleOption
# Messages
from messages import SayText2
# Players
from players.dictionary import PlayerDictionary
from players.entity import Player
# Plugins
from plugins.manager import plugin_manager
# ============================================================================
# >> GLOBAL VARIABLES
# ============================================================================
info = plugin_manager.get_plugin_info(__name__)
FADED_WHITE = WHITE.with_alpha(100)
# =============================================================================
# >> MESSAGE COLORS
# =============================================================================
MESSAGE_COLOR_WHITE = '\x01' if SOURCE_ENGINE == 'csgo' else WHITE
MESSAGE_COLOR_ORANGE = '\x10' if SOURCE_ENGINE == 'csgo' else ORANGE
# ============================================================================
# >> CONFIGURATION
# ============================================================================
with ConfigManager(info.name, 'trikz_') as config:
enable_ghost = config.cvar(
'enable_ghost', default=0, description='Enable/disable ghosting option.',
)
enable_flash = config.cvar(
'enable_flash', default=0, description='Enable/disable unlimited flashbangs.',
)
unlimited_health = config.cvar(
'unlimited_health', default=0, description='Enable/disable unlimited health.',
)
auto_respawn = config.cvar(
'auto_respawn', default=0, description='Enable/disable auto-respawning on death.',
)
# ============================================================================
# >> PREPARE CONVARS
# ============================================================================
queue_command_string(
'mp_friendlyfire 0;'
'sv_gravity 800;'
'sv_airaccelerate 250;'
'mp_limitteams 0;'
'mp_enableboost 1;'
)
# ============================================================================
# >> CLASSES
# ============================================================================
class TrikzPlayer(Player):
""""""
def __init__(self, index):
super().__init__(index)
self.flash = False
self.ghost = False
self.reset_player()
def reset_player(self):
self.first_checkpoint = (None, None)
self.second_checkpoint = (None, None)
def set_ghost(self):
self.color, self.noblock = (FADED_WHITE, True) if self.ghost else (WHITE, False)
if self.ghost:
self.tell('You are a ghost again.')
else:
self.tell('You are mortal.')
def tell(self, message):
SayText2(
f'{MESSAGE_COLOR_ORANGE}[{MESSAGE_COLOR_WHITE}{info.verbose_name}{MESSAGE_COLOR_ORANGE}] '
f'{MESSAGE_COLOR_WHITE}{message}'
).send(self.index)
player_dict = PlayerDictionary(factory=TrikzPlayer)
# ============================================================================
# >> GAME EVENTS
# ============================================================================
@Event('player_spawn')
def _player_spawn(game_event):
player = player_dict.from_userid(game_event['userid'])
if bool(enable_ghost):
player.set_ghost()
@Event('player_death')
def _player_death(game_event):
if bool(auto_respawn):
player = player_dict.from_userid(game_event['userid'])
player.spawn()
player.tell('You have been respawned.')
@Event('weapon_fire')
def _weapon_fire(game_event):
if game_event['weapon'] != 'flashbang':
return
player = player_dict.from_userid(game_event['userid'])
if bool(enable_flash) and player.flash:
player.give_named_item('weapon_flashbang')
player.tell('You have received a flashbang grenade.')
# ============================================================================
# >> ENTITY PRE-HOOKS
# ============================================================================
@EntityPreHook(EntityCondition.is_bot_player, 'blind')
@EntityPreHook(EntityCondition.is_human_player, 'blind')
def _pre_blind(stack_data):
return False
@EntityPreHook(EntityCondition.is_bot_player, 'deafen')
@EntityPreHook(EntityCondition.is_human_player, 'deafen')
def _pre_blind(stack_data):
return False
@EntityPreHook(EntityCondition.is_bot_player, 'on_take_damage')
@EntityPreHook(EntityCondition.is_human_player, 'on_take_damage')
def _pre_take_damage(stack_data):
if bool(unlimited_health):
return False
# ============================================================================
# >> SAY COMMANDS
# ============================================================================
@SayCommand('!trikz')
def _send_menu(command, index, team_only):
main_menu.send(index)
@SayCommand('!switch')
def _switch_ghost(command, index, team_only):
if not bool(enable_ghost):
player = player_dict[index]
player.ghost ^= True
player.set_ghost()
# ============================================================================
# >> CHECKPOINTS MENU CALLBACKS
# ============================================================================
def _save_checkpoint(player, attr):
if player.ground_entity != -1:
setattr(player, attr, (player.origin, player.view_angle))
player.tell(f"Your {attr.replace('_', ' ')} has been saved.")
else:
player.tell('You must be standing on the ground!')
def _option_save_first_checkpoint_selected(player):
_save_checkpoint(player, 'first_checkpoint')
def _option_save_second_checkpoint_selected(player):
_save_checkpoint(player, 'second_checkpoint')
def _move_to_checkpoint(player, attr):
vector, angles = getattr(player, attr)
if vector is not None and angles is not None:
player.origin = vector
player.view_angle = angles
player.tell(f"You have been moved back to your {attr.replace('_', ' ')}.")
else:
player.tell(f"You have not saved your {attr.replace('_', ' ')}.")
def _option_move_to_first_checkpoint_selected(player):
_move_to_checkpoint(player, 'first_checkpoint')
def _option_move_to_second_checkpoint_selected(player):
_move_to_checkpoint(player, 'second_checkpoint')
def _checkpoints_menu_callback(menu, index, option):
player = player_dict[index]
option.value(player)
menu.send(index)
# ============================================================================
# >> CHECKPOINTS MENU DECLARATION
# ============================================================================
checkpoints_menu = SimpleMenu(select_callback=_checkpoints_menu_callback)
checkpoints_menu.append('Trikz Checkpoints Menu')
checkpoints_menu.append('-' * 20)
checkpoints_menu.append(SimpleOption(1, 'Save 1st checkpoint', _option_save_first_checkpoint_selected))
checkpoints_menu.append(SimpleOption(2, 'Back to 1st checkpoint', _option_move_to_first_checkpoint_selected))
checkpoints_menu.append(' ')
checkpoints_menu.append(SimpleOption(3, 'Save 2nd checkpoint', _option_save_second_checkpoint_selected))
checkpoints_menu.append(SimpleOption(4, 'Back to 2nd checkpoint', _option_move_to_second_checkpoint_selected))
checkpoints_menu.append('-' * 20)
checkpoints_menu.append(f"{'9' if SOURCE_ENGINE == 'csgo' else '0'}. Close")
@checkpoints_menu.register_close_callback
def _on_close_checkpoints_menu(menu, index):
main_menu.send(index)
# ============================================================================
# >> MAIN MENU CALLBACKS
# ============================================================================
def _option_flashbang_selected(player):
if not bool(enable_flash):
return
if not player.flash:
return
if player.get_projectile_ammo('flashbang') < 2:
player.give_named_item('weapon_flashbang')
player.tell('You have received a flashbang grenade.')
def _option_auto_flash_selected(player):
if bool(enable_flash):
player.flash ^= True
player.tell(f"Auto-Flash turned {'on' if player.flash else 'off'}.")
def _option_ghost_selected(player):
if bool(enable_ghost):
player.ghost ^= True
player.set_ghost()
def _option_checkpoints_menu_selected(player):
checkpoints_menu.send(player.index)
def _option_respawn_selected(player):
if player.dead:
player.spawn()
def _main_menu_callback(menu, index, option):
player = player_dict[index]
option.value(player)
menu.send(player.index)
# ============================================================================
# >> MAIN MENU DECLARATION
# ============================================================================
main_menu = SimpleMenu(select_callback=_main_menu_callback)
main_menu.append('Trikz Settings Menu')
main_menu.append('-' * 20)
main_menu.append(SimpleOption(1, 'Give Flash (1)', _option_flashbang_selected))
main_menu.append(SimpleOption(2, 'Toggle Auto-Flash', _option_auto_flash_selected))
main_menu.append(SimpleOption(3, 'Toggle Blocking', _option_ghost_selected))
main_menu.append(SimpleOption(4, 'Checkpoints Menu', _option_checkpoints_menu_selected))
main_menu.append(SimpleOption(5, 'Respawn', _option_respawn_selected))
main_menu.append('-' * 20)
main_menu.append(f"{'9' if SOURCE_ENGINE == 'csgo' else '0'}. Close")
The code is (hopefully) mostly straightforward. I haven't commented it, though.
The following info.ini file should be placed right besides the script:
Syntax: Select all
verbose_name = "Trikz: SP"
author = "<You Name>"
description = "<add description>"
version = "0.1"
url = "<url>"
@Satoon I replaced setting the convar values using queue_command_string(), because I encountered an issue with these lines that are in your code:
Syntax: Select all
queue_server_command(
'mp_friendlyfire 0;'
'sv_gravity 800;'
'sv_airaccelerate 250;'
'mp_limitteams 0;'
'mp_enableboost 1;'
)
Loading the script like that produces the following error on Windows, and if I remember correctly, on Linux also:
Code: Select all
ValueError: Unable to find command 'mp_friendlyfire 0;sv_gravity 800;sv_airaccelerate 250;mp_limitteams 0;mp_enableboost 1;'.
Re: [CS:S] Trikz
That is good work but it still not working on counter strike source even that i changed csgo to css
Re: [CS:S] Trikz
You shouldn't need to change anything. I'll look into CS:S later on today.
What is not working exactly? Is there an error message printed in the server console?
What is not working exactly? Is there an error message printed in the server console?
Re: [CS:S] Trikz
BackRaw wrote:You shouldn't need to change anything. I'll look into CS:S later on today.
What is not working exactly? Is there an error message printed in the server console?
well i tryed bouth without changes and with changes but still didnt work .. the menu not working if you press give flash it wont give it only checkpoint worked .. and it was bugged to.
Who is online
Users browsing this forum: No registered users and 64 guests