Register for your free account! | Forgot your password?

You last visited: Today at 15:31

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

Advertisement



[Release] Droppdialog only C++

Discussion on [Release] Droppdialog only C++ within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
elite*gold: 2785
Join Date: Dec 2014
Posts: 403
Received Thanks: 1,354
[Release] Droppdialog only C++

Hallo


Hier der C++ Part:

Code:
// /deleteitem <slotindex>
ACMD (do_deleteitem)
{
	char arg1[255];
	one_argument (argument, arg1, sizeof(arg1));
	
	if (!*arg1)
		return;
	
	BYTE cell = 0;
	str_to_number(cell, arg1);
	
	if(cell > INVENTORY_MAX_NUM -1 || cell < 0)
		return;
	
	LPITEM item = ch->GetInventoryItem(cell);
	
	if(!item)
		return;
	
	ITEM_MANAGER::instance().RemoveItem(item);
}
Da Tao eine etwas komische variante Releast hatt mit einer quest habe ich mir gedacht mache ich das mal only C++ ist jezt auch nicht die beste Lösung aber so geht alles was ihr machen müsst Pythonside noch den slotauslesen lassen ( sollte bei Tao dabei sein ) und dann eine chatausgabe machen mit:

Code:
/deleteitem <slotindex>

viel spaß damit


.Kori
.K0rí is offline  
Thanks
11 Users
Old 10/22/2015, 00:16   #2
 
DasSchwarzeT's Avatar
 
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,938
Cool
Um das mit taos Release zu verknüpfen, einfach die Funktion von ihm ersetzen:
def DestroyItem(self, arg):

durch

Code:
	def DestroyItem(self, arg):
		net.SendChatPacket("/deleteitem %d" % (int(arg)))


		constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)
DasSchwarzeT is offline  
Thanks
2 Users
Old 10/22/2015, 00:18   #3
 
killernos's Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 95
Received Thanks: 24
Nice Nice
killernos is offline  
Thanks
1 User
Old 10/22/2015, 00:23   #4
 
Tuora's Avatar
 
elite*gold: 0
Join Date: Jun 2014
Posts: 1,045
Received Thanks: 955
Wusste das es in C++ nochmal releast wird danke
Tuora is offline  
Thanks
1 User
Old 10/22/2015, 00:24   #5
 
Kampfzwerg!'s Avatar
 
elite*gold: 0
Join Date: Feb 2015
Posts: 306
Received Thanks: 171
wie immer und kennt man nicht
anderes von dir cooles Release

schöne grüße

Kampfzwerg
Kampfzwerg! is offline  
Thanks
1 User
Old 10/22/2015, 01:23   #6
 
xCPx's Avatar
 
elite*gold: 20
Join Date: Jun 2011
Posts: 2,897
Received Thanks: 3,337
Sorry für die Korrektur, aber das hier:
Quote:
if(cell > INVENTORY_MAX_NUM -1 && cell < 0)
is falsch.
Da ergibt ein && keinen Sinn, sondern wenn dann || cell < 0
xCPx is offline  
Thanks
2 Users
Old 10/22/2015, 02:23   #7
 
DasSchwarzeT's Avatar
 
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,938
Quote:
Originally Posted by xCPx View Post
Sorry für die Korrektur, aber das hier:


is falsch.
Da ergibt ein && keinen Sinn, sondern wenn dann || cell < 0
Kann man eigentlich sowieso komplett weglassen, da
wie hier zu sehen ist

sowieso von der GetInventoryItem Funktion überprüft wird, ob es die Cell gibt.
DasSchwarzeT is offline  
Thanks
1 User
Old 10/22/2015, 10:56   #8
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
Da sieht man mal wieder wie schnell man "Lücken" im Source einbaut :3
Zumindest wenn man Coredowner als Lücke bezeichnet^^

Ich rate dringend dazu, das Ganze um ein paar weitere Abfragen zu erweitern:
Code:
if (!CanHandleItem())
	return false;

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

if (pkItem->isLocked())
	return false;

if (quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID()))
{
	if (pPC->IsRunning() && GetQuestItemPtr() == pkItem)
	{
		sys_err("cannot delete item that is used in quest");
		return false;
	}
}
Ansonsten könnte das Ganze sehr schnell missbraucht werden...^^

Kind Regards,
Lefloyd
Lefloyd is offline  
Thanks
2 Users
Old 10/22/2015, 11:39   #9
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
Sowas passiert nicht nur wenn "Kids Code kopieren" sondern auch wenn mans selbst macht und nicht an alles denkt, was durchaus passiert, wenn man anfängt sich mit einem solchen großen C++-Projekt zu beschäftigen. Naja du scheinst sowieso nur besserwisserischen Kram von dir geben zu wollen ohne Wissen zu teilen. PS: Das mit den 255 Elementen stimmt schon, macht andererseits aber keinen Unterschied - lieber mehr als weniger. 4 würden unter allen Bedingungen ausreichen, aber nicht jeder weiß wann er 4 und wann 255 nehmen sollte. Du solltest mal etwas darüber nachdenken mit wem du gerade redest und wenn du nicht mit demjenigen reden möchtest dann lass es anstatt so ein Schwachsinn zu posten.

Kind Regards,
Lefloyd
Lefloyd is offline  
Thanks
5 Users
Old 10/22/2015, 12:10   #10
 
elite*gold: 0
Join Date: Jan 2014
Posts: 268
Received Thanks: 373
Ich glaube, ich habe meine eigenen Vorstellungen davon, was nötig und was nicht nötig ist und ich glaube des Weiteren, dass diese nicht mit deinen Vorstellungen übereinstimmen. Ich verbinde was zusammengehört und trenne was eigenen Sinn hat; ich gruppiere nicht alles was geht, da das der Übersicht schaden würde. Aber ich denke in deiner Vorstellung ist das Einzige was Sinn macht, dass es kurz ist und funktioniert. Das ist nicht meine Vorstellung. Daher wird die Diskussion an dieser Stelle unnötig und ich beende sie daher jetzt auch. Wenn du meinst, dass du mit deinem Code-Stil weit kommst und große Projekte fehlerfrei realisieren kannst - dann tu das. Ich wünsche dir viel Glück dabei.

Kind Regards,
Lefloyd
Lefloyd is offline  
Thanks
7 Users
Old 10/22/2015, 12:25   #11
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,356
Quote:
Originally Posted by rrrrrrremix View Post
achja bin doch ein besser wisser muss noch hinzufügen 20 if abfragen hintereinander die bei true das selbe machen ist genau so behindert wie 255 elemente wenn man 4 braucht
kennst wohl nicht den logic or operator
Ist sein Programmierstil. Wird durch automatische Compiler Optimierungen sowieso zu einem Codepfad gemacht, egal ob er den Or-Operator benutzt oder nicht.
Mi4uric3 is offline  
Thanks
8 Users
Old 10/22/2015, 12:34   #12
 
elite*gold: 0
Join Date: Oct 2015
Posts: 4
Received Thanks: 3
Quote:
Originally Posted by Mi4uric3 View Post
Ist sein Programmierstil. Wird durch automatische Compiler Optimierungen sowieso zu einem Codepfad gemacht, egal ob er den Or-Operator benutzt oder nicht.
nicht jeder compiler benutzt die gleichen optimierungsmethoden
rrrrrrremix is offline  
Old 10/22/2015, 12:38   #13
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,356
Quote:
Originally Posted by rrrrrrremix View Post
nicht jeder compiler benutzt die gleichen optimierungsmethoden
Das ist so eine simple Optimierung, die kriegt jeder Compiler hin ;)
Zumal hier ja G++ für das Server-Projekt verwendet wird und der kann das definitiv.
Mi4uric3 is offline  
Thanks
2 Users
Old 10/22/2015, 12:50   #14
 
elite*gold: 0
Join Date: Oct 2015
Posts: 4
Received Thanks: 3
Quote:
Originally Posted by Mi4uric3 View Post
Das ist so eine simple Optimierung, die kriegt jeder Compiler hin ;)
Zumal hier ja G++ für das Server-Projekt verwendet wird und der kann das definitiv.
die gnu compiler schon aber ich denke das bezog sich eher auf's generelle coding und nicht nur auf den mt2 source
benutze unter windows zb ja nicht g++ bzw mingw
rrrrrrremix is offline  
Old 10/22/2015, 12:50   #15

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by rrrrrrremix View Post
hat alles den selben sinn: prüfen ob das item anderweitig genutzt wird
und hatte mit meinem coding stil bei großen projekten mehr als ein mal mindestens so viel erfolg wie ihr
kannst ja weiter rumjammern was für ein ***** ich bin aber du weißt dass ich recht habe
Eine Gruppierung:
Wenn (wert x > 0 und x < 123 ist) oder wert y == 987 ist, dann
return false

Zwei Gruppierungen:
Wenn wert x > 0 und x < 123 ist, dann
return false
Wenn wert y == 987 ist, dann
return false

Da finde ich es mit zwei Gruppierungen deutlich übersichtlicher
rollback is offline  
Thanks
1 User
Reply




All times are GMT +2. The time now is 15:31.


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.