Du hast bereits ein Topic dafür auf...
Wenn du mit OnPlayerCommandText arbeitest, zeig mal deinen Code.
Du hast bereits ein Topic dafür auf...
Wenn du mit OnPlayerCommandText arbeitest, zeig mal deinen Code.
Dann musst du halt abfragen, ob der User der Owner von dieser Auto ID ist.
Mit MySQL kenn ich mich nicht so glänzend aus^^
Genau so sollte es dann funktionieren.
#include <a_samp>
#define FILTERSCRIPT
#define Rot 0xFF0000FF
#define White 0xFFFFFFFF
#if defined FILTERSCRIPT
new tor; // "Tor" wird erschaffen
new tor2;
forward close();
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Filterscript by DeinNameHier");
print("--------------------------------------\n");
tor = CreateObject(980, 1300.30005, -2056.80005, 59.7, 0.00, 0.00, 269.25); // Tor wird gespawnt und mit dem Namen "tor" belegt
tor2= CreateObject(980, 1283.69995, -2056.30005, 60.1, 0.00, 0.00, 269.247);
return 1;
}
#endif
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/tor", cmdtext, true, 10) == 0) // Kommando zum öffnen
{
if(IsPlayerInRangeOfPoint(playerid,10.0,1300.30005, -2056.80005, 59.7) || IsPlayerInRangeOfPoint(playerid,10.0,X, Y, Z)) // Ist der Spieler in der Nähe ?
{
MoveObject(tor,1300.30005, -2056.8000, 52.9, 4); // Wenn >Ja<, dann öffne Tor
MoveObject(tor2,1283.69995, -2056.30005, 53.6, 4);
SendClientMessage(playerid,Rot,"Das Tor schließt in 5 Sekunden.");
SetTimer("close", 5000,0); // Timer
return 1;
}
else
{
SendClientMessage(playerid,Rot,"Du bist nicht in der Nähe!"); // Wenn >Nein<, sag es ihm
return 1;
}
}
}
public close () // Timer wird gesagt was passieren soll wenn er abgelaufen ist
{
MoveObject(tor,1300.30005, -2056.80005, 59.7, 4);
MoveObject(tor2,1283.69995, -2056.30005, 60.1, 4);
return 1;
}
Dann musst du noch die Koordianten da beim Befehl von Innen eintragen.
So , hab jetzt zugriff auf mein Script:
stock SaveCar(vehicleid)
{
if(dini_Exists(CarDat(vehicleid)))
{
new Float:x, Float:y, Float:z, Float:r;
GetVehiclePos(vehicleid, Float:x, Float:y, Float:z);
GetVehicleZAngle(vehicleid, Float:r);
dini_IntSet(CarDat(vehicleid), "ID", GetVehicleModel(vehicleid));
dini_FloatSet(CarDat(vehicleid), "F_X", x);
dini_FloatSet(CarDat(vehicleid), "F_Y", y);
dini_FloatSet(CarDat(vehicleid), "F_Z", z);
dini_FloatSet(CarDat(vehicleid), "F_R", r);
dini_IntSet(CarDat(vehicleid), "F1", 0);
dini_IntSet(CarDat(vehicleid), "F2", 0);
}
else
{
new ac[40];
format(ac, 40, "/Autos/%d.txt", vehicleid);
dini_Create(ac);
new Float:x, Float:y, Float:z, Float:r;
GetVehiclePos(vehicleid, Float:x, Float:y, Float:z);
GetVehicleZAngle(vehicleid, Float:r);
dini_IntSet(CarDat(vehicleid), "ID", GetVehicleModel(vehicleid));
dini_FloatSet(CarDat(vehicleid), "F_X", x);
dini_FloatSet(CarDat(vehicleid), "F_Y", y);
dini_FloatSet(CarDat(vehicleid), "F_Z", z);
dini_FloatSet(CarDat(vehicleid), "F_R", r);
dini_IntSet(CarDat(vehicleid), "F1", 0);
dini_IntSet(CarDat(vehicleid), "F2", 0);
}
}
stock CarDat(vehicleid)
{
new ms[40];
format(ms ,40, "/Autos/%d.txt", vehicleid);
return ms;
}
Den Stock benutze ich dann in einem Befehl, sprich /parken bei dir.
Kommt auf deine Bedürfnisse an. Einfach ausprobieren wie weit es dir reicht.
Brauchst ja auch nicht alle Objekte so weit streamen lassen.
Die Server Befehle !
...
Ich weiß ja nicht was du mit deinen Serverbefehlen meinst. Nenn mal nen beispiel..
/Mute oder was zum Beispiel?
Also die Befehle aus deinem Script bei OnPlayerCommandText oder die, die du mit /rcon BEFEHL eingibst?
CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float: DrawDistance);
Wenn du einen Streamer benutzt, wird das Objekt zwar aber der eingestellten Range erstellt, aber ist nicht zwingend auf deinem Bildschirm zu sehen.
Bei CreateObject ist es seit 0.3x mit der DrawDistance möglich, das Objekt auf die gewünschte Range sichtbar zu machen.
Welche Serverbefehle meinst du? Ich kann nicht Hellsehen. Noch nicht
Meinst du RCON Befehle oder die von deinem Script? Ich finde das Problem nicht klein wenn die Befehle nicht gehen
Hast du in deinem Scriptfiles ordner auch einen Ordner namens "Autos" angelegt?
Das CarSpeichern kommt bei dir in deinen /parken befehl.
dini_Isset(SpielerDatei, "Skin") würde es richtig heißen.
Und dann halt SetPlayerSkin(playerid, dini_Int(SpielerDatei, "Skin"));
stock CarSpeichern(vid)
{
new pfad[40];
format(pfad, 40, "/Autos/%d.txt", vid);
new Float:x, Float:y, Float:z, Float:r;
GetVehiclePos(vid, x, y, z);
GetVehicleZAngle(vid, r);
dini_FloatSet(pfad, "X", x);
dini_FloatSet(pfad, "Y", y);
dini_FloatSet(pfad, "Z", z);
dini_FloatSet(pfad, "R", r);
dini_IntSet(pfad, "Model", GetVehicleModel(vid));
dini_IntSet(pfad, "Farbe1", 1);
dini_IntSet(pfad, "Farbe2", 1);
}
stock CarsLaden()
{
new pfad[40];
for(new i; i < MAX_VEHICLES; i++)
{
DestroyVehicle(i);
if(dini_Exists(pfad))
{
format(pfad, 40, "/Autos/%d.txt", i);
CreateVehicle(dini_Int(pfad, "Model"), dini_Float(pfad, "X"),dini_Float(pfad, "Y"),dini_Float(pfad, "Z"),dini_Float(pfad, "R"), dini_Int(pfad, "Farbe1"), dini_Int(pfad, "Farbe2"), -1);
}
}
}
Müsste eigentlich so gehen. Nicht getestet
//edit: Ups hab dini_Exists vergessen gehabt.
Wozu da 256 Zeichen ?
Unnötig.
Hab ich gesagt dass es Resourcensparend ist? Habs grade im Forum's Editor geschrieben, da achte ich da nicht so drauf tut mir leid Chef.
-----------------------------------------------------------------------
Damit speicherst du Autos.
Dann brauchst du noch einen Stock, der die Autos wieder daraus läd.
stock CarSpeichern(vid)
{
new pfad[256];
format(pfad, 256, "/Autos/%d.txt", vid);
new Float:x, Float:y, Float:z, Float:r;
GetVehiclePos(vid, x, y, z);
GetVehicleZAngle(vid, r);
dini_FloatSet(pfad, "X", x);
dini_FloatSet(pfad, "Y", y);
dini_FloatSet(pfad, "Z", z);
dini_FloatSet(pfad, "R", r);
}
Du musst die Autos erstmal speichern, damit diese auch am gleichen Ort nach einem restart spawnen, wie sie sollen.
un dann machst du eine Abfrage, ob die Fraktions ID des Spielers, die gleiche ist wie dem Auto in der Datei unter z.B "FrakID" gespeichert ist.
Richtig.
SetPVarInt bleibt ja auch nur bis zu einem Relogg. Danach sind die Daten futsch.
Also musst du es speichern. Ich denke du arbeitest mit Dini.
new Pfad[256], pnam[MAX_PLAYER_NAME];
GetPlayerName(i, pnam, MAX_PLAYER_NAME);
format(Pfad, 256, "/DEINORDNER/%s.txt", pnam);
dini_IntSet(Pfad, "PayDayZeit", GetPVarInt(playerid, "PayDay"));
dini_IntSet(Pfad, "Respektpunkte", GetPVarInt(playerid, "Respektpunkte"));
Wenn du schon einen Stock zum speichern hast, füge einfach nur
dini_IntSet(Pfad, "PayDayZeit", GetPVarInt(playerid, "PayDay"));
dini_IntSet(Pfad, "Respektpunkte", GetPVarInt(playerid, "Respektpunkte"));[/pwn]
Die ein, aber änder "Pfad" in den String der beim Speicher Stock verwendet wird.
Versuch es mal so:
Anstatt BallasCar dann z.b Roller[0] oder so ..
SetVehicleNumberPlate(z.b.BallasCar[0],"{FARBE}[BDR]{00ff00}");
Was soll das Nummernschild mit der Respawnzeit des Fahrzeuges zu tun haben ???
---------------------------------------------------------------
CreateVehicle(462,146.2613,-1946.0831,3.3728,182.0563,1,3,-1)
So respawnt der garnicht. Das liegt an der "-1".
CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay)
und die respawn_delay wird in Sekunden angegeben.