Hier gibt es verschiedene Möglichkeiten. Ich bezweifle stark, dass die Funktion "party_get_member_pids" die Funktion ist, die nicht richtig funktioniert. Klär könntest du sie umschreiben, dass sie nicht mehr die Größe des Arrays zurückgibt, würde aber keinen Sinn machen, da du dann die gesamte Datenstruktur ändern müsstest, weil der Rückgabewert genau EIN integer ist, was du brauchst sind 2 Integer. Idealerweise wird, dass mit pair geregelt. Ich würde lieber die Stelle im Code suchen, wo der Wert tatsächlich zurückgegeben wird, den du im Spiel brauchst und dann diese Stelle verändern. Hast du die Stelle gefunden, kann Ich dir eventuell weiterhelfen. Oder du schaust auf
Hier gibt es verschiedene Möglichkeiten. Ich bezweifle stark, dass die Funktion "party_get_member_pids" die Funktion ist, die nicht richtig funktioniert. Klär könntest du sie umschreiben, dass sie nicht mehr die Größe des Arrays zurückgibt, würde aber keinen Sinn machen, da du dann die gesamte Datenstruktur ändern müsstest, weil der Rückgabewert genau EIN integer ist, was du brauchst sind 2 Integer. Idealerweise wird, dass mit pair geregelt. Ich würde lieber die Stelle im Code suchen, wo der Wert tatsächlich zurückgegeben wird, den du im Spiel brauchst und dann diese Stelle verändern. Hast du die Stelle gefunden, kann Ich dir eventuell weiterhelfen. Oder du schaust auf
Die Funktion ist ja richtig.Also zu Erklärung der Funktion sie gibt alle Ids der Spieler in der jeweiligen Gruppe zurück. Das tut sie aber nicht getrennt mit einem komma
Hab dir das mal umgeschrieben, damit dir das ganze ne Tabelle ausgibt.
Ist untested, sollte aber funktionieren ♥
Code:
int party_get_member_pids(lua_State *L)
{
CQuestManager & q = CQuestManager::instance();
LPCHARACTER ch = q.GetCurrentCharacterPtr();
LPPARTY pParty = ch->GetParty();
if (NULL == pParty)
{
return 0;
}
FPartyPIDCollector f;
pParty->ForEachOnMapMember(f, ch->GetMapIndex());
//erstellen einer lua Tabelle
lua_newtable(L);
//hier iterieren wir durch den vector
for(int i = 0; i < f.vecPIDs.size(); ++i) {
//pushen der zahl welche wir an einer stelle im array speichern wollen.
lua_pushnumber(L, f.vecPIDs[i]);
//Stack hat derzeit die Zahl im obersten Slot, die Tabelle ist im Slot darunter
//Tabelle liegt dementsprechend in Slot (-2)
//Popt das oberste Objekt und speichert es in die Tabelle mit dem Key (i)
lua_rawseti(L, -2, i);
}
// du returnst 1 lua Objekt -> deshalb returnen wir 1.
return 1;
}
Quote:
Originally Posted by info.student
Hier gibt es verschiedene Möglichkeiten. Ich bezweifle stark, dass die Funktion "party_get_member_pids" die Funktion ist, die nicht richtig funktioniert. Klär könntest du sie umschreiben, dass sie nicht mehr die Größe des Arrays zurückgibt, würde aber keinen Sinn machen, da du dann die gesamte Datenstruktur ändern müsstest, weil der Rückgabewert genau EIN integer ist, was du brauchst sind 2 Integer. Idealerweise wird, dass mit pair geregelt. Ich würde lieber die Stelle im Code suchen, wo der Wert tatsächlich zurückgegeben wird, den du im Spiel brauchst und dann diese Stelle verändern. Hast du die Stelle gefunden, kann Ich dir eventuell weiterhelfen. Oder du schaust auf
Muss dich da leider korrigieren.
Du solltest dich zuerst mit der lua c api außeinandersetzen bevor du hier Halbwahrheiten verbreitest. Das return am Ende der Funktion != der zurückgegebene Wert in LUA.
brudi die funktion gibt die anzahl nur an eine andere c++ funktion weiter
an die quest werden die pids weitergegeben, jedoch nicht als table (siehe das lua_pushnumber)
deswegen nutzt man es auch so: {party.get_member_pids()}
hätten die schlitzis mal besser machen können
ehhh in der realen welt nutzt man iteratoren für container klassen
Schön dich wiederzusehen Remix.
Damit hast du Recht, könnte das i natürlich auch einfach durch it-vec.begin() ersetzen, aber mir war da gerade nich danach.
(range based loops sind was tolles, aber erst ab c++11 implementiert -> großteil der leute hier <c++11)
Schön dich wiederzusehen Remix.
Damit hast du Recht, könnte das i natürlich auch einfach durch it-vec.begin() ersetzen, aber mir war da gerade nich danach.
Ahja. Klugscheißer mag keiner! ♥
bin nicht remix. er hat nen anderen undercover account
eben, besser mal C++ lernen, als hier andere Leute, die wirklich Ahnung haben, korrigieren zu wollen.
ich hoffe du meinst nicht dich
er hatte nämlich recht und in deinem post sind mehrere technische unwahrheiten
1. es ist kein array, es ist ein vector
2. müsste man nicht die datenstruktur ändern. im schlimmsten fall müsste man den rückgabetyp anpassen
3. braucht man nicht 2 integer sondern x (die anzahl der elemente im vector) integer bzw eine kette von integers (array, linked list, vector, o.ä)
std:: pair für eine pid liste?
ich bitte dich...
die klasse wird für 2 werte genutzt die zueinander gehören (z.B. zur unterschiedsberechnung oder sonst irgendne scheiße)
ich hoffe du meinst nicht dich
er hatte nämlich recht und in deinem post sind mehrere technische unwahrheiten
1. es ist kein array, es ist ein vector
2. müsste man nicht die datenstruktur ändern. im schlimmsten fall müsste man den rückgabetyp anpassen
3. braucht man nicht 2 integer sondern x (die anzahl der elemente im vector) integer bzw eine kette von integers (array, linked list, vector, o.ä)
std:: pair für eine pid liste?
ich bitte dich...
die klasse wird für 2 werte genutzt die zueinander gehören (z.B. zur unterschiedsberechnung oder sonst irgendne scheiße)
Also wird das so nicht Funktionieren wenn ich das jetzt richtig verstehe?
Das wird so ja nicht Funktionieren wenn die pids nicht durch Komma Zeichen getrennt werden, das ist ja sein Problem, wenn du sein Screen anguckst. Dann hast du nur ein eintrag in der Tabelle.
[Problem]Habe ein Problem und zwar spinnt mein VPC etwas(ohne Grund)?! 07/28/2011 - Metin2 Private Server - 10 Replies Also wie schon gesagt meins Server spinnt wodurch kiks usw. kommen :(
ich lade euch die Screens in den Anhang, mit der Hoffnung, dass ihr mir helfen könnt :) wäre echt sehr nice :)