Hi,
kann mir das einer machen das Zivilisten kein Armor haben können?
Danke im Vorraus...
/€dit: GF
CB
Hi,
kann mir das einer machen das Zivilisten kein Armor haben können?
Danke im Vorraus...
/€dit: GF
CB
//ganz nach oben:
forward russi();
//OnGameModeInit:
SetTimer("russi",1000,1);
//ganz nach unten:
public russi() {
for(new i=0; i<MAX_PLAYERS; i++) {
if(wenn er zivilist ist) {//kenn die Teams von GF nicht
new Float:arm;
if(GetPlayerArmour(i,arm)) {
if(arm>0) { SetPlayerArmour(i,0); }}}}
return 1;
}
Über nen wirklich grossen Playertopoint würde es auch gehen.
IfPlayertoPoint(i,2000,0,0,0);
if gTeam blabla; (cops)
return1;
else (alle die keine rüsi haben dürfen)
SetArmor(i,0);
sowas in der richtung halt
PlayerToPoint musste aber auch mit nem timer immer kontrollieren, und keks, dieses If(GetPlayerArmor(playerid,amo)) müsste man das nit ohne if machen?? man holt es sich ja und dann fragt man erst ob es größer als is
1. Nie 1 Sekunden Timer, siehe das Tut von NSG]Bright.
Desweiteren kannst du nur mit einem Timer überprüfen ob derjenge Armor hat, verbinde das am Besten mit einem anderen Timer, der schon vorhanden ist. Ansonsten ist das von Kecks ganz ok.
Nope hab was ähnliches drinne, benötigt eigentlich keinen Timer.
Es wird ja nicht überprüft sonder einfach immer wieder auf 0 gesetzt. Hmm was evtl zu stabilitätsproblemem führen könne bei der grösse?!?! Kp.
Ich versteh nur nit warum man ne If-Abfrage nimmt wenn man was rausbekommen will? die abfrage kommt doch dannach, aber naja und warum nie 1 sek timer? Ich glaube keks kennt sich da bissel besser aus als bright
Klar, kann man es machen, dennoch ist die Leistung des Server höher dadurch, da zwei gleiche Timer nebenher laufen.
if abfrage muss, da man sonst nicht abfragen kann, ob er Armor hat..
new Float:armor;
GetPlayerArmour(playerid, armor);
for(new i=0; i<GET_MAX_PLAYERS; i++)
{
if(armor > 0 && !IsACop(i))
{
SetPlayerArmour(i, 0.0);
return 1;
}
Alles anzeigen//ganz nach oben:
forward russi();
//OnGameModeInit:
SetTimer("russi",1000,1);
//ganz nach unten:
public russi() {
for(new i=0; i<MAX_PLAYERS; i++) {
if(wenn er zivilist ist) {//kenn die Teams von GF nicht
new Float:arm;
if(GetPlayerArmour(i,arm)) {
if(arm>0) { SetPlayerArmour(i,0); }}}}
return 1;
}
nun Verliert jeder Armor egal ob Cop Cia usw
// Edit: hab garnicht gesehen das nochmehr Leute Geantwortet haben o.o
Ich wills aber nur für die Leute machen, die aufm Server sind und wen nder Spieler nicht connected ist, returnt GetPlayerArmour eine 0
Und du holst da die Rüstung von einer festen ID
Desweiteren gibt es das "GET_MAX_PLAYERS" nciht, es heißt GetMaxPlayers(); und wenn das Script dann jedes mal wieder die Maximalanzahl nachgucken müsste, hätte man keine Zeit gespart, sondern raufgetan
Und dort ist ein Klammerfehler
Das mit dem Timer: Man kann sich drüber streiten, natürlich hast du recht, ein Interval von 1 sek ist resourcenfressender, als einer von 2 sek, wenn man den nachher aber zu hoch macht, dann wird die Rüstung halt zu spät resettet
Aber danke für den Hinweis, ein Interval von 3 sek dürfte gut sein
//EDIT: @ CopBot: Nein?
if(wenn er zivilist ist) {//kenn die Teams von GF nicht
Nur die Zivilisten^^ ist da aber auch doof zu sehen, dachte als ich deins gelesen ahbe auch erst, dass ich vergessen habe, aber die Abfrage hat sich versteckt
//EDIT2:
Ich glaube keks kennt sich da bissel besser aus als bright
Das glaube ich nicht, bin nicht so gut, wie die meisten denken
Ich würde gar keine neuen Timer starten, sollten eine vorhanden 1 Sekudnen Timer nehmen, da es ressourcenschonender ist. Natürlich lässt sich darüber streiten ob GetMaxPlayers langsamer ist als Max_PLAYERS. ICh benutze GetMaxPlayers für solche Funktionen^^
das von keks stimmt du musst nur das Zivi team eintragen
GetMaxPlayers(); IST langsamer. Einfach aus dem grund weil es eine native Funktion ist und somit gar nicht schneller als eine Define sein kann.
Solltet ihr dazu noch Fragen haben => Code Optimierungen
Naja, für meine Funktion ist es schnell genug.^^
Das in den vorhanden Timer zu tun, ist ihm überlassen^^
Und GF hatn Timer? Hab nur einmal im GF nach "SetTimer" gesucht und nix gefunden, hab mich dann auch nicht weiter mit GF beschäftigt
Und das mit GetMaxPlayers() (wenn mans verwenden will) würde ich dann so machen:
for(new i=0, j=GetMaxPlayers(); i<j; i++) {
//oder:
new i, j=GetMaxPlayers();
for(; i<j; i++) {
//oder:
new i, j=GetMaxPlayers();
while(i<j) {
Sollte dein Server einen Monat mit durchschnittlich 25 Usern laufen so würdest du schon merken wie groß der Unterschied sein kann.
EDIT: Keks, da könnte man auch ein per goto das ganze lösen:
new i, j = GetMaxPlayers();
loop:
if(i < j) {
i++; // Argh, ";" vergessen, damn Lua xD
goto loop;
}
//Keks: Könnte man, ich weiß... kann man auch noch anders (indem man den public sich selbst aufrufen lässt, wäre zwar die schlechteste Methode, aber würd funzen^^)
Das bezweifle ich, denn es kommt darauf an, wie oft das Script dieses Callback aufruft. Sollte das Callback nicht oft genutzt werden, ist egal. Natürlich hast du recht, was de Schnelligkeit angeht, das stell ich ja nicht in Frage.^^ Kannst ruhig mir überlassen, was ich benutze :D^^