EventScripts Forums
Mattie's EventScripts and Source Forums
Mattie recommends...
Premier Sponsor:Platinum Sponsor:
 
Script Categories
16000 (15) abilities (15) addon (71) addons (17) admin (348) admins (23) advert (27) adverts (26) afk (17) alerts (12) ammo (25) anti (20) armor (11) auth (16) automatic (15) awp (29) ban (24) ba_jail (34) bhop (45) block (27) bomb (47) bonus (25) boost (21) bot (35) bot-management (20) bots (24) bullet (13) bunnyhop (18) Buy (27) buymenu (13) c4 (12) cash (76) Change (14) chat (75) cheat (15) clan (17) classes (24) color (30) colors (20) command (23) commands (20) config (28) configurable (11) connect (54) counter (11) Counter-Strike-Source (18) CS:S (20) css (3313) custom (13) Damage (48) database (14) dead (19) Deagle (11) death (19) deathmatch (79) deathrun (17) deutsch (13) dice (11) disconnect (24) Dissolve (12) dm (24) dod:s (11) dods (494) download (12) easy (26) effect (14) effects (125) English (16) entity (24) est (12) es_tools (14) Eventscript (12) exploit (11) flashbang (27) français (104) french (36) fun (312) funny (18) Gabeee (11) game (12) gamemode (11) gameplay (175) German (11) give (20) gravity (15) grenade (28) grenades (32) gun (15) GunGame (31) GunGame5 (11) guns (20) Hack (16) headshot (37) health (70) hegrenade (15) help (11) hit (13) hl2dm (432) HP (25) hudhint (11) hungarian (22) info (52) information (17) invisible (11) IP (13) jail (79) jailbreak (14) join (44) jump (19) kick (25) kill (50) kills (23) knife (65) leveling (38) LnD (14) lol (11) magyar (32) management (14) manager (11) mani (16) map (31) map-management (26) maps (17) match (21) Memphis-84 (13) menu (139) message (30) messaging (52) minecraft (12) mod (121) model (18) models (32) modye (16) money (50) motd (13) music (32) mute (20) nades (20) name (15) new (13) noblock (53) orangebox (23) player (46) player-management (31) player-tracking (28) popup (70) prop (13) propmenu (14) props (34) protect (11) protection (31) punish (11) punishment (51) python (79) quake (32) QuakeSounds (12) race (13) races (20) radio (29) random (47) rank (41) rates (15) rcon (12) realism (22) Regeln (22) respawn (67) restrict (40) round (26) rpg (32) rules (60) say (16) score (15) scout (29) Script (25) script-helper (25) scriptpack (33) sdk (171) server (60) server-tools (42) shop (12) showdamage (19) silly (31) simple (31) skin (17) skins (34) slay (13) soccer (14) sound (63) sounds (106) source (13) spanish (18) spawn (81) speed (25) statistics (13) stats (55) status (15) Steam (11) STEAMID (29) Superhero (15) surf (41) Team (29) team-balance (14) teleport (16) text (17) TF2 (142) time (22) timer (15) tools (15) tracers (19) triggers (11) uedi (17) uses_auth (18) vip (23) vote (39) voting (22) war (25) Warcraft (12) warcraft-source (20) wc3 (14) wcs (47) wcs:Python (32) weapon (87) weapons (116) web (16) welcome (12) wuerfeln (11) zm (26) zombie (99) zombiemod (55) zombies (12)
Script Authors
*XYZ*SaYnt (12) .:MiB:. (20) .:modye:. (14) .eMko* (6) 101satoon101 (12) 3R10N (24) 4u571n91 (5) 7355608 (9) Absolute (9) Ace Rimmer (40) adminc (5) Adz (8) AgathaKnuppelkuh (8) aidden (8) ajax (5) ak_47 (6) Al3c Tr3v3lyan (6) allstareng (5) ashbash1987 (9) ATAMAH (7) Ayuto (5) aznone (5) B00M (5) BackRaw (41) BFH_RedBull (8) bigfabi (8) Bioko (10) blackshoxx (9) Blade (10) bladesback (13) bobdole (11) bodzsar1 (8) bonbon (36) Brainsucker (32) cagemonkey (8) capo azzlack (7) captain master (6) carbon-14 (10) CaskioUTF (5) cbirou (15) CbRRR (16) ChaCaLz2psy4 (5) CharlesT (5) Chrisber (5) chrismrulz (10) Chun (6) cladiron (10) clipz934 (8) Colster (21) Cookieman8 (7) CrAzD (6) craziest (11) dani12356 (12) DanielB (19) Darkness123 (8) Dave (9) dbozan99 (7) deathx9 (5) Deathyy (16) dhack (17) Di[M]aN (12) DJ Fire-Black prod (8) DoCky (31) Don (15) dordtcore (9) DragonFreddo (8) Drassil (5) dretax14 (11) Einlanzers (47) EmbouT (10) emilplov (7) Errant (10) Eun (6) Fantole (10) FMIS (5) Franc1sco (17) freddukes (18) Frequency (6) Fugi91 (6) Fulmine (5) G4ME (5) GAMEREN2 (8) german9114 (13) GODJonez (40) GoodfellaDeal (5) Hansi (6) Hisoka (6) HitThePipe (7) HOLLDIDAY (24) Icetouch (6) ichthys (25) Im the new guy (14) iNexus (13) infamous1 (9) isivisi (13) ispaine (7) Jackmaster (9) Jeff91 (45) JoeyT2006 (30) Juba_PornBorn (12) jxl180 (11) KDBFame (6) L'In20Cible (11) L.P.H (8) Largo Usagi (10) LnD (14) Lobe (11) loKkdoKk (8) lolo-le-haricot (7) LosNir (5) Lumpi@Work (9) M4rc3L-XCN (7) macshot (7) magyar-oneill (9) Matth (7) Mattie (21) mave1993 (5) MBchrono (15) McFly (20) Medda (5) Memphis-84 (15) Messiah93 (19) Mickyy (5) micmacx (6) Mitchell (5) Mixer57 (5) modye (6) Monster_Bitch1 (9) Mordavolt (7) motomoto (10) MrScriptaz (6) mryoung (6) MyTechZone.de (8) Nicolous (23) ojii (31) oliVier (10) Omega68 (6) Omega_K2 (11) Owned|Myself (8) P3N (7) pand3mic (6) parsimba (5) Pascal257 (9) PatPeter (7) PDrop (10) Phaedrus (18) PhantOm Fury (7) phoenix131 (9) pinkyyy -.- (5) pitbull0993 (7) PixelGamer (7) randomknifer (9) Raptor150 (31) Ratzee (6) ReaCtioN2oo9 (6) RedCliff (5) Rennnyyy (17) revolutionfighters (8) RideGuy (12) Rio (9) Roeliekt (6) roof (16) runamagic (13) Ryezin (5) sandking220 (6) Sarcasm_Poisoning (10) saRs| Johnny-5 (13) Schubaal (10) sea212 (5) sega74rus (15) sgt.angel (6) Shad0w (11) ShoTaXx# (7) sicilia (7) sicman_adrian (22) skillz92 (7) sn4k3 (18) Snake12 (7) snake38 (10) sonicsight (7) SpeedFreak (9) spoonman184 (10) stabby (22) stas (27) Stirni (6) stonedegg (7) Strontium Dog (30) SumGuy14 (25) SuperDave (49) surfteam (5) TaCo (5) TanaToS (17) Tealk (6) teowow (16) TheCheeTaH (27) TheDonFather (5) theresthatguy (6) Tiny Tod (7) tooshkan4uk (8) Totyahun (9) uedi (38) ultimatebuster (6) Undead (25) usernamesaretaken (15) wanted241 (9) Warren (13) westham (6) WhiteAvenger (7) Wonder (14) Wundermaxe (5) X-Mania (5) XE_ManUp (14) xfalcon61 (5) zSweetXz (5) ZZMatty (6) [Cs]Lord_Inferno2 (11) [DAP]Kickbutt (5) [NATO]Hunter (28) ||Wolf|| (10)
Search

Post new topic Reply to topic
Author Message
User avatar
Helper
Profile

Posts: 247
 
New postPosted: 2011-03-23, 12:28 pm 
   Post subject: SPE functions etc.

Yesterday and today I was reading the documentation and forum about SPE, thank you for it, is a very useful function. I used it only because "switchTeam", but now I see more. I would also like to say:

1. There are features such as spe.platform, spe.getEntityClassName (Instance) - but there is no information about them to the wiki. Please try to update the wiki to let people know about all the commands and opportunities SPE

2. Command spe.getActiveWeapon always returns <None>

PYTHON:
    import es, spe

    def player_say(v):
        es.msg(spe.getActiveWeapon(int(v['userid'])))


I think it should work like this:

PYTHON:
    es.createplayerlist(<id>)[<id>]['weapon']


but just faster?

3. I would like to had a command that returns the indexes of all the weapons that are on the map.

_________________
Image


User avatar
Moderator
Moderator
Profile

Posts: 582
 
New postPosted: 2011-03-25, 7:47 am 
   Post subject: Re: SPE functions etc.

stas wrote:
Yesterday and today I was reading the documentation and forum about SPE, thank you for it, is a very useful function. I used it only because "switchTeam", but now I see more. I would also like to say:

1. There are features such as spe.platform, spe.getEntityClassName (Instance) - but there is no information about them to the wiki. Please try to update the wiki to let people know about all the commands and opportunities SPE


Thanks! I apologize for not having the wiki completely up to date. I'll try to get that done soon.

stas wrote:
2. Command spe.getActiveWeapon always returns <None>


What game did you try this in? Were you in spectator mode? getActiveWeapon is supposed to return a pointer to the weapon you are currently holding.

Also, try using the following functions:
PYTHON:
    #==============================================================================
    # Retrieve a list of weapon indexes that the player has in their inventory
    #==============================================================================
    def getWeaponIndexList( userid ):
        # Make sure the player is valid
        if not spe.getPlayer(int(userid)):
            # Return None due to the invalid player instance
            return None

        # Return a list of weapon indexes
        return [spe.getEntityIndex(i) for i in spe.getWeaponInstanceList(userid)]

    #==============================================================================
    # Retrieve a dictionary of weapons in the player's inventory where the key is
    #   the weapon_name which contains an additional dictionary with the keys of
    #   "instance" (stores the pointer foe the weapon) and "slot" (stores the slot
    #   that the weapon can be found in while using getWeaponFromSlot(), or as an
    #   index to the lists: getWeaponNameList(), getWeaponInstanceList(), or
    #   getWeaponIndexList().
    #==============================================================================
    def getWeaponDict( userid ):
        # Make sure the player is valid
        if not spe.getPlayer(int(userid)):
            # Return None due to the invalid player instance
            return None

        # Set up the list
        weapons = {}

        # Loop through the maximum range of 48 weapons
        for i in range(0, 48):

            # Retrieve the weapon instance/pointer
            wPointer = spe.getWeaponFromSlot(userid, i)

            # Make sure the weapon instance/pointer is valid
            if wPointer:

                # Create the valid key:value pair
                weapons[spe.getEntityClassName(wPointer)] = {
                    "instance":wPointer,
                    "slot":i,
                    "index":spe.getEntityIndex(wPointer)}

        # Return the populated dictionary
        return weapons
     


They're both located at the bottom of shared.py so you can just do spe.getWeaponDict and spe.getWeaponIndexList.

stas wrote:
I think it should work like this:

PYTHON:
    es.createplayerlist(<id>)[<id>]['weapon']


but just faster?


I'm not sure what you mean here. getActiveWeapon is just a wrapper around CBaseCombatCharacter::GetActiveWeapon.

stas wrote:
3. I would like to had a command that returns the indexes of all the weapons that are on the map.

I'll see if I can write one for you. AFAIK, there is a max entity limit of 2048 in the source engine. WARNING: This code is untested:
PYTHON:
    def getMapWeapons():
        # This will store the weapon list.
        weapons = []
       
        # Iterate over all 2048 entity slots.
        for idx in range(0, 2048):
            # Get the entity pointer at this index.
            Entity = spe.getEntityByindex(idx)
           
            # Skip the entity if it's invalid.
            if Entity == None:
                continue
           
            # Get the class name of the entity.
            ClassName = spe.getEntityClassName(Entity)
           
            # Does it contain 'weapon'?
            if "weapon" in ClassName:
                # Store the entity in the list.
                weapons.append(Entity)
               
        # Return our list of weapons.
        return weapons
     


I want to be careful of adding too much weapon code to shared.py, because it's going to end up becoming a huge glob of code. Shared.py was really intended to expose cross-mod functionality. I will probably write an spe weaponlib of some kind at some point that will contain a number of useful functions :)


User avatar
Guru
Guru
Profile

Posts: 1248
Location:
Couldn't open script for addons/eventscripts/MiB/es_MiB.txt
 
New postPosted: 2011-03-25, 7:51 am 

Pssst your-name-hear you are forgetting
Code:
[/syntax]


~MiB


User avatar
Moderator
Moderator
Profile

Posts: 582
 
New postPosted: 2011-03-25, 8:03 am 

Fixed ;)


User avatar
Newbie
Profile

Posts: 50
 
New postPosted: 2011-07-22, 3:01 pm 

getWeaponIndexList and getWeaponDict work fine, but getActiveWeapon always returns <None>.

Game - Counter-Strike Source Orangebox


User avatar
Moderator
Moderator
Profile

Posts: 6113
 
New postPosted: 2011-07-22, 7:28 pm 

Yeah, I have notified your-name-here that the Signature for CBaseCombatCharacter::GetWeapon needs updated. For now, there is an offset that has the handle of the active weapon that you can use:
PYTHON:
    from os import name as platform
    import es
    import spe

    offset = 1964 if platform == 'nt' else 1984

    def get_active_weapon(userid):
        spePlayer = spe.getPlayer(userid)
        if not spePlayer:
            return

        weapon_handle = spe.getLocVal('i', spePlayer + offset)
        if not weapon_handle:
            return

        weapon_index = es.getindexfromhandle(weapon_handle)
        weapon_class = es.entitygetvalue(weapon_index, 'classname')
Satoon


User avatar
Guru
Guru
Profile

Posts: 1449
Location:
Germany

Steam Friends Name: ResistancY
 
New postPosted: 2011-07-23, 2:31 am 

Just for your information:
CPP:
    CBaseCombatWeapon *CBaseCombatCharacter::GetActiveWeapon() const
    {
            return m_hActiveWeapon;
    }
(game_shared/basecombatcharacter_shared.cpp)

The hole function is useless since you can easily read the networked var m_hActiveWeapon like satoon does it. No need for updating it, just more work with same result ;)

_________________
NativeTools 1.6.2.0 - 05/16/10 | Linux available!
NativeTools is a native helper plugin to support Python EventScripts

Notepad++ EventScripts Python Highlighter
Highlighter including Autocompletition and Functionparameters!

Mapload - justAdmins - EventScripts Search Plugins for Firefox
Image


Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 7 posts ] 


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group