Hallo.
Wie kann ich das machen das wenn man z.B an einem punkt steht und dann kommt ein dialog fenster wo steht:
password eingeben
z.B
11402
und dann steht korret tür öffnet sich für 5 sekunden
und dann schlisst die sich wieder nach 5 sekunden hier in dem video ist ein beispiele:
http://www.youtube.com/watch?v=Tx3ETOQrN_I
vorspuhlen bis 0:45
Türen öffnen mit password
- eli
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
IsPlayerInRangeOfPoint(...)
Dann ShowPlayerDialog(...)
Wenn passwort richtig, dann tür auf wenn nicht, dann ist es halt zu
-Unknown -
und wie kann ich das password bestimmt und kann man es so machen das wenn z.B der leader /türpw macht es änderen kann ?
-
pw in dini abspeichern..
dann inrange..
cmd..
neues pw abspeichern
-
Oder einfach Inputtext mit dem Passwort vergleichen, wenns gleich ist -> Tür öffnen, wenn nicht -> Fehlermeldung
-
ja aber er will ja dass mann es ändern kann
-
Ich habe das nun so gemacht:
else if (IsPlayerInRangeOfPoint(i,2.0,1520.6512,-1625.4971,13.5469))
{
ShowPlayerDialog(i,DIALOG_Password,DIALOG_STYLE_INPUT,"Password","Gib das Password ein!","Ok","Abbrechen");
}
undif(dialogid == DIALOG_Password)
{
if(response && strlen(inputtext) > 0)
{
SendClientMessage(playerid,COLOR_RED,"Tür öffnet sich");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Tür bleibt leider zu falsches password");
}
}und wie muss ich nun die abfrage in einer .ini machen?
das er da das password abfragt ?
kann mir jemand die abfrage machen für .ini?//edit
-
new tuerpasswort[128];
public OnGameModeInit()
{
tuerpasswort = dini_Get("Türpasswort.ini","Passwort");
return 1;
}else if (IsPlayerInRangeOfPoint(i,2.0,1520.6512,-1625.4971,13.5469))
{
ShowPlayerDialog(i,DIALOG_Password,DIALOG_STYLE_INPUT,"Password","Gib das Password ein!","Ok","Abbrechen");
}if(dialogid == DIALOG_Password)
{
if(strcmp(inputtext,tuerpasswort,true)==0)
{
SendClientMessage(playerid,COLOR_RED,"Tür öffnet sich");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Tür bleibt leider zu falsches password");
}
} -
Danke
Kannst du mir zufälliger weise noch sagen wie ich das machen kann das z.B
leader fraktion 1:if(strcmp(cmd, "/türpw", true) == 0)
{
if (PlayerInfo[playerid][pLeader] == 1)
{
.....
}
}auf dem server änderen können ?
-
if(strcmp(cmd,"/türpw",true)==0)
{
if(PlayerInfo[playerid][pLeader] == 1)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,0xFF0000FF,"Benutze: /türpw [Neues Passwort]");
return 1;
}
if(strcmp(tmp,tuerpasswort,true)==0)
{
SendClientMessage(playerid,0xFF0000FF,"Das ist dasselbe Passwort! Nutze ein anderes!");
return 1;
}
format(tuerpasswort,sizeof(tuerpasswort),"%s",tmp);
format(string,sizeof(string),"Das neue Passwort ist: %s",tmp);
SendClientMessage(playerid,0xFF0000FF,string);
return 1;
}
}Achja bei public OnGameModeExit()
musst du noch das hinzufügen:
dini_Set("Türpasswort.ini","Passwort",tuerpasswort); -
-
Danke so weit alles funktionirt nur ein error:
habe das nun so gemacht:
dini_Set("Türpasswort.ini","Passwort",tuerpasswort);
und nun funktionirt alles. nur wenn ich auf server bin sagt er mir immer tür öffnet sich und immer wenn ich ein buchstarben eingebe wir er gleich wieder gelöscht//edit
-
Wie "Der Buchstabe geht immer wieder weg"? O.o
Erklär das mal bitte genauer...
-
-
also wenn ich z.B 1234 eingebe wird das gleich wieder im dialog gelöscht
2. wenn ich z.B schnell 1 eingebe und dann enter drücke dann kommt immer richtig password.
3. /türpw funktionirt auch nicht so ganz immer wenn ich /türpw eingebe steht das password ist genau so wie das altewie meinst du das? und wo?
eli: Das liegt daran, dass du den Pickup Spawn Type vom Pickup auf ID 1 hast.
Mach es mit einem Command oder setz es auf ID 2.Sonst wird der Dialog dir immer hintereinander angezeigt, und der Buchstabe scheint für dich zu verschwinden.
-
Ja du lässt es doch in einem Dialog anzeigen oder? Im Zusammenhang mit einem Pickup
-
ne ohne pickup ich gehe einfach vor die tür und rechts ist so ein schalt platte welche rot ist wie im video und dann wenn man davor steht soll das dialog kommen aber du hast recht es kommt immer wieder direkt wie kann ich das änderen?
-
IsPlayerInRangeOfPoint(...)
hab gerade oben gelesen, hier ist der Fehler..
Der Dialog wird dir oft pro Sekunde gesendet, sodass du fast keine Möglichkeit hast etwas einzugeben. -
hab gerade oben gelesen, hier ist der Fehler..
Der Dialog wird dir oft pro Sekunde gesendet, sodass du fast keine Möglichkeit hast etwas einzugeben.ah stimmt das wegen kann ich nicht eingeben^^ danke.
aber es funktionirt noch nicht so ganz das er das aus der .ini liest
habe das nun so gemacht:Ganz oben:
new tuerpasswort[128];
in public OnGameModeInit()
dini_Set("Türpasswort.ini","Passwort",tuerpasswort);
(weil das nicht funtionirt: tuerpasswort = dini_Set("Türpasswort.ini","Passwort");)in public OnGameModeExit()
dini_Set("Türpasswort.ini","Passwort",tuerpasswort);der befehl:
if(strcmp(cmd,"/türpw",true)==0)
{
if(PlayerInfo[playerid][pLeader] == 1)
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du bist kein cop");
return 1;
}
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,0xFF0000FF,"Benutze: /türpw [Neues Passwort]");
return 1;
}
if(strcmp(tmp,tuerpasswort,true)==0)
{
SendClientMessage(playerid,0xFF0000FF,"Das ist dasselbe Passwort! Nutze ein anderes!");
return 1;
}
format(tuerpasswort,sizeof(tuerpasswort),"%s",tmp);
format(string,sizeof(string),"Das neue Passwort ist: %s",tmp);
SendClientMessage(playerid,0xFF0000FF,string);
return 1;
}Dialog:
if(dialogid == DIALOG_Password)
{
if(strcmp(inputtext,tuerpasswort,true)==0)
{
SendClientMessage(playerid,COLOR_RED,"Tür öffnet sich");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Tür bleibt leider zu falsches password");
}
}
und der befehl für die tür:if(strcmp(cmd, "/tür", true) == 0)
{
if (!PlayerToPoint(2.0, playerid,1520.6512,-1625.4971,13.5469))
{
SendClientMessage(playerid, COLOR_GREEEN, "Du bist nicht an der Tür");
return 1;
}
ShowPlayerDialog(playerid,DIALOG_Password,DIALOG_STYLE_INPUT,"Password","Gib das Password ein!","Ok","Abbrechen");
return 1;
}aber immer wenn ich im dialog z.B 123 eingebe was falsch ist dann kommt:
Tür öffnet sichund wenn ich /türpw mache kommt immer:
Das ist dasselbe Passwort! Nutze ein anderes!Aber warum ?
//edit
-
mach mal das
if(strcmp(tmp,tuerpasswort,true)==0)
{
SendClientMessage(playerid,0xFF0000FF,"Das ist dasselbe Passwort! Nutze ein anderes!");
return 1;
}weg, vl gehts dann...
-
ja nun gehts nun kommt auch das es das falsche password ist wenn man ein andere eingibt es wird aber nicht in der .ini gespeichter oder ausgelesen
meine .ini war leer und da hat sich dann das rein geschrieben:Passwort=
-