Habs jetzt so
Lag auch da dran aber wenn ich im veh bin geht das nicht?
Nur wenn ich onfoot bin xD?
Genau. Der wird nur zu Fuß erkannt, das ist bei manchen Keys so.
Es ist immer gut wenn man es im Fahrzeug und zu Fuß probiert.
Habs jetzt so
Lag auch da dran aber wenn ich im veh bin geht das nicht?
Nur wenn ich onfoot bin xD?
Genau. Der wird nur zu Fuß erkannt, das ist bei manchen Keys so.
Es ist immer gut wenn man es im Fahrzeug und zu Fuß probiert.
Dann liegt der Fehler woanders. Zeig mal wie du das Objekt erstellst.
Übrigens, sehe ich grade, das macht man eigentlich nicht so, außer du hast einen speziellen Grund:
if(newkeys == KEY_CTRL_BACK)
macht man generell so:
if(newkeys & KEY_CTRL_BACK)
EDIT: Ah, du hast es oben hingemacht. Moment.
EDIT2:
Wie beschrieben, so tut es bei mir:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_CTRL_BACK)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1284.8000488,-1652.1999512,17.0000000))
{
static ou;
if(ou==0)
{
MoveObject(garage[0],1284.8000488,-1652.1999512,17.0000000-10,5);
ou=1;
}
else if(ou==1)
{
MoveObject(garage[0],1284.8000488,-1652.1999512,17.0000000,5);
ou=0;
}
}
return 1;
}
return 1;
}
new ou;
zu:
static ou;
Ich kenne das System nicht, aber ich kann mir gut vorstellen, dass es die Einstellungen speichert wenn du den Server schließt.
Versuch es mal so, das funktioniert eigentlich immer, sofern kein Script Fehler vorliegt:
Server schließen und aus lassen => Config Datei von Junkbuster öffnen => Spectate Hack zu 0 setzen => Speichern => Server starten
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
if(GetPlayerVehicleID(playerid) == grovefahrzeuge(vehicleid)) //Eine ) gefehlt
{
if(!isPlayerinFrakt(playerid,1)) //ebenso
{
SendClientMessage(playerid,rot,"Dieser Wagen gehört der Grove Street");
RemovePlayerFromVehicle(playerid);
}
}
}
return 1;
}
140:
if(!isPlayerinFrakt(playerid,1)) //Auch die )
{
SendClientMessage(playerid,rot,"Dieser Wagen gehört der Grove Street");
RemovePlayerFromVehicle(playerid);
}
Versuch es mal mit den Angaben, die in meinem Post in dem topic, das ich dir gegeben habe, stehen.
Normalerweise ist localhost und 127.0.0.1 das gleiche, wobei ich es auf Linux auch schon hatte, dass das das Problem war.
if(isPlayerinFrakt(playerid,2,7,9))
zu:
if(isPlayerinFrakt(playerid,2) || isPlayerinFrakt(playerid,7) || isPlayerinFrakt(playerid,9))
Problem(e) wurde behoben.
Es lag daran, dass die Schleife in CheckCar so nicht ganz richtig war und die Variablen am Anfang nicht zu -1 gesetzt worden sind.
dcmd_auftrage(playerid, params[])
{
#pragma unused params
new count;
if(SInfo[playerid][pLeader] == 11 || SInfo[playerid][pMember] == 11)
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if(SInfo[i][pKopfgeld] > 0)
{
new namexddd[MAX_PLAYER_NAME];
GetPlayerName(i,namexddd,sizeof(namexddd));
format(str,sizeof(str),"[ID]: %d [Name]: %s [Preis]: %d",i,namexddd,SInfo[i][pKopfgeld]);
SendClientMessage(playerid,Gelb,str);
count++;
}
}
if(count == 0) return SendClientMessage(playerid,COLOR_RED,"Es gibt keine Aufträge!");
}
return 1;
}
Wir zählen die Aufträge, wenn es 0 sind sind keine vorhanden.
km muss ein Float sein, ebenso cMeters, cMeters kannst du wahlweise auch mit float() zu einem float machen.
new Float:km;
Den Meterwert als Float speichern, durch 1000.0 (ja, mit dem .0) teilen und mit %0.1f ausgeben.
1234.0 Meter / 1000.0 = 1.234
---> 1.2
Nein, dafür gibt es keine Funktion.
Du kannst aber mal http://wiki.sa-mp.com/wiki/AttachTrailerToVehicle versuchen, wobei ich nicht denke, dass das tut, aber einen Versuch ist es ja mal Wert.
Achso, könnte ich deinem Post nicht entnehmen.
Dann würde ich das Plugin empfehlen. Da bleiben "nur" die deutschen Proxies übrig, außer du kannst dir eine eigene Seite schreiben, die Proxies erkennt, das weiß ich aber nicht wie.
Relativ zuverlässig, wenn man Proxies aus dem Spiel nimmt.
Idee:
Wenn du nur deutsche Spieler haben willst, lass doch den Spieler einfach eine Frage beantworten, oder eine Art Captcha:
Hallo, etwas bla bla, ...
wenn du auf diesem Server spielen willst, dann bestätige bitte durch die Eingabe des Captchas, dass du deutsch bist oder verstehst:
Schreibe folgende Buchstaben in das Feld:
Den ersten Buchstaben unseres Landes
Den dritten Buchstaben des Alphabets
Den drittletzen Buchstaben des Alphabets
Der Buchstabe der im Wort Hydra auf den zweiten Buchstaben folgt.
=> DCXD
Wenn falsch => Ban.
Somit kannst du sicher sein, dass der Spieler Deutsch spricht. (Auch nicht 100%, er könnte ja Google Translator nehmen, da würde ich eben die Grammatik so umstellen, dass der Translater durcheinander kommt.)
if(GetVehicleModel(GetPlayerVehicleID(cid))==597)
Du fügst dem enum noch ein vID hinzu. Beim erstellen des Autos dann:
Fcar[i][vID] = CreateVehicle...
Und bei der Abfrage im stock:
if(Fcar[i][vID] == veh && Fcar[i][fID] == Spieler[playerid][pFraktion] ){
Simon:
Setze dort wo der Code (Timer) beginnt, also direkt nach dem public:
new t = GetTickCount();
und ganz unten, vor dem return, bzw. vor der letzten Klammer:
printf("Code Zeit: %dms", GetTickCount()-t);
Dann weißt du genau wie lange dein Code braucht und ob er laggt.
Deine Timer sollten eigentlich kein Problem sein, außer du öffnest viele Dateien, bzw. lässte viele Queries durchführen. Lass dir einfach mal die Zeit ausgeben. Alles was zwischen 0ms und 15-20ms ist passt völlig, wenns mehr ist sollte der Timer nicht ganz so oft aufgerufen werden, also nicht 5 mal in der Sekunde, sondern nur jede 2. Sekunde oder so, je nach Wichitgkeit des Codes.
Was ist die beste und einfachste art die floats des veh speedes rauszulesen(tacho)
http://forum.sa-mp.com/showpost.php?p=1494223&postcount=3
Als Float eben so:
stock Float:GetPlayerSpeed(playerid)
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 179.28625;
return ST[3];
}