Ich erklär es für andere hier kurz nochmal:
Beim enum einen Array für die Werte machen, wo ein Text höchstwahrscheinlich sein wird wie zB nachname und dann sollte es wie folgt aussehen:
...
nachname[MAX_PLAYER_NAME],
vorname[MAX_PLAYER_NAME],
wohnort[MAX_PLAYER_NAME],
...
MAX_PLAYER_NAME steht für den Wert 32 in der a_samp.inc
danach nur darauf achten das beim speichern und auslesen ein Text ausgelesen wird, also in dem Fall oben das strval(val); durch val ersetzen, da val selbst ein string ist.
und beim einspeichern in den Dialogen das gleiche mit dem strval wie vorhin erklärt.
Beiträge von Templer
-
-
- Aus Dummheit gelöscht -
Trooper weiß warum
-
Wo bitte erstellt hier SII bei INI_Open eine Datei?
stock INI_Open(const filename[]){if (!filename[0]) return false;if (gFile[E_OPEN]){if (!strcmp(gFile[E_FILENAME], filename, true)) return true;return false;}new File: h;h = fopen(filename, io_readwrite);if (h){INI_strcpy(gFile[E_FILENAME], filename, INI_MAX_FILENAME, INI_MAX_FILENAME);new line[INI_MAX_LINE];new ln = -1;new separator;while (((ln + 1) < INI_MAX_LINES) && (fread(h, line))){ln ++;INI_StripLine(line);separator = strfind(line, "=", false);if ((line[0] == ';') || (line[0] == '=') || (separator == -1) || (separator > INI_MAX_KEY)){if (line[0] == ';'){INI_strcpy(gCache[ln][E_VALUE], line, INI_MAX_VALUE, INI_MAX_VALUE);}else{INI_strcpy(gCache[ln][E_VALUE][1], line, INI_MAX_VALUE, INI_MAX_VALUE);gCache[ln][E_VALUE][0] = ';';}continue;}INI_strcpy(gCache[ln][E_KEY], line, separator, INI_MAX_KEY);INI_strcpy(gCache[ln][E_VALUE], line[separator + 1], INI_MAX_VALUE, INI_MAX_VALUE);if (!gCache[ln][E_VALUE][0]) gCache[ln][E_VALUE][0] = ' ';}fclose(h);gFile[E_OPEN] = true;return 1;}return 0;}
und bei fopen wird folgendes zurückgegeben:
Returns the Filehandle. 0 if failed to open fileFolge: Wenn Datei nicht vorhanden wird nix gemacht (wenn es in einer IF Abfrage wäre).
Vielleicht hast du Trooper dein INI_Open verbessert? -
Nunja, gehört eigentlich in ein Godfather Bereich, aber ok ^^, also:
FMember steht in Godfather dafür das du Familien in einer Mafia hast, zB im Offline Game von SanAndreas gibt es ja bei den GrooveStreet, die Temple Drive Family oder sonstige, also haben die gleichen Skins wie Groove. Jedoch wurde dies im Godfather sehr komplex und umständlich geschrieben und würde deshalb eher die Finger davon lassen ^^, außer du hast gute Scriptkenntnisse und kannst es umschreiben. Weitere Info, einfach mit deinem Editor nach [pFMember] suchen ^^.
Der Grund warum du ihn nicht uninviten kannst per /makeleader nach deiner /setstat Theorie ist der, dass bei dem /makeleader Befehl eine Sicherheitsabfrage ist, dass wenn einer in ner "Family" von einer Mafia / Gang ist, dass er nicht rausgeschmießen werden kann. Jedoch sollte der /family Chat auch ohne setzen des pFMembers gehen und bitte dich deshalb den ganzen /family Code zu posten.
TIPP: bei FMember ist 0 nicht die Zahl zum "deaktivieren/zurückstellung", sondern die Zahl 255.
-
Die Datei wird beschrieben jedoch anscheinend nicht gefunden, also vielleicht mal erstellen? Jedoch sehe ich grad, dass dein Grundaufbau beim Speichern totaler Schwachsinn ist Also wer immer dies gemacht hat, bedanke dich nicht bei ihm.
Was du geschrieben hast oben bedeutet, dass die Zeilen eX, eY, eZ, aX, aY, aZ, Preis, Besitzer erstellt werden und immer neu ersetzt, das bedeutet er beschreibt die Datei mit der HausID 0 und geht weiter und beschreibt sie dann mit HausID 1 usw. bis er die max. Zahl von MAX_HOUSES erreicht hat und was am Ende herauskommt sind die Daten vom letzten Haus und die anderen gibt es wohl nichtmehr ich habe dir nun im Anhang ein Beispiel gemacht womit er es richtig abspeichert, JEDOCH musst du das Laden umschreiben, da es mit dem Speichern nichtmehr übereinstimmt.
-
Ok lass new Turfs[6]; auskommentiert und ersetze die oben gepostete Zeile
for(new i = 0; i < sizeof(Turfs); i++)
in nach
for(new i = 0; i < sizeof(TurfInfo); i++) -
Zeig mal die Zeile, wo du Turfs auskommentiert hast
-
MoonCrasher, du musst es nicht definieren, sondern WEIL du es definiert hast und nie verwendest kommt dieser Error Siehe obigen Post
Also such einfach nach Turfs und lösch die Zeile bzw. kommentiere sie aus indem du davor // schreibst, z.B.:
//new Turfs;
-
#pragma dynamic 8192 in dein Script oben irgendwo einfügen, was den Heap Size vom Script erhöt und die Meldung nichtmehr kommt.
Edit: Und wie einer vorhin sagte, kannst du das Turfs weglöschen oder du ignorierst es, warnings sind nicht schlimm
-
Da mein PWN-BB Code spinnt, siehe Anhang
Edit: Lade sie bitte neu, hatte nen Fehler
-
Nicht ganz. Ich weis nun auch nicht so recht ob das ein GF ist und deshalb mach ich es mal auf GF Standart:
if(PlayerInfo[playerid][pLeader] > 0) //Überprüft ob Spieler ein Leader ist.
Wenn das aber ein anderes Script ist, was bekannt ist dann bitte sagen und ich schau für dich nach. Ist es jedoch ein versuch um ein Selfmade zu machen erklär mir bitte wie du die Fraktion und den Leader definierst -
Weil du strcmp falsch verwendest
Ein Zitat von diesem Link hier: http://wiki.sa-mp.com/wiki/Strcmp
Returns 0 if the strings are the same.
Das bedeutet du musst deine Zeile ersetzen durch
if(strcmp(strget(cmdtext,0),"/sup") == 0)
p.S.: Nebenbei gemerkt, könntest du mir den stock von strget hier geben? Würde mich interressieren was der macht
Edit: Noch paar Optimerungsfeinheiten sowie ServerCrash fix...
Definiere für dein for das new vorher und lass erst dann die schleife drüber laufen, also z.B.:
new i = 0;
for(; i < MAX_PLAYERS; i++)
und betreffend der Zeile
if(!strlen(strget(cmdtext,1)))
änder sie um in
if(!strlen(strget(cmdtext,1)) || strlen(strget(cmdtext, 1)) > 256)
Dieser Fix verhindert, dass dein Server Crasht, wenn jemand zuviele Zeichen schreibt (Passiert jedoch nur selten) -
@ Xivo er hat doch schon deine Methode auch getestet Es ist nur ein DialogID Konflikt höchstwahrscheinlich
-
Ignorier die Antwort von Hardcore..
Schau am besten nach, ob du bereits ein Dialog mit der Nummer 1 gemacht hast! Wenn du dir nicht sicher bist nimm bei ShowPlayerDialog zB die Nummer 123 und dann bei der Abfrage fragst du dann
if(dialogid == 123)
ab.
Tipp: Nütz die switch/case Variante, welche viel besser ist beim indizieren -
Man könnte eig. alles von SanAndreas definieren, da es immer wieder "Verbindungen" gibt, womit man diese erkennen kann. Beim Sprunk Automaten ist es ja so, dass man 1$ Geld verliert und nach exakt 4,5 Sekunden das Leben bekommt. (unabhängig vom Lag)
Theorethisch müsste es auch beim Casino Spiel nachzuprüfen oder schwer gesagt "nachzurechnen". Sprich du könntest Abfragen ob Spieler in diesem oder diesem Casino Interior oder Bereich mehr Geld als XXXX$ hergibt und dann er was zurück bekommt (das maximale). Sollte dann ein Cheater versuchen, mehr Geld als das maximale zu erreichen, wird er erwischt
-
Es gibt von Y_Less so ein komplexes System wo alles in einem ist (siehe Link), von den Dateien kannst du dann die MD5 Sachen rauskopieren und in dein GameMode einfügen.
-
Such einfach in der morphinc.ini nach den Werten x2, y2, z2, welche du einfach umbefinieren sollst in sagen wir:
morphX,
morphY,
morphZ,Der Fehler kommt zustande, wenn diese Variablen bereits in deinem GameMode oder in einem anderen Include verwendet werden.
-
-
Wir könnten uns streiten, weil du im Dialogtext ein Leerzeichen zuviel hast Aber ich teste es mal selber
-
Hoffe es ist verständlich