#define MAX_Nagelband MAX.Anzahl.Die.erstellt.werden.darf
mach daraus z.b.
#define MAX_Nagelband 15
Dann können auf dem Server max. 15 Nagelbänder erstellt werden
#define MAX_Nagelband MAX.Anzahl.Die.erstellt.werden.darf
mach daraus z.b.
#define MAX_Nagelband 15
Dann können auf dem Server max. 15 Nagelbänder erstellt werden
nur #define Nagelband ?
Sonst nichts :o
Wenn ja kann das ja nicht klappen.
Mach das mal so:
#define MAX_Nagelband MAX.Anzahl.Die.erstellt.werden.darf
das ganze mit deinem NagelbandX in ein Enum:
enum InfoNagelband
{
nErstellt,
Float:NagelBandX,
Float:NagelBandY,
Float:NagelBandZ
}
dann das Nagelband erstellen:
new NagelBand[MAX_NagelBand][InfoNagelband]
aus deinen Stock dann dies machen:
stock AddNagelBand(playerid) {
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid, a);
for(new i = 0; i <MAX_Nagelband; i++) {
if(NagelBand[i][nErstellt] == 0) {
NagelBand[i][NagelBandX] = x;
NagelBand[i][NagelBandY] = y;
NagelBand[i][NagelBandZ] = z - 0.7;
NagelBand[i][nErstellt] = 1;
NagelBand[i][ID] = CreateDynamicObject(2899,NagelBand[i][NagelBandX],NagelBand[i][NagelBandY],NagelBand[i][NagelBandZ]-0.7,0.0,0.0,a+90.0);
return i;
}
}
return 1;
}
So wenn ich jetzt nichts falsch habe, sollte es dann funktionieren.
Einrücken darfst aber selbst xD
//edit Fehler entfernt im enum
//edit 2 Nochmal Fehler entfernt -.-
Zeig mal wo du
"Nagelband" erstellt hast
NagelBand[i][ID] = CreateDynamicObject(2899, x, y, z - 0.7, 0.0, 0.0, a - 90.0);
Wieso so? :o
Das gehört doch in deinem Fall so:
NagelBand[i][ID] = CreateDynamicObject(2899,NagelBand[i][NagelBandX],NagelBand[i][NagelBandY],NagelBand[i][NagelBandZ]-0.7,0.0,0.0,a+90.0);
Du hast doch bei NagelBand[i][NagelBandX] nur die Positionen abgefragt, kannst doch nicht im gleichen wiederum die Nagelbänder so erstellen, wenn du z.b. schon z als NagelBand[i][NagelBandZ]
Ne RNPC & ARNPC benötige ich ja nicht.
Das erstellen & löschen kann ich ja auch mit dem normalen Bot System.
Auf das einfachste bin ich nicht gekommen, mit else if zu arbeiten.
Danke [DT]midomen
Naja das ist mir dann schon klar mit dem Timer.
Aber kann ich das auch irgendwie umgehen, will eigentlich nicht unbedingt einen Timer verwenden ..
Hallo zusammen,
ich muss jetzt eben mal nachfragen, da ich nicht weiter komme.
Ich brauche eine Warteschleife für eine Art "Filmsequenz".
Bisher habe ich folgendes:
new InVideo;
Zuordnen mit:
InVideo++;
Entfernen mit:
InVideo--;
Befehl sieht so aus:
if(InVideo == 3)
{
Hier wird die Sequenz abgespielt
}
else
{
An die anderen Spieler eine Nachricht, dass es noch dauert
}
Wie mache ich es jetzt, dass ich sagen kann, macht gerade nur 1 Spieler die Filmsequenzen, dass es dann trotzdem abspielt.
Es wäre ja ziemlich doof, wenn er warten müsste, bis weitere 2 Spieler dazu kommen.
Hänge da ein wenig fest
Hoffe mir kann jemand nen Tipp oder irgendwas anderes geben.
Danke schon einmal für die Antworten.
Ist die aber nicht drin..
Ingame den Filterscript geladen?
Wenn ja, hast du /vrecord NAME (auch eingeben ? )
bzw. /ofrecord für Bots zu Fuss,
hast du dann auch /stoprecord benutzt?
Wenn ja, befindet sich die .rec Datei im Scriptfiles Ordner bei dir, mit dem Namen denn du eingeben hast.
//edit
@Azuru
Wie du dann den Bot auf den Server bekommst,
musst du folgendes machen:
1. Nimm die .rec Datei verschiebe sie in Ordner -> npcmodes -> recordings
2. Wenn du im Script beispiel: ConnectNPC("Bot1","BotTest"); geschrieben hast, musst du auch die .rec Datei in "BotTest" umbenennen, oder änderst den Namen "BotTest" in den Namen der .rec Datei um
3. Die Datei die im Anhang von meinen Beitrag musst du bei "BOTNAME" den Namen von der .rec Datei eintragen, dann compilen und die .amx Datei unter Ordner -> npcmodes verschieben.
In dieser Datei musst du ebenfalls bei Recording_Type ändern in 1 (Im Fahrzeug aufgenommener Bot) oder in 2 (zu Fuß aufgenommener Bot).
Atomfisch: Wo werden die NPC Gespeichert ?
Wenn du die Ingame aufgenommen hast,
werden die nach /stoprecord unter deinem Scriptfiles Ordner gespeichert.
Du hast da bißchen was vergessen.
Wenn er einen Bot erstellt, welcher in ein Fahrzeug sitzt,
muss er diesen auch eintragen im Script.
oben:
new autobot;
Außerdem ist es unnötig die Bots bei OnPlayerDisconnect disconnecten zu lassen ...
Bringt gar nichts, wenn er einen normalen Bot erstellt, welcher bis zum Server Shutdown connectet bleiben soll.
Außerdem wenn er den Bot erstellt bei OnPlayerSpawn solltest du ebenfalls dazu sagen, dass er auch Scheine geben soll,
ansonsten hüpft der Bot direkt wieder raus, dein OnPlayerSpawn ist ebenfalls unlogisch:
if(IsPlayerNPC(playerid))
{
if(!strcmp(SpielerName(playerid),"BotName",true))
{
//Scheine zuweisen beispiel mit Spieler[playerid][SCHEINNAME] = 1;
//Bot ins Auto bringen mit: PutPlayerInVehicle(playerid,BOTNAME,0);
//Skin zuweisen
}
}
//dadurch du oben ein if mit IsPlayerNPC erstellt hast, brauchst du das nicht bei jeden Bot abfragen sondern kannst mit if(!strcmp weiter arbeiten am schluss eben mit } beenden
Zudem wieso lässt du den Bot bei OnPlayerConnect connecten?
Mach es doch einfacher bei OnGameModeInit ?
Unnötige Sachen. ...
Hab den Fehler schon gefunden.
War ein Flüchtigkeitsfehler
Naja das er jetzt die Animation ausführt wäre nicht einmal so wichtig xD
Nach der Animation soll er den Spieler eine Art "schlüssel" für den Tresor geben.
Jedoch kann ich den Bot anvisieren solange ich lustig bin, wenn er lachen könnte, würde er es über mich, da
beim anvisieren rein gar nichts passiert.
Also geht es mir eher darum, wieso ich den nicht anvisieren kann xD
Hallo zusammen,
ich habe hier eine Frage und verstehe nicht wirklich, wo mein Fehler liegt.
Ich lasse hier auslesen, ob die ID der Bot ist:
if(GetPlayerTargetPlayer(i) == GetPlayerIDBot("[BOT]Direktor"))
Hier wiederum soll er die Animation ausführen:
ApplyAnimation(GetPlayerIDBot("[BOT]Direktor"),"ped","handsup",2.1,0,1,1,1,1,1);
Passieren tut nicht wirklich etwas
Der Stock dazu lautet:
stock GetPlayerIDBot(playername[])
{
new GetPlayerID_Name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
GetPlayerName(i,GetPlayerID_Name,MAX_PLAYER_NAME);
if(!strcmp(GetPlayerID_Name,playername,true))
{
return i;
}
}
return INVALID_PLAYER_ID;
}
Sieht jemand meinen Fehler?
Die Ausführung des Bots ist in einem Timer, der jede paar millisekunden durchläuft.
Wurde doch schon oft genug gefragt.
Und immer gab es die gleiche Antwort, wenn ich mich nicht täusche.
Die Antwort war immer: Nein
IP des Spielers gelöscht und er muss von vorne beginnen mit dem Leveln,Geld verdienen usw..
Für Halloween ist es sicherlich praktisch oder für sonst irgendwelche Anlässe.
Aber so, ist es auch doof, immer neu anzufangen :o
PS: Ich glaube du spielst zu viel WoW ?
Doofe frage aber reicht überhaupt dein TextDraw dafür aus?
Oder ist er vllt zu kleinen und zeigt deshalb auch nichts mehr an ?
Ansonsten wie Vorposter sagt mit strcat
Wie groß ist der string?
Hat er doch oben geschrieben 528.
Bis zur welcher Zeile wird es genau angezeigt.
Bis: "kein Haus besitzen" oder hört es davor schon auf?
Hier new ustring[528];
Wenn du wirklich new ustring gemacht hast, schau dir mal deinen Textstring an,
der ist nicht ustring sondern string
Wie groß hast denn den String gemacht?
Groß genug, dass auch alles angezeigt wird?
hast du das noch gelesen? xD
Wenn ja wie groß ist er denn ?
Wie groß hast denn den String gemacht?
Groß genug, dass auch alles angezeigt wird?