Ahoi Matrosen.
Kann mir einer sagen ob es eine Funktion gibt mit der man Dateien umbenennen kann?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
-
-
Im Dini, dann vll. so:
dini_Int
dini_Get
dini_Float
//usw.
// zum abspeichern von allem was drinne ist.Dann so:
Dini_Remove
// Damit die Datei nicht mehr da istUnd dann:
Dini_Create
// Damit die Datei neu gesetzt wirdZu guter Letzt:
dini_Set
dini_IntSet
dini_FloatSet
// Und so weiter, damit die Sachen neu gesetzt werden// EDIT @*Ghostrider*:
-
Alles anzeigen
Im Dini, dann vll. so:
dini_Int
dini_Get
dini_Float
//usw.
// zum abspeichern von allem was drinne ist.Dann so:
Dini_Remove
// Damit die Datei nicht mehr da istUnd dann:
Dini_Create
// Damit die Datei neu gesetzt wirdZu guter Letzt:
dini_Set
dini_IntSet
dini_FloatSet
// Und so weiter, damit die Sachen neu gesetzt werden// EDIT @*Ghostrider*:
Das ist nett, aber aktuell lasse ich die Datei beerits neu erstellen,beschreiben und speichern.
Jedoch muss ich dabei gleichzeitig noch das Passwort raus filtern und neu setzen, und ich wollte wissen, ob man nicht einfach die Datei umbennen kann & nicht neu beschreiben.
PS: Ist zwar nett das du alles raus gesucht hast, auch das um Werte zu setzen was hier gar nicht angebracht ist, aber in der Lage bin ich das ich weiß wie dies funktioniert.
Mir gehts lediglich um das umbenennen einer Datei. -
Kommt drauf an, wenn du z.B. nur eine Fraktionsdatei umbenennen willst, kannst du einfach die Werte kopieren, neue Datei erstellen, Werte rein & dann das auslesen im Script an die Datei anpassen.
-
Kommt drauf an, wenn du z.B. nur eine Fraktionsdatei umbenennen willst, kannst du einfach die Werte kopieren, neue Datei erstellen, Werte rein & dann das auslesen im Script an die Datei anpassen.
Das nennt sich dann aber nicht umbenennen sondern lediglich "neu erstellen" & das ist nicht das nach dem ich gefragt habe.

-
Wie mache ich es wenn ein Spieler "/notruf" eingibt,das ALLE Polizisten eine nachricht beckommen?
Also ich habe alles nur ich weiß nicht wie ich das machen soll das der polizist eine nachricht beckommt -
Wie mache ich es wenn ein Spieler "/notruf" eingibt,das ALLE Polizisten eine nachricht beckommen?
Also ich habe alles nur ich weiß nicht wie ich das machen soll das der polizist eine nachricht beckommt
Du ziehst eine for( schleife durch alle Spieler die auf dem Server sind, und fragst ab wer Polizist ist.
Dach verschickst du die Nachricht -
Ich brauch ma eben hilfe
Bei der Funktion:
stock GetUserID(playerid)
{
new query[128],GetName[MAX_PLAYER_NAME];
GetPlayerName(playerid,GetName,MAX_PLAYER_NAME);
format(query, sizeof query, "page=id&name=%s", GetName);
HTTP(playerid, HTTP_POST, "dt-rp.de/server/register.php", query, "UserIDGet");
}
public UserIDGet(playerid, response_code, data[])
{
if(response_code != 200)
{
SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
Kick(playerid);
}
else
{
if(!strcmp(data,"Error",true))
{
SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
Kick(playerid);
return 1;
}
else
{
return strval(data);
}
}
return 1;
}
Soll er mir die userid ausgeben
Problem bei der sache ist, wie ich das mit php hinbekommen kann..
Hat da jemand ne idee? -
Das nennt sich dann aber nicht umbenennen sondern lediglich "neu erstellen" & das ist nicht das nach dem ich gefragt habe.

Anders ist es aber nicht möglich -
Problem bei der sache ist, wie ich das mit php hinbekommen kann..
Der Parameter data[] im Callback enthält alles, was im HTML Quellcode steht.Sprich du schreibst einfach nur sowas:
PHPecho GetID($_POST["name"]); //GetID ist nur eine Funktion ausgedacht...musst halt deine verwenden um an die ID zu kommen, die du ausgeben willst.mfg.

-
-
Jedoch gibt er mir immer den wert 1 wieder

Hast du auch mal die Seite übern Browser aufgerufen und geschaut was er dir ausgibt?Printe dir halt mal alles...etc

-
er gibt schon das richtige aus jedoch Funktioniert es in Pawn nicht
-
Alles anzeigen
Ich brauch ma eben hilfe
Bei der Funktion:
stock GetUserID(playerid)
{
new query[128],GetName[MAX_PLAYER_NAME];
GetPlayerName(playerid,GetName,MAX_PLAYER_NAME);
format(query, sizeof query, "page=id&name=%s", GetName);
HTTP(playerid, HTTP_POST, "dt-rp.de/server/register.php", query, "UserIDGet");
}
public UserIDGet(playerid, response_code, data[])
{
if(response_code != 200)
{
SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
Kick(playerid);
}
else
{
if(!strcmp(data,"Error",true))
{
SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
Kick(playerid);
return 1;
}
else
{
return strval(data);
}
}
return 1;
}
Soll er mir die userid ausgeben
Problem bei der sache ist, wie ich das mit php hinbekommen kann..
Hat da jemand ne idee?
Threads Threads und nochmal Threads
Du verwendest das ganze bestimmt in solch einer Art:
variable[playerid] = GetUserID(playerid);
bzw.
if( GetUserID(playerid) .... )Falls die Vermutung stimmt:
- GetUserID( ... ) return't nichts, Folge: immer 1
Das ganze HTTP(...) läuft threaded ab (wie bei den neusten MySQL Plugins)
Kurz gesagt: Du erhältst das Ergebnis deines HTTP( ... ) Aufrufes nicht sofort, sondern erst zu einem späteren Zeitung (deswegen bringt auch dein "return" in "UserIDGet" nichts mehr)Ablauf von unterhalb stehendem Code(genaue Erklärung)
- variable[playerid] = GetUserID(playerid);
- GetUserID(playerid) wird aufgerufen
- Die HTTP(...) Anfrage wird gesendet und rutscht in den Hintergrund
- GetUserID(playerid) wird beendet
- Hier der Fehler: "variable[playerid]" erhält den Wert 1, da GetUserID keinen return Wert besitzt
- Nun scheint alles geschehen zu sein... aber die HTTP(...) Anfrage wurde bis jetzt noch gar nicht vom Server fertig gestellt.
- Alle Funktionen des Servers laufen nun weiter bis die HTTP(...) Anfrage fertig gestellt wurde (Neue Spieler können connecten, disconnecten, alles mögliche eben)
- (Ein paar Augenblicke später) Sofern die HTTP(...) Anfrage nun fertig ist wird dein UserIDGet ausgeführt
- Leider landet dein "return strval(data);", wie du schon vermuten wirst, im nirgendwo (der ganze Rest wurde ja leider oberhalb schon (falsch) getan
)
Der rot markierte Teil:
- Beschreibt den eigentlichen Sinn des Aufbaus von HTTP(...), der Server kann weiterarbeiten während die HTTP-Anfrage ausgeführt wird (wie bei den neusten MySQL Plugins)
- Zum anderen ganz wichtig: Der Server arbeitet weiter während die HTTP Anfrage im Hintergrund ist..... hm folgende Situation in meinem Kopf:
- Spieler A(id 0) will sich Registrieren
- Die HTTP Anfrage wird angefordert
- Spieler A(id 0) verlässt den Server
- Spieler B(id 0) betritt den Server
- Die HTTP Anfrage wird fertig gestellt und ruft "UserIDGet" für ID 0 auf
- KONFLIKT! Dein UserIDGet wird für einen ANDEREN User ausgeführt... so können möglicherweiße Accounts geklaut werden(?)
Da denkt man doch nur noch, was ein Misst dieses Threading...

Hier mein Vorschlag: (ABER nur wenn du das oberhalb auch gut inspiziert hast!
)
new USERid[MAX_PLAYERS];
stock GetUserID(playerid) // LoadUserID währe im dem Sinne vll ein besserer Name :p
{
new query[128],GetName[MAX_PLAYER_NAME];
GetPlayerName(playerid,GetName,MAX_PLAYER_NAME);
format(query, sizeof query, "page=id&name=%s", GetName);
HTTP(playerid, HTTP_POST, "dt-rp.de/server/register.php", query, "UserIDGet");
}
public UserIDGet(playerid, response_code, data[])
{
if(response_code != 200)
{
SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
Kick(playerid);
}
else
{
if(!strcmp(data,"Error",true))
{
SendClientMessage(playerid, cRed, "Fehler im System! Versuche deine Registeriung später erneut!");
Kick(playerid);
return 1;
}
else
{
USERid[playerid] = strval(data);
return 1;
}
}
return 1;
}ACHTUNG!: Das eliminiert NICHT mein oben als "KONFLIKT!" markiertes Problem
Vll. fällt dir dazu selber was ein... der Beitrag wird mir allmählich zu lange -
Hi,
ich lerne Pawn immoment (Davor hatte ich noch keine Ahnung) und gucke mir MrMonat an, jedoch habe ich ein Problem. beim Part #2 zeigt er ja den Spawn ändern. habe ich gemacht, das mit der Camera usw. und nein: Ich möchte kein Reallife/DM Server machen, ich lerne nur.
So, hab so gemacht wie ers macht, nur bloß, wenn ich Ingame gehe, kommt ja: << >> Spawn. ich drücke auf >> und dann Spawn, er spawnt nicht. also ich kann 1000 mal auf Spawn drücken, passiert nichts.
Hier erstmal die Scriptcodes:
public OnGameModeInit(){
SetGameModeText("Script"); AddPlayerClass(0,2033.5391,1342.8999,10.8203,270.1059,0,0,0,0,0,0); // position1 AddPlayerClass(1,2033.5391,1342.8999,10.8203,270.1059,25,200,0,0,0,0); // position1 return 1;}
Und falls es was mit der Camera zu tun hat:public OnGameModeExit(){ return 1;}public OnPlayerRequestClass(playerid, classid){ SetPlayerPos(playerid,2033.5391,1342.8999,10.8203); SetPlayerFacingAngle(playerid,270.1059); SetPlayerCameraPos(playerid,2031.5399,1342.8796,10.8203); SetPlayerCameraLookAt(playerid,2031.5399,1342.8796,10.8203);}
PS: Ich habe keine große Ahnung von Scripten. PS2: Falls es nur beim PAWN Quelltext nur 2 Zeilen gibt oder sogar weniger oder mehr bzw nicht so aussieht:
test
testdann weiß ich nicht, wie ich das fixxe.
-
Du brauchst auch eine 2te Position.
Soweit ich weiß bist du anfangs bei Position 1. -
GetUserID( ... ) return't nichts, Folge: immer 1
stimmt genau
Daher mach ichs einfach und bau ne 2. Verbindung zum WCF auf um nicht mehr umzuschreiben
-
Du brauchst auch eine 2te Position.
Soweit ich weiß bist du anfangs bei Position 1.Wie soll ich das machen, ohne zu spawnen zu können um eine 2te Position zu machen? oder soll ich kurz in Debug es machen?
-
AddPlayerClass
-
AddPlayerClass(0,2033.5391,1342.8999,10.8203,270.1059,0,0,0,0,0,0); // position1
AddPlayerClass(2,2033.5391,1342.8999,10.8203,270.1059,25,200,0,0,0,0); // position1
Hab ich doch?
@K3V1N:

