[How To] Befehle via Item ausführen

08/07/2013 17:31 Professor Linebeck#1
Heyho liebe Elitepvper's.
Da mir des öfteren mal aufgefallen ist, dass Spieler via Item ingame Penya erhalten möchten, oder Undying usw, dachte ich mir einfach mal ein Tutorial dazu zu schreiben. Es wird etwas viel Text sein, nimmt mir das bitte nicht übel. Ich möchte lediglich dafür sorgen, dass jeder dieses HowTo möglichst proplemlos mitverfolgen kann.

Ich werde in folgendem Beispiel das Item Luia Trans verwenden.
(Hierbei wird nur Resource-Arbeit nötig sein.)
Wir benötigen lediglich die propItem.txt &' die propItem.txt.txt, welche ihr im Resource Ordner findet. Die propItem.txt könnte bei einigen von euch auch specItem.txt heißen.

Nehmen wir mal an, wir möchten ein Item erstellen, welches eine Art Online Event startet und dem Spieler als Dankeschön etwas Penya und ein Item ins Inventar legt. Dazu ändern wir als aller erstes den Namen und die Beschreibung des Item's:
propItem.txt.txt :
Wenn du nun dein Item den entsprechenden Namen und Beschreibung hinzugefügt hast, öffnest du nun den Eintrag der propItem.txt/specItem.txt.
propItem.txt/specItem.txt :
Dort interessieren uns nur 2 Dinge.
Erstens: 300000
Zweitens: /dis 607 /nodis

Die Zahl 300000 steht für die Dauer des Item's und ist in Millisekunden gegeben, damit beträgt sie hier 5Minuten.
Doppelklickt man das Item, so wird der erste Befehl(/dis 607) sofort ausgeführt, unabhängig ob man GM oder Player ist.
Sobald dann die 5 Minuten abgelaufen sind, tritt der zweite Befehl(/nodis) in Kraft und wird aktiviert.

Die Beiden Befehle bedeuten folgendes:










Wenn du nun alles verstanden hast, kannst du diese Befehle ändern und sogar unterschiedliche Befehle miteinander Kombinieren.

Hier siehst du nun den propItem.txt/specItem.txt Eintrag nach meinem Beispiel:
Dieses Item läuft nun 1 Std lang und gibt beim ersten klicken 10Mio Penya. Nachdem 1 Std vergangen und das Item abgelaufen ist, bekommt der Spieler 100 Red Chip's in's Inventar gelegt.

Weitere gute Beispiele:

Ich würde mich über weitere Item-Vorschläge bzw Kombinationen freuen und diese in der Liste anfügen.


- Apfel
08/07/2013 18:35 xI3ubbLex3#2
Kennen zwar viele schon von früher, als man viel mehr mit resource gearbeitet hat aber, sehr schönes How To :)

Und für leute de es nicht wissen wie es geht ist es sehr hilfreich...

EDIT

Wenn ich mich nicht täusche und nachdem man ein Restat absolviert hat, sind die 50stats wieder weg?

mfg. Kevin
08/07/2013 18:44 Professor Linebeck#3
Quote:
Originally Posted by xI3ubbLex3 View Post
EDIT

Wenn ich mich nicht täusche und nachdem man ein Restat absolviert hat, sind die 50stats wieder weg?

mfg. Kevin
Ich schätze mal ja.
08/07/2013 18:55 .S0ulSeller#4
Super TuT, vielleicht bringt es die Leute wieder auf gute Ideen mit simplen Material :)
08/07/2013 18:55 Velmore#5
Quote:
Originally Posted by Apfelsuchtii View Post
Ich schätze mal ja.
Sind Sie.
08/07/2013 19:15 Fistofgod#6
wie lautet der befehl für no exp beim leveln?
08/08/2013 06:23 .Tear#7
Gibt glaub ich keinen wenn du sowas willst geh in die SRC nehm dir eine XP scroll und änder den Faktor auf 0. Weil einfache Mathematik x *0 = 0
08/08/2013 13:19 Velmore#8
Quote:
Originally Posted by .Tear View Post
Gibt glaub ich keinen wenn du sowas willst geh in die SRC nehm dir eine XP scroll und änder den Faktor auf 0. Weil einfache Mathematik x *0 = 0
Einfach keine Ahnung einen BOOL wert auf false setzten und in der exp berechnung abfragen ob dieser auf true ist und dann fFactor = 0f;
08/08/2013 13:22 .Tear#9
Ich hab das vor knapp 2 Jahren mit der xp-scroll gemacht ˆˆ

Das letzte mal als ich etwas an der SRC gemacht hab ist nun gute 1 - 1.5 Jahre her ˆˆ
08/08/2013 15:54 ©ross#10
@Velmore und was ist hiermit?
Code:
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
	
	return TRUE;
}
? Macht bei mir perfekte Einsätze (privater Src)
Muss man eben nur drauf achten den Befehl richtig zu konfigurieren dann geht der :o
08/08/2013 16:44 Мentus#11
Quote:
Originally Posted by Velmore View Post
Einfach keine Ahnung einen BOOL wert auf false setzten und in der exp berechnung abfragen ob dieser auf true ist und dann fFactor = 0f;

Wer es nicht selber machen will.
Versucht da wer Geld im Internet zu machen, da all seine Server versagt haben und nun versucht er Sachen weiter zu verkaufen von denen er keine Ahnung hat? Ohwyeah.

Quote:
Originally Posted by ©ross View Post
@Velmore und was ist hiermit?
Code:
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
	
	return TRUE;
}
? Macht bei mir perfekte Einsätze (privater Src)
Muss man eben nur drauf achten den Befehl richtig zu konfigurieren dann geht der :o

PHP Code:
    if( IsAuthHigherAUTH_ADMINISTRATOR ) )    // ¿î¿µÀÚ °èÁ¤À϶§
    
{
        if( 
IsModeMODE_EXPUP_STOP ) )            // °æÇèÄ¡ »ó½Â ±ÝÁö »óŸé
            
fExpValue 0;                        // °æÇèÄ¡°ª 0
    

Geht nicht, man müsste das:

PHP Code:
    if( IsAuthHigherAUTH_ADMINISTRATOR ) ) 
auskommentieren, dann würde es evtl funktionieren. ( Habs mir nicht weiter angeschaut)
08/08/2013 16:46 ©ross#12
@Mentus: Ok die stelle hab ich nun vergessen.
Aber ansich dürftes ja gehen. Muss ja nicht sein, dass für etwas was schon im Source ist, dafür Geld genommen wird
08/11/2013 09:37 raventh1984#13
Nice tutorial i like it very much.
Is it also possible to give an user in this way access to the /sys command?
I think this must also be done in the source correct?