Ja, aber dann bekomme ich nur die Kapazität von Skins[] und nicht wie groß das zweite Array ist.
Beiträge von #save
-
-
Guten Morgen,
ich habe ein Problem: Ich kann bei einem mehrdimensionellen Array kein sizeof anwenden.
Beispiel:
if (GetPVarInt(playerid, "SkinSelect") == sizeof(Skins[GetPVarInt(playerid, "playertype")]))Dies ergibt folgende Meldung:
CodeC:\xxx\gamemodes\dmserver.pwn(2362) : error 001: expected token: "]", but found "-identifier-" C:\xxx\gamemodes\dmserver.pwn(2362) : error 001: expected token: ";", but found "]" C:\xxx\gamemodes\dmserver.pwn(2362) : error 029: invalid expression, assumed zero C:\xxx\gamemodes\dmserver.pwn(2362) : fatal error 107: too many error messages on one line
Der Fehler liegt bei dir if- Abfrage. Ich möchte wissen, wie groß die Kapazität des mehrdimensionellen Array nach Skins[] ist.
-
Oh ja, sorry. Das habe ich ganz übersehen.
public AntiMoneyHack()
{
new playername[MAX_PLAYER_NAME], string[256];
for (new i = 0; i <= MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i) && GetPVarInt(i, "loggedin") == 1)
{
GetPlayerName(i, playername, sizeof(playername));
if (GetPVarInt(i, "money") < GetPlayerMoney(i))
{
format(string, sizeof(string), "%s wurde vom Server gebannt, Grund: Moneyhack", playername);
SendClientMessageToAll(darkred, string);format(string, sizeof(string), "[Ban] System >> Dauer: permanent - Grund: Moneyhack (Datenbank Geld: $%d Dollar | In-Game Geld: $%d Dollar)", GetPVarInt(i, "money"), GetPlayerMoney(i), playername);
InsertUserHistory(GetUserID(playername), string);
BanUser(0, GetUserID(playername), 0, "Moneyhack");
}
else
{
SetPlayerMoney(i, GetPlayerMoney(i));
}
}
}
} -
Guten Abend,
da mein DM Script in der letzten Zeit des öfteren abgestürzt ist und jetzt gerade ebenfalls, möchte ich euch noch zusätzlich um Rat bitten bzw. mir Tipps zu geben an was es genau liegen könnte.
Der Crasdetector bringt folgende Errors beim Absturz:
Code
Alles anzeigen[19:52:31] [chat] [Mr_Brox]: Boote und Helis wirds auch noch geben [19:52:31] [debug] Server crashed while executing dmscript.amx [19:52:31] [debug] AMX backtrace: [19:52:31] [debug] #0 00053be0 in ?? () from dmscript.amx [19:52:31] [debug] #1 0005c0fc in ?? () from dmscript.amx [19:52:31] [debug] #2 0004e93c in public AntiMoneyHack () from dmscript.amx [19:52:31] [debug] System backtrace: [19:52:31] [debug] #0 00356f41 in _ZN10StackTraceC1EPv () from plugins/crashdetect.so [19:52:31] [debug] #1 0034d41f in _ZN11crashdetect20PrintSystemBacktraceEPv () from plugins/crashdetect.so [19:52:31] [debug] #2 0034b963 in _ZN11crashdetect15SystemExceptionEPv () from plugins/crashdetect.so [19:52:31] [debug] #3 003563c1 in ?? () from plugins/crashdetect.so [19:52:31] [debug] #4 00d75600 in ?? () [19:52:31] [debug] #5 00183e15 in ?? () from /lib32/libc.so.6 [19:52:31] [debug] #6 0026cd9b in _Z9SetStringP6tagAMXiPKc () from plugins/mysql.so [19:52:31] [debug] #7 00270701 in _ZN7Natives19n_mysql_fetch_fieldEP6tagAMXPi () from plugins/mysql.so [19:52:31] [debug] #8 0035ba33 in amx_Exec () from plugins/crashdetect.so [19:52:31] [debug] #9 0034c622 in _ZN11crashdetect9DoAmxExecEPii () from plugins/crashdetect.so [19:52:31] [debug] #10 00354699 in ?? () from plugins/crashdetect.so [19:52:31] [debug] #11 080e5eb5 in ?? () from ./samp03svr [19:52:31] [debug] #12 080ad78b in ?? () from ./samp03svr [19:52:31] [debug] #13 080a8fb3 in ?? () from ./samp03svr [19:52:31] [debug] #14 00126ca6 in __libc_start_main () from /lib32/libc.so.6 [19:52:31] [debug] #15 0804b491 in ?? () from ./samp03svr
Vorhandene Serverplugins:
CodeMySQL Plugin von StrickenKid Streamer von Icognito (wenn ich das richtig geschrieben habe) SSCANF Plugin Crashdetector
Zusätzliche Serverinformationen:
Meines Erachtens liegt dies nicht an meinem Script sondern an der Library libc.so.6 in lib32. Oder wie seht ihr das ?
//Edit: Server stürzt andauernt ab...
-
Muss gehen, zeig mir deinen aktuellen Quellcode.
-
Unter mysql_query(); muss noch ein mysql_store_result(); hin.
-
Ich habe mir mal den Server überwacht und er war nicht wirklich ausgelastet. (Über htop) Was mir aber neulich mal aufgefallen ist das bei einer OneHit Sniper der Server abstürzen kann.
Beispiel:
Ich habe eine Sniper -> Ich schieße auf einen Spieler -> Server stürzt abHatte damit jemand schonmal Erfahrungen gehabt ? Ich gucke derzeit ob es nur an der Sniper lag das der Server abgeschmiert ist. Desweiteren werde ich mir mal das Tutorial von Cambell anschauen, da es mir auf den ersten Blick ziemlich gut gefallen hat.
-
Und das kann alles einen Serverabsturz verursachen ? Könnte das etwas ändern wenn der MySQL Server nicht mehr extern läuft sondern direkt über localhost ?
-
Guten Tag,
jeder kennt doch die Godfather Edits. Dort ist es doch immer so das die Stats die sich ein Spieler im Spiel erarbeitet erst gespeichert werden, wenn dieser sich ausloggt. Oder z.B. alle 45 Minuten zusätlich noch gespeichert werden. Als ich mal wieder ein bisschen angefangen habe zu scripten, dachte ich mir wieso ich das nicht gleich so mache das alles was der Spieler In-Game macht direkt in der MySQL Datenbank abgespeichert wird.
Ich merke aber bei mir privat zu Hause immer, dass das Script langsamer wird. Lade ich meinen DM Server auf einen V-Server hoch von mir, läuft das ganze schon schneller. Jedoch merke ich, dass das Script sich einfach mal beendet. Ich versuche derzeit den Fehler zu finden oder herauszufinden wo genau das immer auftritt. Es ist aber immer unterschiedlich (ohne eine bestimmte Aktion durchzuführen).
Ich denke immer das wenn ich alles was sich der Spieler In-Game erarbeitet direkt abgespeichert wird, dass dies eventuell ein Problem sein könnte. Ich habe derzeit den MySQL Server extern laufen, da ich die Probleme mit dem MySQL Plugin von StrickenKid habe das ich nicht über localhost auf einem Linux V-Server connecten kann (wer hierfür eine Lösung hat, soll mich bitte kontaktieren. An diesem Problem verzweifle ich langsam).
Kann mein Vorhaben eventuell mal zu Problemen führen oder kann sogar dies der Auslöser für mehrere Serverabstürze sein ?
Eure Meinung ist mir ziemlich wichtig, da ich vielleicht da wieder ansetzen kann.
-
Es ist exakt so wie das Codebeispiel oben. Nur das ich mich mit dem Integer und dem String vertan habe wie Cambell schon sagte.
-
Die for- Schleife ist nur ein Beispiel. Egal wie, eine for- Schleife hält das Skript so zu sagen an und führt nichts mehr aus was nach der for- Schleife kommt. Darum geht es mir.
-
Das ergibt natürlich keinen Sinn weil ich es schnell auf meinem Laptop geschrieben habe, da ich an mein Selfmade nicht rankam. Warum sollte ich dem Spieler eine Nachricht senden welche ID's die Autos haben Aber gut, das kann natürlich auch keiner wissen
Aber würde ich diesen Befehl ausführen, bringt er mir "SERVER: Unknown Command". Um alles andere auszuschließen habe ich halt nur die for- Schleife in den Befehl eingebaut und nicht mehr. Bevor ihr irgendwo anders ansetzt. Ich verstehe nämlich den Fehler garnicht.
#Push - Da das Problem noch nicht gelöst wurde.
-
Guten Abend,
ich habe ein sehr großes Problem. Ich muss in ocmd ein paar Befehle erstellen in denen ich eine for- Schleife ausführe in der MAX_VEHICLES der Maximalwert ist. Das Problem bei diesen Befehlen ist, sie werden garnicht ausgeführt und bringen die Meldung "SERVER: Unknown Command".
So sieht jetzt mein Command aus:
ocmd:test (playerid, params[])
{
for (new i = 0; i <= MAX_VEHICLES; i++)
{
SendClientMessage(playerid, grey, i);
}
return 1;
}Wenn ich das ganze aber umändere in:
ocmd:test (playerid, params[])
{
for (new i = 0; i <= MAX_PLAYERS; i++)
{
SendClientMessage(playerid, grey, i);
}
return 1;
}
Wird der Befehl mir ausgeführt und er bringt alle 250 Spieler ID's in den Chat.Ich habe schon einmal daran gedacht das vielleicht MAX_VEHICLES einen sehr hohen Wert hat. Aber wenn ich einfach MAX_VEHICLES durch 2 austausche, dann bringt er mir auch SERVER: Unknown Command.
Ist derzeit ein richtiges Problem für.
Vielen Dank im Voraus.
-
Jetzt wo du es sagst, er meint zwar seine Tastatur ist sauber aber mir ist jetzt auch was eingefallen. Vielleicht werden diese Tasten durch eine Flüssigkeit oder durch etwas anderes mit hinunter gedrückt. Er hat auch einen kleinen Bruder der am PC ist und das könnte alles möglich sein
Er meint die ist sauber, ich glaube es noch nicht so wirklich. Danke für deine Hilfe.
@Apple_5g: Das hatte ich auch vermutet aber er hat nichts offen. Ging ja noch bis vor kurzem.
-
Guten Tag,
der Titel hört sich ein bisschen anders an wie es eigentlich gemeint ist. Ich schreibe hier für einen Freund da ich ihm nicht helfen kann und er hier ja nicht schreiben kann wegen seinem Problem. Ich versuche es euch mal zu erklären (schonmal im Voraus: Es liegt nicht an einer kaputten Tastatur - weis auch nicht was er gemacht hat. Wie kann man nur so viele Probleme haben Wenn er z.B. den Buchstaben "t" eingibt, kommt in den Chat/Word/TeamSpeak 3 Client/ICQ/Skype wie auch immer statt einem "t" z.B. "tr#". Warum das so ist, kann sich irgendwie keiner erklären. Aus einem "a" wird dann z.B. "aed".
Genauer kann ich es selber nicht erklären da, ich ihn nicht persönlich kenne und ich auch nicht das auf seinem PC gesehen hat. Ich gebe ihm aber den Link dieses Threads und werde auch für ihn antworten, da er wie gesagt nicht schreiben kann
Danke schonmal im Voraus
-
dcmd_frakmats(playerid, params[])
{
new mats, frak, preis;
if(PlayerInfo[playerid][pMember] > 0)
{
frak = PlayerInfo[playerid][pMember];
}
else if(PlayerInfo[playerid][pLeader] > 0)
{
frak = PlayerInfo[playerid][pLeader];
}
if(frak != 5 && frak != 6 && frak != 12 && frak != 13 && frak != 14 && frak != 16 && frak != 17 && frak != 19 && frak != 20 && frak != 23)
{
SendClientMessage(playerid, COLOR_GRAD1, "Du bist in keiner Gang / Mafia!");
return 1;
}
if(!IsPlayerInRangeOfPoint(playerid, 8.0, 2805.0444,-1434.0425,40.0484))
{
SendClientMessage(playerid, COLOR_GRAD1, "Du kannst hier keine Fraktions-Materialien kaufen!");
return 1;
}
if(sscanf(params, "d", mats))
{
SendClientMessage(playerid, COLOR_GRAD1, "Benutzung: /frakmats [Anzahl]");
SendClientMessage(playerid, COLOR_GRAD1, "*Du kannst maximal 500 Fraktions-Materialien mit dir nehmen.");
SendClientMessage(playerid, COLOR_GRAD1, "*1 Fraktions-Material kostet 10$.");
return 1;
}
if(mats > 500)
{
SendClientMessage(playerid, COLOR_GRAD1, "Du kannst maximal 500 Fraktions-Materialien kaufen!");
return 1;
}
if (mats < 0)
{
SendClientMessage(playerid, COLOR_GRAD1, "Du musst mindestens 1 Material kaufen.");
return 1;
}
if(FrakMatsHolding[playerid] + mats > 500)
{
SendClientMessage(playerid, COLOR_GRAD1, "So viele Fraktions-Materialien könntest du nicht mit dir tragen!");
return 1;
}
preis = mats * 10;
GivePlayerMoney(playerid, -preis);
FrakMatsHolding[playerid] += mats;
format(ALLSTRING, sizeof(ALLSTRING), "*Du hast %d Fraktions-Materialien für %d$ gekauft. Bringe sie nun zur Fraktionskammer!", mats, preis);
SendClientMessage(playerid, COLOR_LIGHTBLUE, ALLSTRING);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Solltest du reloggen / sterben verlierst du die Materialien wieder!");
return 1;
}Zeile 34 ist es
-
Minus Zahlen sind immer kleiner als 0. Wenn als mats kleiner als 0 ist, wurde eine Minus Zahl angegeben. Somit habe ich dir die Überprüfung gebaut.
-
Your answer = Fail²
Jo sorry, hast recht, sehe ich auch gerade was ich für einen Mist geschrieben habe
@Thema: Mir ist gerade aufgefallen das du ein "ä" im Pfad drinnen hast. Ersetze dies mal durch ae. Ändere das im Ordner auch. In HTML ist es ebenfalls so das man z. B. keine Bilder laden kann die ein "ä, ö oder ü" im Dateinamen haben.
-
Das ganze kannst du mit AddPlayerClass verwirklichen.
http://wiki.sa-mp.com/wiki/AddPlayerClass -
Bau eine Überprüfung ein ob der Parameter im Minus ist. So in etwa:
if (mats < 0)
{
// richtig
}
else
{
// im Minus Bereich
}