du must die Float HP in einen int umwandeln
floatround
http://wiki.sa-mp.com/wiki/Floatround
format(str,sizeof(str),"Der Zustand deines Fahrzeugs beträgt %i.",floatround(hp,floatround_ceil)/1000);
du must die Float HP in einen int umwandeln
floatround
http://wiki.sa-mp.com/wiki/Floatround
format(str,sizeof(str),"Der Zustand deines Fahrzeugs beträgt %i.",floatround(hp,floatround_ceil)/1000);
Da wird dann immer 0 ausgeben, außer die Health ist 1000.
So wäre es korrekt:
format(str,sizeof(str),"Der Zustand deines Fahrzeugs beträgt %i%%.",floatround((hp-250.0)/7.5));
Danke nochmal. Ich versuche gerade einen Befehl zu schreiben, welcher eine Sirene für diverse Autos erstellt.
ocmd:sirene(playerid,params[])
{
if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) return SendClientMessage(playerid,Kaminrot,"ERROR: Du musst in einem Wagen sein.");
if(!IsValidObject(PoliceLightObj[playerid]))
{
PoliceLightObj[playerid] = CreateObject(18646,0.0,0.0,0.0,0.0000000,0.0000000,0.0000000);
AttachObjectToVehicle(PoliceLightObj[playerid], GetPlayerVehicleID(playerid), 0.0, 0.0, 0.8, 0.0, 0.0, 0.0);
SendClientMessage(playerid,Gelb,"Die Sirene ist an");
}
else
{
DestroyObject(PoliceLightObj[playerid]);
SendClientMessage(playerid,Blau,"Die Sirene ist aus");
}
return 1;
}
Das Objekt wird erstellt, jedoch leuchtet die Sirene nicht.
Das Objekt wird erstellt, jedoch leuchtet die Sirene nicht.
Laut diesem Thread (http://forum.sa-mp.com/showthread.php?t=534862) könnte es ein Client-Problem sein, sprich an deinem GTA liegen.
Versuche es mal mit Wetter ID 2, wie dort genannt.
Alternativ kannst du es mal hiermit versuchen, ob das geht:
http://forum.sa-mp.com/showthread.php?t=352070
Wenn das nicht geht, liegt es an deinem GTA, oder einem Mod (etc).
Danke vielmals. Ich habe ein Problem mit meinem Mutesystem.
Die Zeit wird in der Datenbank gespeichert, aber wenn man etwas in den Chat schreiben will wird es trotzdem abgeschickt...
IsPlayerMuted(playerid)
{
new timestamp = gettime();
if(sInfo[playerid][mute] > timestamp)return 1;
return 0;
}
public OnPlayerText(playerid, text[])
{
new timestamp = gettime();
if(IsPlayerMuted(playerid))
{
new differenz = sInfo[playerid][mute] - timestamp;
new minuten = differenz / 60;
new str[64];
format(str,sizeof(str),"Du bist noch %i Minuten gemutet!",minuten);
return SendClientMessage(playerid,Pink,str);
}
return SendClientMessage(playerid,Pink,str);
Zu
SendClientMessage(playerid,Pink,str);
return 0;
Danke.
Ich möchte mal versuchen zwei von diesem Marken an den Spielerskin zu attachen.
Beispielbild:
So dass jeweils an beiden Oberarmen der Skins eine dieser Marken ist. Theoretisch sehr sehr leicht, aber bis ich da mal die Koordinaten und Rotationen rausgefunden habe ... vlt hat ja ja jemand die Koordinaten
Die Koordinaten habe ich nicht, aber du kannst sie mit einem Editor wie diesem herausfinden:
http://forum.sa-mp.com/showthread.php?t=416138
Cool danke! Da wäre noch was
Ich habe versucht ein Paydaysystem zu machen mit den Variablen: Payday, Xp und xpmax. xp steht für respektpunkte.
Alle dreißig Minuten soll der Spieler ein Payday bekommen.
new paydayzeit[MAX_PLAYERS];
forward PayDayEx(playerid)
public PayDayEx(playerid)
{
if(sInfo[playerid][payday]>=30)
{
//Payday bekommen
if(sInfo[playerid][xpres]>=sInfo[playerid][xpmax])
{
SetPlayerScore(playerid,(sInfo[playerid][level]+1));
sInfo[playerid][xpres]=0;
sInfo[playerid][xpmax]+=4;
SendClientMessage(playerid,Kaminrot,"Du bist ein Level up hier 5k .");
GivePlayerMoney(playerid,5000);
}
if(sInfo[playerid][level]==10)
{
SendClientMessage(playerid,Kaminrot,"Du bist lvl 10 hier haste 10k");
GivePlayerMoney(playerid,10000);
}
GivePlayerMoney(playerid,2000);
SendClientMessage(playerid,Kaminrot,"PAYDAY!!");
sInfo[playerid][payday]=0;
savePlayer(playerid);
return 1;
}
else
{
sInfo[playerid][payday]+=1;
savePlayer(playerid);
}
return 1;
}
Spieler wird geladen:
sInfo[playerid][payday] = cache_get_field_content_int(0,"payday",dbhandle);
sInfo[playerid][xpres] = cache_get_field_content_int(0,"xpres",dbhandle);
sInfo[playerid][xpmax] = cache_get_field_content_int(0,"xpmax",dbhandle);
paydayzeit[playerid]=SetTimerEx("PayDayEx",1000*60,true,"i",playerid);
public OnPlayerDisconnect(playerid, reason)
{
savePlayer(playerid);
resetPlayer(playerid);
KillTimer(paydayzeit[playerid]);
return 1;
}
Die Variablen werden ausgelesen etc., der Timer geht aber nicht..
Ich bin mir nicht sicher aber ich glaub es klappt am besten wenn du einfach einen 1 Sekunden timer oder vllt sogar 60 Timer vom Server aus laufen lässt, z.B. Server startet dann Timer starten und in diesem Timer all Spieler IDs checken und denen dann die Zeit adden.
Ich habs gerade nachgeguckt, mein Server hat einen SekundenTimer, dort habe ich z.B. PlayerInfo[playerid][pPaydaySecs] += 1 eingefügt. Und wenn es bei 60 ist, macht man daraus PlayerInfo[playerid][PaydayMins] += 1 und Sekunden wieder auf 0, wenn es 60 Minuten sind wird der Payday ausgezahlt.
Edit: Meine Funktion
Das ist im Sekundentimer drinne,
Die Funktion "Payday(i)" ist die Funktion die den Payday durchführt. Gehaltscheck, nachricht, überweisung aufs Konto etc.
Klappt leider nicht....
Es müsste so klappen du musst den halt deinem System anpassen
if(sInfo[playerid][payday]>=30)
Lass dir in deinem Code hier den Wert jeweils mal ausgeben, vor dieser Zeile.
printf("PayDay Timer: playerid: %d / payday: %d", playerid, sInfo[playerid][payday]);
Was wird dann im Server Log ausgegeben?
Lass dir in deinem Code hier den Wert jeweils mal ausgeben, vor dieser Zeile.printf("PayDay Timer: playerid: %d / payday: %d", playerid, sInfo[playerid][payday]);
Was wird dann im Server Log ausgegeben?
Hat sich bereits erledigt, trotzdem danke .