1. Ne du fängst immer noch bei listitem == 1 an...
2. Hast du jetzt listitem == 2 zweimal.
Mach if(listitem == 0) beim Infernus
1. Ne du fängst immer noch bei listitem == 1 an...
2. Hast du jetzt listitem == 2 zweimal.
Mach if(listitem == 0) beim Infernus
Es fängt immer bei 0 an zu zählen. Das heißt dann auch dass du mit listitem == 0 anfangen musst
Setzte den Spieler in eine andere Virtuelle Welt damit man ihn nicht sieht
Nur BindIP auskommentieren, der Rest soll so bleiben.
Kleiner Fehler von mir
Zitat[20:43:38] SERVER: Der Server ist nicht auf der IP '176.9.44.136:7048' gebinded!
Da ist der Fehler.
Kommentiere alles was mit der Server IP zu tun hat aus.
/* */
Unloaded heißt nicht, dass die Plugins nicht geladen werden.
Das sagt ja schon das Wort Unloaded ---> Das Plugin wurde geladen aber wird nun ausgeladen.
Der Server fährt wahrscheinlich herunter und deswegen passiert das. Zeig mal den kompletten Serverlog
@TropicalMonster:
Zuerst erstellst du einen neuen Public, dazu wird ein forward erstellt:
forward Tutorial(playerid)
noch dazu erstellen wir zwei neue Variablen, eine dient später für die Abfrage der gradigen höhe des Wertes, und die andere dient dafür, um einen Timer zu erstellen. Denn um ein Tutorial mit Zeitbedingung zu erstellen, benötigt man einen Timer. Wozu die Variable für den Timer? Da ich bei meiner Methode den Timer immer und immer wiederholen lasse, muss er ja, nach dem Tutorial, irgendwie abgebrochen werden. Deswegen für den Timer eine extra Variable.
new TutorialTimer[MAX_PLAYERS],TutorialTime[MAX_PLAYERS];
Nun können wir auch damit beginnen, den Spieler, sofern dieser das Tutorial nicht abgeschlossen hat, in das Tutorial zu schicken. Das machen wir direkt dort, wo die Spielerdatei erstellt wird, bzw bei MySQL in die Datenbank der Spieler geschrieben wird.
Dazu erstellen wir jetzt einen Timer unter den Public (sofern vorhanden) wo die Datei erstellt wird, dazu verwendet man jetzt die Variable "TutorialTimer".
Dazu stellen wir TogglePlayerControllable auf false, damit der Spieler sich während dem Tutorial nicht bewegen kann.
Und drittens stellen wir die Variable "TutorialTime" auf 1.
TutorialTimer[playerid] = SetTimerEx("Tutorial",1000,1,"i",playerid);
TogglePlayerControllable(playerid,false);
TutorialTime[playerid] = 1;
Haben wir das gemacht, können wir nun den Public wozu wir ein neues Forward erstellt haben anlegen.
public Tutorial(playerid)
{
}
In diesen Public können wir nun folgendes eintragen:
TutorialTime[playerid] ++;
Was passiert jetzt eigentlich? Wir rufen mit dem Timer diesen Public jede Sekunde auf. Und immer wenn diese Public aufgerufen wird, wird die Variable TutorialTime um 1 erhöht. Das ist wichtig für die nächsten Schritte, die wir jetzt machen.
Denn jetzt wird die Variable "TutorialTime" in einer if Abfrage genutzt:
if(TutorialTime[playerid] >= 1)
{
}
Hier sagen wir, wenn die Zeit auf 1 gesetzt wird, soll das Tutorial beginnen. Das machen wir nun auch mit weitern if Abfragen. Hierbei kann man die Sekunden anzahl bzw. die Zahl in der if Abfrage anpassen:
if(TutorialTime[playerid] >= 1)
{
if(TutorialTime[playerid] == 2)
{
//Position SendClientMessage usw.
}
if(TutorialTime[playerid] == 10)
{
//Position SendClientMessage usw.
}
if(Tutorial... usw.
}
In diesen einfachen Zeilen, bestimmen wir wann der nächste Ort immer angezeigt werden soll.
Haben wir jetzt aber das Tutorial fertig geschaut, können wir in der letzten if Abfrage folgendes machen:
if(TutorialTime[playerid] == ZAHL)
{
KillTimer(TutorialTimer[playerid]);
TutorialTime[playerid] = -1;
SetPlayerPos(playerid,X,Y,Z);
}
Was geschieht darin jetzt? Zu aller erst "Killen" wir den Timer, damit er nicht sinnlos Ressourcen frisst. Zweitens geben wir der Variable "TutorialTime" den Wert -1. Somit wird diese Variable auf INVALID gesetzt.
Und drittens geben wir die Koordinaten an, wo der Spieler dann zum Schluss des Tutorials sein soll.
Und fertig ist das eigene Tutorial.
ZitatWie soll ich denn das machen wenn ich nicht weiß wie das geht!?
Wozu schreibe ich denn eine Anleitung wie du das machst?
Wenn du Errors hast, poste diese hier mit den Error Zeilen.
Zitat von Andrzejxy'Ich habs eben für dich gemacht, downloaden in den Ordner damit und fertig.
Wenn es immer jemand anderes erledigt, lernt diese Person wo es benötigt nie...
ZitatDort gibt es kein inc. Dateityp
Deswegen auch Speichern Unter ---> Name.inc
.inc dahinter schreiben, dann wird es so übernommen
1. Alles markieren.
2. Kopieren.
3. In Notepad++ einfügen
4. Speicher unter ---> Name.inc
Zitatdini_IntSet(accFormat,"Geld",Spieler[playerid][Geld]);
Mach es doch so
dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
TaheriDEV.de hat nun ein neues Team-Mitglied bzw. einen neuen Foren-Leiter.
Forum:
Lehrer liste: Lehrer Auswahl #1
Wir freuen uns auf euren Besuch.
MfG: T4125Gamer
Downloaden und als Plugin einfügen (http://solidfiles.com/d/0c45/).
Danach den Server restarten und den Serverlog zeigen.
Zitat[19:48:22] Loading plugin: streamer
[19:48:22] Failed (plugins/streamer: cannot open shared object file: No such file or directory)
[19:48:22] Loading plugin: audio
[19:48:22] Failed (plugins/audio: cannot open shared object file: No such file or directory)
[19:48:22] Loaded 0 plugins.
Da du hier für einen Linux Server hilfe suchst, fehlt etwas ganz bestimmtes.
In deine server.cfg muss streamer.so audio.so stehen. Denn das ist bei Linux so
1. Mach es beim Speichern so:
mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][pName]);
2. Wenn du es beim Laden so machst:
SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
Kann ja dabei nichts rauskommen, denn du setzte das Geld auf die Variable SpielerInfo[playerid][pGeld]. Lass es doch gleich ausgeben.
GivePlayerMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]));
#include <Includename>
Genauso wie beim Gamemode