teilnehmen eine Variable zuweisen.
Genau das habe ich ihm doch auch vorgeschlagen...aber er hat sich irgendwie für die andere Variante entschieden ![]()
teilnehmen eine Variable zuweisen.
Genau das habe ich ihm doch auch vorgeschlagen...aber er hat sich irgendwie für die andere Variante entschieden ![]()
Und wie kann ich diese durchzählen ?
Naja, einfach so:
new ids[MAX_PLAYERS],counter;
for(new i,l=GetPlayerPoolSize()+1; i<l; i++)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,x,y,z)) //Hier halt deine Position angeben
{
ids[counter++] = i;
}
}
//Naja und counter hat jetzt die Anzahl der Personen die da sind und in ids sind die Playerids aufgelistet:
//Wenn du die nun alle an eine Position setzen willst, machst du das z.B. so:
for(new i; i<counter; i++)
{
SetPlayerPos(ids[i],x,y,z); //Hier setzt du dann alle Spieler die da standen an eine gewisse Position
}
mfg. ![]()
Kann mir jemand ein beispiel für eine Abfrage schicken ob sich drei leute an einen gewissen ort befinden wenn Sie einen Befehl eingebeN ?
Naja...da gibt es mehrere Möglichkeiten das zu realisieren.
Entweder du lässt sie einen Command eingeben, dann setzt du einen boolean für die playerid auf true und freezt sie.
Dann kannst du ja ganz einfach dadurch loopen und schauen wer alles an dem Ort ist und noch connected ist.
Oder du machst einfach eine Schleife durch alle Spieler und schaust ob diese Spieler an diesem Punkt sind.
/sit und möchte ihn in einem Timer benutzen
Schau dir am besten nochmal den Wiki eintrag dazu an, besonders den "time" Parameter: ApplyAnimation
Für sit selbst gibt es mehrere Animationen, ich geb dir einfach mal 2:
"BEACH", "ParkSit_M_loop"
//oder
"PED","SEAT_IDLE"
mfg. ![]()
Jop mit N ging es danke
Ja, habe es mal im Standard Post ergänzt, was so die häufigsten Keys sind ![]()
Nutze dafür folgende Funktion:
stock GetIDByName(const name[])
{
new n[MAX_PLAYER_NAME];
for(new i,l=GetPlayerPoolSize()+1; i<l; i++) if(GetPlayerName(i,n,MAX_PLAYER_NAME) && !strcmp(n,name)) return i;
return -1;
}
//Dann in deinem Dialog:
new id = GetIDByName(inputtext);
if(id == -1) return SendClientMessage(playerid,-1,"Dieser Admin ist nicht mehr online!");
mfg. ![]()
Also ich kenne das Problem mit dem sscanf Plugin nicht ^^, deshalb bin ich davon ziemlich überrascht.
Ich auch nicht...aber in solchen Fällen verwende ich es auch nie ![]()
Deshalb...war das nur vermutet...was da passieren kann ![]()
Das überschreiben wäre nicht wirklich denkbar und zwar wird der Speixher dynamisch bei localen variablen frei gegeben jedoch nur die große , welche auch beansprucht wird,
Beim Stack (Lokalen Variablen) kann man das NULL Byte überschreiben...es folgt zwar ein Runtime Error, dennoch geht es:
#include <a_samp>
main() {
new test[2];
func(test);
print(test); //->Gibt Hallo aus
}
func(...) {
setarg(0,0,'H');
setarg(0,1,'a');
setarg(0,2,'l');
setarg(0,3,'l');
setarg(0,4,'o');
}
Bei globalen Variablen wird es begrenzt, sprich da kommt nur Ha raus...ohne Error ![]()
mfg. ![]()
Mal kurz nebenbei, es ist total redundant hier sscanf zu nutzen, schreibe es einfach so:
if(strlen(params) > 64)return SendClientMessageEx(playerid, COLOR_WHITE, "%d Zeichen.", strlen(params));
//Und text = params...
Doch du kannst keine 128 Zeichen in einen string packen der auf 64 Zeichen limitiert ist
Nun, ich weiß nicht genau wie das verarbeitet ist...aber es kann doch gut sein, dass das NULL Byte überschrieben wird...somit kann der String dadurch natürlich größer werden...
Naja, wie dem auch, es ist in der Doku beschrieben, dass man sscanf nicht nutzen soll für diesen Fall, also mach es einfach nur so ![]()
Leere Cells gibts nicht. Die werden eins nach dem anderen aus der Datenbank ausgelesen
Ich bin von deinem Beispiel ausgegangen und da ist cell 0 leer ![]()
aber ich möchte dem ersten Array keine feste Größe geben. Geht das nicht?
In dieser Sprache leider nicht direkt.
Du müsstest ein Plugin verwenden um dies tun zu können: http://forum.sa-mp.com/showthread.php?t=451381
mfg. ![]()
Andere Lösung?
Nun, da gibt es mehrere, das kommt auf die Deklaration an.
Angenommen du machst es so:
static const array[][] = {
"String1",
"String2",
"String3"
};
printf("Anzahl der Strings: %d",sizeof array); //->Gibt 3 aus
Das was du aber willst, ist viel mehr eine Liste an Elementen.
new string[30][128];
string[0] = "String1";
string[1] = "String2";
string[3] = "String4";
So jetzt können wir nicht mehr mit sizeof oder strlen arbeiten.
Zusätzliches Problem ist, dass Lücken entstehen können wie z.B. in diesem Fall cell 2 leer ist.
Lösung ist eine Funktion:
stock CountStrings(const str[][],len=sizeof str)
{
new counter;
for(new i; i<len; i++)
{
switch(str[i][0])
{
case '\0','\1': continue;
default: counter++;
}
}
return counter;
}
//Nutzen können wir sie in unserem Beispiel so:
new string[30][128];
string[0] = "String1";
string[1] = "String2";
string[3] = "String4";
printf("Anzahl der Strings: %d",CountStrings(string)); //->3
mfg. ![]()
Kannst du mir das Bitte erleutern, Ich möchte das wenn man Enter drückt das die die Animation die man ausführt aufhört.
//Edit:
Obwohl nimm lieber einen Befehl dafür:
//Irgendein Command:
if(GetPlayerAnimationIndex(playerid)) ClearAnimations(playerid);
Da du sonst die Animation selbst abbrichst die ein Spieler ausführen würde...
Okay könnte mir das einer vor machen bin leider Neu
Hast du mal auf den Link geklickt? ![]()
Da ist doch sogar ein Beispiel und alle Attribute sind aufgelistet...
Wenn du etwas nicht verstehst, frag bitte expliziter ![]()
Wie knn ich scripten das wenn ein Spieler was sagt das über den Namen das gesagte erscheint
Mit dieser Funktion: SetPlayerChatBubble
PS: Man kann die eigene ChatBubble nicht sehen...dafür müsstest du ein 3DTextLabel verwenden und über dem Spieler attachen ![]()
Wie kann Ich abfragen ob ein Spieler eine Anitmation ausführt ?
Einfach so:
if(GetPlayerAnimationIndex(playerid))
{
//Hier führt er eine Animation aus
}
mfg. ![]()
Das kannst du mit dem Plugin MapAndreas (http://forum.sa-mp.com/showthread.php?t=120013) sehr präzise abfragen
Wesentlich performanter wäre: http://forum.sa-mp.com/showthread.php?t=273263
So macht es mehr Sinn:
stock ServerLaden()
{
Server[Staatskasse] = mysql_GetInt("server", "Staatskasse","id", "0");
Server[Zinsen] = mysql_GetFloat("server", "Zinsen", "id", "0");
Server[Steuern] = mysql_GetFloat("server", "Steuern", "id", "0");
return 1;
}
if(boot==0)
Mach mal:
if(boot != 1)
Da der Wert auch -1 z.B. sein kann (wenn er noch nicht gesetzt wurde).
Zudem prüfe evtl ob die vehicleid richtig ist, aber sonst sollte es funktionieren ![]()
mfg. ![]()
Was kann ich tun ?
Füg das nativechecker Plugin ein und poste mal deinen Log ![]()
Naja einfach so:
stock GetRandomPlayer()
{
new idx[MAX_PLAYERS],t;
for(new i; i<MAX_PLAYERS; i++) if(IsPlayerConnected(i)) idx[t] = i,t++;
return (t) ? idx[random(t)] : 0;
}
Die Funktion returnt dir deine zufällige Spielerid auf dem Server ![]()
mfg. ![]()