EXP Up Stop befehl Frage

08/13/2015 20:34 IceSharx#1
Guten Tag Epvp,

folgenden Befehl habe ich in der Source gefunden

ON_TEXTCMDFUNC( TextCmd_ExpUpStop, "ExpUpStop", "eus", "", "", TCM_SERVER, AUTH_DEVELOPER, "" )

und habe ihn zu diesem abgeändert

ON_TEXTCMDFUNC( TextCmd_ExpUpStop, "ExpUpStop", "eus", "", "", TCM_SERVER, AUTH_GENERAL, "" )

zudem habe ich in der WndField den eintrag bearbeitet das nun nach benutzten vom Befehl oben in der EXP Leiste Exp geblockt steht.

Allerdings funktioniert der befehl nur beim Admin Account einwandfrei und als User bekommt man weiterhin EXP..... Ich weiß nicht wo ich noch weiter suchen soll.

in der Func.... .cpp schauts so aus:

ON_TEXTCMDFUNC( TextCmd_ExpUpStop, "ExpUpStop", "eus", "", "", TCM_SERVER, AUTH_GENERAL, "" )

BOOL TextCmd_ExpUpStop( CScanner& scanner )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;
if( pUser->m_dwMode &= MODE_EXPUP_STOP)
pUser->m_dwMode &= (~MODE_EXPUP_STOP);
else
pUser->m_dwMode |= MODE_EXPUP_STOP;

g_UserMng.AddModifyMode( pUser );
#endif // __WORLDSERVER

und in der WndField so:

EXPINTEGER nExpResult = pMover->GetExp1() * (EXPINTEGER)10000 / pMover->GetMaxExp1();
float fExp = (float)nExpResult / 100.0f;
if( pMover->IsMode( MODE_EXPUP_STOP ) )

{

nCharEXP = sprintf( cbufExp, "Exp block%" );

}

else

{

if( fExp >= 99.99f )

nCharEXP = sprintf( cbufExp, "99.99%%" ); // sprintfÇÔ¼ö ³»ºÎ¿¡¼* ¹Ý¿Ã¸²µÇ¾Î 100.00À¸·Î Ç¥½ÃµÇ´Â °ÍÀ» ¸·±Â À§Çؼ*

else

nCharEXP = sprintf( cbufExp, "%.2f%%", fExp );

}

Jemand eine Idee warum es als Admin funktioniert und als User nicht ?

Liebe grüße

IceSharx
08/13/2015 21:07 Drabur#2
Ich denke du hast nen Fix drin der die ganzen sachen die pUser->m_dwMode &= (~MODE_EXPUP_STOP); blockt.
08/13/2015 21:15 *-Kaores-*#3
mach es einfach über den SMMode. ist viel einfacher als vorlage kannst du das Premium nehmen nur die EXP dann statt 1.5f auf 0.0f machen.
mfg
08/13/2015 22:40 IceSharx#4
Habe auf den SMMod genutzt und bekommen nun beim Neuz Compilen folgenden Error

13.08.2015\_Network\CmnHdr.h(560): error C2065: 'II_ITEM_NOEXP' : undeclared identifier

Obwohl oben dies definiert ist :

enum
{
SM_BANK15, SM_BANK30, SM_PARTYSKILL15, SM_PARTYSKILL30, SM_SHOUT15, SM_SHOUT30,
SM_MAINTAIN_MP, SM_MAINTAIN_FP, SM_MAX_HP, SM_MAX_HP50, SM_ACTPOINT,
SM_STR_DOWN, SM_STA_DOWN, SM_DEX_DOWN, SM_INT_DOWN,
SM_ATTACK_UP, SM_RESIST_ATTACK_LEFT, SM_RESIST_ATTACK_RIGHT, SM_RESIST_DEFENSE,
SM_ESCAPE, SM_REVIVAL, SM_VELOCIJUMP, SM_PARTYSKILL1, SM_ATTACK_UP1,
SM_SHOUT001, SM_BANK001,
SM_MAX
#ifdef __NO_EXP
, SM_NOEXP
#endif
};

und dann :

dwSMItemID[SM_ESCAPE] = II_CHR_SYS_SCR_ESCAPEBLINKWING;
#ifdef __NO_EXP
dwSMItemID[SM_NOEXP] = II_ITEM_NOEXP;
#endif
}
}
08/13/2015 23:26 Sativa'#5
auch in der Resource definiert?
08/14/2015 00:02 IceSharx#6
Die Ressource Definition ist unabhängig von dem Compilen der Neuz,

aber ja sie ist drin.

6 II_ITEM_NOEXP "No Exp Scroll" ..... usw
#define II_ITEM_NOEXP XXXXX
08/14/2015 00:47 *-Kaores-*#7
hast du es auch in der Source Resource gemacht?
08/14/2015 00:55 xTwiLightx#8
Quote:
Originally Posted by IceSharx View Post
Die Ressource Definition ist unabhängig von dem Compilen der Neuz,

aber ja sie ist drin.

6 II_ITEM_NOEXP "No Exp Scroll" ..... usw
#define II_ITEM_NOEXP XXXXX
Wie schon beschrieben, mag das an sich egal sein, der Compiler will trotzdem definierte Defines sehen :P
08/14/2015 18:27 raventh1984#9
The reason it doesn't work as GENERAL is because of Mover.cpp

If you search the entire source on MODE_EXPUP_STOP then you should have found it.

Code:
if( IsAuthHigher( AUTH_ADMINISTRATOR ) )	// ¿î¿µÀÚ °èÁ¤À϶§
	{
		if( IsMode( MODE_EXPUP_STOP ) )			// °æÇèÄ¡ »ó½Â ±ÝÁö »óŸé
			fExpValue = 0;						// °æÇèÄ¡°ª 0
	}
08/14/2015 18:36 Sedrika#10
Du mu musst es da entfernen wie raventh bereits beschrieben hat und an den Stellen hinzufügen wo Monster in die Umgebung exp geben, dann bei paties als leecher usw
08/16/2015 19:23 IceSharx#11
Thanks raven you really helped me out,
I'll change it :)
Und danke sedrika für die fortlaufende Info :)