Hast du vielleicht bisschen mehr Code?
Also drüber / drunter
Habe mal den Gesamten Code von dieser DIALOG Funktion gepostet.
Hast du vielleicht bisschen mehr Code?
Also drüber / drunter
Habe mal den Gesamten Code von dieser DIALOG Funktion gepostet.
SetPVarInt(playerid,"Mats",GetPVarInt(playerid,"Mats") -= strval(inputtext));
Du hattest eine Klammer vergessen zu schließen
Bekomme trotzdem ein Fehler:
C:\Users\jresi_000\Desktop\RL\gamemodes\SCRScript.pwn(16589) : error 022: must be lvalue (non-constant)
C:\Users\jresi_000\Desktop\ RL\gamemodes\SCRScript.pwn(16589) : error 001: expected token: ";", but found ")"
C:\Users\jresi_000\Desktop\ RL\gamemodes\SCRScript.pwn(16589) : error 029: invalid expression, assumed zero
C:\Users\jresi_000\Desktop\RL\gamemodes\SCRScript.pwn(16589) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Hier mal der Gesamte Code:
if(dialogid == DIALOG_YAKUZAMATSIMPORT)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, DIALOG_YAKUZABANK,DIALOG_STYLE_LIST,"Yakuza Bank","Geld Einzahlen\nGeld Abheben\nMats Importieren\nMats Exportieren\nKokain Importieren\nKokain Exportieren\nLSD Importieren\nLSD Exportieren\nHaschisch Imporiteren\nHaschisch Exportieren\nKontostand","Okay","Abbrechen");
return 1;
}
else
{
new string2[140];
if(GetPVarInt(playerid,"Mats") < strval(inputtext)) return SendClientMessage(playerid,DUNKELROT," So viele Mats hast du nicht bei dir");
YakuzaMats += strval(inputtext);
SetPVarInt(playerid,"Mats",GetPVarInt(playerid,"Mats") -= strval(inputtext));
format(string2,sizeof(string2),""#HWEIS"Du hast "#HGRUN"%d "#HWEIS"Mats in das Fraktionslager gepackt",strval(inputtext));
SendClientMessage(playerid,WEIS,string2);
FraktionsKasseSpeichern();
return 1;
}
}
Moin,
Ich habe ein Problem, und zwar bekomme ich eine Fehlermeldung die ich zuvor noch nie hatte,
Ich Poste euch mal die Fehlerzeile hier rein:
SetPVarInt(playerid,"Mats",GetPVarInt(playerid,"Mats") -= strval(inputtext);
Was mache ich da Falsch?
Alles anzeigen
Ja..das stimmt sry, bin gerade erst aufgestanden
Schreib die Zeile so:
if(rot != 90 && rot != 180 && rot != 270 && rot != 360) return SendClientMessage(playerid,ORANGE,"Es sind nur Rotationen von 90 180 270 oder 360 erlaubt!");
Ich brauch erstmal n Kaffe
Haha, macht doch nichts
Aber so Funktioniert es, danke euch beiden
Ich auch, habe noch nicht mal richtig gefrühstückt
Alles anzeigenDas machst du einfach so:
ocmd:catm(playerid,params[])
{
if(PlayerDaten[playerid][pAdminlevel] != 2000)return SendClientMessage(playerid,DUNKELROT," Du hast kein Zugriff auf diesen Befehl!");
if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch in der Einführung!");
if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
new text[16], Float:x,Float:y,Float:z,string[110], rot;
if(sscanf(params,"s[16]i",text, rot)) return SendClientMessage(playerid,ORANGE,"Benutzung: /catm [Name] [Rotation: 90, 180, 270, 360]");
if(rot != 90 || rot != 180 || rot != 270 || rot != 360) return SendClientMessage(playerid,ORANGE,"Es sind nur Rotationen von 90 180 270 oder 360 erlaubt!");
if(strlen(text) > 16)return SendClientMessage(playerid,DUNKELROT,"Der Text darf Maximal nur 16 Zeichen enthalten!");
GetPlayerPos(playerid,x,y,z);
format(string,sizeof(string),"Geldautomat an: "#HWEIS"X: "#HROT"%f "#HWEIS"Y: "#HROT"%f "#HWEIS"Z: "#HROT"%f "#HWEIS"Erstellt.",x,y,z);
SendClientMessage(playerid, WEIS, string);
SetPlayerPos(playerid,x,y,z+2);
CATM(x,y,z,text, rot);
return 1;
}
Die Frage ist jedoch...was ist mit Rotation 0?
mfg.
So habe ich es auch schon gehabt, funktioniert nicht:
Kommt nur die Fehlermeldung.
if(rot != 90 || rot != 180 || rot != 270 || rot != 360) return SendClientMessage(playerid,ORANGE,"Es sind nur Rotationen von 90 180 270 oder 360 erlaubt!");
Und was meinst mit Rotation 0, muss ich da etwas bestimmtes beachten?
Weil Rotation ROT-Z = 0 ist das selbe wie ROT-Z = 360
Moin,
Ich habe mal eine kleine frage, und zwar.
Habe ich ein Dynamisches ATM - System gescriptet das Problem dabei ist nur, das bei der Rotations Angabe.
Man jede Zahl auswählen kann, ich möchte aber das man NUR die Zahl 90, 180, 270 und 360 nehmen kann.
Ich Poste euch mal hier meinen Code rein:
ocmd:catm(playerid,params[])
{
if(PlayerDaten[playerid][pAdminlevel] != 2000)return SendClientMessage(playerid,DUNKELROT," Du hast kein Zugriff auf diesen Befehl!");
{
if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch in der Einführung!");
if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
new text[16], Float:x,Float:y,Float:z,string[110], rot;
if(sscanf(params,"s[16]i",text, rot)) return SendClientMessage(playerid,ORANGE,"Benutzung: /catm [Name] [Rotation: 90, 180, 270, 360]");
if(rot == 90 || rot == 180 || rot == 270 || rot == 360) // Hier habe ich es so schon versucht, aber bringt nichts mache ich da etwas Falsch?
if(strlen(text) > 16)return SendClientMessage(playerid,DUNKELROT,"Der Text darf Maximal nur 16 Zeichen enthalten!");
GetPlayerPos(playerid,x,y,z);
format(string,sizeof(string),"Geldautomat an: "#HWEIS"X: "#HROT"%f "#HWEIS"Y: "#HROT"%f "#HWEIS"Z: "#HROT"%f "#HWEIS"Erstellt.",x,y,z);
SendClientMessage(playerid, WEIS, string);
SetPlayerPos(playerid,x,y,z+2);
CATM(x,y,z,text, rot);
}
return 1;
}
Ich bin nun wieder auf der Suche nach Aufträge, hier nochmal Informationen wie ihr mich erreichen könnt:
[tabmenu]
[tab='Kontakt Möglichkeiten','http://www.unser-kreis-pinneberg.de/wcf/icon/partnerL.png']
Ihr könnt mich auf folgenden Instanzen erreichen:
• Skype - Equ_Res
• PN - KLICK
• Steam - equuillibrium
[/tabmenu]
Hast du die Include auch in den richtigen Pawno-Ordner -> Includes gepackt?
Du musst es in den Pawno-Ordner packen, welches Pawno du auch benutzt..
Gut ich danke dir erstmal!
So es funktioniert jetzt alles soweit ich habe jetzt mal die Zufalls Funktion eingefügt,
und es scheint zu funktionieren, nur ist das auch wirklich sicher? das es nur 1x die gleiche Zahl geben kann?
CODE:
stock CrewCreate(playerid, name[])
{
new Crewdatei[64];
for(new crewid=1;crewid<MAX_CREWS;crewid++)
{
new randnr = random(100);
format(Crewdatei,50,"/Crews/%s.ini",name);
if(dini_Exists(Crewdatei))
dini_Create(Crewdatei);
dini_Set(Crewdatei,"Crewleiter", SpielerName(playerid));
if(AvailableNR(randnr))dini_IntSet(Crewdatei,"CrewNR", randnr); //Checkt ob die Zahl verfügbar ist ( sehe Funktion unten )
else //Neue Nummer generieren und abfragen
return LoadCrew(crewid, name);
}
return 1;
}
stock LoadCrew(crewid, name[])
{
new Crewdatei[64]; format(Crewdatei,50,"/Crews/%s.ini",name);
if(!fexist(Crewdatei))return 0;
format(CrewInfo[crewid][Crewname],32,"%s",name);
format(CrewInfo[crewid][CrewLeader],32,"%s",dini_Get(Crewdatei,"Crewleiter"));
return CrewInfo[crewid][CrewID] = dini_Int(Crewdatei,"CrewNR");
}
stock AvailableNR(nr){
new dir:dHandle = dir_open("./scriptfiles/Crews/");
new item[40], type,datei[20];
while(dir_list(dHandle, item, type))
{
if(type == FM_FILE)
{
format(datei,20,"/Crews/%s",item);
if(dini_Int(datei,"CrewNR") == nr)return false; // Hier steht 'nr' müsste da nicht hin 'randnr' ?
else return true;
}
}
return dir_close(dHandle);
}
Grüße
Alles anzeigenDu benötigst dafür den Filemanager
Ungetestet und aus dem Kopf geschrieben ( paar Erklärungen stehen dahinter )
stock CrewCreate(playerid, name[]){
new Crewdatei[64];
for(new crewid=1;crewid<MAX_CREWS;crewid++){
format(Crewdatei,50,"/Crews/%s.ini",name);
if(dini_Exists(Crewdatei))return printf("Fehler beim Erstellen der Crew '%s'. Datei existiert bereits!",name);
dini_Create(Crewdatei);
//dini_Set(Crewdatei,"Crewname",name); -> Unnötig, da die Datei bereits den Crewnamen beinhaltet
dini_Set(Crewdatei,"Crewleiter", SpielerName(playerid));
if(AvailableNR(randnr))dini_IntSet(Crewdatei,"CrewNR", randnr); //Checkt ob die Zahl verfügbar ist ( sehe Funktion unten )
else //Neue Nummer generieren und abfragen
return LoadCrew(crewid, name);
}
return 1;
}
stock LoadCrew(crewid, name[])
{
new Crewdatei[64]; format(Crewdatei,50,"/Crews/%s.ini",name);
if(!fexist(Crewdatei))return 0;
format(CrewInfo[crewid][Crewname],32,"%s",name);
format(CrewInfo[crewid][CrewLeader],32,"%s",dini_Get(Crewdatei,"Crewleiter"));
return CrewInfo[crewid][CrewNR] = dini_Int(Crewdatei,"CrewNR");
}
stock AvailableNR(nr){
new dir:dHandle = dir_open("./scriptfiles/Crews/");
new item[40], type,datei[20];
while(dir_list(dHandle, item, type)){
if(type == FM_FILE){
format(datei,20,"/Crews/%s",item);
if(dini_Int(datei,"CrewNR") == nr)return false;
else return true;
}
}
return dir_close(dHandle);
}
PS: Wo wird denn die "randnr" eigentlich erstellt? :o
//Edit: Sry, etwas vergessen
//Edit²: Veränderung beim Laden
randnr habe ich noch nicht erstellt gehabt
Und der Filemanager funktioniert nicht. Ich hab das Include + Plugin in die jeweiligen ordner gepackt,
und auch im Script Included, aber bekomme diese Fehlermeldung:
fatal error 100: cannot read from file: "filemanager"
Du kannst es auch anders machen..
Was speicherst du alles in der Datei? ( wofür du nun eine zufällige Nummer usw brauchst )
//E: Und wie lässt du es im Script laden?
Ich brauche nur eine Nummer bzw Mehrere aber halt 1Nr für mein Crew System, um später zuzuordnen welcher Spieler in welcher Crew ist.
so schaut es derzeit aus, mit Erstellen/Laden aus, speichern habe ich auch noch nicht gemacht:
stock CrewCreate(playerid, name[])
{
new Crewdatei[64];
for(new crewid=1;crewid<MAX_CREWS;crewid++)
{
format(Crewdatei,50,"/Crews/%s.ini",name);
format(CrewInfo[crewid][Crewname],32,"%s",dini_Get(Crewdatei,"CrewNR"));
if(!fexist(Crewdatei))
{
dini_Create(Crewdatei);
dini_Set(Crewdatei,"Crewname",name);
dini_Set(Crewdatei,"Crewleiter", SpielerName(playerid));
dini_Set(Crewdatei,"CrewNR", randnr);
return LoadCrew(crewid, name);
}
}
return 1;
}
stock LoadCrew(crewid, name[])
{
new Crewdatei[64];
format(Crewdatei,50,"/Crews/%s.ini",name);
{
if(!fexist(Crewdatei))return 0;
{
format(CrewInfo[crewid][Crewname],32,"%s",dini_Get(Crewdatei,"Crewname"));
format(CrewInfo[crewid][CrewLeader],32,"%s",dini_Get(Crewdatei,"Crewleiter"));
{
}
}
}
return 1;
}
Moin,
Ich habe mal eine Frage und zwar, möchte ich eine Nummer generieren lassen nur gibt es da ein kleines Problemchen
wie Überprüfe ich ob es diese Nummer schon gibt?
Mir würde es wirklich weiter helfen wenn mir einer, ein kleinen Code posten würde wie es so auszusehen hat.
Mein Dateisystem basiert auf DINI.
Grüße
Alles anzeigenBau das ganze mal so auf!
ocmd:crewerstellen(playerid,params[])
{
new name[55];
if(sscanf(params,"s",name))return SendClientMessage(playerid,ORANGE," Benutzung: /crewerstellen [Crewname]");
new datei[75];
format(datei,75,"/Crews/%s.ini", name);
if(dini_Exists(datei))return SCM(playerid, ORANGE, " Gibts schon!");
new string[90];
format(string, sizeof(string), "SYSTEM: Die Crew mit dem Namen %s wurde erfolgreich erstellt!", name);
SendClientMessage(playerid, GRUN, string);
SendClientMessage(playerid, ORANGE, "• CREW SYSTEM •");
SendClientMessage(playerid, ORANGE, " Lade nun Leute mit /ceinladen, in deiner Crew ein!");
dini_Create(datei);
}
Dieser Code wird mir nichts bringen da du:
format(datei,75,"/Crews/%s.ini", name);
Mit einem 'string' arbeitest, ich habe die Datei aber als Integer angegeben/erstellt.
Um später besser zu zuordnen wie viele Crews es gibt, und um diese später wie ich es gewohnt bin auszulesen.
Ich benötige Bloß nur die Funktion mit welcher man das alles bewältigen kann, mehr verlang ich nicht
So ich habe jetzt mal ein wenig rum gebastelt und ...
Es geht immer noch nicht
Es kann doch wohl nicht zu schwer sein, eine Abfrage zu machen die überprüfen soll ob es den Crewnamen schon gibt oder NICHT
Hier mein neuer Code:
ocmd:crewerstellen(playerid, params[])
{
for(new crewid=1;crewid<MAX_CREWS;crewid++)
{
if(PlayerDaten[playerid][pEinfuerung] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch in der Einführung!");
if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
{
new name[32], Crewdatei[50];
format(Crewdatei,50,"/Crews/%d.ini",crewid);
if(sscanf(params,"s[32]", name)) return SendClientMessage(playerid,ORANGE," Benutzung: /crewerstellen [Crewname]");
if(strlen(name) > 32)return SendClientMessage(playerid,ROT," Der Crewname darf Maximal nur 32 Zeichen groß sein!");
if(!strcmp(dini_Get(Crewdatei,"Crewname"),name,false))
{
new string[90];
format(string, sizeof(string), "SYSTEM: Die Crew mit dem Namen %s wurde erfolgreich erstellt!", name);
SendClientMessage(playerid, GRUN, string);
SendClientMessage(playerid, ORANGE, "• CREW SYSTEM •");
SendClientMessage(playerid, ORANGE, " Lade nun Leute mit /ceinladen, in deiner Crew ein!");
CrewCreate(name);
return 1;
}
else
{
SCM(playerid, ORANGE, " Gibts schon!");
return 1;
}
}
}
return 1;
}
Ich hoffe es kann mir einer mal weiter helfen, ich zerbreche langsam aber sicher dran
Der Befehl will irgendwie noch nicht ganz.
Die Crews werden zwar erstellt wie gewollt, nur kann man immer noch ein Crewnamen nehmen der aber eigentlich schon Vergeben ist.
Code:
ocmd:crewerstellen(playerid, params[])
{
if(PlayerDaten[playerid][pEinfuerung] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch in der Einführung!");
if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
//if(PlayerDaten[playerid][pCrewCreated] == 1)return SendClientMessage(playerid, ORANGE, " Du hast bereits eine Crew erstellt!");
//if(PlayerDaten[playerid][pLevel] == 25)return SendClientMessage(playerid, ORANGE, " Um eine Crew erstellen zu können benötigst du Level 25!");
//if(PlayerDaten[playerid][pGeld] < 75000)return SendClientMessage(playerid, ORANGE, " Zum erstellen einer Crew wird 75.000$ benötigt!");
new Crewname[32], Crewpfad[32];
if(sscanf(params, "s[32]", Crewname))return SendClientMessage(playerid, ORANGE, "/createcrew [Wie soll deine Crew heißen?(MAX 32 Zeichen])]");
format(Crewpfad,sizeof(Crewpfad),"/Crews/%i.ini", CrewID++);
{
if(strcmp(dini_Get(Crewpfad,"Crewname"),Crewname,true)==0)
{
new string[90];
format(string, sizeof(string), "SYSTEM: Die Crew mit dem Namen %s wurde erfolgreich erstellt!", Crewname);
SendClientMessage(playerid, GRUN, string);
SendClientMessage(playerid, ORANGE, "• CREW SYSTEM •");
SendClientMessage(playerid, ORANGE, " Lade nun Leute mit /ceinladen, in deiner Crew ein!");
PlayerDaten[playerid][pCrewLeader] = 1;
PlayerDaten[playerid][pCrewCreated] = 1;
dini_Create(Crewpfad);
dini_Set(Crewpfad,"Crewleiter",SpielerName(playerid));
dini_Set(Crewpfad,"Crewname", Crewname);
}
else
{
new string[90];
format(string, sizeof(string), "FEHLER: Die Crew mit dem Namen %s Existiert bereits!", Crewname);
SendClientMessage(playerid, ROT, string);
}
}
return 1;
}
Nein, Was ich wissen will ist wie frage ich etwas AUS einer DATEI ab nicht die DATEI SELBST
Also deutlicher kann ich mich wirklich nicht ausdrücken ..
Syno
Ich weiß .. Ich sagte ja auch schon es ist Falsch da ich NICHT weiss wie/welche Abfrage man dafür benötigt ..
Grüße
Nein das Problem ist ganz einfach, ich komme nicht weiter
Ich will nicht die CrewID auslesen sondern den NAMEN der Crew.
Aber nur wie Lese ich diesen aus?
Weil so wäre es ja Falsch:
format(Crewpfad,sizeof(Crewpfad),"/Crews/%i.ini", CrewID++);
{
if(dini_Int(Crewpfad,"Crewname"))
{
}
}
Grüße
Moin
Ich habe mal eine kurze Frage und zwar, komme ich gerade nicht weiter ..
Ich möchte halt abfragen ob der Crewname schon vergeben ist, nur blicke ich da nicht ganz durch..
Hoffe ihr könnt mir da weiter helfen
Code:
ocmd:crewerstellen(playerid, params[])
{
if(PlayerDaten[playerid][pEinfuerung] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch in der Einführung!");
if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
//if(PlayerDaten[playerid][pCrewCreated] == 1)return SendClientMessage(playerid, ORANGE, " Du hast bereits eine Crew erstellt!");
//if(PlayerDaten[playerid][pLevel] == 25)return SendClientMessage(playerid, ORANGE, " Um eine Crew erstellen zu können benötigst du Level 25!");
//if(PlayerDaten[playerid][pGeld] < 75000)return SendClientMessage(playerid, ORANGE, " Zum erstellen einer Crew wird 75.000$ benötigt!");
new Crewname[32], Crewpfad[32];
if(sscanf(params, "s[32]", Crewname))return SendClientMessage(playerid, ORANGE, "/createcrew [Wie soll deine Crew heißen?(MAX 32 Zeichen])]");
format(Crewpfad,sizeof(Crewpfad),"/Crews/%i.ini", CrewID++);
{
if(dini_Int(Crewpfad,"Crewname"))
{
new string[90];
format(string, sizeof(string), "FEHLER: Die Crew mit dem Namen %s Existiert bereits!", Crewname);
SendClientMessage(playerid, ROT, string);
}
else
{
new string[90];
format(string, sizeof(string), "SYSTEM: Die Crew mit dem Namen %s wurde erfolgreich erstellt!", Crewname);
SendClientMessage(playerid, GRUN, string);
SendClientMessage(playerid, ORANGE, "• CREW SYSTEM •");
SendClientMessage(playerid, ORANGE, " Lade nun Leute mit /ceinladen, in deiner Crew ein!");
PlayerDaten[playerid][pCrewLeader] = 1;
PlayerDaten[playerid][pCrewCreated] = 1;
if(!fexist(Crewpfad))
{
dini_Create(Crewpfad);
dini_Set(Crewpfad,"Crewleiter",SpielerName(playerid));
dini_Set(Crewpfad,"Crewname", Crewname);
}
}
}
return 1;
}
Moin,
Ich habe mal eine Frage, und zwar ist es irgendwie möglich,
jeden Befehl den ich mit OCMD geschrieben habe herauszufinden?
Weil ich habe nicht gerade wenig Befehle und würde da nämlich alle einfach mal irgendwie auflisten Lassen.
Grüße
da steht auch alle ersetzen
Okay, dann hat sich das Thema ja erledigt
Und mal wieder was dazu gelernt, danke Jungs
Grüße