Manche objecte sind vom Script her schon gegeben.
Mach das einfach unter die Includes und drück F5
#undef MAX_WEAPONS
#define MAX_WEAPONS 14
Manche objecte sind vom Script her schon gegeben.
Mach das einfach unter die Includes und drück F5
#undef MAX_WEAPONS
#define MAX_WEAPONS 14
Es kann sein, dass das Object MAX_WEAPONS schon existiert, vom Script her
Wenn es oben unter den includes steht mach einfach das
#undef MAX_WEAPONS
#define MAX_WEAPONS 14
Du könntest das LSPD Interior nehmen, den Duchgang zu den Zellen mit einer schönen Tür versperren.
Dann hast du besprechungsraum, Umkleide und Eingangsschalter
Ich hab das auch mal als Einsatzleitstelle "missbraucht" benutzt
Poste deine Errors und die Scriptzeilen doch,
vllt können wir die Fehler ja beheben
Hab den Parameter Rotation vergessen
new Float:x,Float:y,Float:z,Float:rot;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,rot);
CreateVehicle(model,x+1,y+1,z+1,rot,farbe1,farbe2,respawndelay);
Übrigens hier zum nachlesen
Also wenn du nur die Verschiebung der Koordinaten haben willst, dann mach es so
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
CreateVehicle(model,x+1,y+1,z+1,farbe1,farbe2,respawndelay);
Das erstellt das Auto auf allen Achsen um 1 verschoben.
Dadurch zerquetscht dich das Auto nicht
/Save wo er sein soll
dann
SetPlayerCheckpoint(playerid,x,y,z,5.0); // x,y,z holst du dir aus savedpositions wo du /save gemacht hast
Und unter OnPlayerEnterCheckpoint
DisablePlayerCheckpoint(playerid);
Ich möchte das gerne haben, da meine BAdwordsliste ja unendlich groß werden kann, sprich ich muss im script das static maxbadwords sehr hoch halten, damit immer alle badwords geladen werden.
Doch ein großes static bedeutet doch immer einen großen specherverlust bzw ressourcenverbrauch.
Daher würde ich gerne in der Datei wo die badwords stehen direkt reinschreiben wie viele wörter es sind, diese INformation geladen werden und als maximale arraygröße geladen werden.
Das heißt, man müsste eine non-static variable nehmen, doch das funktioniert ja nicht.
Und man kann dann ja theoretisch nur den define verändern ?
Was aber auch nicht funktioniert, da man ja kein define mit einer variable machen kann
#define maxbadwords hierdievariable
Das heißt also, dass auf oben bezogen, ich nicht bestimmen kann wie groß die Variable
const maxbadwords = 30;
entgültig sein soll, damit nicht zu viel Speicher verbraucht werden kann.
Denn es soll natürlich nur maximal so groß sein, wie auch wörter vorhanden sind.
Ich hab es so probiert
maxbadwords = dini_Int(file,"maxbadwords");
mit dem Fehler
Zitat(798) : error 022: must be lvalue (non-constant)
Wo ist der unterschied zweichen
new
und
static
Weil kann man nicht anstatt
static gTeam[MAX_PLAYERS];
auch
new gTeam[MAX_PLAYERS];
nehmen ?
Es muss doch irgenteinen entscheidenen Unterschied geben
const heißt also, dass egal wie groß ich die variable mache er immer auf den kleinstmöglichen wert geht ?
Andere Frage:
Habe ne Abfrage gemacht ob in einem String ein Badwort drin ist.
Sollte ein BAdwort drin sein, bekommen das die anderen nicht zu sehen, denn dann wird ***** Beleidigung ***** returnt.
Nur wenn kein badWord drin ist, bekomm ich den Fehler
stock badwordscheck(playerid,text[])
{
for(new i = 0;i<maxbadwords;i++)
{
if(strfind(text,badwords[i],true) != -1)
{
new string[128],pname[MAX_PLAYER_NAME];
GetPlayerName(playerid,pname,sizeof(pname));
format(string,sizeof(string),"%s wurde wegen einer Beleidigung gekickt",pname);
SendClientMessageToAll(lila,string);
Kick(playerid);
new bstring[32];
format(bstring,32,"***** Beleidigung *****");
return bstring;
}
}
new ntext[256];
format(ntext,sizeof(ntext),"%s",text);
return ntext; // hier der error zeile 7398
}
Bekomme den Error hier
Zitat(7398) : error 047: array sizes do not match, or destination array is too small
Nein, das sollte es nicht.
funktioniert theoretisch beides
@dit:
Jetzt nochmal hierauf zurück
new const maxbadwords = 30;
new badwords[maxbadwords][16]; //zeile 287
Zitat(287) : error 008: must be a constant expression; assumed zero
ICh wollt das mit dem zurücksetzten machen
Aber wenn ich das so machen, kommt das gleiche Ergebnis wie oben
strins(badwords[i],dini_Get(file,string),0);
format(string,sizeof(string),"\0");
printf("Insertet: %s",badwords[i]);
badwords zurückzusetzen wäre doch irgentwie unlogisch, weil dann würd ich das eben reinkopierte wort doch direkt wieder löschen
@dit: Das hats gebracht XD
new badwords[maxbadwords][16];
Einfach hier nen String rausgemacht
@dit:
Noch ne andere Frage wenn ich anstatt des #define maxbadwords 30
das hier mache
new const maxbadwords = 30;
new badwords[maxbadwords][16]; //zeile 287
Kommt der Error
Zitat(287) : error 008: must be a constant expression; assumed zero
Soll ich badwords[i] zurückstellen ?
Weil dann würde doch das Wort darin gelöscht.
Aber er soll doch eigentlich in die nächste Zelle das neue Wort reinschreiben
K Das sieht jetzt so aus
#define maxbadwords 4
new badwords[maxbadwords];
new file[128];
format(file,sizeof(file),"/serverfiles/badwords.txd");
if(dini_Exists(file))
{
for(new i = 0;i<maxbadwords;i++)
{
new string[128];
format(string,sizeof(string),"word[%d]",i);
if(dini_Isset(file,string))
{
strins(badwords[i],dini_Get(file,string),0);
printf("Insertet: %s",badwords[i]);
}
}
}
Nur das Ergebnis sieht dann so aus, als ob er die Schleife nicht hochzählen würde
Zitat[17:57:28] Insertet: huso
[17:57:28] Insertet: wixxeruso
[17:57:28] Insertet: spastixxeruso
[17:57:28] Insertet: hurensohnpastixxeruso
[17:57:28] urensohnpastixxeruso
iname ist 64 (byte bit ?) groß.
aber in der Datei name[0] ist grade mal 4 zeichen groß.
Hab iname auch schon auf 128 gesetzt, immer noch zu klein
Wenn ich das Printe,siehts so aus
printf("%s",dini_Get(file,string));
In der Serverlog steht dann das erste Wort von der Liste:
Zitat"huso"
Wie meinst du das mit dem entgültigen Wert ermitteln
Nimm anstatt "i" für die id "u", denn dann kannst du sowohl die id als auch den Namen des Spielers nutzen
Wie meinst du das ?
Willst du einen weiteren Automaten hinstellen ?
----------------------------------------- Eigenes Problem -----------------------------------
Hab das mit dem Badwords aus DAtei auslesen mal probiert nur gibts einen Error, pls help
Datei badwords.txd existiert und sieht so aus
Zitatmaxbadwords=4
word[0]=huso
word[1]=wixxer
word[2]=spast
word[3]=hurensohn
Dann im Script zum auslesen hab ich das
Unter den defines
enum badwordsinfo
{
iname[32],
};
new maxbadwords = 30;
new badwords[][badwordsinfo];
OnGameModeInit
new file[128];
format(file,sizeof(file),"/serverfiles/badwords.txd");
if(dini_Exists(file))
{
maxbadwords = dini_Int(file,"maxbadwords");
new string[128];
for(new i = 0;i<sizeof(maxbadwords);i++)
{
format(string,sizeof(string),"word[%d]",i);
if(dini_Isset(file,string))
{
badwords[i][iname] = dini_Get(file,string);
}
}
}
testword();
testword(); ist zum testen und bezieht sich herrauf
testword()
{
printf("%d",maxbadwords);
for(new i = 0;i<sizeof(maxbadwords);i++)
{
printf("Word[%d]: %s",i,badwords[i][iname]);
}
}
Der Error ist folgender (329) : error 047: array sizes do not match, or destination array is too small
und bezieht sich auf diese Zeile
badwords[i][iname] = dini_Get(file,string);
Weiß jemand ne Lösung ?
Nes, das hatte ich auch gepostet bis mir auffiel.
MTA Bereich
Und das ist ein Command für Samp