Hab ein Tutorial und ein Register/Login System, will das so machen das das Tutorial angezeigt wird wenn man sich das erste mal registriert, und nicht mehr beim nächsten Login!
#include <a_samp>
#include <dini>
#define blau 0x005BFFFF
#define ROT 0xFF0000FF
#define COLOR_GREEN 0x00BB00FF
#define COLOR_WHITE 0xFFFFFFFF
#define DIALOG_LOGIN 3
#define DIALOG_REG 4
enum spieler_daten
{
wanted,
skin,
Float:lastx,Float:lasty,Float:lastz,
eingeloggt
}
new Spieler[MAX_PLAYERS][spieler_daten];
new bool:pFirstLog[MAX_PLAYERS],TutTimer[MAX_PLAYERS],TutTime[MAX_PLAYERS];
forward Tutorial(playerid);
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(116, 2210.3621,-1641.8870,15.1559, 269.1425, 0, 0, 0, 0, 0, 0);
AddStaticVehicle(431,2210.3621,-1641.8870,15.1559,316.4386,0,0); //
AddStaticVehicle(431,139.9303,-96.2412,1.3052,179.5100,64,1); // CARRR
AddStaticVehicle(431,139.8338,-107.5118,1.3052,179.5100,64,1); // CARRR
AddStaticVehicle(431,139.7501,-117.3001,1.3052,179.5100,64,1); // CARRR
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(fexist(accFormat))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(fexist(accFormat) && Spieler[playerid][eingeloggt])
{
dini_IntSet(accFormat,"wanted",Spieler[playerid][wanted]);
dini_IntSet(accFormat,"skin",Spieler[playerid][skin]);
dini_FloatSet(accFormat,"lastx",Spieler[playerid][lastx]);
dini_FloatSet(accFormat,"lasty",Spieler[playerid][lasty]);
dini_FloatSet(accFormat,"lastz",Spieler[playerid][lastz]);
dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
}
Spieler[playerid][eingeloggt] = 0;
Spieler[playerid][wanted] = 0;
Spieler[playerid][skin] = 0;
Spieler[playerid][lastx] = (0.0);
Spieler[playerid][lasty] = (0.0);
Spieler[playerid][lastz] = (0.0);
return 1;
}
public OnPlayerSpawn(playerid)
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(dini_Isset(accFormat,"lastx"))
{
SetPlayerPos(playerid,Spieler[playerid][lastx],Spieler[playerid][lasty],Spieler[playerid][lastz]);
}
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 OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}
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 OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"%s.datei",pname);
if(response)
{
switch(dialogid) // dialogid auswählen
{
case DIALOG_LOGIN: // ID Login
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
return SendClientMessage(playerid,0xFFFFFFFF,"Kein Passwort angegeben!");
}
if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0) // Passwort Direkt aus der Datei Laden
{
Spieler[playerid][wanted] = dini_Int(accFormat,"wanted");
Spieler[playerid][skin] = dini_Int(accFormat,"skin");
Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
GivePlayerMoney(playerid,dini_Int(accFormat,"Geld"));
SetPlayerScore(playerid,dini_Int(accFormat,"Score"));
Spieler[playerid][eingeloggt] = 1; // Spieler ist nun erfolgreich eingeloggt
SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
}
}
case DIALOG_REG: // ID Registrieren
{
if(!strlen(inputtext)) // Text darf nicht = Null sein Null im Sinne von nichts
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort ist zu kurz!");
}
dini_Create(accFormat);
dini_Set(accFormat,"Passwort",inputtext);
Spieler[playerid][eingeloggt] = 1;
SendClientMessage(playerid,0xFFFFFFFF,"Account wurde angelegt und du wurdest eingeloggt.");
}
}
}
else
{
switch(dialogid)
{
case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
public Tutorial(playerid)
{
if(TutTime[playerid] >= 1) // wenn die Zeit auf 1 gesetzt worden war, gehts los. Wenn während des Tutorials die zeit wieder auf 0 gesetzt wird, passiert in dem Timer garnichts.
{
if(TutTime[playerid] == 1)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
{
SetPlayerPos(playerid,1199.326293, -1282.091918, 17.865108);
InterpolateCameraPos(playerid, 1199.326293, -1282.091918, 17.865108, 1206.524902, -1341.727172, 18.961126, 30000);
InterpolateCameraLookAt(playerid, 1195.871337, -1285.705810, 17.915891, 1202.001220, -1339.600463, 18.847854, 30000);
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN,"Herzlich Willkommen auf BLalaada Roleplay!");
SendClientMessage(playerid,COLOR_WHITE,"Als Erstes wollen wir uns bedanken, das du ausgerechnet zu uns gekommen bist.");
SendClientMessage(playerid,COLOR_WHITE,"Als Dankeschön dafür, erhälst du von uns ein Startkapital von 50.000$, sowie Level 3.");
SendClientMessage(playerid,COLOR_WHITE,"Wir hoffen du hast hier einen schönen Aufenthalt!");
}
else if(TutTime[playerid] == 15)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
{
SetPlayerCameraLookAt(playerid, 148.9403,-90.2412,1.3052);
SetPlayerPos(playerid, 148.9403,-90.2412,1.3052);
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN,"Allgemeine Regeln auf dem Server");
SendClientMessage(playerid,COLOR_WHITE,"Wie auf jeden anderen Server ist das Cheaten und Bugusen natürlich verboten,");
SendClientMessage(playerid,COLOR_WHITE,"sowie andere Dinge die dir zum Vorteil sind, wie zum Beispiel ein Parkour Mod.");
SendClientMessage(playerid,COLOR_WHITE,"Selbstverständlich ist auch ein guter Ton erwünscht. Jegliches Beleidigen kann zum");
SendClientMessage(playerid,COLOR_WHITE,"Prison, Kick, Mute oder sogar zu einem Bann führen. Mehr Regeln findet man unter /rules.");
}
else if(TutTime[playerid] == 28)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
{
SetPlayerCameraLookAt(playerid, 139.9303,-96.2412,1.3052);
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN,"Weitere Informationen zum Cheaten/Bugusen");
SendClientMessage(playerid,COLOR_WHITE,"Wie bereits erwähnt, ist das Cheaten sowie Bugusen auf dem Server nicht gestattet.");
SendClientMessage(playerid,COLOR_WHITE,"Falls du jemanden sehen solltest, der Cheatet oder Bugs ausnutzt, melde es einem Admin mit dem");
SendClientMessage(playerid,COLOR_WHITE,"Befehl /report. Wenn der Spieler gebannt wird, erhälst du von uns eine Belohnung.");
}
else if(TutTime[playerid] == 41)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
{
SetPlayerCameraLookAt(playerid, 139.9003,-96.2412,1.3052);
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN,"Fahrzeuge und Unterhalte");
SendClientMessage(playerid,COLOR_WHITE,"Auf unserem Reallife Server haben wir 3 Autohäuser. Ein Motorrad Autohaus, ein Sportwagen Autohaus");
SendClientMessage(playerid,COLOR_WHITE,"und ein Gebrauchtwagen Autohaus. Zurzeit sind die Preise super günstig, also greift zu!");
SendClientMessage(playerid,COLOR_WHITE,"Häuser und Wohnungen gibt es in Fulda Roleplay genug. Du kannst dir jedes Haus kaufen das du willst! ");
SendClientMessage(playerid,COLOR_WHITE,"Natürlich hat das seinen Preis, schreib einfach einen Admin an und dein Haus wird dir sofort gebaut.");
SendClientMessage(playerid,COLOR_WHITE,"Mehr Informationen findest du unter /carhelp und /househelp.");
}
else if(TutTime[playerid] == 54)// hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
{
SetPlayerCameraLookAt(playerid, 139.9303,-96.2412,1.3052);
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN,"Berufe und Fraktionen");
SendClientMessage(playerid,COLOR_WHITE,"Natürlich brauchst du einen Beruf um Geld zu verdienen. Du kannst dich für einen einfachen Beruf im");
SendClientMessage(playerid,COLOR_WHITE,"Arbeitsamt in Los Santos bewerben. Derzeit sind auch Member in Fraktionen überall gesucht! ");
SendClientMessage(playerid,COLOR_WHITE,"Um in eine Fraktion zu kommen, musst du dich im Forum unter www.blablabRP.de bewerben!");
}
else if(TutTime[playerid] == 67)
{
SetPlayerCameraLookAt(playerid, 139.9303,-96.2412,1.3852);
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN," ");
SendClientMessage(playerid,COLOR_GREEN,"Ende des Tutorials");
SendClientMessage(playerid,COLOR_WHITE,"Danke für deine Aufmerksamkeit, wir wollen dich nicht aufzulang aufhalten!");
SendClientMessage(playerid,COLOR_WHITE,"Falls weitere Fragen bestehen, frag einfach einen Spieler oder einen Admin!");
}
else if(TutTime[playerid] == 72) // hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
{
KillTimer(TutTimer[playerid]); // der Tutorial Timer wird beendigt
TutTime[playerid] = 0; // die Tutorial Zeit auf INVALID gsetzt - nach Goldkiller :)
SetPlayerPos(playerid,0.0,0.0,0.0); // der Spawn, wo er nach dem Tutorial hinsoll
TogglePlayerControllable(playerid,true); // hier wird die Fähigkeit sich zu bewegen wieder auf "wahr" gesetzt
}
TutTime[playerid]++; // hier wird die Zeit jede Sekunde erhöht
}
}
Wo muss ich das pFirstLog[playerid] = true; hinsetzen, damit ers weiß?