Wie wäre es mal mit einer anderen Tonlage?
Bleib mal höflich, ich habe dich nirgends angegriffen o.Ä.
Wenn dir der Code nicht passt, behalte es einfach für dich.
Beiträge von SoulMan
-
-
Was ist daran totaler Schwachsinn? Habe ich irgendwo das Gegenteil behauptet?
-
Dann schau dir die Basics an und versuche es danach nochmal.
Sein Haussystem ist der Grundbau eines jeden dynamischen Systems. -
new FALSE = false;
#define SendFormattedMessage(%0,%1,%2) do{new _str[128]; format(_str,128,%2); SendClientMessage(%0,%1,_str);}while(FALSE)
SendFormattedMessage(playerid,color,"Du hast %s SkinID %d zugewiesen",SpielerName[pID],sID);Spart das lästige erstellen von Strings und Formatierungen.
*/Edit: Funktion ist nicht von mir. Stammt, soviel ich weiß aus dem Englischen SA:MP Forum.
-
Guten Abend, liebe Scripter!
Ich habe mich mal dazu entschieden, ein Login/Register System zu erstellen, dass jedoch über CMD's funktioniert.
Benötigt wird die dini Include, zcmd Include und die sscanf Include.
Download im Anhang oder hier Includes DownloadVorraussetzungen:
Ihr solltet Zeit haben und Aufmerksamkeit besitzen.
Keine Besonderen Scriptkentnisse erforderlich.Los geht's!
Zuerst geht es an unsere Includes & Defines.
#include <a_samp>
#include <zcmd>
#include <sscanf>
#include <dini>
#define PLAYER_FOLDER "/Spieler/%s.ini"//Dient einer einfacheren HandhabungJetzt die new's
new SpielerName[MAX_PLAYERS][MAX_PLAYER_NAME];//Damit können wir später den Namen leichter ermitteln. Bsp.: SpielerName[pID];
new Eingeloggt[MAX_PLAYERS];//Eine einfache Variable, welche für jeden Spieler verfügbar ist ([MAX_PLAYERS] )public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, SpielerName[playerid], MAX_PLAYER_NAME); //Hier kommt das new SpielerName erstmal's zum Einsatz. Der Name jedes sich einloggenden Spielers wird ausgelsen
new s[128];//Variable zum Ermitteln der Spielerdatei
format(s, sizeof(s),PLAYER_FOLDER,SpielerName[playerid]);
if(!dini_Exists(s)) { //Wenn die Spielerdatei nicht vorhanden ist
SendClientMessage(playerid,0xF0F0F0FF,"Bitte registriere dich!");
SendClientMessage(playerid,0xF0F0F0FF,"/register [Passwort]"); }
else { //Falls sie vorhanden ist
SendClientMessage(playerid,0xF0F0F0FF,"Bitte logge dich ein!");
SendClientMessage(playerid,0xF0F0F0FF,"/login [Passwort]"); }
return 1;
}Unsere Cmd's
CMD:register(playerid,params[])
{
new pass[200],s[128]; //Variablen für den Befehl (s könnte auch path o.Ä. heißen, dient zur Formatierung)
if(sscanf(params, "s",pass))return SendClientMessage(playerid,0xF0F0F0FF,"TIPP: /register [Passwort]"); //Falls ihr sscanf nicht kennt, schaut euch den Link am Ende des Themas an. Einfache Erklärung: sscanf ermittelt die Parameter aus der Eingabe des Spielers
format(s, sizeof(s),PLAYER_FOLDER,SpielerName[playerid]);
if(!dini_Exists(s)) //Falls die Spielerdatei noch nicht existiert
{
dini_Create(s); //Spieler Datei wird im Ornder "Spieler" erstellt
dini_Set(s, "Passwort", pass); //Passwort wird eingetragen
SendClientMessage(playerid,0xF0F0F0FF,"Du hast dich erfolgreich registriert!");
Eingeloggt[playerid] = 1; //Setzt die Variable Eingeloggt auf 1
} else { SendClientMessage(playerid,0xF0F0F0FF,"Du bist bereits registriert!"); } //Falls doch, erscheint diese Nachricht [ kann auch else return heißen]
return 1;
}CMD:login(playerid,params[])
{
new pass[128],s[128],pw[200];
if(sscanf(params, "s",pass))return SendClientMessage(playerid,0xF0F0F0FF,"TIPP: /login [Passwort]");
if(pInfo[playerid][Eingeloggt] == 1)return SendClientMessage(playerid,0xF0F0F0FF,"Du bist bereits eingeloggt!"); //Falls Eingeloggt auf 1 steht, wird diese Nachricht returnt
format(s, sizeof(s),PLAYER_FOLDER,SpielerName[playerid]);
if(!dini_Exists(s))return SendClientMessage(playerid,0xF0F0F0FF,"Du musst dich erst registrieren!"); //Das Selbe Schema wie oben
format(pw, sizeof(pw), "%s", dini_Get(s, "Passwort"));//Passwort wird ermittelt
if(strcmp(pass, pw) == 0) //Falls das Passwort stimmt
{
Eingeloggt[playerid] = 1;//Variable wird auf 1 gesetzt
SpawnPlayer(playerid); //Spawnt den Spieler direkt, um die Skinauswahl zu überspringen
SendClientMessage(playerid,0xF0F0F0FF,"Du hast dich erfolgreich eingeloggt!");
} else { SendClientMessage(playerid,0xF0F0F0FF,"Falsches Passwort angegeben!"); }//Falls nicht, erscheint wieder eine Nachricht [auch hier würde else return gehen]
return 1;
}CMD:changepass(playerid,params[]) {
new pass[128],s[128,str[128];
if(sscanf(params, "s",pass))return SendClientMessage(playerid,0xF0F0F0FF,"TIPP: /changepass [Passwort]");
if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid,0xF0F0F0FF,"Du musst dich erst einloggen");
format(s, sizeof(s),PLAYER_FOLDER,SpielerName[playerid]);
dini_Set(s, "Passwort", pass); //Neues Passwort wird eingetragen 'pass' ist die oben definierte Variable.
format(str,sizeof(str),"Passwort erfolgreich geändert [%s]",pass);
SendClientMessage(playerid,0xF0F0F0FF,str);
return 1; }Falls ihr jetzt Eingeloggt nutzen wollt, hier ein Beispiel.
public OnPlayerRequestSpawn(playerid)
{
if(Eingeloggt[playerid]== 0){ SendClientMessage(playerid, 0xF0F0F0FF, "Du musst dich vorher einloggen!"); return 0;}
return 1;
}Beim Disconnect solltet ihr Eingeloggt wieder auf 0 setzen, damit sich kein Anderer mit eurem Account vergnügen kann.
public OnPlayerDisconnect(playerid, reason)
{
Eingeloggt[playerid] = 0;
return 1;
}Im Anhang gibt es die .pwn + die Includes zum Downloaden.
Falls ihr noch Fragen habt, stellt sie hier im Thread, ich helfe gerne weiter.Hier noch die Erklärung zu sscanf klick
Hoffe, ihr habt alles verstanden und ich hab nicht allzu umständlich erklärt.</a_samp>
-
Ich bezweifle zwar, dass du es diesmal richtig hinbekommst, aber hier..
if(!IsPlayerInRangeOfPoint(playerid,2.0,2118.5999,-1155.5908,24.1581))return SendClientMessage(playerid,rot,"Du bist nicht am Autohaus!");
ShowMenuForPlayer(Carmenu,playerid);
return 1; -
Doch hat es. Du kannst Vorschläge annehmen und umsetzen oder es lassen.
-
Könntest ja mal eine "Game-Hour" machen, wo du viele verschiedene Spiele einfach mal vorstellst.
Jedes Spiel etwa 10 Minuten zeigen etc. Sowas fände ich sehr interessant. -
Sieht ordentlich aus!
Freue mich schon auf die Final. Bitte Screens reinstellen, wenn's fertig wird. -
Dynamic DM Gamemode.
Wird demnächst released. -
Man könnte ja mal zur Abwechslung die Anleitung lesen.
-
Wenn nicht, helf ich dir
-
Habe selten etwas undynamischeres gesehen.
Lies dir mal Goldkillers Müllabfuhr Tutorial durch und benutze einfach einen Array.Obwohl, mit dieser Art zu scripten kann man sogar Beiträge pushen. Genial!
-
War das jetzt eine Frage oder eine Aussage?
-
Du beendest mal wieder die public nicht und du vergisst die Klammern zu öffnen.
Schau dir doch mal an, was wir geschrieben haben und setze es einfach um.. -
Wenn du 10 Befehle so scriptest, dann hast du 140 Zeilen verbraucht, es ginge aber auch in 60 Zeilen.
Versuch es doch einfach mal und SendClientMessage bekommste ja bestimmt noch hin.Füg es doch einfach mal ein und sag uns dann welche Errors kommen.
-
if (strcmp("/lspd", cmdtext, true, 10) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1)else return SendClientMessage(playerid, COLOR_WHITE, "Du bist {ff0000}kein {ffffff}Administrator!");
SetPlayerPos(playerid,x,y,z);
return 1;
}
Versuchs so. -
Gute Idee, finde ich wirklich sehr lobenswert, dass du Anfängern helfen willst.
Weiter so! -
Wie wärs denn, wenn du dir mal den Befehl anschaust?
-
Welches Genie kam denn auf sowas?
format(string, sizeof(string), "Neues Haus \nHaus bearbeiten");
ShowPlayerDialog(playerid, 13, DIALOG_STYLE_LIST, "Hauskonfigurator", string, "Auswählen", "Abbrechen");