Was benutzt du xampp, wampp?
Bei xampp gibt es ein Controll pannel dort werden dir unten im Fenster Fehlermeldungen angezeigt.
Beiträge von [BE]axi92
-
-
Dieser funktioniert aber irgendwie nicht so ganz.
Nicht so ganz, musst du uns schon erklären und bau dir Debug Nachrichten ein dann kommst du deinen Fehler auf die Spur.
-
Zeig mal Jobhelp
-
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Lass das SDM und geh mit dem Hund' at line 1
Der fehler wird ausgelöst wenn jemand ingame das Zeichen " ' " schreibt, z.B.: "Na wie geht's?"
Da musst du das bevor du es an den Mysql server schickst damit escapen http://wiki.sa-mp.com/wiki/MySQL/R33#mysql_escape_string -
Gibts denn vergleichbare Spieler Zahlen bei MP Spielen? Das einzige was mir da einfällt wäre Planetside 2, da gehen bis zu 2000 Spieler auf einmal.
Um auf das zurück zu kommen ja, ETS2MP 4000 Spieler.
Wird aber nicht schön mit den FPS wenn dann 150 Spieler an einem Ort (Europort) sind. -
Nein in Zeile 6 kannst du im Chat "/blitzer add" schreiben somit hat er den speed parameter nicht da er ja nur optional ist gibt er da auch noch keine Meldung aus.
Kommst du dann aber zu Zeile 9 überprüft er ja das speed nochmal da aber nichts vorhanden ist gibt er dir das return aus.
-
[BE]axi92: Das ist ein optionaler Integer Parameter mit dem default Wert 0.
Wie kennzeichnet man das, dass er optional ist? Großbuchstabe?
Lösung:
War mit der Annahme richtig unterwegs hier zu finden in der Doku: https://github.com/Y-Less/sscanf/wiki/Optional-Specifiers -
D(0)
Das habe ich bei sscanf noch nicht gesehen was sagt das genau aus?
-
Danke für die Korrektur, stimmt sind ja auch nur Arrays^^
Aber bei den ganzen Programmiersprachen kommt man auch mal durcheinander
ocmd:blitzer(playerid, params[])
{
new speed, method[12];
if(sscanf(params, "s[12]i", method, speed)) return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [add] [Geschwindigkeit]");
if(!strcmp(method, "add", true))
{
SendClientMessage(playerid, Gelb, "Moin 1");
if(speed > 29 && speed < 151)
{
AddBlitzer(playerid, speed, 25);
}
}
else if(!strcmp(method, "remove", true))
{
return SendClientMessage(playerid, Gelb, "Moin 2");
}
return SendClientMessage(playerid, Rot, "Es gibt nur add oder remove.");
} -
Das kommt auf viele Faktoren an.
- Wo hast du den Server?
- Hast du ein Web basierendes Verwaltungssystem?
- Hast du FTP zugriff?
- Hast du SSH zugriff?
- Welches OS?
-
Ich habe die Klammern nur weggelassen weil ich dachte dann sparst du dir Zeilen.
Aber wenn du dich damit nicht so gut zurecht findest hier bitte mit klammern:
ocmd:blitzer(playerid, params[])
{
new speed, method[12];
if(sscanf(params, "s[12]i", method, speed)) return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [add] [Geschwindigkeit]");
if(method == "add") return
{
SendClientMessage(playerid, Gelb, "Moin 1");
if(speed > 29 && speed < 151)
{
AddBlitzer(playerid, speed, 25);
}
}
else if(method == "remove")
{
return SendClientMessage(playerid, Gelb, "Moin 2");
}
return SendClientMessage(playerid, Rot, "Es gibt nur add oder remove.");
} -
9/10 das einzige was mir nicht so gefällt ist der Vorbau beim Eingang da fehlt mir etwas Kontrast.
-
Ich hätte den Befehl anders aufgebaut, nur ein Vorschlag:
ocmd:blitzer(playerid, params[])
{
new speed, method[12];
if(sscanf(params, "si", method, speed)) return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [add] [Geschwindigkeit]");
if(method == "add") return SendClientMessage(playerid, Gelb, "Moin 1");
else if(method == "remove") return SendClientMessage(playerid, Gelb, "Moin 2");
return SendClientMessage(playerid, Rot, "Es gibt nur add oder remove.");
}Ungetestet
-
Nicht gleich übertreiben^^ (ban, kick)
Wenn das Geld nicht mehr übereinstimmt updatest du dem Client seine anzeige einfach.
Es muss auch kein Cheater sein da das PNS und Kasino dem Client Geld abzieht der Server davon aber nichts weiß.Außerdem würde ich dir vorschlagen foreach zu benutzen da er da von Grund auf nur die Spieler durchgeht die online sind: http://forum.sa-mp.com/showthread.php?t=481877
Einmal pro sekunde checken lassen und fertig =)
public Abfragen()
{
foreach (new i : Player)
{
if(sInfo[i][eingeloggt] == 0) continue;
if(sInfo[i][pGeld] == GetPlayerMoney(i)) continue;
else
{
new string1[128], name[25], betrag;
betrag = GetPlayerMoney(i) - sInfo[i][pGeld];
SetPlayerMoney(i,sInfo[i][pGeld]);
GetPlayerName(i,name,sizeof(name));
format(string1,sizeof(string1),"** ADMINSYTEM: %s ist unter Moneyhack verdacht. Betrag: $%i",name,betrag);
sendToAdmin(2,string1);
}
}
return 1;
}stock SetPlayerMoney(playerid, money)
{
ResetPlayerMoney(playerid);
return GivePlayerMoney(playerid,money);
} -
Ja schon jedoch ist es im Entwicklungsprozess einfacher als dann das vorhandene komplett zu ändern.
Beispiele:- banlog (bei uns gibt es eine "active" spalte nur bei einer 1 ist der bann noch aktiv
- log (enthällt sehr viele Spalten und auch Datensätze, alle auslesen daher nicht möglich auch die Filtermethoden müssten angepasst werden)
- users (um die 100 Spalten mit Informationen über den Account)
um nur einige zu nennen.
Ich persönlich mache mir da lieber mein eigenes da ich weiß was ich dann gemacht habe, bei Fremden Sachen muss man sich erst einlesen wie derjenige coded.
Von möglichen Sicherheitslücken beginne ich erst gar nicht. -
Möglicherweise teilst du die Behebung des Fehlers auch mit uns?
-
Ich würde immer eines selbst machen aus dem einfachen Grund das ich in der Lage dazu bin.
Wer nicht in der Lage ist muss sich eines kaufen.Das es nicht anpassungsfähig ist ist keine Begründung man kann alles anpassen^^
Was mich nur ein wenig skeptisch macht das gekaufte CP kann ja nie mit jeder Datenbank kooperieren...? -
-
Wenn du die Wantedliste am Server meinst gar nicht weil nur das was du siehst sieht auch die API im Normalfall. Außer der Server hat eine WebAPI aber das denke ich mal nicht.
Wenn du die wantedliste ingame anzeigst bringt es ja nicht das auch noch imm Overlay anzuzeigen oder?
Wenn schon dann mit Regex das rausfiltern was du brauchst. -
Hier das meinte er da hast du die berechnung drinnen
stock SetArrowPos(playerid,vehicleid,objectid,Float:X, Float:Y){
new Float: Pos[3];
GetVehiclePos(vehicleid, Pos[0], Pos[1],Pos[2]);
return AttachPlayerObjectToVehicle(playerid,objectid, vehicleid, 0.0, 0.0, 1.5, 0.0, 90.0, (90 - atan2(Pos[0] - X, Pos[1] - Y)));
}