Meinst du Bäume in einem bestimmten Radius ? Habe hier z.B welche in einem Radius von 20 erstellt, und 360 °.
Beiträge von JustMe.77
-
-
Danke teste ich mal gleich aus.
Wollte nebenbei noch ein Befehl erstellen womit ich nachschauen kann ob Admins connected sind und mit welchem Level.
Kann mir da jemand ein Anfang geben? Habe mir das hier angeschaut bekomme aber lauter Errors da ich GetPlayerName etc nicht definiert habe.
if(strcmp(cmd, "/admins", true) == 0)
{
new Count,i,name[24],string[256];
for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && IsPlayerAdmin(i)) Count++;
if(!Count) return SendClientMessage(playerid,COLOR_GREEN,"Admins Online: Keiner");
if(Count == 1) {
for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && IsPlayerAdmin(i)) break;
GetPlayerName(i,name,24); format(string,256,"Admins Online: %s",name);
return SendClientMessage(playerid,COLOR_GREEN,string);
}
if(Count >= 1) {
new bool:First = false;
for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && IsPlayerAdmin(i)) {
GetPlayerName(i,name,24);
if(!First) { format(string,256,"Admins Online: %s,",name); First = true;}
else format(string,256,"%s %s",string,name);
}
return SendClientMessage(playerid,COLOR_GREEN,string);
} -
Danke dir, habe zwar gerade keine Möglichkeit zu testen (mache das Morgen) aber ich gehe mal davon aus das es klappt, danke dir sehr für deine große Hilfe.
Ich arbeite Morgen an meinem System weiter wollte aber nebenbei Fragen ob es irgendwie einen Weg gibt die Mittle vom Bildschirm herauszufinden?
Also habe vor den Timer Textdraw genau mittig zu platzieren. -
Ach tut mir Leid das funktioniert. Ich hatte mein FilterScript unbennannt deswegen hat das Reloaden auf dem Server nichts gebracht
Jetzt funktionierts, aber während des testen kam ein Freund auf meinem Server und ich habe bemerkt das dieser Countdown nur für mich erstellt wird bzw. nur dem der den Befehl ausführt.
Ich wollte das aber global haben, was muss ich ändern Jeffry: ? -
Hilft nicht, habe es so gemacht wie du wolltest.
forward CountDownObjekte(playerid, count);
public CountDownObjekte(playerid, count)
{
count--;
if(count <= 0)
{
KillTimer(countTimer);
countTimer = -1;
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); //GO - Sound
//Hier die Objekte erstellen
gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
SetObjectMaterial( gObj[0], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(gObj[0], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
SetObjectMaterial( gObj[1], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(gObj[1], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
TextDrawHideForPlayer(playerid, Textdraw0);
return 1;
}
new str[16];
format(str, sizeof(str), "Countdown: %d", count);
TextDrawSetString(Textdraw0, str);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0); //Timer - Sound
TextDrawShowForPlayer(playerid, Textdraw0);
countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, count);
return 1;
} -
Funktioniert, nur möchte ich ja 2 Sounds abspielen lassen einmal den Timer und DANACH den GO Sound. Doch die spielen sich bei mir beide gleichzeitig ab, was mache ich falsch?
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0); //Timer - Sound
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); //GO - Sound -
Ich habe es schon ausprobiert mit der ID 1056 aber er spielt sich nur einmal ab.
Weiß nicht wofür die Werte dahinter stehen, vielleicht liegts daran?
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 10.0);
-
Funktioniert gut. Hatte gedacht OnPlayerConnect und OnFilterScript Init wären identisch..
Wie dem auch sei, mein nächster Schritt ist ein Sound zu adden der sich dann jede Sekunde beim Countdown abspielt. Auch hier weiß ich nicht ob es einen gibt der standart dafür genutzt wird, aber ich meine diesen Sound den Server meistens verwenden wenn z.B ein Rennen gestartet wird und dann 3, 2, 1 etc kommt.
Weißt du eventuell welchen ich meine oder gibt es da irgendeine Liste mit den Sound IDs?
Edit:
Ich habs selber gefunden, ich denke es ist der hier. SOUND_RACE_321 1056.
Nur muss ich nur noch wissen mit welcher Funktion ich ein Sound abspielen lasse und wo genau das hinkommt..
-
Ja, ich dachte mir nur das dieses Textdraw mehrmals erstellt wird sobald ich jedes mal erneut den Countdown starte.
Ich benutze es zurzeit als FilterScript, ich denke ich werde das zu OnFilterScriptExit hinzufügen.
Habe mal danach gesucht doch nur was für OnPlayerDisconnect gefunden, ich möchte aber das dass ganze beim entladen des Filterscript gelöscht wird doch kenne die Funktion nicht.
Die hier ist falsch oder? Denn ich bekomme Errors.
TextDrawDestroy(textdraw[playerid]);
return 1; -
Funktioniert danke, und ja ich habe noch eine Menge vor nur mache ich das gerne alles Schritt für Schritt um später bei Problemen besser erkennen zu können was ich falsch verändert habe etc.
Ich habe nirgendswo TextdrawDestroy drinne, doch ist der Countdown vorbei sehe ich ihn nicht immer ( so solls auch sein). Sollte ich das trotzdem einfügen oder kann das zu Problemen führen?
-
Schon besser nur geht dieser auch in den Minus Bereich bzw. hört nie auf.
Und fragen wollte ich noch ob das in Ordnung ist dich immer zu markieren bzw. ob das dich stört?
-
-
Habe nun ein Textdraw erstellt, wenn ich Ingame /ecountdown 10 eingebe, taucht auf Countdown: 9 aber geht nicht weiter runter und bleibt permanent so.
Zum Code:
Textdraw:
Textdraw0 = TextDrawCreate(316.000000, 15.000000, "1");
TextDrawBackgroundColor(Textdraw0, 255);
TextDrawFont(Textdraw0, 3);
TextDrawLetterSize(Textdraw0, 0.500000, 1.000000);
TextDrawColor(Textdraw0, -65281);
TextDrawSetOutline(Textdraw0, 0);
TextDrawSetProportional(Textdraw0, 1);
TextDrawSetShadow(Textdraw0, 1);
TextDrawSetSelectable(Textdraw0, 0);Public
forward CountDownObjekte(playerid, count);
public CountDownObjekte(playerid, count)
{
count--;
if(count <= 0)
{
KillTimer(countTimer);
countTimer = -1;
//Hier die Objekte erstellen
gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
SetObjectMaterial( gObj[0], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(gObj[0], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
SetObjectMaterial( gObj[1], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(gObj[1], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
}
new str[16];
format(str, sizeof(str), "Countdown: %d", count);
TextDrawSetString(Textdraw0, str); //Die id musst du halt von deinem textdraw da einfügen...
TextDrawShowForPlayer(playerid, Textdraw0);
return 1;
}Befehl
CMD:ecountdown(playerid,params[])
{
if(countTimer != -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Countdown ist bereits an.");
if(!params[0]) return SendClientMessage(playerid, 0xFF0000FF, "Gebe eine Zeit ein.");
new time = strval(params);
if(time < 1 || time > 60) return SendClientMessage(playerid, 0xFF0000FF, "Gebe eine Zeit zwischen 1 und 60 ein.");
countTimer = SetTimerEx("CountDownObjekte", 1000, true, "dd", playerid, time);
return 1;
} -
Nein, sowas gibt es nicht. Das musst du, am besten mit einem Textdraweditor, selbst machen.
Mach ich eben Fix, aber was genau muss ich erstellen? Die Zahlen 1 - 60 oder wie :o
-
Gibt es da ein Standart Textdraw für diesen Countdown? Habe bei etlichen Servern gesehen das der fast immer "GOLD-GELB" war..
Wenn nicht muss ich das halt selbst machen..
-
Hey, ich kann bei Jeffry's Code den er mir gegeben hat keine Textdraw ID entnehmen, oder habe ich mich falsch ausgedrückt und du hast mir was anderes gegeben :D?
-
So jetzt habe ich wieder Zeit, danke erstmal.
Bei //TextDrawSetString? / SendClientMessage? möchte ich den Countdown als TextdrawSetString ausgeben, was sind die Parameter die dahinter gehören?
Habe bei Wiki das gefunden TextDrawSetString(himessage, newtext); .
Doch das muss ich anpassen zu meinem Code, was setze ich statt himmessage und newtext ein?
-
Ich danke dir vielmals, funktioniet bis jetzt sehr gut :).
In Planung habe ich noch einige Änderungen, die wären unter anderem:
- Ein Befehl womit ich ein Countdown starte, z.B ein Countdown der von 60 runterzählt bis auf 0.
(Im Befehl kann man eine beliebige Zahl eingeben in Sekunden.) Das soll dieser Countdown sein der auf dem Bildschirm erscheint also kein Text und ebenfalls dieser Sound der abgespielt wird. (Kenne die ID nicht).- Nachdem der Countdown abgelaufen ist, erstellen sich diese 2 Türen.
Kannst du mir da behilflich sein? Hat Zeit bis morgen weil ich jetzt nicht mehr am PC bin.
-
Viel besser nur habe ich 2 kleine Probleme:
1) Texturen werden nicht angezeigt, nur das Objekt selbst.
2) Beim löschen der Türen wird SendClientMessage 2 mal ausgeführt, ich weiß nicht warum.
CMD:edoor(playerid,params[])
{
static bool:status;
if(!status)
{
new tmpobjid;gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
SetObjectMaterial(tmpobjid, 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(tmpobjid, "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
SetObjectMaterial(tmpobjid, 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
SetObjectMaterialText(tmpobjid, "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);SendClientMessage(playerid,0xFF0055FF,"Rooms locked");
}
else
{
for(new i=0; i<sizeof(gObj); i++)
{
if(gObj[i] != -1) DestroyObject(gObj[i]);
gObj[i] = -1;
SendClientMessage(playerid,0xFF0055FF,"Rooms unlocked");
}
}
status = !status;
return 1;
}Also zu dem Text, gebe ich einmal /edoor ein, erstellt sich das Objekt, Rooms locked erscheint. Lösche ich die Objekte, kommt 2 mal Rooms unlocked..
-
Keine Errors, denke mal es funktioniert ich teste es gleich aus.
Aber kannst du mir noch sagen wie ich das in nur einem Befehl einbaue? Also das sich das z.B mit /edoor erstellt, wenn man es nochmal eingibt löschen sich die Tore..