Beiträge von [SoL]Game

    Wird eh von Internetink geclosed / gelöscht, SoL Script = LoH Script - zu LoH Script sollen keine X-Scriptveröffentlichungen kommen.
    Mach ihm einen Gefallen und lösch es selber ^^.

    Es funzt zwar bringt aber nichts. Das Tutorial ist vom aktuellen "abgeschaut" nur extra für Leute die kein Englisch können auf Deutsch.


    Man kann zwar damit mappen aber im Server werden die Objekte nicht angezeigt da die IDs vertauscht sind, d.h. es bringt keinen weiter.


    Dieses Problem kann man ganz leicht mit dem in Game Converter von Leong124
    Anleitung (Made by Leong124 http://forum.sa-mp.com/showthread.php?t=196650) :


    • Wenn ihr mit dem Mappen fertig seid geht ihr in den Ordner, wo die .map Datei gespeichert wurde. Ihr kopiert die .map Datei und kopiert sie in euer Scriptfiles Ordner, wenn ihr das gemacht habt, müsst ihr die .map Datei in "source.map" umbenennen.
    • Als nächstes müsst ihr (falls ihr es noch nicht habt) den sscanf 2.0 Plugin von y_less installieren (http://forum.sa-mp.com/showthread.php?t=120356)
    • Für das Converten benötigt ihr einen Filterscript. Den findet ihr hier: http://pastebin.com/P0Pte5Nx. Einfach die Datei als mapconverter.pwn im Filterscripts Ordner speichern und dann Compilen.
    • Wenn dies erledigt ist geht ihr ins Spiel rein, loggt euch als RCON Admin ein und gebt /loadfs mapconverter ein.
    • Die Objekte sind nun alle im Scripfiles Ordner mit dem Namen "output.txt"

    Die variante Funktioniert und ist auch sehr leicht anzuwenden.



    Zum Tutorial von FoxHound:
    Gut erklärtes Tutorial, ich würde die erste, leichtere Variante empfehlen.



    MfG
    Game


    //EDIT: Wenn ihr nicht auf die Buttons klicken könnt, eventuell die neueste MTA Version herunterladen (war bei mir das Problem).
    //EDIT²: Pastebin-Link gewechselt

    Unter OnPlayerDisconnect:

    new Spieler[MAX_PLAYER_NAME], string[50];
    GetPlayerName(playerid, Spieler, sizeof(Spieler));
    format(string, sizeof(string), "%s hat die Verbindung zum Server getrennt.",Spieler);
    SendClientMessageToAll(DEINE_FARBE, string);

    Unter public OnPlayerConnect(playerid) :


    new Spieler[MAX_PLAYER_NAME], string[50];
    GetPlayerName(playerid, Spieler, sizeof(Spieler));
    format(string, sizeof(string), "%s hat die Verbindung zum Server hergestellt.",Spieler);
    SendClientMessageToAll(DEINE_FARBE, string);

    Also zum Error: Es muss GetVehicleHealth(vehicleid, health); heißen also:
    format(string, sizeof(string), "~w~Geschwindigkeit: %d~w~ KM/H~n~Tankinhalt: ~w~%d ~b~/~w~ %d~w~~n~Zustand:~g~ %d~n~~w~Fahrzeug: ~w~%s",floatround(value/1400),Gas[vehicleid],GetGasMax(GetVehicleModel(vehicleid)),GetVehicleHealth(vehicleid,health)),VehicleName[GetVehicleModel(vehicleid)-400]);


    Zum Problem mit dem Textdraw:


    Am Besten einfügen, dass wenn der Spieler in keinem Auto ist, der Textdraw ausgeblendet wird:


    if(!IsPlayerInAnyVehicle(playerid))
    {
    TextDrawHideForPlayer(playerid, Tacho[playerid]);
    return 1;
    }



    MfG
    Game

    Hier wird keine Koordinate abgefragt, sondern der Local.
    pLocal = Biz ID + 99.


    Wenn du eine Koordinate haben willst dann änder das
    if(PlayerInfo[playerid][pLocal] != 102)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist nicht an der Bank !");
    return 1;
    }



    zu


    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X,Y,Z))
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist nicht an der Bank !");
    return 1;
    }




    Wenn du es beim Local lassen willst, muss du schauen welcher deiner Businesses die Biz ID 2 hat.



    MfG
    Game

    Bei OnPlayerLogin müsste das dort sein:


    if(PlayerInfo[playerid][pReg] == 0)
    {
    PlayerInfo[playerid][pLevel] = 1;
    PlayerInfo[playerid][pSHealth] = 0.0;
    PlayerInfo[playerid][pHealth] = 99.0;
    PlayerInfo[playerid][pPos_x] = 2246.6;
    PlayerInfo[playerid][pPos_y] = -1161.9;
    PlayerInfo[playerid][pPos_z] = 1029.7;
    PlayerInfo[playerid][pInt] = 15;
    PlayerInfo[playerid][pLocal] = 255;
    PlayerInfo[playerid][pTeam] = 3;
    PlayerInfo[playerid][pModel] = 212;
    PlayerInfo[playerid][pPhousekey] = 255;
    PlayerInfo[playerid][pPbiskey] = 255;
    PlayerInfo[playerid][pAccount] = 0;
    PlayerInfo[playerid][pReg] = 1;
    GivePlayerMoney(playerid, 10000);
    }

    Zuerst oben dein Objekt und den Status definieren:


    new LSPDTor;
    new bool:LSPDStatus;


    Dann bei OnGameModeInit das Objekt rein, ohne Objectstreamer mit CreateObject z.B.
    CreateObject(Object ID, X, Y, Z, RotationX, RotationY, RotationZ);



    Als nächstes der Befehl unter OnPlayerCommandText:


    if(strcmp(cmd, "/lspdtor", true) == 0)
    {
    if(LSPDStatus == false) //Wenn Tor zu
    {
    SendClientMessage(playerid, Farbe, "Tor geöffnet."); // Nachricht an Spieler
    MoveObject(LSPDTor, X, Y, Z, Geschwindigkeit in MS); //Geöffneter Status - Der neue Ort, wo das Object sein soll
    LSPDStatus = true; //Tor ist offen
    }
    else if(LSPDStatus == true) //Wenn Tor offen
    {
    SendClientMessage(playerid, Farbe, "Tor geschlossen."); // Nachricht
    MoveObject(LSPDTor, X, Y, Z, Geschwindigkeit in MS); //Geschlossener Status - am Besten X Y Z vom Object, dass unter ONGameModeINit ist
    LSPDStatus = false; //Tor ist zu
    }
    return 1;
    }


    Die X Y Z einfach mit deinen Koordianten austauschen




    Wiki-Links:
    CreateObject
    MoveObject
    SendClientMessage


    MfG
    Game

    Entweder unter der Klammer also:


    public OnGameModeInit
    {
    //Hier


    oder ganz unten vorm Return:


    //hier
    return 1;
    }


    oder auch dazwischen, muss nur unter dem Public sein.
    Damits halt übersichtlicher ist am Besten oben oder unten, ist aber egal.


    Wenn du außerdem willst, dass es dann gleich allen angezeigt wird, einach noch
    TextDrawShowForAll(Textdraw0);
    hinzufügen.