[Source Frage]Perin

10/05/2011 21:15 Yakuzai.#1
Hey, hier mal eine kleine Frage ^^
Wenn ich eine Funktion habe, die die Penya überwachen soll, und dann, falls die Penya 100.000.000 übersteigen, diese in einen Perin umwandeln soll, wo müsste ich diese Funktion dann wie einbauen,
bzw. wie müsste die Funktion aussehen, ich hab jetzt mal das hier gemacht :
Code:
void CMover::UpdatePerin()
{
	if(((CUser*)this)->GetGold() > 100000000)
	{
		SetGold(((CUser*)this)->GetGold() - 100000000);
	}
}
Habe von C++ nicht so viel Ahnung, also nich lachen wenns crap ist ^^
10/05/2011 21:31 Krustenkäse#2
... auf die schnelle würde ich das anders machen:
in der mover.cpp und der obj.h gibt es eine Funktion die AddGold heisst...
Darin würde ich einfach unter dem SetGold( nTotal ); folgendes einfügen:

Code:
    if( GetGold() > PERIN_VALUE ) //wenn der User mehr Gold hat als ein Perin wert ist
    {
        ItemProp* pProp = prj.GetItemProp( II_SYS_SYS_SCR_PERIN ); // Eigenschaften des Perin in ne Pointervariable speichern
        for( ; GetGold() - PERIN_VALUE > 0 ; ) // solange ausführen, bis das Gold nicht mehr reicht
        {
            SetGold( GetGold() - PERIN_VALUE ); // Gold abziehen
            AddItem( pProp ); //Perin hinzufügen
            nTotal -= PERIN_VALUE; //Fürs spätere senden des neuen Betrags Gold abziehen
        }
    }
10/05/2011 21:32 .Crasy#3
Naja, laut diesem Code würde jeder der mehr als 100m hat mal eben 100m wieder verlieren anstat einen Perin zu bekomen.
10/05/2011 21:56 Yakuzai.#4
Würde der nicht bei Krustenkäses Code auch die Penya abziehen, wenn ich einen Perin aktiviere ?
So wäre es ja dann wieder unmöglich über 100Mio Penya zu erhalten.
Weiß einer wie man das umgehen kann ?
10/05/2011 21:59 .Tear#5
wieso machst das nich so das wenn im INv 2,1 Mrd Penya liegen automatisch Perins draus werden? Ich mein, dann koennte man weiter farmen.
10/05/2011 22:04 Yakuzai.#6
Hast recht ^^ Werde das jetzt mal eben probieren.
Edit geht nicht:
Code:
            AddItem( pProp ); //Perin hinzufügen
Dazu sagt er das :
Code:
XXXX\Mover.cpp(632): error C2664: 'CMover::AddItem' : cannot convert parameter 1 from 'ItemProp *' to 'CItemBase *'
10/05/2011 22:33 Pumbaaa#7
Code:
	CItemElem itemelem;
	itemelem.m_nItemNum = 1;
	itemelem.m_bCharged = TRUE;
	BYTE nID;
	itemelem.m_dwItemId = II_SYS_SYS_SCR_PERIN;

	( ( CMover*)this)->CreateItem( &itemelem, &nID );
10/06/2011 17:32 Doomm#8
Warum machst du es nicht so wenn er 2,1 mrd hat das es in Perins umgewandelt wird ;)

Ist viel einfacher ^^
10/06/2011 21:03 Yakuzai.#9
Mit dem Code passiert einfach garnix >.<
Code:
if( GetGold() > 21000000000 )
	{
        		ItemProp* pProp = prj.GetItemProp( II_SYS_SYS_SCR_PERIN );
        		for( ; GetGold() - PERIN_VALUE > 0 ; )
        		{
				CItemElem itemelem;
				itemelem.m_nItemNum = 1;
				itemelem.m_bCharged = TRUE;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_PERIN;

				AddItem( &itemelem );
            			SetGold( GetGold() - PERIN_VALUE );
			        nTotal -= PERIN_VALUE;
			}
	}
10/06/2011 21:12 Pumbaaa#10
Du sollst auch die CreateItem Funktion verwenden ;D
10/06/2011 21:34 Le´Professore#11
Könntest du net einfach dazu mal nen Tut machen Pumbaaa du weist ja wies geht wen ich es richtig verstanden habe würde dir noch ein paar mehr THX einbringen;)

MFG Le´Professore
10/06/2011 22:27 Pumbaaa#12
Quote:
Originally Posted by Pumbaaa View Post
Code:
	CItemElem itemelem;
	itemelem.m_nItemNum = 1;
	itemelem.m_bCharged = TRUE;
	BYTE nID;
	itemelem.m_dwItemId = II_SYS_SYS_SCR_PERIN;

	CreateItem( &itemelem, &nID );
Das ist alles, so erstellst du ein Item...
m_nItemNum ist die Anzahl.
10/07/2011 15:16 Yakuzai.#13
Quote:
Originally Posted by Pumbaaa View Post
Du sollst auch die CreateItem Funktion verwenden ;D
Wozu gehört die denn ? Wenn ich einfach nur den Code benutze, den du mir gegeben hast, krieg ich den Error, dass die Funktion nicht zu CMover gehört oder so ähnlich :P
Edit was passiert, wenn das Inventar voll ist und der versucht das Item zu erstellen ?
10/07/2011 15:53 Carlyle~#14
Replace your AddGold function with mine:

10/07/2011 16:18 Le´Professore#15
Quote:
Originally Posted by Carlyle~ View Post
Replace your AddGold function with mine:

Does it work?

Le´Professore