if(isPlayerAnAdmin(playerid))SetPlayerSkin(playerid, skinid);
?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Einfach unter OnPlayerConnect oder?
Gerade am handy xD -
Würde es unter OnPlayerSpawn setzen
-
Was ist eigentlich schneller und besser, ein globaler Timer, der alle Spieler durchgeht und abfragt ob Var X = 4 ist oder aber Timer für jeden Spieler (new Timer[MAX_PLAYERS];)? (Knastsystem)
LG
-
Mach besser einen globalen Timer oder nimm einen den du schon hast und schreib direkt in der Schleife die alle Spieler durchgeht am Anfang:
if(!IsPlayerConnected(i))continue; -
Hey gerade am Handy , würde gerne wissen ob der Befehl gehen würde.
ocmd:auftrag(playerid,params[])
{
new auftragN;
if(sscanf(params,"z",auftragN))return SendClientMessage(playerid,0xff0000ff,"Nutze /auftrag [zahl]");
if(IsPlayerInFrakt(i,GetPVarInt(playerid,"Trucker")))return SendClientMessage(playerid,0xff0000ff,"Du bist kein Trucker!");
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInFrakt(i,GetPVarInt(playerid,"Trucker")))
{
printf("Spieler %z hat den Auftrag %z angenommen",playerid,auftragN);
SendClientMessage(playerid,0xff0000ff,"Du hast dir den Auftrag %z angenommen!");
}
}
}
return 1;
}
Oder wie würdet ihr das machen?
Will das Jemand der IsPlayerInFrakt ein Auftrag annehmen kann.Oder so?
ocmd:auftrag1(playerid,params[])
{
SendClientMessage(playerid,0xff0000ff,"Benutze /auftrag [Auftrag], um einen Auftrag anzunehmen");
new auftragN;
if(IsPlayerInFrakt(i,GetPVarInt(playerid,"Trucker")))return SendClientMessage(playerid,0xff0000ff,"Du bist kein Trucker!");
if(sscanf(params,"z",auftragN))return SendClientMessage(playerid,0xff0000ff,"Nutze /auftrag [zahl]");
printf("Spieler %z hat den Auftrag %z angenommen",playerid,auftragN);
SendClientMessage(playerid,0xff0000ff,"Du hast dir den Auftrag %z angenommen!");
return 1;
} -
Weder der eine noch der andere wird gescheit funktionieren. Was genau soll der Befehl den eigentlich machen? Und soll die Nachricht an alle in der Fraktion gehen?
-
Ja habe jetzt wieder 2-4monate nix mehr gemacht und muss wohl mich erstmal einarbeiten.
Werde mich bis heute abend nochmal dransitzen.
Habe total falsch angefangen.Ich will ein job system mit bestimmten Aufträgen erstellen. Die man dann annimmt. Sollte ich dann Fragen , frag ich wieder :DD
-
Ja habe jetzt wieder 2-4monate nix mehr gemacht und muss wohl mich erstmal einarbeiten.
Werde mich bis heute abend nochmal dransitzen.
Habe total falsch angefangen.Ich will ein job system mit bestimmten Aufträgen erstellen. Die man dann annimmt. Sollte ich dann Fragen , frag ich wieder :DD
1. z steht für packed strings, für integer musst du i oder d nutzen
2. Für statische Aufträge kannst du ja ein 2dimensionales Array erstellen mit folgender Struktur, dort kannst du deine Aufträge reinhauen, cTimestamp kann danachgenutzt werden
um zum einen abtufragen ob dieser auftrag schon gemacht wurde und um den Auftrag erst nach einer gewissen Zeit wieder frei zu gebenenum cContract {
cName[40],
Float:cX,
Float:cY,
Float:cZ,
cWage,
cTimestamp,
};3. via einer for-schleife kannst du dir alles auflisten lassen entweder im Dialog (ShowPlayerDialog) oder im Chat (SendClientMessage).
4. Wenn du einen string als platzhalter verwenden möchtest benötigst du %s, nicht %z
-
Zitat
Was ist eigentlich schneller und besser, ein globaler Timer, der alle Spieler durchgeht und abfragt ob Var X = 4 ist oder aber Timer für jeden Spieler (new Timer[MAX_PLAYERS];)? (Knastsystem)
LG
@Jeffy: was meinst du dazu?
-
-
Was ist eigentlich schneller und besser, ein globaler Timer, der alle Spieler durchgeht und abfragt ob Var X = 4 ist oder aber Timer für jeden Spieler (new Timer[MAX_PLAYERS];)? (Knastsystem)
@Jeffy: was meinst du dazu?Ich würde sagen ein Timer mit einem Loop ist besser, wenn nicht sogar wesentlich besser. Ich kann dir auch sagen warum.
- Ein Timer der alle X Sekunden einen Loop durchführt belastet die CPU nur wenig innerhalb der X Sekunden bis zum Aufruf (ist ja nur 1 Timer), dann kurzzeitig etwas mehr, da er ja MAX_PLAYERS Durchläufe macht.
- Hat man aber MAX_PLAYERS Timer, die alle X Sekunden aufgerufen werden, dann laufen MAX_PLAYERS Timer gleichzeitig, was bedeutet die CPU muss während der Zwit zwischen dem Aufruf (MAX_PLAYERS-1)-mal mehr Arbeit leisten. Wenn dann einer der ganzen Timer aufgerufen wird, dann wird zwar nur 1/MAX_PLAYERS -stel der Arbeit verrichtet als beim Timer mit Loop, aber (!) es wird ja jeder Timer aufgerufen, somit summiert sich hier die Arbeit wieder auf die selbe auf, nur, dass wir zwischen den Aufrufen eben eine MAX_PLAYERS-Fache CPU-Leistung brauchen.
=> Ein Timer mit Loop ist ressourcentechnisch gesehen besser.
-
Eine Frage und zwar, wie ist das mit dem attachen hab sowas nie gemacht und naja will bevor erstmal nachfragen ...
Sprich ich will an einem Spieler ObjektID: 1550 attachen lassen das diese Money Bag am rücken von dem Spieler hängt .. wie kann ich sowas raus finden ... -
Eine Frage und zwar, wie ist das mit dem attachen hab sowas nie gemacht und naja will bevor erstmal nachfragen ...
Sprich ich will an einem Spieler ObjektID: 1550 attachen lassen das diese Money Bag am rücken von dem Spieler hängt .. wie kann ich sowas raus finden ...
Mit einem Editor:
http://forum.sa-mp.com/showthread.php?p=2385649
http://forum.sa-mp.com/showthread.php?t=209234
http://forum.sa-mp.com/showthread.php?t=196342 -
-
Jeffry: Heißt also, dass ein Timer, der ein Loop hat (foreach :)), wesentlich besser ist als ein Timer mit MAX_PLAYERS, danke dir werde ich mir merken
Korrekt, wenn du mit "Timer mit MAX_PLAYERS" sagen willst, dass es für jeden Spieler einen extra Timer gibt.Andere Frage, ist es Möglich, einen Spieler an ein Fahrzeug zu attachen?
Nein.
Du könntest es nur so machen: http://forum.sa-mp.com/showpost.php?p=1290737&postcount=2232
Aber ob das so schön aussieht bezweifle ich. -
Ich will einen eine Zahl (als Float) random ... als normale Zahl geht das .. aber geht das nicht mit 0.10 z.B ?
new Float:varatm = 0.10,ra = random(varatm);ATMHP[i] -= ra;
-
-
stock randfloat(Float:kleinerfloat, Float:grosserfloat) //by Templer
{
new kleinezahl = floatround(kleinerfloat, floatround_round), grossezahl = floatround(grosserfloat, floatround_round);
return floatadd(float(random(grossezahl - kleinezahl)), kleinerfloat)
}
Habe ich gerade in einem alten Beitrag gefunden, wie man sieht hat die Funktion Templer: geschrieben -
einfach
new Float:randomfloat = (random(10)/100); -
new Float:randomfloat = (random(10)/100);
Das gibt einfach nur 0 aus, in jedem Fall, da Integers immer auf das drunter liegende Integer abgerundet werden. Da du maximal 9/100 haben kannst => 0,09 => folgt 0.So ist es richtig:
new Float:randomfloat = (float(random(10))/100.0);Beachte aber, dass Floats nicht sooo toll sind, meistens kommt da z.B. "0.05999" raus, für 6.0/100.0 .
Davon abgesehen, wären hier folgende Werte möglich:
0.00
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09Ist das, was du willst?