Hey, nicht ganz was ich suche, aber ich habe gerade einen anderen Weg gefunden, Danke!
Noch 'ne Frage, wie stelle ich denn die "ClassSelection" ganz ab?
Wie gesagt man kann diese "Pfeile" im Loginmenü drücken, und das sollte nicht so sein
Hey, nicht ganz was ich suche, aber ich habe gerade einen anderen Weg gefunden, Danke!
Noch 'ne Frage, wie stelle ich denn die "ClassSelection" ganz ab?
Wie gesagt man kann diese "Pfeile" im Loginmenü drücken, und das sollte nicht so sein
Hey,
nach einer Stunde rumprobieren weiß ich bei dem Thema auch nicht mehr weiter...
Ich habe versucht eine classselection zu machen
Soweit ich es verstanden habe, sollte dann jeder Spieler der im Team X mit der Team ID X bei AddPlayerClassEx eine Klasse aussuchen können, folgendes Problem:
Beim Login (wo man in PlayerRequestClass ist), kann ich auf die Pfeile clicken und zu den verschiedenen Klassen, was nicht so sein soll.
Nachdem man ein Team betreten hat: Man kann sich fast jeden anderen Skin aussuchen, egal welches Team, ich glaube sogar, dass da einige Skins fehlen.
OnGameModeInit:
//
AddPlayerClassEx(1, 111, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(1, 112, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(1, 113, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(1, 124, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(1, 125, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(1, 126, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(1, 127, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
//
AddPlayerClassEx(2, 46, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(2, 47, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(2, 48, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(2, 98, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(2, 185, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(2, 223, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(2, 249, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
//
AddPlayerClassEx(3, 105, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(3, 106, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(3, 107, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(3, 269, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(3, 270, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(3, 271, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
//
AddPlayerClassEx(4, 114, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(4, 115, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(4, 116, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(4, 173, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(4, 174, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(4, 175, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
//
AddPlayerClassEx(5, 102, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(5, 103, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(5, 104, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(5, 293, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
//
AddPlayerClassEx(6, 102, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(6, 103, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(6, 104, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(6, 293, 0.000, 0.000, 0.000, 0.000, 0, 0, 0, 0, 0, 0);
//
Alles anzeigen
OnPlayerRequestClass:
if(IsInLogin[playerid] == true) return 0;
if(PlayerInfo[playerid][pLogged_in] == false)
{
new name[64];
GetPlayerName(playerid, name, 64);
new string[128];
format(string, sizeof(string), "/Accounts/%s.ini", name);
SendClientMessage(playerid, COLOR_CYAN, "Willkommen auf dem Next Gen DM Script");
SendClientMessage(playerid, COLOR_CYAN, "Dies ist ein selbstgemachtes Search & Destroy Script von Vause");
SendClientMessage(playerid, COLOR_CYAN, "Viel Spaß!");
IsInLogin[playerid] = true;
if(dini_Exists(string))
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, 3, "Willkommen zurück! Login:", "Gebe hier dein Passwort ein:\n\nNicht verschlüsseltes Passwort.", "OK", "Abbrechen");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, 3, "Willkommen auf Next Gen DM", "Gebe hier dein zukünftiges Passwort ein:\n\nAchtung! Dies wird nicht verschlüsselt.", "OK", "Abbruch");
}
}
SetPlayerPos(playerid,199.0846,-150.0331,1.5781);
SetPlayerCameraPos(playerid, 199.2307,-143.8328,1.5781);
SetPlayerCameraLookAt(playerid, 199.0846,-150.0331,1.5781);
SetPlayerFacingAngle(playerid,359.1443);
return 1;
Alles anzeigen
OnPlayerRequestSpawn:
if(IsInLogin[playerid] == true) return 0;
if(PlayerInfo[playerid][pLogged_in] == false) return 0;
Nach dem Login werden natürlich IsInLogin und pLogged_in umgestellt.
Ziel: Wenn man Team X beitritt soll man nur die Skinauswahl von Team X haben, und keine Möglichkeit von Drücken der Pfeile beim Login sowie zu den Skins zu wechseln.
Muss ich das alles mit AddPlayerClass statt AddPlayerClassEx machen?
Edit: Beantwortet, bei einem eigenen Thema für dieses Problem.
Einmal reicht Hoster für SA:MP Server
Wie wäre es, wenn du mal den Support anschreibst? Ich denke nicht, dass dir mit diesen Informationen die du hier gegeben hast (Gar keine) irgendjemand helfen kann.
Frag den Support, dafür ist er da.
Okay werde ich machen, wundere mich nur gerade ob ich die Installation einfach neustarten muss oder nicht..
Stimmt, geht jetzt, lol. Wäre da nie drauf gekommen, dass es an der Länge liegt, danke!
Problem ist eher dass der String nicht richtig verglichen wird.
Kann jedes Passwort nehmen was ich will oder einfach leer lassen, und es klappt.
Ich verwende wahrscheinlich strcmp falsch, da ich das selten verwende, habe ich auch keine richtige Ahnung wie ich es verwenden muss
new name[64];
GetPlayerName(playerid, name, 64);
new string[128];
format(string, sizeof(string), "/Accounts/%s.ini", name);
printf("Pfad = %s", string);
new pass[128];
format(pass, sizeof(pass), "%s", dini_Get(string, "Passwort"));
printf("Pass = %s", pass);
printf("Inputtext = %s", inputtext);
if(strcmp(inputtext, pass, false) == 0) // 255 217 15
{
SendClientMessage(playerid, COLOR_WHITE, "Willkommen zurück!");
PlayerInfo[playerid][pScore] = dini_Int(string, "Score");
PlayerInfo[playerid][pAdmin] = dini_Int(string, "Admin");
PlayerInfo[playerid][pKills] = dini_Int(string, "Kills");
PlayerInfo[playerid][pDeaths] = dini_Int(string, "Deaths");
PlayerInfo[playerid][pBanned] = dini_Int(string, "Banned");
PlayerInfo[playerid][pLogged_in] = true;
if(PlayerInfo[playerid][pBanned] >= 1)
{
ShowPlayerDialog(playerid, DIALOG_BANNED, 0, "Du wurdest gebannt.", "Hallo,\n\nso wie es aussieht wurdest du gebannt.", "OK", "");
Kick(playerid);
return 1;
}
}
else
{
PwCounter[playerid] += 1;
new string1[128];
format(string1, sizeof(string1), "Gebe hier dein Passwort ein:\n{D50000}Password Falsch(%d/3){FFFFFF}\nNicht verschlüsseltes Passwort.", PwCounter[playerid]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, 3, "Willkommen zurück! Login:", string1, "OK", "Abbrechen");
if(PwCounter[playerid] == 3)
{
Kick(playerid);
}
}
Alles anzeigen
Hey, mein vServer braucht irgendwie schon um die 10 Stunden für die .NET Framework installation bzw ist noch bei 0%.. Ist das normal?
4GB Ram,
2.4 GHz Dual Core
150GB HDD
Upsi, dachte das muss in den normalen Ordner xD.
Geht jetzt
Edit: Irgendwie nimmt der aber nicht den String aus dem Passwort und vergleicht es..
Lege die Datei doch mal händisch an, und schaue ob dann der Login Dialog direkt angezeigt wird.
Datei ist leer & ich kriege Register, also funktioniert das mit If(dini_Exist(string)) wohl auch nicht
So wird angezeigt:
if(PlayerInfo[playerid][pLogged_in] == false)
{
new name[64];
GetPlayerName(playerid, name, 64);
new string[128];
format(string, sizeof(string), "/Accounts/%s.ini", name);
SendClientMessage(playerid, COLOR_CYAN, "Willkommen auf dem / ");
SendClientMessage(playerid, COLOR_CYAN, "Dies ist ein selbstgemachtes //");
SendClientMessage(playerid, COLOR_CYAN, "Viel Spaß!");
if(dini_Exists(string))
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, 3, "Willkommen zurück! Login:", "Gebe hier dein Passwort ein:\n\nNicht verschlüsseltes Passwort.", "OK", "Abbrechen");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, 3, "Willkommen auf //", "Gebe hier dein zukünftiges Passwort ein:\n\nAchtung! Dies wird nicht verschlüsselt.", "OK", "Abbruch");
}
}
Alles anzeigen
server_log:
Schreibrechte ka, habs eigentlich gesetzt.
Die Funktion müsste auch abgerufen werden, da es mich zu Dialog_Login weiterleitet
Hey, hab schon editiert, ist da.
Hey, ich habe mir vor ein paar Tagen Dini geholt da ich nicht MySQL bei allem brauche, voll-automatische System die nicht manuell editiert werden müssen, kann ich auch ganz leicht mit Dini abspeichern.
Nun habe ich das Problem:
Es geht einfach nicht, kein einziger Dini Befehl funktioniert, ich habe die dini included #include <Dini>, bei der PAWNO.exe wird die Dini.inc aber leer angezeigt, wenn ich sie manuell öffne ist der ganze Code da..
Benutze Dini 1.6
Edit: Beispielcode
Es wird nix gespeichert/geladen oder eine neue .ini erstellt
if(dialogid == DIALOG_REGISTER)
{
if(!response) return Kick(playerid);
new name[64];
GetPlayerName(playerid, name, 64);
new string[128];
format(string, sizeof(string), "/Accounts/%s.ini", name);
dini_Create(string);
dini_Set(string, "Passwort", inputtext);
dini_IntSet(string, "Score", 0);
dini_IntSet(string, "Admin", 0);
dini_IntSet(string, "Kills", 0);
dini_IntSet(string, "Deaths", 0);
dini_IntSet(string, "Banned", 0);
ShowPlayerDialog(playerid, DIALOG_LOGIN, 3, "Willkommen zurück! Login:", "Gebe hier dein Passwort ein:\n\nNicht verschlüsseltes Passwort.", "OK", "Abbrechen");
return 1;
}
if(dialogid == DIALOG_LOGIN)
{
if(!response) return Kick(playerid);
new name[64];
GetPlayerName(playerid, name, 64);
new string[128];
format(string, sizeof(string), "/Accounts/%s.ini", name);
new pass[128];
format(pass, sizeof(pass), "%s", dini_Get(string, "Passwort"));
if(strcmp(inputtext, pass, false) == 0)
{
SendClientMessageToAll(COLOR_WHITE, "Login.");
PlayerInfo[playerid][pScore] = dini_Int(string, "Score");
PlayerInfo[playerid][pAdmin] = dini_Int(string, "Admin");
PlayerInfo[playerid][pKills] = dini_Int(string, "Kills");
PlayerInfo[playerid][pDeaths] = dini_Int(string, "Deaths");
PlayerInfo[playerid][pBanned] = dini_Int(string, "Banned");
PlayerInfo[playerid][pLogged_in] = true;
if(PlayerInfo[playerid][pBanned] >= 1)
{
ShowPlayerDialog(playerid, DIALOG_BANNED, 0, "Du wurdest gebannt.", "Hallo,\n\nso wie es aussieht wurdest du gebannt.", "OK", "");
Kick(playerid);
return 1;
}
}
else
{
SendClientMessageToAll(COLOR_WHITE, "Falsch.");
}
return 1;
}
Alles anzeigen
Danke :)!
Danke
Edit: Wie ist jetzt eigentlich der beste Weg um über einen Windows vServer zu arbeiten? Ich habe bei Linux immer WinSCP und Putty benutzt, was muss ich da bei Windows verwenden?
Natürlich um z.B. Programme zu installieren, einstellungen und so weiter
@German_ScripterHD
Deine Funktion funktioniert nicht für alle Fahrzeuge. Ein Bus kann z. B. Mehr als 4 Personen mitnehmen, Da würde deine Funktion schon nicht mehr funktionieren.
Ich meine, seine Funktion hilft mir ja dennoch gut weiter, da ich es im Moment nur für Fahrzeuge mit 4 Sitzen benötige und wahrscheinlich auch weiterhin nur für 4 Sitze, ich wüsste nicht wieso ein Sanitäter einen Verletzten in ein Bus ziehen sollte xD
Hey,
wie ist der beste und einfachste Weg um abzufragen ob ein ein Vehicle einen freien Beifahrersitz hat, und dann einen Spieler in diesen zu packen?
z.B. bei einem /Grab Befehl.
Befehl:
ocmd:grab(playerid, params[])
{
new pid, ptnid;
if(!IsPlayerConnected(playerid)) return ERR_NO_CON
if(PlayerInfo[playerid][pFrak] == 3)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_BEFEHL, "Du musst der Fahrer sein!.");
if(IsPlayerInAnyVehicle(ptnid)) return SendClientMessage(playerid, COLOR_BEFEHL, "Dein Partner muss außerhalb des Fahrzeuges beim Verletzten sein.");
if(sscanf(params, "uu", pid, ptnid)) return SendClientMessage(playerid, COLOR_BEFEHL, "Nutze: /grab [ID/Name] [Partner-ID]");
if(!IsPlayerConnected(pid)) return ERR_NO_CON_PL
if(!IsPlayerConnected(ptnid)) return ERR_NO_CON_PL
new Float:InjX, Float:InjY, Float:InjZ;
new Float:ptnX, Float:ptnY, Float:ptnZ;
if(!IsPlayerInRangeOfPoint(playerid, 6, injX, injY, injZ)) return SendClientMessage(playerid, COLOR_BEFEHL, "Du musst näher beim Verletzten sein.");
if(!IsPlayerInRangeOfPoint(playerid, 6, ptnX, ptnY, ptnY)) return SendClientMessage(playerid, COLOR_BEFEHL, "Du musst näher beim Partner sein.");
if(!IsPlayerInRangeOfPoint(ptnid, 2, injX, injY, injZ)) return SendClientMessage(playerid, COLOR_BEFEHL, "Dein Partner muss näher beim Verletzten sein.");
if(IsPlayerInAnyVehicle(pid)) return SendClientMessage(playerid, COLOR_BEFEHL, "Der Verletzte muss außerhalb eines Fahrzeuges sein.");
return 1;
}
return 1;
}
Alles anzeigen
Habe mir da jetzt einen Root-Server geholt, Rechnung ist bezahlt, da steht jetzt aber dass ich keine aktiven Produkte/Dienstleistungen habe, obwohl die 5€ gezahlt sind, hab ich da eine gewisse Wartezeit?
Root Server - middle (29/08/2016 - 28/09/2016)
Operating System: Windows 7 - Professional
Es gibt die funktion bei OnDialogResponse:
if(response)
if(listitem == 0)
(1. Item in der Liste) Falls du das noch globaler verwenden willst kannst du ja ClickedListItem[MAX_PLAYERS]; als variable verwenden, dann setzt du dort ein
ClickedListItem[playerid] = 1;
Ich hoffe das ist was du meinst und ich konnte dir weiterhelfen.
Gibts nen Weg wie man Spieler unverwundbar machen kann? Gegenüber Waffen- & Faustschaden
Jetzt ist der auf 0...
Edit: Geht doch
Habe ein Problem mit dini, irgendwie funktioniert das nicht so ganz..
Es sollte nach dem Register eine .ini mit dem Namen des Spielers erstellen, es passiert aber nix... Habs schon getestet, liegt nicht an dem String "name"
Glaube die Dini wird nicht richtig geladen bzw hat ne falsche Version (1.6)