Beiträge von Kaliber
-
-
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)); //->3mfg.

-
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: SetPlayerChatBubblePS: 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.

-
Hast du die Includes auch mit denen unter /Pawno/includes ersetzt und startest du die richtige Pawno.exe?

-
habe diesmal nach dem return noch ein return:
Beantworte einfach unsere Frage
-
, VERSION);
Da das...oben in deinem Skript steht irgendwo #define VERSION ...was steht da genau?
-
ocmd: ocmd 2.1.1 [ Update 3.11.2013 ]
sscanf: http://forum.sa-mp.com/showthread.php?t=570927
google ist schon eine coole Erfindung
