|
You last visited: Today at 15:31
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.
10/22/2015, 00:16
|
#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
|
|
|
10/22/2015, 00:16
|
#2
|
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)
|
|
|
10/22/2015, 00:18
|
#3
|
elite*gold: 0
Join Date: Apr 2010
Posts: 95
Received Thanks: 24
|
Nice Nice
|
|
|
10/22/2015, 00:23
|
#4
|
elite*gold: 0
Join Date: Jun 2014
Posts: 1,045
Received Thanks: 955
|
Wusste das es in C++ nochmal releast wird danke
|
|
|
10/22/2015, 00:24
|
#5
|
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
|
|
|
10/22/2015, 01:23
|
#6
|
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
|
|
|
10/22/2015, 02:23
|
#7
|
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,938
|
Quote:
Originally Posted by xCPx
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.
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
10/22/2015, 12:25
|
#11
|
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,356
|
Quote:
Originally Posted by rrrrrrremix
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.
|
|
|
10/22/2015, 12:34
|
#12
|
elite*gold: 0
Join Date: Oct 2015
Posts: 4
Received Thanks: 3
|
Quote:
Originally Posted by Mi4uric3
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
|
|
|
10/22/2015, 12:38
|
#13
|
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,356
|
Quote:
Originally Posted by rrrrrrremix
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.
|
|
|
10/22/2015, 12:50
|
#14
|
elite*gold: 0
Join Date: Oct 2015
Posts: 4
Received Thanks: 3
|
Quote:
Originally Posted by Mi4uric3
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
|
|
|
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
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
|
|
|
All times are GMT +2. The time now is 15:31.
|
|