Beiträge von SmArTi

    Kann mir niemand helfen?


    Okay nach dem ich eh schon eine Verwarnung wegen dem Angeblichen PUSH bekommen habe (was ich nach 2 Tagen warten unfair finde) kann ich ja nochmal bearben ;)


    Ich hab mich jetzt nochmal dahinter gesetzt und versucht es zum laufen zu bringen. So sieht es eigendlich alles okay aus aber es klappt einfach nicht.
    new gLFarbe1[MAX_PLAYERS];
    new gLFarbe2[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    gLFarbe1[playerid] = 127;
    gLFarbe2[playerid] = 127;
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(Lackieren, 9, cmdtext);
    return 1;
    }


    dcmd_Lackieren(playerid, params[])
    {
    if (PlayerInfo[playerid][pJob] == 3)
    {
    new String1[128];
    new String2[128];
    new pID, Farbe1, Farbe2;
    new CmdPlayer[128];
    new ThePlayer[128];
    if (sscanf(params, "ddd", pID, Farbe1, Farbe2))
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Lackieren >SpielerID< >Farbe 1 (-1 bis 126)< >Farbe 2 (-1 bis 126)<");
    }
    if (!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid, Farbe_Grad1, "Die SpielerID ist nicht vergeben!");
    }
    if (Farbe1 <= -1 || Farbe1 >= 126)
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Lackieren >Farbe 1 (-1 bis 126)<");
    }
    if (Farbe2 <= -1 || Farbe2 >= 126)
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Lackieren >Farbe 2 (-1 bis 126)<");
    }
    gLFarbe1[pID] = Farbe1;
    gLFarbe2[pID] = Farbe2;
    GetPlayerName(pID, CmdPlayer, sizeof(CmdPlayer));
    GetPlayerName(playerid, ThePlayer, sizeof(ThePlayer));
    format(String1, sizeof(String1), "Du hast %s die Farben #%d und #%d zur Lackierung angeboten", ThePlayer);
    SendClientMessage(playerid, Farbe_Gruen, String1);
    format(String2, sizeof(String2), "%s hat dir die Farben #%d und #%d zur Lackierung angeboten", CmdPlayer);
    SendClientMessage(pID, Farbe_Gruen, String2);
    SendClientMessage(pID, Farbe_Gruen, "Du kannst mit /Annehmen >Lackierung< das Angebot annehmen");
    }
    return 1;
    }


    dcmd_Annehmen(playerid, params[])
    {
    if (IsPlayerConnected(playerid))
    {
    new Angebot;
    new Lackierung, Vertrag;
    if (sscanf(params, "s", Angebot))
    {
    SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Annehmen >Angebot<");
    SendClientMessage(playerid, Farbe_Grad1, "Angebote: Lakierung | Vertrag");
    }
    if (Angebot == Lackierung)
    {
    if (gLFarbe1[playerid] != 127 && gLFarbe2[playerid] != 127)
    {
    ChangeVehicleColor(GetPlayerVehicleID(playerid), gLFarbe1[playerid], gLFarbe2[playerid]);
    SendClientMessage(playerid, Farbe_Gruen, "Du hast das Auto erfolgreich umlackiert");
    }
    else
    {
    SendClientMessage(playerid, Farbe_Rot, "Du hast kein Angebot bekommen");
    }
    }
    }
    return 1;
    }
    Ich hab keine ahnung warum es nicht klappt

    also ich glaube du kannst nix runterladen, nur patches und da sind dann (falls es neue objecte gibt) dabei. aba so kann man nix runterladen

    1. check ich jetzt net wirklich. n bissel erklärung wäre cool.
    2. Bringt mir nix, weil wenn Spieler B mehrere angebote bekommt wie z. B. ticket oda dorgen oda waffen oda so
    dann soll er unter denen auswählen können.


    Nagut mal anders:


    Spieler A ist Mechaniker
    Spieler B ist Kunde


    Spieler B hat ein Auto und möchte es von Spieler A umlakieren lassen. A macht /Lakieren (ID von Spieler B) (Farbe1) (Farbe2). Spieler B macht /akzeptieren lakierung.
    Auto von Spieler B wird in Farbe1 und Farbe2 die Spieler A ausgewählt hat umlakiert.

    Hi Leutz,


    ich wollte mal fragen, wie ich es mache, wenn ich jetzt jemanden was anbiete und er es dann annhemen kann.
    Damit ihr es euch bildlicher vorstellen könnt ein kleines beispiel:


    Spieler A ist Mechaniker
    Spieler B ist Kunde


    Spieler B hat ein Kaputtes auto und hat Spieler A gefragt, ob er es reparieren kann. A macht /reparieren (ID von Spieler B). Spieler B macht /akzeptieren reparatur.
    Auto von Spieler B wird repariert.


    Also ich habs mir ungefähr so vorgestellt:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(Reparieren, 10, cmdtext);
    dcmd(Annehmen, 8, cmdtext);
    return 1;
    }


    dcmd_Reparieren(playerid, params[])
    {
    if (IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pJob] == 3)
    {
    new pID;
    new String1[128];
    new String2[128];
    new CmdPlayer[MAX_PLAYER_NAME];
    new ThePlayer[MAX_PLAYER_NAME];
    if (sscanf(params, "d", pID))
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Reparieren >SpielerID<");
    }
    if (!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Reparieren >SpielerID<");
    }
    GetPlayerName(playerid, ThePlayer, sizeof(ThePlayer));
    format(String1, sizeof(String1), "Du hast %s eine reperatur angeboten", ThePlayer);
    SendClientMessage(playerid, Farbe_Gruen, String1);
    GetPlayerName(playerid, CmdPlayer, sizeof(CmdPlayer));
    format(String2, sizeof(String2), "%s hat dir eine reperatur angeboten", CmdPlayer);
    SendClientMessage(pID, Farbe_Gruen, String2);
    }
    }
    return 1;
    }


    dcmd_Annehmen(playerid, params[])
    {
    if (IsPlayerConnected(playerid))
    {
    new ?;
    if (sscanf(params, "u ", ?)
    {
    SendClientMessage(playerid, Farbe_WEis, "SERVER: /Annehmen >?<");
    SendClientMessage(playerid, Farbe_Grad1, "?: Reperatur");
    }
    if (? == Reperatur)
    {
    // ...
    }
    }
    return 1;
    }
    // Edit: Jo hab mir grad nomma gedanken gemacht und n bissel bearbeitet. Blos weiter weis ich nicht mehr XD

    Gratuliere! Du hast soeben wie viele Hundert andere User in diesem Forum ein neuen unnützlichen Thread eröffnet.


    Kleiner TIPP: fängt mit M an und hört mit YSQL Tutorial auf

    Hi Leutz,


    ich will euch heute mal zeigen, wie man eigene Ein- und Ausgänge ohne Cmd macht.


    Damit wir eigene Eingänge machen können, müssen die Trichter erst einmal raus.
    Das geschied hier:
    public OnGameModeInit()
    {
    DisableInteriorEnterExits();
    return 1;
    }
    WARNUNG: Mit dem machst du nicht nur die gelben Trichter weg, nein sondern auch
    die NPC's in Burgershots und Ammunations. Die Ein- und Ausgänge musst du dann
    selber machen (Saven und Einfügen)!


    als nächstes brauchen wir einen Timer:
    forward Ports(playerid);


    den Timer benennen wir:
    new PortTimer;


    Der Timer muss natürlich irgendwie gestartet werden.
    Das machen wir unter public GamemodeInit:


    public OnGameModeInit()
    {
    PortTimer = SetTimer("Ports", 1000, 1);
    return 1;
    }


    Jetzt kommen wir zu den Ein- Ausgängen:
    public Ports(playerid)
    {
    if (PlayerToPoint(1, playerid, 1555.1205, -1675.6710, 16.1953)) // PD Eingang // if (PlayerToPoint(Radius, playerid, Float:X, Float:Y, Float:Z)) // Wo der Spieler Stehen soll
    {
    SetPlayerInterior(playerid, 6);
    SetPlayerPos(playerid, 246.7840, 63.9002, 1003.6406); // Wo der Spieler hin kommen soll
    SetPlayerFacingAngle(playerid, 0.0);
    }
    else if (PlayerToPoint(1, playerid, 246.7282, 62.7136, 1003.6406)) // PD Ausgang
    {
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, 1552.4490, -1674.9897, 16.1953);
    SetPlayerFacingAngle(playerid, 90.0);
    }
    return 1;
    }


    Damit ihr wisst, wo die Ein- Ausgänge sind, machen wir noch Pickups:
    public OnGameModeInit()
    {
    CreatePickup(1318, 23, 1555.1205, -1675.6710, 16.1953); // PD Eingang // kleiner gelber Trichter
    CreatePickup(1559, 23, 246.7282, 62.7136, 1003.6406); // PD Ausgang // Weißer Pfeil
    return 1;
    }


    Bei einem Gamemode- Serverrestart müsst ihr den Timer noch killen, da er sonnst 2x statt 1x läuft:
    public OnGameModeExit()
    {
    KillTimer(PortTimer);
    return 1;
    }


    Falls ihr PlayerToPoint nicht hast kommt folgendes in den Script:
    forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);


    public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
    {
    if (IsPlayerConnected(playerid))
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    }
    return 0;
    }


    Zusammen gefasst sollte das ungefähr so aussehen:
    forward Ports(playerid);
    forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);


    new PortTimer;


    public OnGameModeInit()
    {
    DisableInteriorEnterExits();
    PortTimer = SetTimer("Ports", 1000, 1);
    CreatePickup(1318, 23, 1555.1205, -1675.6710, 16.1953); // PD Eingang // kleiner gelber Trichter
    CreatePickup(1559, 23, 246.7282, 62.7136, 1003.6406); // PD Ausgang // Weißer Pfeil
    return 1;
    }


    public OnGameModeExit()
    {
    KillTimer(PortTimer);
    return 1;
    }


    public Ports(playerid)
    {
    if (PlayerToPoint(1, playerid, 1555.1205, -1675.6710, 16.1953)) // PD Eingang // if (PlayerToPoint(Radius, playerid, Float:X, Float:Y, Float:Z)) // Wo der Spieler Stehen soll
    {
    SetPlayerInterior(playerid, 6);
    SetPlayerPos(playerid, 246.7840, 63.9002, 1003.6406); // Wo der Spieler hin kommen soll
    SetPlayerFacingAngle(playerid, 0.0);
    }
    else if (PlayerToPoint(1, playerid, 246.7282, 62.7136, 1003.6406)) // PD Ausgang
    {
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, 1552.4490, -1674.9897, 16.1953);
    SetPlayerFacingAngle(playerid, 90.0);
    }
    return 1;
    }


    public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
    {
    if (IsPlayerConnected(playerid))
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    }
    return 0;
    }


    Das wars auch schon. Ich hoffe es hilft einigen von euch, vorallem den Anfängern.
    Bitte nicht so harte Kritik (falls es welche geben sollte :D).
    Das war mein aller erstes Tutorial


    Viel Spaß noch


    Mit freundlichen Grüßen
    Ich


    public OnGameModeInit()
    {
    DisableInteriorEnterExits();
    return 1;
    }


    WARNUNG: Mit dem machst du nicht nur die gelben Trichter weg, nein sondern auch die NPC's in Burgershots und Ammunations. Die Ein- und Ausgänge musst du dann selber machen (Saven und Einfügen)


    So hast du schonmal die Trichter weg. Jetzt zu den Ports:
    forward Ports(playerid);


    new PortTimer;


    public OnGameModeInit()
    {
    PortTimer = SetTimer("Ports", 1000, 1);
    return 1;
    }


    public Ports(playerid)
    {
    if (PlayerToPoint(1, playerid, 0.0, 0.0, 0.0)) // PlayerToPoint(Radius, playerid, Float:X, Float:Y, Float:Z)) // Wo der Spieler sein soll
    {
    SetPlayerPos(playerid, 0.0, 0.0, 0.0); // Wo der Spieler raus kommen soll
    SetPlayerInterior(playerid, 1); // an die InteriorID kommst du Ingame mit /interior
    return 1;
    }
    else if (PlayerToPoint(...
    ...
    return 0;
    }


    falls du PlayerToPoint nicht hast:
    forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);


    public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
    {
    if (IsPlayerConnected(playerid))
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    }
    return 0;
    }

    Hi Leutz,


    ich wollte mal fragen, wie ich mit Scriptfiles arbeiten kann, also so wie bei gf mit den häuser, biz, kick und ban und dem ganzen zeug.


    Kann mir das mal bitte einer zeigen/erklären? Wäre echt cool


    MFG
    Ich

    Brauchst dich nurnoch wo hinstellen wo der Eingang ist und /save machen die Coords dann einsetzten ^^


    1. er hat doch gesagt das er die coords hat
    2. hab ich sowas auch angedeutet

    1. Bist du im Falschen Thread, wenn du keinen Server bestellen möchtest.
    2. lern erst Scripten dann mach n Server auf
    3. Hast DU als Anfänger kaum Chancen mehr
    4. Schreibt dich denk ich niemand an
    5. Frag im Forum und net im Bestellbereich

    also versuchs ma unter OnPlayerLogin
    statt
    //-
    gPlayerLogged[playerid] = 1;
    SetPlayerToSpawn(playerid);
    format(tmp2, sizeof(tmp2), "~w~Willkommen ~n~~y~ %s", playername2);


    mit
    //-
    gPlayerLogged[playerid] = 1;
    SpawnPlayer(playerid);
    format(tmp2, sizeof(tmp2), "~w~Willkommen ~n~~y~ %s", playername2);


    und dann unter OnPlayerSpawn dein SetPlayerToSpawn(playerid);

    public OnPlayerSpawn(playerid)
    {
    SetPlayerToSpawn(playerid);
    }

    Jo dann Setzt ich doch auch ma was rein ;)


    C:\Users\Keks\Desktop\Scripts\Untitled.pwn(98) : error 001: expected token: ")", but found ";"
    C:\Users\Keks\Desktop\Scripts\Untitled.pwn(98) : error 036: empty statement
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp(cmdtext, "/Bla", true) == 0)
    {
    if (IsPlayerConnected(playerid); /* <--- hier is der Error. Das ";" muss gegen eine geschlossenen Klarmmer ausgetauscht werden
    Alle Klammern die ihr öffnet MÜSST ihr auch wieder Schliessen! */
    {
    SendClientMessage(playerid, 0x00000000, " Test Error");
    return 1;
    }
    }
    return 0;
    }

    Er meint:


    Er kennt nen Server wo GF drauf ist. Und auf diesem Server ist ein Autokick drauf. Und er möchte (Auserhalb von SAMp via Programm) alle 10 Minuten einen Text schreiben lassen, um die Leute da zu Ärgern/Provizieren/Anpissen/Auf der Nase rum zu Tanzen/... . Und ich denke es geht net