Erstelle das Menü nicht in der Schleife, bei /auftrage...dort wird das ja öfter aufgerufen.
Das IsUniqueMenue brauchst du auch nicht.
Füge einfach den Punkt vom Menü unter AddAuftrag hinzu.
Erstelle das Menü nicht in der Schleife, bei /auftrage...dort wird das ja öfter aufgerufen.
Das IsUniqueMenue brauchst du auch nicht.
Füge einfach den Punkt vom Menü unter AddAuftrag hinzu.
da ich mir unsicher bin ob solche Systeme so überhaupt funktionieren können.
Oh ja, das tuen sie, sei unbesorgt ![]()
Ich logge bereits alles, schaut es euch bitte an:
Das ist nicht einmal im Ansatz "alles" xD
Zeile 13 zu return 0;
Ausgenommen SQL Injection, WBB 5.2 ist gehe ich mal stark davon aus, gegen SQLI geschützt
Es gibt so krasse SQL-Injections oder generell Cross-Site-Scripting, davor ist nicht mal google geschützt.
Gibt da immer wieder mal 0-Day Exploits, die publiziert und verbreitet werden von Forschern ![]()
Nur mal aus reiner Neugier gefragt, verwendet ihr Captchas zum Registrieren?
Aber der User der die Seite anzeigt, hat ja nicht die gleiche rechte wie ein normaler.
Das funktioniert anders.
Du startest ja deinen Webserver, und die rechte, die dieser Webserver hat, diese Rechte hat das PHP Skript.
Das ist unabhängig vom User, der da iwas auf der Seite macht, es geht einzig und alleine um den Prozess, wie z.B. apache gestartet wurde. (also z.B. von welchem User dieser Prozess gestartet wurde. Wurde apache von einem root user gestartet, hat auch das PHP Skript root rechte)
Wenn nicht genügend rechte vorhanden sind, um ein .sh Skript auszuführen, kannst du natürlich diese Rechte anpassen.
Entweder über einen zusätzlichen command oder über eine separate ssh connection.
muss aber trotzdem über ssh2_connect eine Verbindung aufbauen, richtig ?
Wenn die PHP Datei auf dem selben Server liegt wie die .sh Datei, dann musst du das natürlich nicht, weil du bist ja schon auf dem Server ![]()
Musst halt nur den richtigen Pfad dann angeben.
Also um sowas zu realisieren, je nachdem ob das Skript einen Wert zurückgibt oder nicht, kannst du das so machen:
Kann man eventuell den Benutzer so einschränken, dass der nur eine Datei ausführen darf ?
Kannst ja angeben, welche Datei nur ausgeführt werden darf und ob der User die Rechte dafür hat.
Kannst du ja alles über PHP absichern, da das ja eh server site ist.
https://forum.sa-mp.com/showthread.php?t=339691
| Rare | 0x00746929 OR 0x0081214A | Badly configured client side setting. |
Solution: https://wiki.sa-mp.com/wiki/Co…th_SA:MP_it_won.27t_start
for(new i=1;i<MAX_SLOTS;i++)
Wieso startest du manchmal deine Schleife bei 1?
FindClosestVeh(playerid)
Das findet dir nicht das nähste Vehicle, sondern, dass das den niedrigeren Index hat, wenn beide nur 3 SA-Einheiten von dir entfernt sind.
Also die Idee ist ja gut und schön. Schöner hätte ich es gefunden, wenn du die Funktionalität von deinem System etwas mehr ausgelagert hättest, so dass man es direkt als Include nutzen könnte.
So ist das jetzt natürlich schwer, weil du alles zusammengewurschtelt hast, das macht den Code nicht nur unübersichtlicher, sondern auch natürlich jetzt schwerer Fehler zu finden.
i2 wurde in diesen Script nicht definiert hat jemand eine ahnung wie ich das definieren soll?
Vermutlich sowas wie:
new i2 = GetPlayerVirtualWorld(playerid);
würde es nicht klappen wenn du so machst?
Nein, in SA:MP können so nur zahlen verglichen werden. (Ja, chars sind auch Zahlen und mit Floats ist das so eine Sache...)
Strings musst du mit strcmp vergleichen, da wird im Endeffekt 1x durch den String geloopt und jeder char verglichen...
hallo mit halle vergleiche kommt auch 0, weil es gleich lang ist??
Hättest das ja in 2 Sekunden test können, nein, so ist es nicht.
Sobald die Strings gleich sind (oder einer von Beiden null) wird 0 zurückgegeben.
Schau dir das Beispiel von der Englischen Seite an ![]()
atte ich gemacht und alle von die runtime ginge nicht zum instaleren.
Deinstalliere die x64 Dinger, du brauchst nur die x86...
kann mir hier einer helfen?
Dein Plugin wird nicht geladen, schaust du hier: MySQL Plugin buggt
was ist ressourcen schonender? ein array oder einfach doppelte Zeilen (in dem Fall 2x50)
...das spielt hier keine Rolle.
Der Übersicht wegen, solltest du ein Array und eine Schleife verwenden.
Das mit der vehicle-Info kannst du verkürzen und zwar so:
ocmd:vinfo(playerid)
{
static const veh_condition[][] = {
"Brand New","New","Healthy","Good","Regular","Moderate","Used","Worn","Bad","Horrible","Critical","Scrapworthy","Driving-Dead"
}, veh_insured[][] = {
"No","Yes","2x","3x"
}, veh_counter[][] = {
"FIRST","SECOND","THIRD","FOURTH","FIFTH"
};
SendClientMessage(playerid, COLOR_WHITE, !"------------------------------------------------------------------------");
for(new i,vehtype[32],string[145],v; i<MAX_VEHICLE_SLOTS; i++)
{
v = pInfo[playerid][pVehicleID][i];
if(!v) continue;
switch(cInfo[v][carmodel])
{
case 411: vehtype = "Supersport";
case 414: vehtype = "Boxed Van";
}
format(string, sizeof(string), "[%s VEHICLE]:{FF4500} %s | Type: %s | Milage: %i | Condition: %s | Insured: %s | Registered: %s",
veh_counter[i],GetVehicleName(GetVehicleModel(v)),vehtype,cInfo[v][milage],veh_condition[cInfo[v][carcondition]],veh_insured[cInfo[v][insured]],veh_insured[cInfo[v][registered]]);
SendClientMessage(playerid, COLOR_SYSTEM, string);
}
SendClientMessage(playerid, COLOR_WHITE, !"------------------------------------------------------------------------");
return 1;
}
Alles anzeigen
Sollte oder kann ich überhaupt beides nutzen, je nach Bedarf anders an verschiedenen Stellen? oder ist das dann doppelt definiert mit dem enum.
Im enum schreibst du nur pVehicleID[MAX_VEHICLE_SLOTS], alles Andere für die Vehicles haus du raus.
Um es zu speichern:
pInfo[playerid][pVehicleID][0], pInfo[playerid][pVehicleID][1], pInfo[playerid][pVehicleID][2], pInfo[playerid][pVehicleID][3], pInfo[playerid][pVehicleID][4]
So kannst du jeweils auf die 5 Indizes zugreifen ![]()
Und in deinem ocmd test Command hast du:
pInfo[playerid][pVehicleID[1]], wenn dann müsste es: pInfo[playerid][pVehicleID][0] sein. (Das fängt bei 0 an, nicht bei 1.)
Zumal war halt der Array Index an der falschen Stelle.
Aber du müsstest halt noch prüfen, ob das Fahrzeug nicht 0 ist, ergo:
ocmd:test2(playerid)
{
new string[MAX_VEHICLE_SLOTS*18];
for(new i,v; i<MAX_VEHICLE_SLOTS; i++)
{
v = pInfo[playerid][pVehicleID][i];
if(!v) continue; //Hier besitzt er noch kein Fahrzeug
format(string,sizeof(string),"%s%s\n",string,GetVehicleName(GetVehicleModel(v)));
}
if(!string[0]) return SendClientMessage(playerid,-1,"* You don't own a vehicle yet!");
ShowPlayerDialog(playerid,999,DIALOG_STYLE_LIST,"Private Vehicles",string,"Okay","");
return 1;
}
Alles anzeigen
GetVehicleName, kannste z.B. hier her bekommen: https://forum.sa-mp.com/showthread.php?t=566775
Oder du hast natürlich schon so eine Funktion.
Falls er btw ein neues Auto kaufen mag, musst du einen leeren index finden:
stock FindFreeCarIndex(playerid)
{
for(new i; i<MAX_VEHICLE_SLOTS; i++)
{
if(!pInfo[playerid][pVehicleID][i]) return i;
}
return -1;
}
//Nutzung ist dann:
new i = FindFreeCarIndex(playerid);
if(i == -1) return SendClientMessage(playerid,-1,"* You own already "#MAX_VEHICLE_SLOTS#" vehicles!");
pInfo[playerid][pVehicleID][i] = CreateVehicle(...);
Alles anzeigen
Hey Leute,
ich wollte euch nur mal vorwarnen, vielleicht ist es bei dem Ein oder Anderen vorbei gegangen.
Vielleicht kennen ja einige Leute den guten alten Siraj, der so machine learning Videos auf YouTube macht.
Hat sich jetzt rausgestellt, dass der Typ ein krasser Scammer & Abzocker ist, in meinen Augen gehört er verhaftet, aber entscheidet selbst:
GetVehicleName(vID)
Ja, der clue ist, vID hier ist nicht die vehicleID, sondern die modelid.
Und du fragst von der modelid die modelid ab xD
Du musst das direkt nutzen, ohne das GetVehicleModel ![]()