Beiträge von TheKekes

    new playerName[25];
    new textMsg[100];


    GetPlayerName(playerid, playerName, sizeof playerName);
    format(textMsg, sizeof textMsg, "Na sowas :) Der %s betritt Suns Stunt Server ", playerName);
    SendClientMessageToAll (COLOR_RED, "Nanana, wer kommt denn da?");
    SendClientMessageToAll (COLOR_RED,textMsg);
    Hast du eigtl. den Sinn von format(string...) verstanden?

    Das vereinfacht das Speichern von Daten in Dateien. Einfach in den pawn -> include Ordner und in deinem Script als Include angeben.


    Dudb download:
    http://www.dracoblue.net/index.php?id=4&WHICH=31&Language=de
    Tutorial:
    http://forum.sa-mp.com/index.php?topic=4798.105


    Dini download:
    http://www.dracoblue.net/index.php?id=4&WHICH=35&Language=de


    dutils download:
    http://www.dracoblue.net/index.php?id=4&WHICH=30&Language=de



    Tutorial, speichern ohne dudb/dini:
    http://wiki.sa-mp.com/wiki/File_Functions

    Mit diesem Befehl:
    (noch ungetestet)

    if(!strcmp(cmdtext,"/map",true))
    {
    if(strlen(cmdtext)<=4 || strlen(cmdtext)>50) return SendClientMessage(playerid,0xAFAFAFAA,"/map [mapname]");
    new stringxx[100]; //xx dazu, damit es nicht mit anderen "string" variabeln überschreibt
    format(stringxx,sizeof stringxx,"mapname %s",strget(cmdtext,1));
    SendRconCommand(stringxx);
    format(strinxx,sizeof stringxx, "Mapname zu %s gewechselt",strget(cmdtext,1));
    SendClientMessage(playerid,0xAFAFAFAA,stringxx);
    // DEBUG
    printf("Mapname wurde zu %s gewechselt",stringxx);


    return 1;
    }



    Falls du kein "strget" hast:


    stock strget(strx[], pos, search = ' ') {
    new arg, ret[128], idxx;
    for (new i = 0; i < strlen(strx); i++) {
    if(strx == search || i == strlen(strx) || strx[i + 1] == 10) {
    arg++;
    if (arg == pos + 1){
    ret[i-idxx] = EOS;
    return ret;
    } else if (arg == pos)
    idxx= i+1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx;
    }
    return ret;
    }

    Anscheinend kann Pawn nicht auf die Datei zugreifen wegen magelnden Zugriffsrechten.
    Was helfen könnte:
    1.Ist die Include-Datei schreibgeschützt? Wenn ja, entfernen.
    2. Unter Vista Pawn als Administrator ausführen.
    3. Deinen gesamten Scriptordner(nicht INcludesordner, der Ordner, der deine gesamten Pawn Dateien enthält) auf dem Desktop verschieben und dort ausprobieren.

    Ihr seit sicherlich nicht die Ersten, die den Spawn dort haben. Ich kannte einige Stuntserver, die schon vor euch dort den Spawn genauso hatten. Also könntet ihr genauso gut den Spawn "nachgemacht" haben.
    Aber den Namen zu kopieren, und sich als Aldi Server auszugeben ist echt eine Frechheit.

    Erstmal solltest ihr keine "Diskussion" über dieses Thema starten, da dieser Troll genau das will. Lacht euch kaputt, und das wars auch. Ansonsten wird er Wiederholungstäter.


    Zweitens eine Wiki ein Werk der Gemeinschaft, ihr könnt also alles löschen, aber jeder einzelne von euch kann es auch wieder rückgängig machen, wie SATAN es getan hat. Also nicht warten bis ein Admin das regelt, sondern selbst mal was tun.

    @TheKeks asoooooo xD sag das doch^^ naja probs. jetzt aus .....


    EDIT:


    nee, /giveaccess funtzt net, da sagt der mir das es dieses CMD net gibt, und das mit /admininsel auch net auch mit RCON login :(


    Bei mir funktioniert es einwandfrei. ( Auch "/giveaccess deineid" richtig geschrieben und mit id dahinter?)
    Hier nochmal die Version, es wird dir gesendet, was du falsch gemacht hast:
    http://pastebin.com/f26f137d1


    So habe dir nun ein Script gemacht, werde es testen, wenn ich demnächst Zeit habe.
    http://pastebin.com/f2061abc4
    Vorher musst du eine Datei namen "beleidigungen.txt" erstellen und die Beleidigungen in folgender Form reinschreiben:

    Zitat

    Beleidigung 1=Dummer Junge
    Beleidigung 2=Dummes Mädchen
    etc...


    Maximal 20 Beleidigungen möglich.

    danke TheKeks^^ probs. jetzt mal aus (@ TheKeks: dein avatar erinnert mich an jemanden, wer soll das sein? :D)


    mach dem ich es versucht habe:


    also, es gibt keine errors, aber wenn ich /admininsel eingebe, passiert nichts! das lustige ist, das er nicht mal sagt das es dieses cmd nicht gibt, d.h., es gibt es zwar, aber ohne richtige funktion, wie kann ich das beheben?


    Soll auch so sein, du musst ja erstmal Admin sein. Adminstatus bekommst du, indem du dich in rcon einloggst und dir mit /giveaccess [deine id] selbst Zugriff gibst.


    Flo, Wie genau meinst du das? Ich hoffe das ist ungefähr das, was du meinst:
    new bool:bedingung[MAX_PLAYERS];
    forward Timerfunc;
    //gamemodeinit:
    SetTimer("Timerfunc",1000,1);
    //
    public Timerfunc()
    {
    for(new i=0;i<MAX_PLAYERS;i++) {
    if(bedingung[i])
    {
    SendClientMessage.....
    bedingung[i]=false;
    }
    }
    return 0;
    }


    Und dann ein CMD, bei dem bedingung[playerid] auf true gesetzt wird.

    public OnPlayerPickupPickup(playerid,pickupid)
    {
    return 1;
    }
    Ein Callback ist eine Funktion, mit Parametern, die eine besondere Bedingung haben.
    Das ist beispielsweise das Callback, wenn ein Spieler ein Pickup aufnimmt. (Paramter sind hier "playerid" und "pickupid"


    Als Syntax von SetPlayerPos ist das gemeint, dass du nicht einfach alles in eine Funktion hineinschieben kannst, was du willst. Es gibt eine bestimmte Vorschrift:
    SetPlayerPos(playerid,x,y,z);
    Das passt dann also nicht:
    SetPlayerPos(playerid, 265,2323.3284,-3106.3767,4.9734,358.7041,0,0,0,0,0,0);
    sondern:
    SetPlayerPos(playerid, 2323.3284,-3106.3767,4.9734);

    Mit /giveaccess kannst du Spielern erlauben die Insel zu betreten.


    Du solltest Dir nochmal die Syntax von SetPlayerPos(); anschauen und die Callbacks, die Commands gehören in das richtige Callback.


    #include <a_samp>


    // This is a comment
    // uncomment the line below if you want to write a filterscript
    //#define FILTERSCRIPT


    #if defined FILTERSCRIPT
    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }


    #endif


    enum enum1
    {
    pAdmin
    }


    new PlayerInfo[MAX_PLAYERS][enum1];




    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    public OnGameModeExit()
    {
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerPrivmsg(playerid, recieverid, text[])
    {
    return 1;
    }




    public OnPlayerInfoChange(playerid)
    {
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new index, cmd[128];
    cmd = strtok(cmdtext, index);

    if(strcmp(cmdtext, "/admininsel", true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    SetPlayerPos(playerid,2323.3284,-3106.3767,4.9734);
    }
    return 1;
    }


    if(strcmp(cmd, "/giveaccess", true) == 0)
    {
    new tmp[128];
    tmp=strtok(cmdtext,index);
    if(!IsPlayerAdmin(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] < 1 )
    {
    return 0;
    }
    }
    if(!strlen(tmp) || strlen(tmp)>6)
    {
    return 0; // /giveaccess [id];
    }
    PlayerInfo[strval(tmp)][pAdmin]++;
    return 1;
    }


    return 0;
    }



    public OnRconCommand(cmd[])
    {
    return 1;
    }


    public OnObjectMoved(objectid)
    {
    return 1;
    }


    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }


    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }


    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }
    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }




    Könnte auch der strval() Bug sein, wenn man beispielsweise eingibt "/givecash 99999999999999999999999999999999999999999999". Einfach den Server neustarten.


    Dagegen hilf das YSF Plugin zu installieren, oder die Commands absichern, zb mit "if(strlen(tmp)>8) { return SendClientMessage(playerid,COLOR_RED,"String zu lang");}"

    Auch schonmal den strval() Bug berücksichtigt?
    Wenn man nun beispielsweise /heilen100 99999999999999999999999999999999999999999999
    eingibt, crasht das Script.


    Außerdem benützt man heute dcmd, dort wird das "Ziel" über die Paramter übergeben.

    Midostream mag zwar bei kleineren Maps gut sein, aber für Stuntserver nicht empfehlenswert, da er bei größeren Maps instabil wird (Crash beim Spawnen, Server crasht bei einem Gamemoderestart).
    Bei größeren Maps ist eigtl. nur YSI empfehlenswert.
    Und xobjects ist einfach nur technisch veraltet, da Funktionen wie MoveObject fehlen. Der Nachfolger xStreamer kann leider nicht mit größeren Stuntmaps umgehen.