wie ist objekte denn definiert?
Beiträge von Simon
-
-
deine sirene wird zerstört und neu erstellt oder? wenn ja ist das normal
-
das könnte gut sein. ich werde es mal probieren.
-
Dort gibt es leider sowas nicht..
die Fahrzeugid des Fahrzeugs woran ich das 3dTextLabel drankleben will ist ein zusätzlicher Parameter. dort gibt es aber keine parameter für die OffSets. Und auch keine zusätzliche funktion die die OffSets setten können, zumindest kenne ich keine.
-
Guten Tag
Ich benutze das Streamer Plugin von Incoginito. Nun würde ich gerne wissen ob es damit möglich ist, OffSets zu ändern.
Wenn ich ein 3DTextLabel an ein Auto attache, ist es mitten im Auto.
Ich würde gerne wissen ob es da eine Funktion oder möglichkeit gibt.Ich habe leider keine Funktion gefunden womit man die OffSets der gestreamten 3DTexte ändern kann.
LG
Simon -
Guten Tag
Folgende Funktion enthält Fehler, da der User beim registrieren nicht wie gewünscht in die datei geschrieben wird:
stock AddUser(const strFile[], strText[])
{
new File:UserFile = fopen(strFile, io_append);
fwrite(UserFile, strText);
fclose(UserFile);
return 1;
}So wende ich die funktion an:
new name[30];
GetPlayerName(playerid,name,sizeof(name));
strcat(name,"\r\n");
AddUser("UserNames.ini",name);Wäre sehr nett wenn mir jemand bei dem Fehler helfen könnte.
-
Guten Tag.
Vor Kurzem habe ich meinen Rechner platt gemacht und mir nun Windows 7 Profressional 64 bit installiert.
Nun habe ich meine Backup vom Script inclusive allen scriptfiles und was dazu gehört wieder reinkopiert und alles lief super. Nun habe ich gerade eben nochmal alle Inis gelöscht damit die nochmal neu createt werden, was immer geklappt hat. Anscheinend wurden sie auch createt, nur konnte ich sie nicht sehen. Sie waren irgentwie versteckt, also für mich nicht Sichtbar. Also habe ich alles wieder gelöscht und beine Backup inis wieder reinkopiert. beim nächsten Serverstart hat er dann .part dateien erstellt.Mein Problem ist nun: seid dem ich Mir das neue Betriebssystem draufgemacht habe, bekomme ich immer wieder schwierigkeiten durch die 64 bit version. Gestern konnte er die scripts nichtmehr vernünftig compilen. Ich musste erst Pawno neu runterladen und die Scripts neu schreiben. sobald ich meine alten scripts einfach in den ordne kopiert habe, gabs probleme. ich musste eine neue pwn datei öffnen und den gesamten code dort einfügen damit es wieder lief. Nun habe ich das Problem mit den dateien, dass er die nicht richtig createt und somit auhc nicht richtig auslesen/schreiben kann.
Unter folgendem Verzeichnis habe ich mein Pawno gespeichert:
C:/Programm Files (x86)/Pawno/
Ich bitte um Hilfe da das so langsam echt nervig wird..
LG
Simon -
Die ist wirklich ganz schön lang. also meine funktioniert auch soweit: er schreibt datei 1 in datei 2 und datei 2 in datei 1 nur überspringt er dabei nicht den gewünschten Namen.
Das liegt wohl an meiner Abfrage.
Ich baue mal deins ein
//edit: deine StripNewLine funktion verstehe ich nicht ganz. wo ist da die datei in der eine neue zeile gemacht werden soll?
//edit: ahh nu hab ichs gescheckt :D:D die hängt mit der oberen funktion zusammen
//edit: Habe es nun wie folgt eingebaut:
OnPlayerCommandText(playerid,cmdtext[])
{
if(!strcmp("/test", cmdtext, true))
{
DelUser("UserFiles.ini","Simon");
}
return 1;
}stock DelUser( const file[] , text[] )
{
new File: fFile, File: fTemp, sTmp[128];
fFile = fopen( file , io_read );
if(!fFile) return 0;format(sTmp,sizeof(sTmp),"%stmp",file);
fTemp = fopen( sTmp , io_write );
if(!fFile) return 0;
while( fread(fFile,sTmp,sizeof(sTmp)) )
{
StripNewLine( sTmp ); // StripNL
if(!sTmp[0]) continue; // Leere Zeilen brauchen wir nicht
if(!strcmp( sTmp, text ) ) continue; // Zeile wollen wir löschen! Also skippen
strcat( sTmp, "\r\n" );
fwrite( fTemp , sTmp );
}
fclose( fFile );
fclose( fTemp );
fremove( file );fFile = fopen( file , io_write );
if(!fFile) return 0;format(sTmp,sizeof(sTmp),"%stmp",file);
fTemp = fopen( sTmp , io_read );
if(!fTemp) return 0;
while( fread(fTemp,sTmp,sizeof(sTmp)) )
{
StripNewLine( sTmp ); // StripNL
if(!sTmp[0]) continue; // Kann man eventuell entfernen
strcat( sTmp, "\r\n" );
fwrite( fFile , sTmp );
}
fclose( fFile );
fclose( fTemp );format(sTmp,sizeof(sTmp),"%stmp",file);
fremove( sTmp );
return 1;
}stock StripNewLine(str[]) //ysi_misc.own
{
new
l = strlen(str);
while (l-- && str[l] <= ' ') str[l] = '\0';
}Jedoch wird der Name immernoch nicht gelöscht..
//edit: habe den Fehler gefunden... klappt nun wunderbar, Danke..
//Edit:
Nu Habe Ich folgendes Problem. Beim registrieren wird der Name in die Datei hinzugefügt.
Bem GM start wird nun überprüft, ob der name in der datei als spielerdatei existiert. das wird benötigt um sämtliche dateien zu überprüfen, falls eine Userdatei mal gelöscht werden sollte.
Also lese ich die datei reihe für reihe aus und überprüfe ob die userdatei existiert. Da ich aber nach jeden Namen eine Neue Zeile beginne (\r\n) bekommt der Name ein zeichen mehr und somit kann man nicht mehr überprüfen ob es die datei gibt. die wird es nämlich nicht geben mit einem zeichen mehr.Nun wäre es sehr gut wenn mir einer erklären würde wie ich dieses Zeichen hinten dran entfernen könnte..
LG
Simon -
hast du iwo ein /whisper oder /ooc system? ist immer das gleiche.. musste nur die farben ändern und die playerid die die nachricht bekommen soll..
-
Ja stimmt.. Okay ich habe es nun soweit. nur iwie hat meine Abfrage gerade schon rumgespackt, ob der name in der Reihe steht.
stock DelUser(Username[30])
{
new File:UserFile = fopen("UserNames.ini", io_read);
new str[30];
new File:UserFile2 = fopen("UserNames_Temp.ini",io_append);
while(fread(UserFile, str))
{
fwrite(UserFile2,str);
}
fclose(UserFile);
fclose(UserFile2);
fremove("UserNames.ini");
UserFile = fopen("UserNames.ini",io_append);
UserFile2 = fopen("UserNames_Temp.ini",io_read);
while(fread(UserFile2, str))
{
fwrite(UserFile, str);
}
fclose(UserFile);
fclose(UserFile2);
fremove("UserNames_Temp.ini");
return 1;
}Meine ABfrage wäre nun:
if(strcmp(str,Username,true,strlen(str))) //Falls username nicht mit der gelesenen Reihe übereinstimmt. -
Okay, dankeschön, werde ich mal versuchen..
//edit: ich könnte auch nachdem ich 1. datei gelesen habe einfach überschreiben und den string leer lassen oder würde das crashen?
also fwrite(datei,"");
dann brauche ich sie nicht löschen und neu erstellen..
-
Guten Tag
Ich möchte einen bestimmten Teil eines Strings aus der Datei löschen.
Die Datei sieht zumbeispiel wiefolgt aus:
Mario
Werner
Peter
Harald
...Nun möchte ich zum Beispiel "Werner" rauswerfen und die Datei soll nun so aussehen:
Mario
Peter
Harald
...Gibt es da eine bestimmte Funtion die einen bestimmten Teil entfernt? oder muss ich mit ner While schleife alle Reihen durchgehen und in einem stringspeichern mit ausnahme dieser Reihe und diesen String dann in die Dateischreiben?
LG
Simon//edit: Ich habe mir nun folgende Funtkionen gemacht: AddUser und DelUser.
stock AddUser(Username[30])
{
new File:UserFile = fopen("UserNames.ini",io_append);
strcat(Username,"\r\n");
fwrite(UserFile, Username);
fclose(UserFile);
return 1;
}stock DelUser(Username[30])
{
new File:UserFile = fopen("UserNames.ini", io_read);
new sBug[500], str[30];
sBug[0] ='\0';
while(fread(UserFile, str))
{
if(!strcmp(str,Username,true,strlen(str))) return 1;
else format(sBug,sizeof(sBug),"%s%s",sBug,str);
}
fclose(UserFile);
UserFile = fopen("UserNames.ini", io_write);
fwrite(UserFile,sBug);
fclose(UserFile);
return 1;
}Bei DelUser will er den Namen nicht rauslöschen. er ließt ihn trotzdem mit.
-
Habs wie gesagt vorher nicht getestet, nichteinmal compiled... ich denke mal so wie du das nu hast wirds klappen...
-
wie die id 0 ist bei mir nie verbuggt? was soll daran denn verbuggt sein.
und ich glaube ohne irgentetwas was die id 0 besetzt wirds net klappen. SetPlayerID geht leider nicht.
-
änder die Zeile in das hier:
If(!IsPlayerConnected(pID)) return SendClientMessage(playerid,grau,"Ungültige playerid);
-
Geht kla..
dcmd_freeze(playerid,params[])
{
new pID;
if(sscanf(params, "u", pID)) return SendClientMessage(playerid,grau,"Benutzung: /freeze [Playerid]");
if(login[pID] != 1 || IsPlayerNPC(pID)) return SendClientMessage(playerid,grau,"Ungültige Id!");
if(Spieler[playerid][Admin] <= 1) return 0;
TogglePlayerControllable(pID,0);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(Spieler[i][Admin] >= 1)
{
new str[256], name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(pID,name2,sizeof(name2));
format(str,sizeof(str),"AdmCmd: %s freezed %s", name, name2);
SendClientMessage(i,0xFF6347FF,str);
}
}
return 1;
}dcmd_unfreeze(playerid,params[])
{
new pID;
if(sscanf(params, "u", pID)) return SendClientMessage(playerid,grau,"Benutzung: /unfreeze [Playerid]");
if(login[pID] != 1) return SendClientMessage(playerid,grau,"Ungültige Id!");
if(Spieler[playerid][Admin] <= 1) return 0;
TogglePlayerControllable(pID,1);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(Spieler[i][Admin] >= 1)
{
new str[256], name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(pID,name2,sizeof(name2));
format(str,sizeof(str),"AdmCmd: %s unfreezed %s", name, name2);
SendClientMessage(i,0xFF6347FF,str);
}
}
return 1;
}Musste deinem system anpassen
LG
-
Habe ich und bringt nichts.. und wie schon gesagt: da muss kein ; dahinter.. ich habe mehrere enums drinne und alle klappen sie.. wie gesagt: sobald ich ein enum der 3 rausmache, klappt der compiler...
Deswegen frage ich: gibt es ein Limit? wenn ja wäre das sehr sehr schlecht
//edit: jetzt kommt das geilste: habs einfach ma so in ein blanken fs reingeknallt: klappt, nur die 3 warnings das die variablen nie benutzt werden.. keine errors, kein crahs.. nur im gamemode haut es den compiler um.. checks einfach nicht..
//edit: er kanns überall compilen, nur im gamemode ordner nicht. kann mir das nicht erklären..
-
hmm also ich habe den befehl nicht gescriptet aber ich kann mir vorstellen das es deswegen nicht richtig läuft
-
Ein Komplettes RL GM? ne spaß ich würde sagen ein dynamisches Haussystem :D:D wenns nicht zu schwer ist es spontan hinzubekommen..
-
hast du die benötigten Admin rechte? haste das unter OnPlayerCommandText richtig drinne stehen? haste return 1 bei OnPlayerCommandText und haste ne vernünftige sscanf funktion?