allerdings sind die Schranken jetzt etwas zu langsam.
Ändere dann das
,0.001,
In MoveObject zu 0.002, oder 0.0025, oder 0.003,... Je höher, desto schneller.
Almero: Das hat er doch verwendet und es ging nicht.
allerdings sind die Schranken jetzt etwas zu langsam.
Ändere dann das
,0.001,
In MoveObject zu 0.002, oder 0.0025, oder 0.003,... Je höher, desto schneller.
Almero: Das hat er doch verwendet und es ging nicht.
Nutze diese Include: http://forum.sa-mp.com/showthread.php?t=347605
Als Timestamp nimmst du gettime() + 3600 * (DIE_DIFFERENZ_DER_STUNDEN).
Die Rückgabeparameter geben dir dann Datum und Uhrzeit aus.
Die Berechnung ist durcheinander und hat eigentlich keine Auswirkung mehr auf das Objekt:
for(new i = 0; i<sizeof(pCar); i++)
{
new Float:vPos[4];
GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
GetVehicleZAngle(pCar[i], vPos[3]);
vPos[0] = (-8.0 * floatsin(-vPos[3], degrees));
vPos[1] = (-8.0 * floatcos(-vPos[3], degrees));
Object[b][ra_x] = vPos[0],Object[b][ra_y] = vPos[1],Object[b][ra_z] = vPos[2],Object[b][ra_a] = vPos[3];
if(IsPlayerInRangeOfPoint(playerid, 15.0, Object[b][ra_x], Object[b][ra_y]-2, Object[b][ra_z]))
{
ObjectID[playerid] = CreateObject(1632,Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-3.0, 0, 0, Object[b][ra_a]+0);
MoveObject(ObjectID[playerid], Object[b][ra_x], Object[b][ra_y], Object[b][ra_z]-1.0, 0.06, 0, 0, Object[b][ra_a]+0);
SetTimer("BuildObj", 30000, false);
ObjOwner[playerid] = playerid;
return 1;
}
else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Laster!");
}
Ne, das war nur zum testen ob es an MySQL liegt, damit wir uns später nicht zu Tode suchen. Liegt es aber nicht, zum Glück.
Schreib es so, geht es dann? Ich verstehe dein System noch nicht wirklich, aber vielleicht passt es ja schon.
stock LoadPlayercar(playerid,slot)
{
if(slot == -1)return 1;
new slotstr[16];
valstr(slotstr,slot);
for(new i=0;i<MAX_VEHICLES;i++)
{
if(FahrzeugInfo[i][fz_ID] == 0)
{
FahrzeugInfo[i][fz_Besitzer] = playerid;
FahrzeugInfo[i][fz_Typ] = 1;
FahrzeugInfo[i][fz_Slot] = slot;
FahrzeugInfo[i][fz_Preis] = mysql_GetInt("userautos","Preis","Slot",slotstr);
FahrzeugInfo[i][fz_Model] = mysql_GetInt("userautos","Model","Slot",slotstr);
FahrzeugInfo[i][fz_Farbe1] = mysql_GetInt("userautos","Farbe1","Slot",slotstr);
FahrzeugInfo[i][fz_Farbe2] = mysql_GetInt("userautos","Farbe2","Slot",slotstr);
FahrzeugInfo[i][fz_X] = mysql_GetFloat("userautos","X","Slot",slotstr);
FahrzeugInfo[i][fz_Y] = mysql_GetFloat("userautos","Y","Slot",slotstr);
FahrzeugInfo[i][fz_Z] = mysql_GetFloat("userautos","Z","Slot",slotstr);
FahrzeugInfo[i][fz_A] = mysql_GetFloat("userautos","A","Slot",slotstr);
FahrzeugInfo[i][fz_mod1] = mysql_GetInt("userautos","mod1","Slot",slotstr);
FahrzeugInfo[i][fz_mod2] = mysql_GetInt("userautos","mod2","Slot",slotstr);
FahrzeugInfo[i][fz_mod3] = mysql_GetInt("userautos","mod3","Slot",slotstr);
FahrzeugInfo[i][fz_mod4] = mysql_GetInt("userautos","mod4","Slot",slotstr);
FahrzeugInfo[i][fz_mod5] = mysql_GetInt("userautos","mod5","Slot",slotstr);
FahrzeugInfo[i][fz_mod6] = mysql_GetInt("userautos","mod6","Slot",slotstr);
FahrzeugInfo[i][fz_mod7] = mysql_GetInt("userautos","mod7","Slot",slotstr);
FahrzeugInfo[i][fz_mod8] = mysql_GetInt("userautos","mod8","Slot",slotstr);
FahrzeugInfo[i][fz_mod9] = mysql_GetInt("userautos","mod9","Slot",slotstr);
FahrzeugInfo[i][fz_mod10] = mysql_GetInt("userautos","mod10","Slot",slotstr);
FahrzeugInfo[i][fz_mod11] = mysql_GetInt("userautos","mod11","Slot",slotstr);
FahrzeugInfo[i][fz_mod12] = mysql_GetInt("userautos","mod12","Slot",slotstr);
FahrzeugInfo[i][fz_mod13] = mysql_GetInt("userautos","mod13","Slot",slotstr);
FahrzeugInfo[i][fz_mod14] = mysql_GetInt("userautos","mod14","Slot",slotstr);
FahrzeugInfo[i][fz_Tank] = mysql_GetInt("userautos","Tank","Slot",slotstr);
FahrzeugInfo[i][fz_Opark] = mysql_GetInt("userautos","Opark","Slot",slotstr);
FahrzeugInfo[i][fz_Glas] = mysql_GetInt("userautos","Glas","Slot",slotstr);
FahrzeugInfo[i][fz_Panzer] = mysql_GetInt("userautos","Panzer","Slot",slotstr);
FahrzeugInfo[i][fz_Lock] = 0;
FahrzeugInfo[i][fz_Radio] = 0;
if(FahrzeugInfo[i][fz_Model] < 400 || FahrzeugInfo[i][fz_Model] > 611) continue;
FahrzeugInfo[i][fz_ID] = s_CreateVehicle(FahrzeugInfo[i][fz_Model],FahrzeugInfo[i][fz_X],FahrzeugInfo[i][fz_Y],FahrzeugInfo[i][fz_Z],FahrzeugInfo[i][fz_A],FahrzeugInfo[i][fz_Farbe1],FahrzeugInfo[i][fz_Farbe2],-1);
new vID = FahrzeugInfo[i][fz_ID];
FahrzeugInfo[i][fz_Motor] = 0;
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(FahrzeugInfo[i][fz_ID], engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(FahrzeugInfo[i][fz_ID], engine, lights, alarm, 0, bonnet, boot, objective);
hbremse[vID][hb_Status] = mysql_GetInt("userautos","HandBremse","Slot",slotstr);
if(FahrzeugInfo[i][fz_Opark] == 1)
{
hbremse[vID][hb_Status] = 2;
}
SetVehicleNumberPlate(vID,SpielerName(playerid));
if(FahrzeugInfo[i][fz_mod1] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod1]);}
if(FahrzeugInfo[i][fz_mod2] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod2]);}
if(FahrzeugInfo[i][fz_mod3] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod3]);}
if(FahrzeugInfo[i][fz_mod4] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod4]);}
if(FahrzeugInfo[i][fz_mod5] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod5]);}
if(FahrzeugInfo[i][fz_mod6] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod6]);}
if(FahrzeugInfo[i][fz_mod7] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod7]);}
if(FahrzeugInfo[i][fz_mod8] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod8]);}
if(FahrzeugInfo[i][fz_mod9] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod9]);}
if(FahrzeugInfo[i][fz_mod10] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod10]);}
if(FahrzeugInfo[i][fz_mod11] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod11]);}
if(FahrzeugInfo[i][fz_mod12] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod12]);}
if(FahrzeugInfo[i][fz_mod13] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod13]);}
if(FahrzeugInfo[i][fz_mod14] != -1){AddVehicleComponent(vID,FahrzeugInfo[i][fz_mod14]);}
return 1;
}
}
return 1;
}
Hiermit:
http://forum.sa-mp.de/gta-mult…eschnipsel-56#post1890617
Als Distanz einen negativen Wert.
Falls du es von playerid auf vehicleid ändern willst, kannst ja einfach das GetPlayerPos Teil weg machen.
format(str, sizeof(str), "/Frakcars/%s/%d.ini", fraks[frakid][name], fcnummer);
zu:
format(str, sizeof(str), "/Frakcars/%s/%d.ini", fraks[frakid][name], i);
Und:
fccar[frakid][fcnummer] =
zu:
fccar[frakid][i] =
Dann müssen wir es wohl oder üben debuggen. Fangen wir mit dem Speichern an:
<Code auf Wunsch von [DT]midomen entfernt, wegen Copyright.>
Was steht im Log, wenn du dein Fahrzeug speicherst? Stimmen die Koordinaten die geprintet werden mit denen überein, die das Fahrzeug wirklich hat (/dl).
Werden die Werte dann richtig in die Datei geschrieben? Wenn nein, was steht in der Datei?
EDIT:
Ich habe es ihm kurz per TeamViewer fertig gemacht.
Problem waren 10 Warnungen die er ignoriert hat, darunter mehrere Tag Mismatch bei den Positionsvariablen, was dazu geführt hat, dass die Fahrzeuge nicht korrekt erstellt worden sind. Der Code ist korrekt, jetzt funktioniert alles.
@leader_king: Bitte auf erledigt setzen. Danke dir!
Sowie:
if(LCInvite[playerid] == 1))
zu:
if(LCInvite[playerid] == 1)
Ok, super.
Das liegt daran, dass du das Objekt ein ganz klein wenig bewegen musst, wenn du es rotieren lassen willst.
Versuch es mal so:
if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
{
if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
{
MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.4100000,0.001,0.0000000,0.0000000,0.0000000);
tor[playerid]=1;
}
}
if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
{
if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
{
MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.4100000,0.001,0.0000000,0.0000000,180.0000000);
tor[playerid]=1;
}
}
if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
{
if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
{
MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.3900000,0.001,0.0000000,90.0000000,0.0000000);
tor[playerid]=0;
}
}
if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
{
if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
{
MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.3900000,0.001,0.0000000,90.0000000,180.0000000);
tor[playerid]=0;
}
}
Das ist aber nicht alles in der gleichen Zeile.
Hast du meine Version ausprobiert?
if(sInfo[playerid][LiveLeader] !== getPlayerName(playerid))
zu:
if( strcmp(sInfo[playerid][LiveLeader],getPlayerName(playerid)) )
Da du zwei Strings miteinander vergleichst.
(Beachte das große S, falls nicht gesehen!)
"is[12]S(blub)[64]"
Das S muss groß sein.
Schau mal hier:
http://forum.sa-mp.com/showthread.php?t=120724
Da ist eine Liste mit über hundert Befehlen. Das sollte genügen.
Entweder ein Fehler im Code oder du hast eine Cheat-Konsole geladen.
Microsoft .NET Framework 4.5.1 wird benötigt um Programme die mit Microsoft .NET geschrieben worden sind auszuführen.
Wie bereits gesagt, einfach so:
"is[12]S(default Wert)[64]"
Da du den default Wert ja nicht nutzt ist es völlig egal was da steht.
Beispiel:
"is[12]S(blub)[64]"
for(new i = 0; i<sizeof(pCar); i++)
{
GetVehiclePos(pCar[i], vPos[0], vPos[1], vPos[2]);
GetVehicleZAngle(pCar[i], vPos[3]);
if(IsPlayerInRangeOfPoint(playerid, 15.0, vPos[0], vPos[1]-2, vPos[2]))
{
Object[playerid] = CreateObject(1632, vPos[0], vPos[1], vPos[2]-2.6, 0, 0, vPos[3]+180);
MoveObject(Object[playerid], vPos[0], vPos[1], vPos[2]-0.01, 0.001, 0, 0, vPos[3]+180);
ObjectErstellt[playerid] = 1;
return 1;
}
else return SendClientMessage(playerid, COLOR_ERRORTEXT, "Du bist nicht nah genug am Fahrzeug!");
}
Falls es zu schnell geht, mach das 0.001 kleiner, also zu 0.0001.
Streamer (ganz unten im Thread):
ZitatThe Windows version requires the Microsoft .NET Framework 4.5.1 or higher.
http://www.microsoft.com/en-us…oad/details.aspx?id=40773
Herunterladen und installieren. Ohne das geht es nicht.
Öffne deine server.cfg und schreibe bei "plugins":
Zitatplugins sscanf streamer nativechecker
Falls du in /plugins/-Ordner die plugins sscanf.dll und streamer.dll nicht hast, lade sie dir hier runter:
http://forum.sa-mp.com/showthread.php?t=102865
http://forum.sa-mp.com/showthread.php?t=120356
Dann poste bitte die jeweiligen Zeilen von den Warnungen in deinem Thread (die sind zum Teil auch in den Includes!) und schreibe die Zeilennummer sowie die Fehlermeldung dazu.
Zwecks des Unknown Gamemode:
Lade dir das nativechecker-Plugin herunter (Link: Benötige Hilfe Linux) und füge die .dll in /plugins/ ein und trage in der server.cfg das nativechecker als letzte Stelle bei "plugins" ein. Dann starte den Server und poste den Log.