Beiträge von Goldkiller

    read[x] = ' //Zeile 949
    Das ist niemals die Komplette Zeile bzw so ist sie fehlerhaft.
    Dort müsstest so etwas stehen:
    read[x] = '\0';
    read[x] = 'a';
    Hab mal gegooglet und folgendes gefunden:
    new File:BLACKLISTFILE = fopen("/M_Bot/M_Black.cfg", io_read);
    if(BLACKLISTFILE)
    {
    while(fread(BLACKLISTFILE,read))
    {
    for(new x=0; x<strlen(read); x++)
    {
    if(read[x] == '\n')
    {
    read[x] = '\0';
    }
    }
    if(!strcmp(read,playerip,false,TwoNumbersLength) || !strcmp(read,playerip,false))
    {
    fclose(BLACKLISTFILE);
    return 1;
    }
    }
    }

    Quelle: http://pastebin.com/VbXD2zKa

    Du hast auch keine Zeit zu lesen was User vor dir schreiben,mh ?

    PVar's werden beim Verlassen des Servers automatisch gelöscht.
    Du musst das genauso machen, wie PatoD geschrieben hat, nur dass du zwischendrin noch mit deiner Dateispeicherungsmethode (MySQL, dini o.Ä.) die Koordinaten auch speichern - und dann wieder laden - musst.


    Zitat

    und das was @ PatoD Geschriben hat habe ich gemacht aber es tut sich nix wwenn ich sagen wir ma wo Anders hinlaufe dann Spawne ich immer noch an meiner base


    Sagen wir mal ... du schreibst es nochmal ordentlich,sodass es Jeder versteht. Dennoch,wenn ich dich richtig verstanden habe, dann ist es auch richtig so. Was ThEDoG möchte,ist nicht genau das Gleiche,wie du es beschreibst ( oder doch, ich versteh dein Text nicht 100%ig ) . Er möchte die Spawn-Koordinaten beim betreten dort hinsetzen, wo der Spieler zuletzt war bevor er den Server das Letzte mal verlassen hat.

    Den Textdraw musst sicherlich erst mal für jeden Spieler erstellen. Sonst hast den Textdraw 1x und jeder sieht den gleichen, obwohl du jedem Spieler sicherlich unterschiedliche Daten anzeigen musst bzw möchtest.Daher brauchst du zuerst eine Globale Textdraw-Variable für alle Spieler.
    new Text:tdTank[MAX_PLAYERS]; // Global
    Beim betreten des Servers kannst dann den Textdraw für den Spieler erstellen ( beim verlassen das Zerstören nicht vergessen ) .Anzeigen natürlich nicht vergessen, am besten beim betreten eines Fahrzeuges.
    tdTank[ playerid ] = TextDrawCreate(540.000000,427.5,"~r~0/0~g~ L");
    Jetzt hast den Textdraw, musst ihn nur noch mit Text von Zeit zu Zeit aktualisieren.
    Die format Zeile kannst fast komplett übernehmen.Die ~n~ am Anfang sind aber nutzlos, da du sicherlich den Textdraw schon an der korrekten Stelle hast.
    format(string,sizeof(string),"~~w~%d~b~/~w~%d~r~Liter~n~~g~~h~%s",Gas[vehicleid],GetGasMax(GetVehicleModel(vehicleid)),VehicleName[GetVehicleModel(vehicleid)-400]);
    Über TextDrawSetString kannst nun den Text festlegen.
    TextDrawSetString( tdTank[playerid],string);
    Mehr ist es nicht :-O.

    Guck mal in dem Startpost die Zeile 20 des Codes an.Dort ist ein return.
    Das darf dort nicht hin,wenn nicht nach dem ersten erstellten Fahrzeug der Befehl bzw die Funktion beendet werden soll.
    An stelle des "return" wäre ein "break" möglich, versuch es aber lieber erst mal ohne.Das "break" würde nur die Funktion etwas schneller machen.


    Weitere Dinge seh ich jetzt nicht,weshalb nur ein Fahrzeug spawnt ( kennen ja den Zusammenhang der Variablen nicht :\ ).

    Du musst die erstmal laden.Die Interiors stecken in den *.IPL's von folgendem Ordner:

    Zitat

    \maps\interior


    Ganz sicher bin ich mir nicht, denke aber LSPD steck dort drin: int_LA
    Musst einfach mal die Karten laden und über die Map fliegen.

    Die Funktion SetPlayerMoney gibt es auch standardmäßig nicht in SA:MP.
    stock SetPlayerMoney(playerid, cash)
    {
    ResetPlayerMoney(playerid);
    return GivePlayerMoney(playerid, cash);
    }
    Quelle.

    Liegt daran,dass du wohl in Mathe nicht ganz aufgepasst hast oder nicht genau auf die Funktionsbeschreibung schaust:
    IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)
    minx, maxx , miny, maxy


    -1701.8481, -1802.6124, 828.7408, 749.1353
    -2738.462, -2510.563, 590.1168, 736.0805
    -2093.393, -2008.414, -108.1419, -56.85734
    -2807.99, -2583.954, 313.9693, 479.6578


    Die Roten sind falsch.

    Steht doch unten im zitierten Beitrag

    Zitat

    SA-MP 0.3e Files:
    Note: The linux server will be available in later RC versions.


    Außerdem,es ist RC ( Release Candidate ).
    Die Server jetzt alle auf 0.3e umstellen ist sinnlos,da sowieso noch Änderungen vorgenommen werden.Das ist jetzt noch nicht die finale 0.3e Version.

    Edit by Dog:

    Zitat

    Client Installer: SA-MP 0.3e RC2 Client
    Windows Server (20 players): SA-MP 0.3e RC2 Windows Server

    Zitat

    Client Installer: SA-MP 0.3e RC3 Client
    Windows Server (20 players): SA-MP 0.3e RC3 Windows Server

    Zitat

    Zitat
    Zitat



    Zitat



    Quelle: http://forum.sa-mp.com/showthread.php?t=323271

    Ich wiederhole mich nochmal.

    Übrigens ... wieso probiert man die SQL Befehle nicht einfach mal Lokal aus anstatt immer direkt Ingame ? bei phpMyAdmin kann man sich die Tabellen doch anzeigen lassen und sehen,ob dort etwas eingetragen wurde. Auch kann man dort die SQL Befehle ausführen lassen :\.


    .


    Zum Bild:
    Das sind bestimmt alles keine DEFAULT Values eingetragen ( Du hast ja nur das Bild gezeigt , nicht die komplette Struktur ).
    Daher musst du auch für Farbe1,Farbe2,Nos,Spoilter usw. einen Wert angeben beim einfügen ( INSERT ).Bei id ( falls auto_increment und unique ) reicht ein NULL.

    Zitat

    aso also %s und %d sind vertauscht aber es geht immernoch nicht wenn ichs umdrehe
    das habe ich schon x-mal getauscht deshalb war das gerade falsch. natürlich weis ich wies eig. sein muss ;)


    Woher soll es irgendjemand wissen,wenn du es so dann postest ?


    Zitat

    Übrigens ... wieso probiert man die SQL Befehle nicht einfach mal Lokal aus anstatt immer direkt Ingame ? bei phpMyAdmin kann man sich die Tabellen doch anzeigen lassen und sehen,ob dort etwas eingetragen wurde. Auch kann man dort die SQL Befehle ausführen lassen :\.


    Hinzu kommt... keiner weiss wie deine Tabelle autos aussieht. Keiner weiss,was bei mysql_CheckAccount zurückgegeben wird. Ist es 0, 1 oder vllt 4 ?

    Also wirklich ... wenn bei mir SQL Kommandos nicht klappen lass ich mir die als erstes IMMER per print ausgeben.


    format(query, sizeof(query), "INSERT INTO autos (Besitzer, Model) VALUES ('%d', '%s')", name, carmodel);
    Dir fällt dort nix auf ? Ich versuche mal print() format zu spielen.

    Zitat

    INSERT INTO autos (Besitzer, Model) VALUES ('436', 'àú~§$')


    Fehler gefunden ? Gut ;)


    Übrigens ... wieso probiert man die SQL Befehle nicht einfach mal Lokal aus anstatt immer direkt Ingame ? bei phpMyAdmin kann man sich die Tabellen doch anzeigen lassen und sehen,ob dort etwas eingetragen wurde. Auch kann man dort die SQL Befehle ausführen lassen :\.


    Bei mysql_CheckCar seh ich so keinen Fehler :-O.

    Eines vorweg,ich mach dir den Code nicht fertig. Wenn du an einer Stelle nicht weiter kommst, sag welche.


    Alleine schon der Timer bzw die Funktion area51() ist nicht korrekt.Da du SetTimer benutzt ( SetTimerEx würde mit Paremter funktionieren ) und keine Parameter ( Spielerid ) der Funktion area51 übergibst,wird sie immer für Spielerid 0 laufen.
    Egal ob Jemand mit der ID 5 oder 324 in die Zone läuft,es wird nix passieren. Denn die Funktion läuft nur für Spielerid 0.


    Die einfachste Lösung dafür wäre folgendes.
    Du musst zuerst mal eine Schleife in die Funktion area51 einbauen die durch alle Spieler geht.
    Stichwort:
    for(new i = 0 ; i < MAX_PLAYERS ; i++) {}


    Zitat

    das versteh ich ja wohl aber wie ich es scripte.


    Welchen Schritt verstehst du nicht ?
    Welchen der Punkte kannst du nicht in Code umsetzen ?

    Eigentlich nicht so schwer.Du solltest trotzdem mal den Code zeigen,wo erkennt wird, ob Jemand in die Zone eingetreten ist.


    Sonst kann ich dir auch Stichpunktartig vorgeben,was gemacht werden muss.

    • Du musst wissen,welchem Team die Zone gehört ( Area51 vermutlich Army oder sowas in die Richtung,stimmts :-O ? )
    • Beim betreten der Zone abfragen,zu welchem Team der Spieler gehört
    • --> Gehört der Spieler nicht zum Team,welches die Zone besitzt ? Ja / Nein
    • -----> JA: Dann Nachricht erstellen : <NAME> ist in <ZONE> / Area51 eingebrochen
    • -----> NEIN : Nichts tun.


    Mehr ist es eigentlich nicht :\.

    Mh. Du hast da etwas falsch verstanden.

    DMSpawn[0] = SetPlayerPos(playerid,1750.6611,767.7841,10.8279);
    DMSpawn[1] = SetPlayerPos(playerid,1637.4896,670.2835,10.8203);
    DMSpawn[2] = SetPlayerPos(playerid,1588.8384,720.9872,58.2375);
    DMSpawn[3] = SetPlayerPos(playerid,1663.5165,759.5008,19.9342);

    Das funktioniert leicher nicht so,wie du es möchtest.
    SetPlayerPos gibt dir nichts brauchbares zurück, was du später für dein random verwenden könntest.Das Gleiche gilt ebenfalls für SetPlayerColor. Auch würde er so die Spielerposition 4x setzen, was du bestimmt nicht möchtest.
    Du könntest dir die Koordinaten in einem Array ( Multidimensionales ) ablegen und dort über random auf einen Index zugreifen. Übrigens,dir hätte auffallen müssen,dass SetPlayerPos 4 Parameter erwartet ( playerid, X , Y, Z ).
    new
    fDMPos[][3] = { // X , Y, Z
    {1750.6611,767.7841,10.8279},
    {1637.4896,670.2835,10.8203},
    {1588.8384,720.9872,58.2375},
    {1663.5165,759.5008,19.9342}
    };
    Jetzt könntest du über random einen Index auswählen.
    new index = random(sizeof(fDMPos));
    Den zufälligen Index haben wir jetzt. Jetzt brauchen wir nur die Position setzen.
    SetPlayerPos(playerid, fDMPos[index][0] , fDMPos[index][1] , fDMPos[index][2] );
    Schon würde der Spieler immer eine zufällig ausgewählte Position erhalten.


    Nach diesem Prinzip solltest du es auch für die Farben machen. Natürlich dort kein Multidimensionales Array.
    new iColors[] = {0x000FFFFF,0x008500FF /* usw */};

    Ist mir schon klar.Trotzdem bleibt die Frage,wieso speichert man die Passwörter im Klartext / unverschlüsselt ?
    Es hat schon seinen Grund wieso man solche Sachen wie Passwörter verschlüsselt abspeichert. Stichwort Sicherheit ? Gibt genug Leute die Passwörter mehrfach verwenden, hab ich also sein Passwort vom Server probier ich es doch direkt mal in irgendeinem Forum,Netzwerk oder Messenger aus ... :wacko:

    Natürlich funktioniert es dann, dann fällt es aber unter folgendes:

    Zitat

    Du solltest in das Userprofil schreiben,dass er gebannt ist.


    Die PVars speichern und laden keine Werte aus irgendeinem Profil von alleine, falls doch, hätte ich dafür gernen eine Beweis :).


    Ob es im übrigen stock oder public SpielerSpeichern und Spielerladen ist,ist völlig nebensächlich. Ich befürchte aber,du weisst sowieso nicht,wofür das stock steht ( nicht Stock ). Sonst würdest erst gar nicht erwähnen,dass es "stock SpielerSpeichern" ist 0o.