Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
26.05.2002, 19:09
Exec



tag

so, ich wollt mir was baun, was abfragt, wie schwer alle waffen zusammen sind und das man, bei nem bestimmten gewicht keine weiter waffe mehr tragen kann ...

wirklich was gefunden hab ich leider nich ...

ItemInfoArray[ m_iId ].iWeight;

so, könnt ihr mir da weiterhelfen? und ne endlose if() kacka will ich nich machen ... bei über 50waffen sind die möglichkeiten ein "wenig" zu viel ...

thx

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
001
26.05.2002, 19:17
[RMen]OneStone



Was mir grad auffält: Mein Funkwecker zeigt eindeuting 19:07 Uhr an! =)

[edit]
Quellcode:int iPlayerWeight = 0;

for(int i = 0; i < MAX_WEAPONS; i++)
iPlayerWeight += ItemInfoArray[ i ].iWeight;

So schwer? :/
[/edit]

[edit2]
Ich wusst nicht, dass die falsch geht.

SPAM: Joystick 2 Mouse rulez!
Bin ich besoffen? Ne!
[/edit2]

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 26.05.2002 um 19:25 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
26.05.2002, 19:21
Exec



ja, toll ... die zeit im thw-board geht schon immer falsch ;)

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
003
26.05.2002, 19:28
Killing Me Softly



Also: ItemInfoArray[ m_iId ].iWeight; ist nicht das Gewicht einer Waffe (was man anhand des Namens vermuten würde), sondern die Priorität der Waffe.

Folgender Vorschlag:
deklarier eine virtuelle Methode int CBasePlayerItem::ItemWeight(void), die du für jede deiner Waffen überschreibst.

dann baust du noch eine hübsche kleine Methode in CBasePlayer rein
Quellcode:
int CBasePlayer::IWeight(void)
{
    int iWeight = 0;

    CBasePlayerItem *pItem;

    for (int i=0 ; i<MAX_ITEM_TYPES ; i++)
    {   pItem = m_rgpPlayerItems[ i ];

         while(pItem)
         {    iWeight += pItem->ItemWeight();
    pItem = pItem->m_pNext;
         }
    }

    return iWeight;
}

Der Rest sollte kein Problem sein.

--

Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.


Dieser Beitrag wurde am 26.05.2002 um 19:29 von Killing Me Softly bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
26.05.2002, 19:39
Exec



ok, thx, ich beschäftige mich gleich mal :)

das mit dem weight hab ich gewusst, nur wollte ich es gleich damit machen

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
005
27.05.2002, 16:29
Exec



scheisse, ich komm mir echt doof vor ...

Quellcode:int CBasePlayer :: ItemWeight( void )
{
    int iWeight = 0;
    CBasePlayerItem *pItem;
    for (int i=0 ; i < MAX_WEAPONS ; i++)
        {  
            pItem = m_rgpPlayerItems[ i ];
                while(pItem)
                {    
                    iWeight += pItem->iInvspace();
                    pItem = pItem->m_pNext;
                }
        }
    return iWeight;
}

weapons.h
int iInvspace;

weiter unten

int iInvspace( void ) { return ItemInfoArray[ m_iId ].iInvspace; }

so, theoretisch sollte das gehen (tuts auch ;))

nur,wenn ich jetzt ne abfrage machen will wie z.b.

if( iWeight >= 10 )
{
baahhh
}

dann meckert er rum ...
error C2296: '>=' : illegal, left operand has type 'int (__thiscall CBasePlayerItem::*)(void)'

eber eigendlich sollte das doch echt gehn?!

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
006
27.05.2002, 16:32
[RMen]OneStone



Sowas kenn ich. Mach aus deiner jetzigen iWeight ne iTemp und nachher ein int iWeight = *((int*) iTemp);
Bei mir hat der das völlig unlogischerweise in nen Pointer verwandelt, aber so ging es dann.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
007
27.05.2002, 17:59
TheTinySteini



Äh? Seltsam. Wo vergleichst du denn dein iWeight und wie hast du es dort definiert und wie hast du die ItemWeight dort aufgerufen?

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
008
27.05.2002, 21:08
Mazze



Jo genau.....was ist denn iWeight?
Mach mal if(ItemWeight() >= 10)
Ich denke aber nicht, dass es an der Funktion liegt. Wenn ja, siehst du es ja dann!

edit:
Wenn du dich nicht in einer CBasePlayer-Methode befindest natürlich pPlayer->ItemWeight()
...
Ich wollts nur sagen =)

--

BattleTech-MOD:
http://bthl.unitedgaming.net/


Dieser Beitrag wurde am 27.05.2002 um 21:10 von Mazze bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche