Hilfreich wäre es wenn du uns deine Query zeigst, in der du HelferList aufrufst.
Dazu solltest du dir mal die Variable rows printen, um sicherzustellen, dass wirklich keine Helfer gefunden wurden.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Hilfreich wäre es wenn du uns deine Query zeigst, in der du HelferList aufrufst.
Dazu solltest du dir mal die Variable rows printen, um sicherzustellen, dass wirklich keine Helfer gefunden wurden.Danke, das Problem hat sich gelöst. Ich hatte einen Fehler im Befehl.
MfG und schönen Sonntag
Allrounder18
-
Hilfreich wäre es wenn du uns deine Query zeigst, in der du HelferList aufrufst.
Dazu solltest du dir mal die Variable rows printen, um sicherzustellen, dass wirklich keine Helfer gefunden wurden.Danke, das Problem hat sich gelöst. Ich hatte einen Fehler im Befehl.
MfG und schönen Sonntag
Allrounder18
Edit:
Moin, wie kann ich es am ebsten machen, dass mir die Member pro Fraktion angezeigt werden?
So habe ich es momentan, jedoch werde ich dann mehrmals angezeigt und sonst keiner.
Codemysql_tquery(handle,"SELECT RPName, Rang FROM `accounts` WHERE `Fraktion` = Fraktion order by Rang DESC", "MemberList", "i", playerid);
Was müsste ich da ändern?Code
Alles anzeigenpublic MemberList(playerid) { new string[700] = "{FFFFFF}Rang\t{FFFFFF}Name",frakrangtag[50],rows; cache_get_row_count(rows); for(new i; i<rows; i++) { new name[MAX_PLAYER_NAME]; cache_get_value_name(i,"RangTag",frakrangtag,sizeof(frakrangtag)); cache_get_value_name(i,"RPName",name,sizeof(name)); format(string, sizeof(string), "%s\n%s\t%s",string, GetFraktionsRangTag(playerid), RemoveUnderscore(SpielerDaten[playerid][player_RPName])); } ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}Austrian Roleplay {FFFFFF}- Frakmitglieder",string,"{FFFFFF}Abbrechen",""); return 1; }
MfG
-
In Zeile 10 gibst du auch immer nur deine eigenen Daten an:
format(string, sizeof(string), "%s\n%s\t%s",string, GetFraktionsRangTag(playerid), RemoveUnderscore(SpielerDaten[playerid][player_RPName]));Ändere dies zu:
format(string, sizeof(string), "%s\n%s\t%s",string, frakrangtag,name); -
Danke, jetzt wird der FrakRangTag nicht mehr angezeigt. und Bem RP Namen wird der UnderScore angezeigt.
-
Ist RangTag denn die richtige Spalte aus der Datenbank?
Um den Underscore zu entfernen kannst du es einfach so ändern:
format(string, sizeof(string), "%s\n%s\t%s",string, frakrangtag, RemoveUnderscore(name)); -
Ich habe RangTag1 - 12 in der DB. Das mit dem Namen funktioiert jetzt.
Edit:
So fnktioniert es, das derRang angezeigt wird und alle Member dieser Fraktion angezeigt werden.
Codeformat(string, sizeof(string), "%s\n%s\t%s",string, GetFraktionsRangTag(playerid), RemoveUnderscore(name));
Momentan werden mir die selben User angezeigt egal in welcher Fraktion ich bin. Wie mache ich, dass wen ich in Fraktio 1 bin nur ich angezeigt werde und nicht die anderen aus der anderen Fraktio auch noch?
Also ich meine, wen ich in Fraktion 1 bin sollten mir die Member der Fraktion 1 oder wen ich in Fraktion 2 bin sollten die Member der Fraktion 2 angezeigt werden, etc. -
Deine MySQL Query ist falsch. Dazu lädst du nun wieder jedes mal nur den RangTag von dir selber.
Die MySQL Query solltest du so ändern:
new query[256];
mysql_format(handle,query,sizeof(query),"SELECT RPName, RangTag, Rang FROM `accounts` WHERE `Fraktion` = %d ORDER BY Rang DESC", fraktionid);
mysql_tquery(handle, query, "MemberList", "i", playerid);
Die Variable fraktionid musst du dann eben selbst in deinem Code anpassen, damit es die richtige Fraktionsid ist. -
Deine MySQL Query ist falsch. Dazu lädst du nun wieder jedes mal nur den RangTag von dir selber.
Die MySQL Query solltest du so ändern:
new query[256];mysql_format(handle,query,sizeof(query),"SELECT RPName, RangTag, Rang FROM `accounts` WHERE `Fraktion` = %d ORDER BY Rang DESC", fraktionid);mysql_tquery(handle, query, "MemberList", "i", playerid);
Die Variable fraktionid musst du dann eben selbst in deinem Code anpassen, damit es die richtige Fraktionsid ist.Wenn ich es so mache, dann funktoniert der Befehl garnicht, wenn ich RangTag rausnehme gehts.
Worann leigt es, dass ich rst den Server restarten muss wen ich mich auf den Rang gesetzt habe um mich in der jeweiligen Memberliste zu sehen? Mit RangTag kanns auch net funktionieren, da dis in einer andern Tabelle steht.
Was muss ich dann machen? -
Hi,
Codeocmd:tp(playerid,params[]) { new float:piX, float:piY, float:piZ; SetPlayerPos(playerid,piX,piY,piZ); return 1; }
Will mich zu bestimmten stellen teleportieren, habe so etwas nie gemacht.
soll ungefähr so sein /tp 1000 1500 13 (Sind irgendwelche Koordinaten)
Wie füge ich der Float piX die erste Zahl zu usw. ? -
-
Also ich habe mein Command so gemacht @BrightLeaN
C
Alles anzeigenocmd:tp(playerid, params[]) { new PoS[3], string[128]; if(sscanf(params, "fffdd", PoS[0], PoS[1], PoS[2]))return SendClientMessage(playerid, COLOR_WHITE, "/tp [Float-X] [Float-Y] [Float-Z]"); new vID = GetPlayerVehicleID(playerid); if(IsPlayerInAnyVehicle(playerid)) { for(new i=0;i<GetMaxPlayers();i++) { if(IsPlayerConnected(i) && Spieler[i][pLoggedIn]) { if(GetPlayerVehicleID(i) == vID) { new Seat = GetPlayerVehicleSeat(i); SetVehiclePos(vID, PoS[0], PoS[1], PoS[2]); PutPlayerInVehicleEx(i, vID, Seat); if(IsTrailerAttachedToVehicle(vID)) { new trID = GetVehicleTrailer(vID); SetVehiclePos(trID, PoS[0], PoS[1], PoS[2]); AttachTrailerToVehicle(trID, vID); } } } } } else { new string[128]; format(string, sizeof(string), "{33CCFF}Position: X: %f Y: %f Z: %f", PoS[0], PoS[1], PoS[2]); SendClientMessage(playerid, COLOR_WHITE, string); SetPlayerPos(playerid, PoS[0], PoS[1], PoS[2]); } return 1; }
-
if(sscanf(params, "fffdd", PoS[0], PoS[1], PoS[2]))return SendClientMessage(playerid, COLOR_WHITE, "/tp [Float-X] [Float-Y] [Float-Z]");
Diese Zeile solltest du in folgendes ändern:
if(sscanf(params, "fff", PoS[0], PoS[1], PoS[2]))return SendClientMessage(playerid, COLOR_WHITE, "/tp [Float-X] [Float-Y] [Float-Z]");
Die 2 d's bei den Parametern sind unnötig, da du als 4. und 5. Parameter keinen Integer angibst.
Dazu solltest du auch die Variable PoS mit Float: als Float deklarieren. -
Diese Zeile solltest du in folgendes ändern:if(sscanf(params, "fff", PoS[0], PoS[1], PoS[2]))return SendClientMessage(playerid, COLOR_WHITE, "/tp [Float-X] [Float-Y] [Float-Z]");
Die 2 d's bei den Parametern sind unnötig, da du als 4. und 5. Parameter keinen Integer angibst.
Dazu solltest du auch die Variable PoS mit Float: als Float deklarieren.Jo habe ich verpasst habe ich aber geändert gehabt
Danke für die anpassung! -
-
Du ermittelst auch nicht wirklich den Gewinner.
if(PlayerInfo[i][EventKills] > PlayerInfo[i][EventKills]) Player = i;
Hier überprüfst du nur ob der Spieler mehr Kills hat als er selber.
Das ist niemals der Fall, somit bleibt die Variable "Player" auch immer 0. -
Wie ermittle ich denn sonst die höchste Killzahl?
-
In dem du den Killwert zwischenspeicherst und mit dem nächsten Spieler vergleichst.
Ist der nächste höher überschreibst du den zwischengespeicherten Wert.Am Ende (der Schleife) hast du dann den richtigen Wert.
-
Malhzeit, sobald ich meinen Server starte und auf den Server gehe kommt weder ein Loginfenster noch ein Registerfenster. In den Logs kommt auch keine Fehlermeldung vor, um schnelle Hilfe würde ich mich freuen.
-
Ohne Informationen über das Script und komplett ohne Code können wir dir schlecht helfen.
Zeig uns mal deinen Code in: OnPlayerConnect, OnPlayerSpawn, OnPlayerDialogResponse
Am besten nur die Teile, die auch mit dem Login/Register zu tun haben. -
Hi sobald ich diesen code hinzu füge erscheint dieser fehler in den Serverlogs:
So geht alles.
stock Log(log[], text[])
{
new query[256];
getdate(jahr,monat,tag);
gettime(stunde,minute,sekunde);
format(query,sizeof(query),"INSERT INTO `"#SQL_TAG"_logs` (`Aktion`,`Text`,`Datum`,`Uhrzeit`) VALUES ('%s','%s','%04d-%02d-%02d','%02d:%02d:%02d')",log,text,jahr,monat,tag,stunde,minute,sekunde);
mysql_function_query(MySqlConnection,query,false,"","");
return true;
}Sobald ich es so mache erscheint ein fehler:
[13:47:53] [debug] Run time error 4: "Array index out of bounds"
[13:47:53] [debug] Attempted to read/write array element at index 128 in array of size 128
[13:47:53] [debug] AMX backtrace:
[13:47:53] [debug] #0 00012a18 in ?? (24222384) in my.amx
[13:47:53] [debug] #1 00012340 in ?? (23727264, 1, 23727284, 24222384, 1, 0, 1, 1, 0, 0, ... <2 more arguments>) in my.amx
[13:47:53] [debug] #2 0061cfb0 in ?? (19675608, 24224852) in my.amx
[13:47:53] [debug] #3 0019a420 in public SSCANF_OnPlayerConnect (21) in my.amx
[13:47:53] [debug] #4 native CallLocalFunction () in samp03svr
[13:47:53] [debug] #5 0000c770 in public Itter_OnPlayerConnect (21) in my.amx
[13:47:53] [debug] #6 0000b5f8 in public OnPlayerConnect (21) in my.amx
[13:48:12] [debug] Run time error 4: "Array index out of bounds"
[13:48:12] [debug] Attempted to read/write array element at index 128 in array of size 128
[13:48:12] [debug] AMX backtrace:
[13:48:12] [debug] #0 000129cc in ?? (24220476) in my.amx
[13:48:12] [debug] #1 00012340 in ?? (23727264, 1, 23727284, 24220476, 1, 0, 1, 1, 0, 0, ... <2 more arguments>) in my.amx
[13:48:12] [debug] #2 0061cfb0 in ?? (23620912, 24222944) in my.amx
[13:48:12] [debug] #3 005d94f8 in public LoadAccount (21, 23885528, 0) in my.amxLoadAccount da wird halt gelogt das man sich eingeloggt. doch da in im stock log Wbb_addPost benutze kommt dieser fehler warum weißt ich nicht so siehtes aus wo es geloggt wird.
Log("Login, Admin",stringlogin);
stock Log(log[], text[])
{
new query[256],string[356];
getdate(jahr,monat,tag);
gettime(stunde,minute,sekunde);
format(query,sizeof(query),"INSERT INTO `"#SQL_TAG"_logs` (`Aktion`,`Text`,`Datum`,`Uhrzeit`) VALUES ('%s','%s','%04d-%02d-%02d','%02d:%02d:%02d')",log,text,jahr,monat,tag,stunde,minute,sekunde);
mysql_function_query(MySqlConnection,query,false,"","");
format(string,sizeof(string),"%s, %s , %04i-%02i-%02i , %02i:%02i:%02i ",log,text,jahr,monat,tag,stunde,minute,sekunde);
WBB_AddPost("Server Log", 1, "Server Log:", string, 1, 0, 1, 1, 0, 0, 0, 1);
return true;
}