Beiträge von Toby

    *3.8.10 - Update, Tutorial komplett neu geschrieben und um "Bots zu Fuß" erweitert


    Inhalt:

    • Was sind Bots?
    • Was wird für die Erstellung von Bots benötigt?
    • 1. Bots in Fahrzeugen
    • 2. Bots zu Fuß


    Was Sind Bots?
    Bots (auch NPC oder KI genannt) sind "Spieler", die Aktionen ausführen, die zuvor aufgenommen wurden.
    Nicht-Spieler-Charakter (Wikipedia)
    Bot (Wikipedia)



    Was wird für die Erstellung von Bots benötigt?

    • SAMP 0.3 Client
    • SAMP Server (egal ob Windows oder Linux)
    • Mindestens Basiswissen (!!)




    Bots in Fahrzeugen
    (Der Fahrzeugbot wird hier BulletLS genannt, ersetzt BulletLS einfach überall gegen euren Botnamen zB Taxi)

    • Starte den Homeserver
    • Logge dich als Rcon Admin ein (/rcon login PASSWORT)
    • Lade den Filterscript für das Aufnehmen von Bots (/rcon loadfs npc_record)
    • Setzte dich in ein Fahrzeug (Ich empfehle das Fahrzeug das Später von den Bot gefahren wird!)
    • Beginne die Aufnahme (/vrecord BulletLS) BulletLS steht hier für den Aufnahmenamen.
    • Fahre bzw fliege die Strecke die der Bot dann zurücklegen soll
    • Aufnahme beenden (/stoprecord)
    • Gta schließen oder minimieren
    • Sampserver schließen
    • BulletLS aus den Scriptfiles ordner ausschneiden und in den Ordner npcmodes/recordings einfügen
    • Nun öffnet ihr Pawno und klickt oben auf "File-->new"
    • In dieser neuen Datei wird nun dieser Code für den Bot benötigt:

      #include "a_npc"//Baut die Include "a_npc" ein
      #define RECORDING "BulletLS"// BulletLS gegen euren Aufnahmenamen ersetzen!


      main()
      {
      }


      public OnRecordingPlaybackEnd()
      {
      StartRecordingPlayback(1, RECORDING);//1 = Aufnahmetyp - Fahrzeug, Recording = Der oben definierte Aufnahmename
      }


      public OnNPCEnterVehicle(vehicleid, seatid)
      {
      StartRecordingPlayback(1, RECORDING);//1 = Aufnahmetyp - Fahrzeug, Recording = Der oben definierte Aufnahmename
      }
      public OnNPCExitVehicle()
      {
      StopRecordingPlayback();
      }

    • Datei im Ordner "npcmodes" unter den gleichen Name speichern wie die Aufnahme hat. (Hier: BulletLS)
    • Datei Kompilieren (Wichtig! Erst NACH dem Speichern Kompilieren!)
    • Nun öffnet ihr den Gamemode in den der Bot eingebaut sein soll
    • Hier wird der Bot auf den Server verbunden, sobald der Server gestartet wird, das heißt, wir müssen den Bot unter OnGameModeInit verbinden lassen dazu wird folgendes gemacht:

      ConnectNPC("BulletLS","BulletLS");//Das erste BulletLS steht für den Namen hier im Script, das 2te für den Namen der .rec Datei
      car_BulletLS = CreateVehicle(541, 1000.0,1000.0, 1000.0, 0.0, 10, 1, -1);//car_BulletLS ist der Name des Autos mit dem der Bot fahrt, Die Positionen von CreateVehicle sind egal,
    • Nun müssen wir noch den Autonamen erstellen (oben im Script zu den anderen new's hinzufügen): new car_BulletLS;
    • Jetzt muss der Bot die Rechte bekommen, das er verbinden darf:
      public OnPlayerConnect(playerid)
      {
      //Hier Aufpassen! Der Bot wird hier eingeloggt
      //In jeden Login&Register Script wird entweder in OnPlayerconnect oder erst später überprüft ob bereits ein Account mit diesen Namen besteht oder nicht,
      //deswegen unbedingt die Bedingungen bei diesen Scripts anpassen!
      if(IsPlayerNPC(playerid))
      {
      new botname[MAX_PLAYER_NAME];
      GetPlayerName(playerid, botname, sizeof(botname));
      if(!strcmp(botname, "BulletLS", true))
      {
      gPlayerLogged=1;//Der Bot ist gleich eingeloggt (Anpassen!)
      }
      }
      ......
    • So, jetzt muss der Bot noch spawnen:
      public OnPlayerSpawn(playerid)
      {
      if(IsPlayerNPC(playerid))
      {
      new botname[MAX_PLAYER_NAME];
      GetPlayerName(playerid, botname, sizeof(botname));
      if(!strcmp(botname, "BulletLS", true))
      {
      pCarLic[playerid]=1;//Hier muss der Führerschein gegeben werden! (Anpassen!)
      PutPlayerInVehicle(playerid, car_BulletLS, 0);//car_BulletLS = das Fahrzeug was wir oben erstellt haben, 0 = der Fahrersitz
      }
      }
      ......
    • Nicht vergessen - Login & Register System anpassen!!
    • Kompilieren
    • in der server.cfg die anzahl der bots (maxnpc) anpassen
    • Das war es auch schon....


    Bots zu Fuß erstellen
    (Dieser Bot wird hier "Zivi" genannt)

    • Starte den Homeserver
    • Logge dich als Rcon Admin ein (/rcon login PASSWORT)
    • Lade den Filterscript für das Aufnehmen von Bots (/rcon loadfs npc_record)
    • Starte jetzt die Aufnahme (/ofrecord Zivi) - Zivi steht für den Botnamen
    • Führe nun die Aktionen aus die der Bot machen soll (gehen, ......)
    • Sobald du fertig bist, beende die Aufnahme (/stoprecord)
    • Gta schließen oder minimieren
    • Sampserver schließen
    • "Zivi" aus den Scriptfiles ordner ausschneiden und in den Ordner npcmodes/recordings einfügen
    • Nun öffnet ihr Pawno und klickt oben auf "File-->new"
    • In dieser neuen Datei wird nun dieser Code für den Bot benötigt:

      #include <a_npc>
      #define RECORDING "Zivi"// Zivi gegen euren Aufnahmenamen ersetzen!


      main()
      {
      }


      public OnRecordingPlaybackEnd()
      {
      StartRecordingPlayback(2, RECORDING);//2 = Aufnahmetyp - Zu fuß, Recording = Der oben definierte Aufnahmename
      }


      public OnNPCExitVehicle()
      {
      StartRecordingPlayback(2, RECORDING);//2 = Aufnahmetyp - Zu fuß, Recording = Der oben definierte Aufnahmename
      }


      public OnNPCSpawn()
      {
      StartRecordingPlayback(2, RECORDING);//2 = Aufnahmetyp - Zu fuß, Recording = Der oben definierte Aufnahmename
      }

    • Datei im Ordner "npcmodes" unter den gleichen Name speichern wie die Aufnahme hat. (Hier: Zivi)
    • Datei Kompilieren (Wichtig! Erst NACH dem Speichern Kompilieren!)
    • Nun öffnet ihr den Gamemode in den der Bot eingebaut sein soll
    • Hier
      wird der Bot auf den Server verbunden, sobald der Server gestartet
      wird, das heißt, wir müssen den Bot unter OnGameModeInit verbinden
      lassen dazu wird folgendes gemacht:

      ConnectNPC("Zivi","Zivi");//Das erste "Zivi" steht für den Namen hier im Script, das 2te für den Namen der .rec Datei
    • Jetzt muss der Bot die Rechte bekommen, das er verbinden darf:
      public OnPlayerConnect(playerid)
      {
      //Hier Aufpassen! Der Bot wird hier eingeloggt


      //In jeden Login&Register Script wird entweder in
      OnPlayerconnect oder erst später überprüft ob bereits ein Account mit
      diesen Namen besteht oder nicht,
      //deswegen unbedingt die Bedingungen bei diesen Scripts anpassen!
      if(IsPlayerNPC(playerid))
      {
      new botname[MAX_PLAYER_NAME];
      GetPlayerName(playerid, botname, sizeof(botname));
      if(!strcmp(botname, "Zivi", true))
      {
      gPlayerLogged=1;//Der Bot ist gleich eingeloggt (Anpassen!)
      }
      }
      ......

    • So, jetzt muss der Bot noch spawnen:
      public OnPlayerSpawn(playerid)
      {
      if(IsPlayerNPC(playerid))
      {
      new botname[MAX_PLAYER_NAME];
      GetPlayerName(playerid, botname, sizeof(botname));
      if(!strcmp(botname, "Zivi", true))
      {
      //Hier den Bot sachen geben, wie Waffen oder Ähnliches
      }
      }
      ......
    • Nicht vergessen - Login & Register System anpassen
    • Kompilieren
    • in der server.cfg die anzahl der bots (maxnpc) anpassen
    • Fertig


    Leider sind beim einfügen die Klammern verrutscht, bitte selbst wieder richtig einrücken :D

    ich hab mit dini n kleines prob, ich will zB das hier laden [ist nur ein beispiel]



    dcmd_MeineSprache(playerid,params[])
    {
    #pragma unused params
    new number = dini_Int("MasterScript/Spieler/%.ini", "Sprache");
    if(number == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE," You choose English");
    }
    if(number == 2)
    {
    SendClientMessage(playerid, COLOR_WHITE," Sie haben deutsch ausgewählt");
    }
    return 1;
    }


    geispeichert ist schon alles, wie gesagt nur laden, das hauptproblem also, dini_int



    new number = dini_Int("MasterScript/Spieler/%.ini", "Sprache");


    davor
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"MasterScript/Spieler/%s.ini",name);


    wie kann ich den nun den spielernamen laden, den wenn ich

    "MasterScript/Spieler/%s.ini",name);

    mache, hab ich um ein wort ja zuviel

    also mit dcmd komme ich gut zurecht, nur mit sscanf hab ich soeinige probleme....


    weiß wer von euch wie ich die folgenden codes in dcmd bekomme?



    dcmd_registrieren(playerid,params[])
    {
    #pragma unused params
    new spieler[MAX_PLAYER_NAME];
    new cmdtext[256];
    GetPlayerName(playerid,spieler,sizeof(spieler));
    format(save, sizeof(save),"MasterScript/Spieler/%s.ini",spieler);
    if(!dini_Exists(save))
    {
    dini_Create(save);
    dini_IntSet(save,"passwort",udb_hash(strget(cmdtext,1)));
    SendClientMessage(playerid, COLOR_GREEN, "Dein Account wurde erfolgreich registriert");
    SendClientMessage(playerid, COLOR_GREEN, "Nutze /login [Passwort] um dich einzuloggen");


    }
    else
    {
    if(dini_Exists(save))
    {
    SendClientMessage(playerid, COLOR_RED, "Der Account ist bereits registriert");
    Kick(playerid);
    }
    }
    return 1;
    }
    dcmd_einloggen(playerid,params[])
    {
    #pragma unused params
    new s2[256];
    new spieler[MAX_PLAYER_NAME];
    new cmdtext[256];
    GetPlayerName(playerid,spieler,sizeof(spieler));
    format(save,sizeof(save),"MasterScript/Spieler/%s.ini",spieler);
    if(dini_Exists(save))
    {
    s2=dini_Get(save,"passwort");
    if(strval(s2)==udb_hash(strget(cmdtext,1)))
    {
    SpawnPlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du hast dich erfolgreich eingeloggt");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Passwort Falsch!");
    }
    }
    return 1;
    }


    so funktioniert es leider ja nicht.....

    also, ich hab grad ne website gemacht, und wenn ich diese mit

    Code
    file:///usw


    aufrufe, passt alles von der position, und anzeigen....


    wenn ich sie nun aber vom webspace (funpic) aufrufe, werden mir die bilder nicht angezeigt, die bildlinks sind so eingebaut:

    Code
    <a href="Enterpage.htm"><img src="Pictures\header.png" alt="" border="0" width="" height=""></a>

    ist das also ein ganzes forum? oder wie? ich bruach eigentlich ja nur links boxen fürs verlinken


    edit: könnte mir vieleicht wer ein beispiel zeigen wie man mit tabellen das machen könnte?

    Also, ich wollte ma eure erfahrungen mit linux wissen, ich hab bis jz puppy und ubuntu getestet, debian geht irgendwie nicht^^, zwischen folgende hab ich grad noch überlegt:


    linux yellow dog (oder so, das es auch für ps3 gibt)
    linux Knoppix 6.0.1
    linux sidux full
    linux Mint Gloria
    Mandriva linux
    OpenSUSE


    und habt ihr erfahrungen mit dem "Free60-Projekt" für xbox 360? (linux für xbox also) oder weiß jemand was mit wiili ist? die seite is ja leider down....(nicht browser, sonder OS)


    //e, weiß jemand welches dvd format xbox 360 verwendet??

    selten: css, cs1.6, day of defeat, Battlefield2


    sehr oft: Operation7, das game ist kostenlos und ist zudem noch sehr real, zB man muss sich ne waffe kaufen, und die hat man bis man sich ne neue kauft, man kann fürt das game bezahlen muss aber net^^ also wenn man zB 5 € bezahlt, hat man 10 000 Fiaa Cash, und mit den kann man sich auch waffen kaufen, ich kauf sie mir nur mit gamegeld, also kostenlos^^


    hier ma ein kleines video


    http://www.youtube.com/watch?v=-wAJWGJiIo8


    und hier eines so wie es jetzt aus schaut (graffikmäßig)
    http://www.youtube.com/watch?v=ptx84SS3xT0&fmt=22
    (macht HD an^^)



    das game is wirklich um (meine meinung) einiges besser und realer als CS oder CSS, man kann sich beispielsweiße auf eine Seite lehnen, seine eigene waffe mit teilen aufrüsten (schalldämpfer, ziel usw..........)


    probiert es aus, http://www.fiaa.eu


    edit:
    weitere infos:

    • ist ein Online mit menschlichen spielern spielbares First person shooter
    • waffen selbst so machen wie man sie am liebsten hat, es gibt zB ak, m4, m16, mp5, mac, shotgun, deagle, steyr aug, awp, dragonuv, usw.... sicher mehr als 20-50 waffen, und laufend auch neue
    • viele gute maps (sowie nacht als auch tag)
    • flash granaten, granaten, messer (die man auch werfen kann), dann noch rauchgranaten
    • 63 level im moment (hat meines wissens noch keiner in eu erreicht^^
    • GUTE GRAFIK!!!
    • 5 modes: team deathmatch (auf jeder map): ein team muss das andere bis gewisse limits killen
    • head hunting: (auf jeder map): der general eines teams muss 6,8,oder 10 mal erschossen werden
    • survival:(nicht sicher): wie css eigentlich, wenn man stirbt is man im zuschauermodus
    • fahnending (2 maps) (bin mir net sicher wies jez heißt): man fahnen "erobern"
    • bomben (kA, bin mir net sicher wie der nun hgeißt): irgendwas mti bomben, hab es noch nie gespielt
    • auf maps können 12,16 oder 24 spieler spielen
    • für einen server (da raum) bruacht man keinen eigenen root, aber sobald der raum leer is, ist der raum gelöscht

    man kann aus samp auch was machen das es mindestens genausogut ist wie mta, ich persönlich kann mihc irgendwie nicht mit mta anfreunden, (bei mir is auch die camera "etwas" anders dort) spiele im mom keines von beiden eig so richtig, wenn dann scripte ich, oder spiele operation 7


    vorher wurde irgendwo was wegen lua und pwn gesagt^^, also schwer geht beides nicht in gegensatz zu anderen sprachen. Ich PERSÖNLICH finde samp scripten besser, weil man nicht so viele resourcen hat, sondern 1-3 reichen schon aus. Dazu errors, in samp mitn komplimieren sieht man die meiner meinung besser als in mta,



    was in samp um weit weit viel besser ist, 500 spieler (in 0.3), überleg ma, was wird dir wohl mehr spaß machen, 500'spieler oder 128? Ich denke das ist schon etwas besser.


    der vorteil den was ich in mta sehe, man muss game nicht immer neu starten, wenn man auf server will, oder cars usw einfügen, aber reallife zocke ich auf samp lieber^^