Hey. Wie kann ich abfragen, ob jemand auf dem Desktop ist?
Also wenn User A auf Desktop ist, soll User B sehen können, das User A auf Desktop ist in Sekunden, wenn er vor ihn steht.
Also so:
Hey. Wie kann ich abfragen, ob jemand auf dem Desktop ist?
Also wenn User A auf Desktop ist, soll User B sehen können, das User A auf Desktop ist in Sekunden, wenn er vor ihn steht.
Also so:
Hey. Wie kann ich abfragen, ob jemand auf dem Desktop ist?
new SpielerUpdate[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
SpielerUpdate[playerid] = gettime();
return 1;
}
Dann bei OnGameModeInit einen Timer:
SetTimer("CheckDesktop", 1000, 1);
forward CheckDesktop();
public CheckDesktop()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(SpielerUpdate[i] + 2 < gettime())
{
new AufDesktopSeit = gettime() - SpielerUpdate[i];
//Dann eben hier mit format und 3D Labels die Variable AufDesktopSeit anzeigen lassen.
}
}
return 1;
}
Das +2 ist, damit es nicht immer angezeigt wird wenn es mal kurz laggt.
Hay,
Ich wollte mal fragen wie man mehrere objecte eine textur gibt. Ich habe diese Objecte:
CreateObject(19449,1236.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000);
CreateObject(19449,1226.6999512,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000);
CreateObject(19449,1225.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000);
CreateObject(19449,1206.0000000,-1649.9000244,14.3000002,0.0000000,0.0000000,90.0000000);
CreateObject(19449,1236.3000488,-1649.8000488,16.1000004,0.0000000,0.0000000,90.0000000);
CreateObject(19449,1226.6999512,-1649.8000488,16.1000004,0.0000000,0.0000000,90.0000000);
CreateObject(19449,1225.3000488,-1649.8000488,16.1000004,0.0000000,0.0000000,90.0000000);
CreateObject(19449,1206.0000000,-1649.9000244,15.8999996,0.0000000,0.0000000,90.0000000);
CreateObject(6966,1259.7998047,-1685.7998047,12.5000000,0.0000000,0.0000000,179.9945068 );
Und ich will es mit diesere Texture übersehen:
SetObjectMaterial(Objekt,Index, 3922, bistro, sw_wallbrick_01, 0);
Wie kann ich es machen das ich auf einmal alle Objecte diese Texture verpassen kann?
new Objekt[20], id;
Objekt[id]=CreateObject(19449,1236.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1226.6999512,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
//usw...
for(new i=0; i<sizeof(Objekt); i++) SetObjectMaterial(Objekt[i],Index, 3922, bistro, sw_wallbrick_01, 0);
Das wäre so der einfachste Weg.
new Objekt[20], id;
Objekt[id]=CreateObject(19449,1236.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1226.6999512,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
//usw...
for(new i=0; i<sizeof(Objekt); i++) SetObjectMaterial(Objekt[i],Index, 3922, bistro, sw_wallbrick_01, 0);
Das wäre so der einfachste Weg.
Sorry aber so ganz verstehe ich das nicht.Wo muss ich das den eintragen? Kenne mich nicht so mit scripten aus^^
Alles anzeigen
new SpielerUpdate[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
SpielerUpdate[playerid] = gettime();
return 1;
}
Dann bei OnGameModeInit einen Timer:
SetTimer("CheckDesktop", 1000, 1);
forward CheckDesktop();
public CheckDesktop()
{
for(new i=0; i<max_players; i++)
{
if(SpielerUpdate[i] + 2 < gettime())
{
new AufDesktopSeit = gettime() - SpielerUpdate[i];
//Dann eben hier mit format und 3D Labels die Variable AufDesktopSeit anzeigen lassen.
}
}
return 1;
}
Das +2 ist, damit es nicht immer angezeigt wird wenn es mal kurz laggt.
könntest du mir das vielleicht erweitern`?
Ich raffs i.wie net
[quote='kleinkiko','index.php?page=Thread&postID=1667106#post1667106'][quote='Jeffry','index.php?page=Thread&postID=1667100#post1667100']new Objekt[20], id;
Objekt[id]=CreateObject(19449,1236.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1226.6999512,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
//usw...
for(new i=0; i
Sorry aber so ganz verstehe ich das nicht.Wo muss ich das den eintragen? Kenne mich nicht so mit scripten aus^^
Oder verwende meinen Stock aus dem Codeschnipseln dazu :)
http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/18-n%C3%BCtzliche-codeschnipsel-47#post1627842
[pwn]stock SetVarMaterial(object_var[],materialindex,modelid,txdname[],texturename[],materialcolor=0,size=sizeof(object_var))
{
for(new i=0; i<size; i++)
{
SetObjectMaterial(object_var[i],materialindex,modelid,txdname,texturename,materialcolor);
}
return 1;
}
Ist dann wie das normale SetObjectMaterial, bloß statt dem Object musst du dann "Objekt" eingeben
[quote='kleinkiko','index.php?page=Thread&postID=1667106#post1667106'][quote='Jeffry','index.php?page=Thread&postID=1667100#post1667100']new Objekt[20], id;
Objekt[id]=CreateObject(19449,1236.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1226.6999512,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
//usw...
for(new i=0; i
Sorry aber so ganz verstehe ich das nicht.Wo muss ich das den eintragen? Kenne mich nicht so mit scripten aus^^
Oder verwende meinen Stock aus dem Codeschnipseln dazu :)
http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/18-n%C3%BCtzliche-codeschnipsel-47#post1627842
[pwn]stock SetVarMaterial(object_var[],materialindex,modelid,txdname[],texturename[],materialcolor=0,size=sizeof(object_var))
{
for(new i=0; i<size; i++)
{
SetObjectMaterial(object_var[i],materialindex,modelid,txdname,texturename,materialcolor);
}
return 1;
}
Ist dann wie das normale SetObjectMaterial, bloß statt dem Object musst du dann "Objekt" eingeben
Sorry aber so ganz verstehe ich das nicht.Wo muss ich das den eintragen? Kenne mich nicht so mit scripten aus^^
OnGameModeInit
könntest du mir das vielleicht erweitern`?
Ich raffs i.wie net
forward CheckDesktop();
public CheckDesktop()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(SpielerUpdate[i] + 2 < gettime())
{
new AufDesktopSeit = gettime() - SpielerUpdate[i], str[128];
format(str, sizeof(str), "Seit %d Sekunden AFK.", AufDesktopSeit);
Update3DTextLabelText(...);
}
else //leeren String ins Label setzen, er ist wieder da.
}
return 1;
}
Das 3D Label sollte zuvor erstellt worden sein, logischerweise.
Also mehr kann ich dir beim besten Willen nicht machen, wenn du es.jetzt nicht verstehst, dann lass die Finger davon und lern erst mal an was leichterem.
könntest du mir das vielleicht erweitern`?
Ich raffs i.wie net
Hey,
ich hoffe, du meintest erklären -> Also:
Es wird bei OnPlayerUpdate die Variable SpielerUpdate[SpielerID] auf die aktuelle Zeit im UNIX Timestamp gesetzt, also die Zeit der letzten Bewegung wird gespeichert.
So, also: Bei dem public CheckDesktop wird überprüft, ob die Zeit von SpielerUpdate[SpielerID] + 2* kleiner ist als die jetzige Zeit, also wenn ich 3 Sekunden AFK bin, greift das Anticheat!
* Die 2 ist, damit es nicht bei jedem kurzen Lagg AFK meldet, sondern nur bei stehenbleiben, wenn jemand länger als 2 Sekunden AFK ist.
Liebe Grüße
Hallo ich arbeite an einem Aimbottest Befehll jedoch frage ich mich:
Welche XYZ Pos muss gesettz werden, damti ich hinter dem Spieler kurz bin`??
SetPlayerPos(playerid, px, py, pz);
also sowas.. z.B.
SetPlayerPos(playerid, px, py+5, pz);
edit:Text
@Blood
Das kommt drauf an in welche Richtung er schaut und damit musst du dann arbeiten, würde ich jetzt vermuten.
Y: Desto höher desto weiter im Norden, esto niedriger desto weiter im Süden
X: Desto höher desto weiter im Osten, desto niedriger (X) desto weiter im Westen
Wenn du nun überprüft in welche Richtung er schaut (vermute mal 0.0 ist dann Norden, 90° Osten, 180° Süden, 270° Westen) und je nachdem rechnest du die Koordinate hoch und setzt auch von dem Spieler die Richtung in der er schaut.
Beispiel: Er schaut nach Norden, dann setzt du die Y Koordinate weiter runter, damit er hinter dem Spieler steht und in die Richtung in der er schaut die gleiche.
Es ist nur eine Vermutung dass es so funktioniert, das mit dem Koordinaten ob (Y höher -> weiter im Norden...) stimmt auf jeden Fall.
Richtung in der er schaut kriegst du mit SetPlayerFacingAngle/GetPlayerFacingAngle raus.
Jetzt habe ich auch ein Problem.
Ich würde gerne mal wissen ob man ein kompletten Array leer kriegt?
z.B.:
enum player {
id,
name,
geld,
....
}
new playerInfo[MAX_PLAYERS][player];
Nun möchte ich dass wenn ein Spieler connected der komplette playerInfo[playerid] Array leer wird. Geht das oder muss man jede einzelne Variable auf 0 setzen?
Alles anzeigen@Blood
Das kommt drauf an in welche Richtung er schaut und damit musst du dann arbeiten, würde ich jetzt vermuten.
Y: Desto höher desto weiter im Norden, esto niedriger desto weiter im Süden
X: Desto höher desto weiter im Osten, desto niedriger (X) desto weiter im Westen
Wenn du nun überprüft in welche Richtung er schaut (vermute mal 0.0 ist dann Norden, 90° Osten, 180° Süden, 270° Westen) und je nachdem rechnest du die Koordinate hoch und setzt auch von dem Spieler die Richtung in der er schaut.
Beispiel: Er schaut nach Norden, dann setzt du die Y Koordinate weiter runter, damit er hinter dem Spieler steht und in die Richtung in der er schaut die gleiche.
Es ist nur eine Vermutung dass es so funktioniert, das mit dem Koordinaten ob (Y höher -> weiter im Norden...) stimmt auf jeden Fall.
Richtung in der er schaut kriegst du mit SetPlayerFacingAngle/GetPlayerFacingAngle raus.
Jetzt habe ich auch ein Problem.
Ich würde gerne mal wissen ob man ein kompletten Array leer kriegt?
z.B.:
enum player {
id,
name,
geld,
....
}
new playerInfo[MAX_PLAYERS][player];
Nun möchte ich dass wenn ein Spieler connected der komplette playerInfo[playerid] Array leer wird. Geht das oder muss man jede einzelne Variable auf 0 setzen?
Dazu gibt es genug Möglichkeiten dies via for-schleife zu tun :
for(new i; i < _:player ; ++i)playerInfo[playerid][player:i]= 0;
oder
for(new i; player:i < player; ++i) playerInfo[playerid][player:i] = 0;
oder
new x[player];
playerInfo[playerid] = x;
Dazu gibt es genug Möglichkeiten dies via for-schleife zu tun :
for(new i; i < _:player ; ++i)playerInfo[playerid][player:i]= 0;
oder
for(new i; player:i < player; ++i) playerInfo[playerid][player:i] = 0;
Blöde Frage... Wofür steht denn _:player oder [player:i]?
player:i ist deine enum Aufzählung
player:0 => id
und _:player ist der name deines enums.
Brauche noch mal Hilfe bei SetObjectMaterial und zwar habe ich ja mehrere Objecte die ich eine neue Texture versehen möchte so klappt auch alles nur bei dem Haus passiert einfach garnix.
Hier mal ein Screen vom Haus:
KLICK MICH!
Hier mein Code:
new Objekt[20], id;
Objekt[id]=CreateObject(19449,1236.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1226.6999512,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1225.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1206.0000000,-1649.9000244,14.3000002,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1236.3000488,-1649.8000488,16.1000004,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1226.6999512,-1649.8000488,16.1000004,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1225.3000488,-1649.8000488,16.1000004,0.0000000,0.0000000,90.0000000); id++;
Objekt[id]=CreateObject(19449,1206.0000000,-1649.9000244,15.8999996,0.0000000,0.0000000,90.0000000); id++;
for(new i=0; i<sizeof(Objekt); i++) SetObjectMaterial(Objekt[i],0, 6487, "councl_law2", "rodeo3sjm", 0);
new Objekt1;
Objekt1 = CreateObject(6966,1259.7998047,-1685.7998047,12.5000000,0.0000000,0.0000000,179.9945068); //Das ist das Haus
SetObjectMaterial(Objekt1, 0, 6966, "councl_law2", "rodeo3sjm", 0);
Bei dem Code:
new Objekt1;
Objekt1 = CreateObject(6966,1259.7998047,-1685.7998047,12.5000000,0.0000000,0.0000000,179.9945068);
SetObjectMaterial(Objekt1, 0, 6966, "councl_law2", "rodeo3sjm", 0);
Habe ich geguckt ob es was bringt wenn ich es einzeln mache aber es klapp nicht.
Die Texturen sind nur Testweise dort eigentlich möchte ich später diese Texture haben:
SetObjectMaterial(Objekt,Index, 3922, bistro, sw_wallbrick_01, 0);
Ich weiß nicht weiter da ich nicht gut im Scripten bin und mich eigentlich noch nie damit beschäftigt habe^^
//EDIT:
Habs selber rausgefunden^^ Das Haus hat mehrere Model Texturen
Existiert der Ordner "Accounts"?
Erstellt er irgendwo die Datei falls sie nicht existiert?
Und war der Score (in der Tabliste) von dir wirklich auf 30?
Speicher das Level lieber in einer Variable z.b. playerInfo[playerid][plevel] = 30; und lies die dann aus, ist glaub ich besser & sicherer. (müsstest du dann mit einem enum erstellen)
Kann man irgendwie den aktuellen timestamp auslesen? (Vergangene Zeit in Sekunden seit 01.01.1970 (glaub ich wenn das so war...))
Ja gibt es die Funktion gettime returnt einen unix-timestamp
http://wiki.sa-mp.com/wiki/Gettime
Ja hab ich auch schon.... Fail -_-
Dachte gettime() ist nur für hour/minute *facepalm*
Morgen zusammen,
ich habe ein Problem mit einem Error,nur kann ich ihn nicht finden.
Kann villeicht jemand von euch den Grund für diesen Error sehen?
Hier der Erro und die Zeile:
ZitatZeile (681) : error 001: expected token: ",", but found ";"
TogglePlayerControllable(playerid,1);
GivePlayerMoney(playerid -=Buycars[i][Preis]; <<<Die Errozeile
Autohaus[j][Kasse]+=Buycars[i][Preis];
Mehrere Augen sehen besser als 2