Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Adds menus tutorial to wiki #447

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 11 commits into from
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
[virtual_function]
[[set_name]]
offset_linux = 57
offset_windows = 17
offset_windows = 18
arguments = STRING
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[virtual_function]

# _ZN20CBaseCombatCharacter18OnTakeDamage_AliveERK15CTakeDamageInfo
[[on_take_damage_alive]]
offset_linux = 279
offset_windows = 278
arguments = POINTER
return_type = INT

# _ZN20CBaseCombatCharacter13Weapon_SwitchEP17CBaseCombatWeaponi
[[weapon_switch]]
offset_linux = 271
offset_windows = 270
arguments = POINTER, INT
return_type = BOOL
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

# _ZN17CBaseCombatWeapon13PrimaryAttackEv
[[primary_attack]]
offset_linux = 274
offset_windows = 273
offset_linux = 280
offset_windows = 279

# _ZN17CBaseCombatWeapon13SecondaryAttackEv
[[secondary_attack]]
offset_linux = 275
offset_windows = 274
offset_linux = 281
offset_windows = 280
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
[virtual_function]

# _ZN11CBaseEntity8SetModelEPKc
[[set_model]]
offset_linux = 27
offset_windows = 26
arguments = STRING

# _ZN11CBaseEntity9SetParentEPS_i
[[set_parent]]
offset_linux = 37
offset_windows = 36
arguments = POINTER, INT

# _ZN11CBaseEntity12OnTakeDamageERK15CTakeDamageInfo
[[on_take_damage]]
offset_linux = 65
offset_windows = 64
arguments = POINTER
return_type = INT

# _ZN11CBaseEntity8TeleportEPK6VectorPK6QAngleS2_
[[teleport]]
offset_linux = 111
offset_windows = 110
arguments = POINTER, POINTER, POINTER

# _ZN11CBaseEntity11SetTransmitEP18CCheckTransmitInfob
[[set_transmit]]
offset_linux = 23
offset_windows = 22
arguments = POINTER, BOOL

# _ZN11CBaseEntity10StartTouchEPS_
[[start_touch]]
offset_linux = 101
offset_windows = 100
arguments = POINTER

# _ZN11CBaseEntity5TouchEPS_
[[touch]]
offset_linux = 102
offset_windows = 101
arguments = POINTER

# _ZN11CBaseEntity8EndTouchEPS_
[[end_touch]]
offset_linux = 103
offset_windows = 102
arguments = POINTER

# _ZNK11CBasePlayer25PhysicsSolidMaskForEntityEv
[[get_solid_mask]]
offset_linux = 171
offset_windows = 170
return_type = UINT


[input]

dispatch_effect = DispatchEffect
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

# _ZN12CBaseGrenade8DetonateEv
[[detonate]]
offset_linux = 226
offset_windows = 225
offset_linux = 233
offset_windows = 232
Original file line number Diff line number Diff line change
@@ -1,25 +1,53 @@
[function]

[[increment_frag_count]]
identifier_windows = 55 8B EC 8B 45 08 01 81 F8 0C 00 00
identifier_linux = _ZN11CBasePlayer18IncrementFragCountEi
arguments = INT

[[increment_death_count]]
identifier_windows = 55 8B EC 8B 45 08 01 81 FC 0C 00 00
identifier_linux = _ZN11CBasePlayer19IncrementDeathCountEi
arguments = INT

[virtual_function]

# _ZN11CBasePlayer10BumpWeaponEP17CBaseCombatWeapon
[[bump_weapon]]
offset_linux = 398
offset_windows = 397
offset_linux = 405
offset_windows = 404
arguments = POINTER
return_type = BOOL

# _ZN11CBasePlayer13GiveNamedItemEPKci
[[give_named_item]]
offset_linux = 402
offset_windows = 401
offset_linux = 409
offset_windows = 408
arguments = STRING, INT
return_type = POINTER

# _ZN11CBasePlayer16PlayerRunCommandEP8CUserCmdP11IMoveHelper
[[run_command]]
offset_linux = 420
offset_windows = 419
offset_linux = 427
offset_windows = 426
arguments = POINTER, POINTER

# _ZN11CBasePlayer11Weapon_DropEP17CBaseCombatWeaponPK6VectorS4_
[[drop_weapon]]
offset_linux = 270
offset_windows = 269
arguments = POINTER, POINTER, POINTER

# _ZN11CBasePlayer8PreThinkEv
[[pre_think]]
offset_linux = 339
offset_windows = 338

# _ZN11CBasePlayer9PostThinkEv
[[post_think]]
offset_linux = 340
offset_windows = 339


[property]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
identifier_linux = _ZN9CCSPlayer7AutoBuyEv

[[buy_internal]]
identifier_windows = 55 8B EC 83 EC 28 89 4D F8
identifier_windows = 55 8B EC 83 EC 28 89 4D F8 6A 00
identifier_linux = _ZN9CCSPlayer26HandleCommand_Buy_InternalEPKc
arguments = STRING
return_type = INT
Expand All @@ -25,7 +25,7 @@
arguments = FLOAT

[[switch_team]]
identifier_windows = 55 8B EC 83 EC 7C 89 4D FC
identifier_windows = 55 8B EC 83 EC 5C 89 4D FC
identifier_linux = _ZN9CCSPlayer10SwitchTeamEi
arguments = INT

Expand All @@ -34,14 +34,14 @@

# _ZN9CCSPlayer12Weapon_EquipEP17CBaseCombatWeapon
[[equip_weapon]]
offset_linux = 262
offset_windows = 261
offset_linux = 268
offset_windows = 267
arguments = POINTER

# _ZN9CCSPlayer5BlindEfff
[[blind]]
offset_linux = 469
offset_windows = 466
offset_linux = 479
offset_windows = 476
arguments = FLOAT, FLOAT, FLOAT


Expand All @@ -50,20 +50,6 @@
on_rescue_zone_touch = OnRescueZoneTouch


# TODO: Remove when outdated.
[instance_attribute]

[[mvps]]
offset_windows = 6384
offset_linux = 6404
type = INT

[[clan_tag]]
offset_windows = 5628
offset_linux = 5648
type = STRING_ARRAY


[based_attribute]

[[mvps]]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# ../data/source-python/entity_output/orangebox/CBaseEntityOutput.ini

binary = server

[function]
[[fire_output]]
identifier_windows = 55 8B EC 81 EC 2A 2A 2A 2A 53 8B C1
arguments_linux = POINTER, POINTER, POINTER, FLOAT
arguments_windows = INT, INT, INT, INT, POINTER, POINTER, POINTER, FLOAT
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
menus
======

This page contains tutorials about the :mod:`menus` package.


Creating PagedMenu
--------------------------

This is a simple example to create paged menu

.. code-block:: python

import random

from commands.say import SayCommand

from menus import PagedMenu
from menus import PagedOption

from players.entity import Player


# Register menu command
@SayCommand(['menu', '/menu', '!menu'])
def say_command(command, index, teamonly):
# Send the menu
menu.send(index)
return False

def my_select_callback(menu, index, option):
'''
Called whenever a selection was made.
'''

# Shuffle the menu : D
random.shuffle(menu)

# Make it sticky
return menu

menu = PagedMenu(
title='Welcome menu',
description='Choose an option:',
select_callback=my_select_callback
)

# Add options from 1 to 20
for i in range(1, 20):
menu.append(PagedOption(f'{i}', i))

# Register close button to send back the menu
@menu.register_close_callback
def _on_close_menu(menu, index):
menu.send(index)


Creating SimpleMenu
--------------------------

This is a simple example to create simple menu

.. code-block:: python

import time

from commands.say import SayCommand

from menus import SimpleMenu
from menus import SimpleOption
from menus import Text

from messages import SayText2

from players.entity import Player

# Register menu command
@SayCommand(['menus', '/menus', '!menus'])
def say_menus_command(command, index, teamonly):
# Send the menu
menu.send(index)
return False

def my_menu_select_callback(menu, index, option):
'''
Called whenever a selection was made.
'''

if option.value == 'yes':
SayText2('Thank you for accepting the rules!').send(index)

# player have selected no option
else:
# Kick player for selecting no option
Player(index).kick('You have to accept the rules!')

menu = SimpleMenu()

# Tell the current time
menu.append(Text(f"Current Time: {time.strftime('%H:%M:%S')}"))

# Add empty line
menu.append(Text(' '))
menu.append(Text('Do you accept the rules?'))
menu.append(Text(' '))

# Add in menu options
menu.append(SimpleOption(1, 'Yes', 'yes'))
menu.append(SimpleOption(2, 'No', 'no'))

menu.select_callback=my_menu_select_callback


Creating ListMenu
--------------------------

This is a simple example to create list menu

.. code-block:: python

from commands.say import SayCommand

from menus import ListMenu
from menus import Text

# Register menu command
@SayCommand(['menus', '/menus', '!menus'])
def say_menus_command(command, index, teamonly):
# Send the menu
menu.send(index)
return False

menu = ListMenu()
# Add in menu text
menu.append(Text('This is a example text'))