Beiträge von M4rciii

    Ne, mal ganz ehrlich. Stell doch Scripte hier nicht rein, wenn sie nicht funktionieren.


    So komisch es klingt, du bannst damit alle Leute, die zum Beispiel einen 12-Zeichen langen Namen haben. :pinch:
    Wenn ich /tban Hallo mache, dann kann jemand namens Simon nicht mehr auf den Server.


    Aso, nebenbei: /*| FOXPAYDAY v2.0 |*/

    Ganz einfacher Fehler: Du hast hier im ShowPlayerDialog die ID 1 und bei deinem OnDialogResponse ist die ID 1 für die Nahkampfwaffen. Du bist ein wenig mit den IDs durcheinandergekommen.
    Du musst jetzt bei jedem ShowPlayerDialog die ID um 1 verringern: (Habe ich hier für dich gemacht)


    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Was möchten Sie kaufen?", "Nahkampfwaffen\nPistolen+MP´s\nFlinten+Gewehre\nExtras", "Kaufen", "Abbrechen");
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, ">Nahkampfwaffen<", "Messer ($15)\nSchlagstock ($40)\nKatana ($200)\nKettensäge ($100)\nBaseballschläger ($30)\n", "Kaufen", "Abbrechen");
    ShowPlayerDialog(playerid, 2,DIALOG_STYLE_LIST, ">Pistolen + MPs<", "9mm Pistole ($150)\nSchallgedämpfte 9mm ($250)\nDesert Eagle ($350)\nTec-9 ($500)\nMicro SMG ($600)\nSMG ($1000)\n", "Kaufen", "Abbrechen");
    ShowPlayerDialog(playerid, 3,DIALOG_STYLE_LIST, ">Flinten und Gewehre<", "Schrotflinte ($550)\nAbgesägte Schrotflinte ($900)\nAutomatische Schrotflinte ($1500)\nAk-47 ($1600)\nM4 ($1700)\nGewehr ($2000)\n", "Kaufen", "Abbrechen");
    ShowPlayerDialog(playerid, 4,DIALOG_STYLE_LIST, ">Extras<", "Scharfschützengewehr ($3500)\nRaketenwerfer ($10000)\nFlammenwerfer ($8000)\nGranaten ($1000)\n", "Kaufen", "Abbrechen");

    Also, wenn ich das Script interpretiere, komm ich darauf, dass du eine ID bannst. Wenn du jemand mit der ID 0 Time-bannst, kann für ne halbe Stunde keiner mehr auf den Server :pinch:


    EDIT: Und /setbantime kann jeder ausführen.

    Hmm... an sich ist da kein Fehler.
    Du solltest mal versuchen, anstatt einen neuen String zu formatieren, einfach direkt inputtext zu übermitteln:
    Anmelden(playerid,inputtext);


    Und als Schutz, falls jemand ein leeres Passwort eingeben möchte, füg das direkt als erstes nach dialogid == bla ein:
    if(!strlen(inputtext)) return ShowPlayerDialog(...); // Dein Dialog zum einloggen/registrieren mit dem Text: "Keine Eingabe, bitte jetzt richtig eingeben oder so"

    Mein gesunder Menschenverstand sagt mir, dass key ein leerer String sein muss.
    Und bei Anmelden(playerid,key) kommt kein "falsches Passwort" o.ä., weil es den Bug gibt, dass ein leeres Passwort als richtig angesehen wird (strcmp).
    Zeig mal den Code, wo du den string key ermittelst.

    Und wann ist es wichtig, dass man den Schlüssel hat? Beim Einsteigen... Also muss doch jemand was im Server machen.
    Du bräuchtest irgendwas wie
    new bool:HasKeyForCar[MAX_PLAYERS][MAX_VEHICLES];


    //Beim kauf:
    new vehicle = AddStaticVehicle(560,123.0,234.0,345.0,180.0,5,8);
    HasKeyForCar[playerid][vehicle] = true;


    //Beim einsteigen:
    public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger
    {
    if(HasKeyForCar[playerid][vehicleid] != true)
    {
    TogglePlayerControllable(playerid,false); // Sorgt dafür, dass der Spieler das Einsteigen abbricht
    TogglePlayerControllable(playerid,true); // Sorgt dafür, dass der Spieler das Einsteigen abbricht
    SendClientMessage(playerid,COLOR_WHITE," Du hast keinen Schlüssel für das Auto!");
    }
    return 1;
    }

    Was willst du denn dann mit dieser erlangten CarID machen? Wenn du einfach eine CarID in eine Variable abspeicherst und sie nicht weiter benützst, macht das keinen Sinn.

    gtaturke, lass dir eins sagen:
    vehicle = AddStaticVehicle(560,123.0,234.0,345.0,180.0,5,8);
    vehicle ist die VehicleID.
    560 ist die ModelID.


    ONTOPIC:
    Wenn du ein Fahrzeug beim Kauf erstellst und an die VehicleID gelangen willst, dann ist das wie ich das hier geschrieben habe. vehicle ist die VehicleID.

    GF?
    Bei GF könntest du theoretisch das Geld einfach am Ende des Tutorials resetten und ihm dann einen beliebigen Betrag geben. Bei NonGF's kann man das auch nach der Registration o.ä. machen.
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,5000);

    Was ist denn das Problem beim "entladen"?


    Verschwinden die Objekte nicht oder wie?
    Wenn ja, dann musst du sie halt selbst manuell zerstören:
    for(new o = 0; o < 5000; o++) // 5000 = MAX_STREAM_OBJECTS, also alle Objekte
    {
    DestroyStreamObject(o);
    }


    Wenn es sauber entladen werden soll, solltest du noch alle Timer, Pickups, etc. zerstören.

    Hallo Community!


    Hier könnt ihr nützliche Codeschnipsel für PHP posten, die einem den Umgang erleichtern.


    Um das Thema zu eröffnen, habe ich 3 Pawn-Funktionen auf PHP umgeschrieben, da man sie dort durchaus gebrauchen kann.


    ini_GetKey & ini_GetValue


    Funktionen zum Auslesen von Dateien mit dem Format key=value



    strmid


    Dabei ist zu beachten, dass der Syntax nicht wiefolgt ist:
    strmid(dest[],source[],start,end);
    Sondern:

    PHP
    $dest = ($source,$start,$end);



    Viel Spaß beim Posten! ;)


    @Admins: Hoffe das ist hier richtig am Platz!!

    Also ich weis nicht, ob ich der einzige mit einem Widescreen bin, aber bei mir ist das Forum ne Katastrophe.


    EDIT: Ahh, kurz Screen gemacht und schon gibts hier ähnliches Fälle ^^


    Screen:

    Ich hatte mal ein ähnliches Problem. Ich hatte einen Mod für so einen mehrteiligen Shuttle-Flughafen-Bus, der diese kleinen Flughafenfahrzeuge und Gepäckwägen ersetzt hat.
    Dann hatte ich 4 Stück aneinander gehängt, bin losgefahren und beim Nachhintensehen bemerke ich, dass sich der 4. einfach verabschiedet hatte. Lag nirgends rum oder so, war einfach weg ^^.


    Ich denke jetzt mal, dass es da einfach eine Begrenzung von GTA gibt, kann ich aber nur vermuten.

    Funktioniert an sich genauso wie bei einem Command:
    if(pickupid == teleportpickup)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);
    SetVehicleZAngle(GetPlayerVehicleID(playerid),a);
    }
    else
    {
    SetPlayerPos(playerid,x,y,z);
    SetPlayerFacingAngle(playerid,a);
    }
    }


    Natürlich musst du einen Pickup-Typ verwenden, den man mit Autos aufnehmen kann.

    Ich würde dir empfehlen sowas zu nehmen: #hey kollegen
    Also die Raute als erstes und dannach den Text ans Team

    public OnPlayerText(playerid,text[])
    {
    if(text[0] == '#')
    {
    strdel(text,0,1); // Löscht das erste Zeichen im Text (die Raute)
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gTeam[i] == gTeam[playerid]) // Connected und im selben Team
    {
    SendClientMessage(i,COLOR_ORANGE,text); // Color eintragen
    }
    }
    return 0; // WICHTIG!
    }
    return 1;
    }