Register for your free account! | Forgot your password?

You last visited: Today at 05:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C++]Yang An/Aus CONFIG

Discussion on [C++]Yang An/Aus CONFIG within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
OoKaMi_'s Avatar
 
elite*gold: 0
Join Date: Jun 2014
Posts: 269
Received Thanks: 96
Talking [C++]Yang An/Aus CONFIG + Update

Hey Com,

habe mir überlegt ich Release mal wieder was.
Da ich momentan an der Source Arbeite, und bissel dazu lerne,
habe ich eine Funktion geschrieben, wo mit man Yang Wegwerfen EIN/AUS stellen kann.
Für ein Anfänger habe ich des gut hinbekommen

Naja dann kommen wir mal zum einfügen.
Geht in euer Source Ordner /Server/game/src
Öffnet die "config.cpp"

Sucht nach:
Code:
int gPlayerMaxLevel = 99;
und fügt darunter ein:
Code:
bool yang_discard = false;
nun sucht ihr nach:
Code:
TOKEN("max_level")
fügt darunter ein:
Code:
		TOKEN("yang_discard")
		{
			int flag = 0;

			str_to_number(flag, value_string);

			//if (1 == flag && LC_IsEurope() )
			if (1 == flag)
			{
				yang_discard = true;
				fprintf(stderr, "YANG_DISCARD: %i\n", flag);
			}
		}
Nun öffnet ihr die "config.h"
Ganz oben bei:
Code:
const int ITEM_BROKEN_METIN_VNUM = 28960;
fügt ihr darunter
Code:
extern bool yang_discard;
ein.

Sucht nach:
Code:
extern int gPlayerMaxLevel;
fügt darunter ein;
Code:
extern bool yang_discard;
WICHTIG:
Ihr macht nach "extern bool yang_discard;" 2 mal Enter.
Und fügt dann das hier noch ein.
Code:
extern long long LLMINMAX(long long min, long long value, long long max);
Jetzt geht ihr in die "char_item.cpp"
Sucht nach:
Code:
bool CHARACTER::DropGold(int gold)
und fügt unter:
Code:
	if (gold <= 0 || gold > GetGold())
		return false;
das hier ein:
Code:
	if(yang_discard)
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("È¢À»¡¼*´Ï´Ù."));
	}
		return true;
sollte dann so aussehen:
Code:
bool CHARACTER::DropGold(int gold)
{
	if (gold <= 0 || gold > GetGold())
		return false;
		
	if(yang_discard)
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("È¢À»¡¼*´Ï´Ù."));
	}
		return true;

	if (!CanHandleItem())
		return false;

	if (0 != g_GoldDropTimeLimitValue)
	{
		if (get_dword_time() < m_dwLastGoldDropTime+g_GoldDropTimeLimitValue)
		{
			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¾ÆÁ÷ °ñµå¸¦ ¹ö¸± ¼ö ¾ø½À´Ï´Ù."));
			return false;
		}
	}
Ach vor ich es vergesse, ihr müsst in euere CONFIG "SERVER" YANG_DISCARD: 1 reinschreiben. Mit 1 ist das wegwerfen nicht mehr möglich.

Noch ein kleiner fix die ihn noch nicht haben sollten.
Wenn ihr Yang wegwerfen tut, und im Chat steht was auf chinesisch fehlt was in der "locale_string.txt"

Ihr öffnet eure "locale_string.txt" und fügt ganz unden ein:
Code:
"¶³¾îÁø ¾ÆÀÌÅÛÀº %dºÐ ÈÄ »ç¶óÁý´Ï´Ù.";
"Du hast Yang fallen gelassen.";
Des wars, ich hoffe ihr könnt damit was anfangen, wenn nicht dann nicht.


Update:
Ich habe noch mal ein Update, wenn ihr jetzt inGame Versucht Yang wegzuwerfen dann bekommt ihr im Chat eine Nachticht. Kommt nur wenn "YANG_DISCARD: 1" Aktiviert ist.
Habe das selbe noch mal für Items gemacht.

Selbe Spiel noch mal

Öffnet die "config.cpp"

Sucht nach:
Code:
int gPlayerMaxLevel = 99;
und fügt darunter ein:
Code:
bool item_discard = false;
nun sucht ihr nach:
Code:
TOKEN("max_level")
und fügt darunter
Code:
		TOKEN("item_discard")
		{
			int flag = 0;

			str_to_number(flag, value_string);

			//if (1 == flag && LC_IsEurope() )
			if (1 == flag)
			{
				item_discard = true;
				fprintf(stderr, "ITEM_DISCARD: %i\n", flag);
			}
		}
ein.

Jetzt müsst ihr die "config.h" öffnen.

Sucht nach:
Code:
extern int gPlayerMaxLevel;
darunter fügt ihr
Code:
extern bool item_discard;
ein.


WICHTIG:
Ihr macht nach "extern bool item_discard;" 2 mal Enter.
Und fügt dann das hier noch ein.
Code:
extern long long LLMINMAX(long long min, long long value, long long max);
Jetzt öffnet ihr die "chat_item.ccp".

Sucht nach:
Code:
bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
unter
Code:
{
	LPITEM item = NULL;
fügt ihr das
Code:
	if(item_discard)
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("È¢À»¡¼*."));
	}
		return true;
ein.

Sollte dann so aussehen:
Code:
bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
{
	LPITEM item = NULL; 
	
	if(item_discard)
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("È¢À»¡¼*."));
	}
		return true;

	if (!CanHandleItem())
	{
		if (NULL != DragonSoul_RefineWindow_GetOpener())
			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°*È*âÀ» ¿¬ »óÅ¿¡¼*´Â ¾ÆÀÌÅÛÀ» ¿Å±æ ¼ö ¾ø½À´Ï´Ù."));
		return false;
	}

	if (IsDead())
		return false;

	if (!IsValidItemPosition(Cell) || !(item = GetItem(Cell)))
		return false;

	if (item->IsExchanging())
		return false;

	if (true == item->isLocked())
		return false;

	if (quest::CQuestManager::instance().GetPCForce(GetPlayerID())->IsRunning() == true)
		return false;

	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_DROP | ITEM_ANTIFLAG_GIVE))
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¹ö¸± ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù."));
		return false;
	}

	if (bCount == 0 || bCount > item->GetCount())
		bCount = item->GetCount();

	SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255);	// Quickslot ¿¡¼* Áö¿ò

	LPITEM pkItemToDrop;

	if (bCount == item->GetCount())
	{
		item->RemoveFromCharacter();
		pkItemToDrop = item;
	}
	else
	{
		if (bCount == 0)
		{
			if (test_server)
				sys_log(0, "[DROP_ITEM] drop item count == 0");
			return false;
		}
	
		// check non-split items for china
		//if (LC_IsNewCIBN())
		//	if (item->GetVnum() == 71095 || item->GetVnum() == 71050 || item->GetVnum() == 70038)
		//		return false;

		item->SetCount(item->GetCount() - bCount);
		ITEM_MANAGER::instance().FlushDelayedSave(item);

		pkItemToDrop = ITEM_MANAGER::instance().CreateItem(item->GetVnum(), bCount);

		// copy item socket -- by mhh
		FN_copy_item_socket(pkItemToDrop, item);

		char szBuf[51 + 1];
		snprintf(szBuf, sizeof(szBuf), "%u %u", pkItemToDrop->GetID(), pkItemToDrop->GetCount());
		LogManager::instance().ItemLog(this, item, "ITEM_SPLIT", szBuf);
	}

	PIXEL_POSITION pxPos = GetXYZ();

	if (pkItemToDrop->AddToGround(GetMapIndex(), pxPos))
	{
		// Çѱ¹¿¡´Â ¾ÆÀÌÅÛÀ» ¹ö¸®°í º¹±¸ÇØ´Þ¶ó´Â Áø»óÀ¯ÀúµéÀÌ ¸¹¾Æ¼*
		// ¾ÆÀÌÅÛÀ» ¹Ù´Ú¿¡ ¹ö¸± ½Ã ¼Ó¼º·Î±×¸¦ ³²±ä´Ù.
		if (LC_IsYMIR())
			item->AttrLog();

		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¶³¾îÁø ¾ÆÀÌÅÛÀº 3ºÐ ÈÄ »ç¶óÁý´Ï´Ù."));
		pkItemToDrop->StartDestroyEvent(item_drop_time);

		ITEM_MANAGER::instance().FlushDelayedSave(pkItemToDrop);
		
		char szHint[32 + 1];
		snprintf(szHint, sizeof(szHint), "%s %u %u", pkItemToDrop->GetName(), pkItemToDrop->GetCount(), pkItemToDrop->GetOriginalVnum());
		LogManager::instance().ItemLog(this, pkItemToDrop, "DROP", szHint);
		//Motion(MOTION_PICKUP);
	}

	return true;
}
Zur allerletzt öffnet ihr euere "locale_string.txt" und fügt am ende das ein.
Code:
"È¢À»¡¼*.";
"Items wegwerfen wurde Deaktiviert.";

"È¢À»¡¼*´Ï´Ù.";
"Yang wegwerfen wurde Deaktiviert.";
Schon seit ihr damit Fertig.
WICHTIGER HINWEIS:
CONFIG "SERVER" ITEM_DISCARD: 1 reinschreiben. Mit 1 ist das wegwerfen nicht mehr möglich.
Wenn ihr beide sachen benutzt also YANG & ITEM braucht ihr nich zwei mal das hier einfügen
Code:
extern long long LLMINMAX(long long min, long long value, long long max);
habe es jetzt im Tutorial nur 2 mal, da ich nicht weiß, ob jemand beide benutzt oder nur eins davon.

Ich hoffe es gefällt euch, und einige können es villt gebrauchen.

MFG

EDIT:
Code:
	if(yang_discard)
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("È¢À»¡¼*´Ï´Ù."));
		return false;
	}
Code:
	if(item_discard)
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("È¢À»¡¼*."));
		return false;
	}
Hatte einen Fehler drin, der Fehler hat das dauerhaft ausgeführt, egal ob man es in der CONFIG hatte oder nicht. Jetzt ist es richtig und Funktioniert wie es sollte
OoKaMi_ is offline  
Thanks
7 Users
Old 06/10/2015, 08:29   #2
 
elite*gold: 35
Join Date: Apr 2011
Posts: 1,018
Received Thanks: 1,984
Nice
DeadBreakZz is offline  
Thanks
1 User
Old 06/10/2015, 15:06   #3
 
kstmr's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 95
Received Thanks: 29
PHP Code:
bool CHARACTER::DropItem(TItemPos  CellBYTE bCount)
{    
    
LPITEM item NULL;         
    if(
item_discard)
    {
        
ChatPacket(CHAT_TYPE_INFOLC_TEXT("È¢À»¡¼*."));
    }         
        return 
true
actually in such a code the fucntion will always return true wheter the token is there or not so you should reconsider what you've done
kstmr is offline  
Old 06/10/2015, 22:45   #4
 
elite*gold: 0
Join Date: Aug 2010
Posts: 12
Received Thanks: 1
LLMINMAX

isnt used anywhere in your code, so why should someone add this?
mav95 is offline  
Old 06/11/2015, 11:19   #5
 
UltraShock's Avatar
 
elite*gold: 50
Join Date: Nov 2014
Posts: 400
Received Thanks: 516
Oha!!!
Quote:
wo mit man Yang Wegwerfen EIN/AUS stellen kann.
Das alles nur wegen diese funktion >.<? dann stellt man doch lieber
per db antiflag oder Wearflag was es auch immer war auf no_drop

richtig viel arbeit Okami x)

PS;
für deine mühe hast du nen thanks verdient.

Edit:
Habe mich vertan, von Invi ist es nicht per DB x) bin
so doof. aber so großen code kann ich mir nicht vorstellen
aber wie sagt man so schön: übung macht denn meister
UltraShock is offline  
Thanks
3 Users
Old 06/11/2015, 17:00   #6
 
OoKaMi_'s Avatar
 
elite*gold: 0
Join Date: Jun 2014
Posts: 269
Received Thanks: 96
HTML Code:
Das alles nur wegen diese funktion >.<? dann stellt man doch lieber
per db antiflag oder Wearflag was es auch immer war auf no_drop
Ehrlich gesagt, wusste ich es garnicht das man es über der db regeln kann. Und ausprobiert auch nicht Wenn ich mir des so überlege, müsste man des doch dann bei jedem Item einzelnt machen oder nicht?
Aber danke trotzdem
OoKaMi_ is offline  
Thanks
1 User
Old 06/12/2015, 15:56   #7
 
elite*gold: 0
Join Date: Jun 2015
Posts: 97
Received Thanks: 19
Schick.

Werde ich aber nicht benutzen die Methode vom SchwarzenT gefällt mir besser
Spoïx™ is offline  
Old 06/12/2015, 19:40   #8
 
OoKaMi_'s Avatar
 
elite*gold: 0
Join Date: Jun 2014
Posts: 269
Received Thanks: 96
Quote:
Werde ich aber nicht benutzen die Methode vom SchwarzenT gefällt mir besser*
Ich will nichts sagen aber, was du von SchwarzenT meinst das deaktiviert nicht das yang wegwerfen aus, sondern es stellt nur den chat aus.

MFG
OoKaMi_ is offline  
Old 06/27/2015, 03:00   #9
 
elite*gold: 0
Join Date: Jun 2015
Posts: 56
Received Thanks: 10
Nett, danke. Ist übrigens koreanisch, nicht chinesisch.
hi im dan3l is offline  
Reply


Similar Threads Similar Threads
[Config]Advanced KH Config
10/22/2010 - Counter-Strike Hacks, Bots, Cheats & Exploits - 3 Replies
Heyho, ich hab hier ma meine cfg hochgeladen. Das ist die originale Kräuterhumpen cfg, nur etwas umgeändert, wie z.B tastenbelegung, crosshairsize, interp befehle etc. Falls ihr die cfg mögt, gibt mir ein thx =) Download



All times are GMT +2. The time now is 05:39.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.