Schreib bitte mal den Code, damit man sehen kann wie du es geschrieben hast und wir leichter dein Problem finden können.
Beiträge von blackfire499
-
-
Der Fehler ist das du abfrägst ob der Trailer am Anhänger hängt, doch du fragst nicht ab ob der Trailer abgehangen ist.
Vielleicht ist das dass richtige.
if(GetPVarInt(playerid,"Test")==1 )
{
if(!GetVehicleTrailer(GetPlayerVehicleID(playerid))
{
SetPVarInt(playerid,"Test",0);//Wird die PVar auf 0 gesetzt....
SendClientMessage(playerid,COLOR_GREY,"Anhänger verloren.");//Und die Nachricht erscheint
}
}ist zwar eigentlich das selbe doch von der Logik her würde ich es so machen
-
Ich weiß zwar nicht ob es hier hin gehört, wenn nicht bitte verschieben.
Da ich jedes mal, wenn ich weiter Scripte erst einmal schauen musste wo ich zuletzt aufgehört habe, habe ich mir ein Plugin gesucht, womit ich mir anzeigen lassen kann was ich noch alles zu tun habe.
Hier Klicken um zum Screen zu kommen
Desweiteren ist es mir nun möglich einzelne Publics, Ifs oder Else zuklappen kann
Hier Klicken für zugeklappten Screen
Hier Klicken für aufgeklappten Screen
Leider ist es mir bis jetzt nicht möglich, die Klammern zu makieren damit man sieht welche zueinander gehören. Doch ich suche weiter nach einer lösung.
Ich habe mir auch noch ein Plugin installiert, was mein Script Automatisch alle paar minuten Speichert. Da ich es schnell mal vergessen habe.
Hier ist mein Pack.
In diesem Pack sind auch datein enthalten, die es ermöglichen mit Notepad++ zu Compilen.
Wer nicht weiß wie man die Plugins installiert bzw den Compiler Richtig einstellt Hier Klicken Der rest müsste eigentlich leicht zu finden sein und auch leicht ein zu stellen sein. Sollte es doch schwierigkeiten geben oder Datein fehlen einfach melden.
-
Solltest du Plugins verwenden dan schau mal nach ob Dieses Plugin im Plugins Odner ist oder ob du das Plugin Richtig in deine Server.cfg geschrieben hast
-
Guten Tag
und zwar habe ich da ein Problem bei meiner Fraktion, und zwar möchte ich abfragen ob er Spieler die selbe Frakid hat wie die Fraktion und dan zb. unter stats der Name der Frak steht doch bekomme ich immer diese Fehler meldung.
error 079: inconsistent return types (array & non-array)
Hier der stock
stock FrakName(playerid)
{
new frakname[40],Ffile[129];
for(new f = 0; f < 13; f++)
{
format(Ffile,sizeof(Ffile),"/Fraktion/%s.ini",FInfo[f][FName]);
format(frakname,sizeof(frakname),FInfo[f][FName]);
if(SpInfo[playerid][Fraktion] == FInfo[f][Id]) return frakname;
}
return 1;
}Was kann ich dagegen tun?
-
Das programm heißt notepade++ musst halt nur nen paar Plugins dafür installieren.
Hmm muss ma richtige Coordinaten eingeben um zu testen denn bei meinem Mysql Script funktioniert es nicht
Edit: Ok hat funktioniert, war nur ein fehler im Script selber doch damit ichs richtig verstehe, sobald ich mehrere Vehicle's spawne mit der selben Modelid, gild das als 1 Vehicle oder?
-
Guten Arbend
Und zwar ist komischer weiße ein problem beim erstellen von Vehicle's aufgetaucht, ich kann irgentwie keine Autos erstellen die die selbe Modelid haben.
Habe schon ein Testscript erstellt um zu schauen obs am Script liegt doch selbst da ist der Fehler vorhanden Server hab ich mir auch schon neu runtergeladen.Hier mal Die Console und das Testscript
Hoffe ihr könnt mir helfen.
MFG
Blackfire49 -
Sry bin noch neu im Bereich Mysql Scripting und habe gedacht müsste bei Varchar strval nehmen.
Edit: Habe es jetzt hin bekommen die Frakts werden geladen doch sobald ein Car die selbe ModelId hat Spawn nur eins.
So sieht der stock LoadFrak nun aus
stock LoadFrak(frakid)
{
new query[128],data[128];
format(query,sizeof(query),"SELECT * FROM `Fraktion` WHERE `FrakId`='%d' LIMIT 1",frakid);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows())
{
new int[128];
mysql_fetch_field("FrakId",data);
FrakInfo[frakid][FrakId] = strval(data);
format(int,sizeof(int),"ID: %s",data);
print(int);
mysql_fetch_field("ModelId",data);
FrakInfo[frakid][ModelId] = strval(data);
format(int,sizeof(int),"ModelID: %s",data);
print(int);
mysql_fetch_field("CarspawnX",data);
FrakInfo[frakid][CarspawnX] = floatstr(data);
mysql_fetch_field("CarspawnY",data);
FrakInfo[frakid][CarspawnY] = floatstr(data);
mysql_fetch_field("CarspawnZ",data);
FrakInfo[frakid][CarspawnZ] = floatstr(data);
mysql_fetch_field("CarspawnA",data);
FrakInfo[frakid][CarspawnA] = floatstr(data);
if(frakid > 0)
{
for(new i = 0; i < 20; i++)
{
Frakcar[frakid][i] = CreateVehicle(FrakInfo[frakid][ModelId],FrakInfo[frakid][CarspawnX],FrakInfo[frakid][CarspawnY],FrakInfo[frakid][CarspawnZ],FrakInfo[frakid][CarspawnA],-1,-1,-1);
if(Frakcar[frakid][i] <= 1)
{
print("Car Loadet");
}
}
}
mysql_free_result();
}
return 1;
} -
hab es jetzt anders gelöst hab sie jetzt als Varchar gespeichert und speicher sie in ein Float so nach dem Comprimieren habe ich gemerkt das sich der Server nicht mehr starten in der log steht nun folgendes [MySQL] Thread running. Threadsafe: Yes. vielleicht könnt ihr mir ja weiter helfen
Hier mal der Code Schnippsel
Der Define
#define MAX_FRAKS 2
Der Enum
enum FInfo
{
FrakId,
ModelId,
Float:CarspawnX,
Float:CarspawnY,
Float:CarspawnZ,
Float:CarspawnA
}
Unter OnGameModeInit steht
for(new frakid = 0; frakid < MAX_FRAKS; frakid++)
{
LoadFrak(frakid);
}
und mein LoadFrak stock
stock LoadFrak(frakid)
{
new query[128],data[128];
format(query,sizeof(query),"SELECT * FROM `Fraktion` WHERE `FrakId`='%d' LIMIT 1",frakid);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows())
{
mysql_fetch_field("FrakId",data);
FrakInfo[
frakid
][FrakId] = strval(data);mysql_fetch_field("ModelId",data);
FrakInfo[
frakid
][ModelId] = strval(data);mysql_fetch_field("CarspawnX",data);
FrakInfo[
frakid
][CarspawnX] = strval(data);mysql_fetch_field("CarspawnY",data);
FrakInfo[
frakid
][CarspawnY] = strval(data);mysql_fetch_field("CarspawnZ",data);
FrakInfo[
frakid
][CarspawnZ] = strval(data);mysql_fetch_field("CarspawnA",data);
FrakInfo[
frakid
][CarspawnA] = strval(data);mysql_free_result();
}
return 1;
}
-
Guten Arbend
Und zwar müchte ich mein Jetztiges Script in Mysql um schreiben, doch sitze ich hier vor einem Problem.
Und zwar gibt es in der Datenbank ja die möglichkeit zu sagen, das der wert ein Float ist. So nun ist mein Problem, das wenn ich zb die Coordinaten
-3.0527,5.0000,1.0000 schreibe dan, wird bei jedem nur die 1 zahl genommen. Alles was nach dem Punkt kommt, wird gelöscht.
So nun wollte ich fragen wie ist es möglich die Floats richtig zu Speichern.
-
Nun das ist nicht genau das was ich wollte ich möchte nicht mit /befehl arbeiten ich möchte es eigentlich so machen das man dan nur was im Chat eingibt
-
Guten Tag
Und zwar arbeite ich gerade an einem Report System, und will das sobald der User in einem Report drinne ist, das was er im Chat eingibt eine bestimmte Farbe hat. So das auch der User sieht das er in einem Report ist weil so sieht er sein geschriebenes nur in weiß.
-
Sag uns doch mal was du alles vesucht hast, oder stell die versuche mal hier rein vielleicht können wir dir bei dem System was du dir ausgedacht hast weiter helfen.
-
Sry aber ich glaub wohl kaum, das du sowas kostenlos gemacht bekommst, alleine das Corpyright des Designers sollte bestehen bleiben, denn ihr habt dieses Design nicht erstellt bzw gekauft und habt somit eigentlich kein anspruch auf das Design Corpyright. Dennoch wünsche ich euch viel glück bei der Suche, vielleicht findet sich ja doch jemand der euch ein Gut aussehendes Design erstellt.
edit: Gerade erst gelesen, das du auch Zahlen würdest deswegen fällt der oben geschriebene Text weg, aber Trotzdem würde ich es gut heißen den Designer sein Corpyright drauf setzten zu lassen, denn so weiß jeder wer es erstellt hat.
-
Mit SetPlayerMarkerForPlayer setzt du auch nur einen Marker auf der Karte und so wie du machst wäre es auch falsch da du für jeden spieler auf dem server einen Marker setzen würdest
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerMarkerForPlayer(i, playerid, 0xFFFFFF00);
}In
for(new i = 0; i < MAX_PLAYERS; i++)
{
SetPlayerMarkerForPlayer(playerid,i, 0xFFFFFF00);
}Um schreiben und mit
SetPlayerColor(playerid,Farbe);
Änderst du die Color des Spielers
-
Schick doch mal den public oder stock wo du den Carowner festlegst
-
Zu nächst einmal hast du ein fehler in deiner if abfrage,
Du hast statt if(TutTime[playerid] >= 1) if(TutTime >= 1) geschrieben.
Und dan würde ich das ganze noch in eine schleife packen die die Variable solang + 1 setzt bis sie den gewünsten wert erreicht hat denn so setzt er dein TutTime[playerid] nur auf 2
-
Versuch es mal so
public OnPlayerConnect(playerid)
{
SetPlayerVirtualWorld(playerid,0);
new Spielerdatei[64];
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",SpielerName(playerid));
if(dini_Exists(Spielerdatei))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login Vorgang","Herzlich Willkommen zurück auf meinem Server!\nGib bitte unten dein Passwort ein","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Register Vorgang","Herzlich Willkommen.\nBevor du loslegen kannst musst du dich zuerst registrieren.\nGib unten dein gewünschtes Passwort an!","Register","Abbrechen");
}
return 1;
}
Wenn das nicht gehn sollte hier mal meinspublic OnPlayerConnect(playerid)
{
new Playerfile[64];
new name[128];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(Playerfile,sizeof(Playerfile),"/Accounts/%s.ini",name);
if(dini_Exists(Playerfile))
{
ShowPlayerDialog(playerid,DIALOG_login,DIALOG_STYLE_PASSWORD,"Login","Ein Account unter diesen Namen wurde gefunden\n gebe bitte dein Passwort ein.","Login","Abbrechen"); //Login Dialog fals der User vorhanden ist.
}
else
{
ShowPlayerDialog(playerid,DIALOG_regist,DIALOG_STYLE_INPUT,"Register","Geb bitte dein gewünschtes Passwort ein","Regist","Abbrechen"); //Register Dialog falls der User nicht vorhanden ist.
}
return 1;
}
-
Naja Mr.Monats Tutorial ist nicht gerade schlecht aber auch nicht so gut das man sagen kann Klasse Tutorial, ist halt nur das Grundwissen
und das reicht aus.
Und ich sag mal so, wer sich sein Tut Script runterläd statt sich das Video anzuschauen und zu versuchen etwas zu lernen, sollte es sein lassen ein Script zu erstellen. Und das fehler im Script vorkommen wenn man das Video nach macht, liegt einfach daran das Mr.Monat so wie andere Scripter ihre Tutorials einfach zu schnell machen. So vergisst man schnell mal nen , oder nen ) usw.
Ich habe es anfangs so gemacht ich hab mir sein Script runtergeladen, hab mir das video neben bei angemacht für die Erklährung und hab dan das Script nach geschrieben.
Und nun zu deinen Problem ich habe mir das Script jetzt teilweise angeschaut und habe schon nen paar fehler gefunden.
Zu nächst einmal ist dein dialog_register nicht unter OnDialogResponse,
Dan hast du eine if abfrage bei deinem if(dialogid==dialog_login) vergessen
hier der fehler
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_LOGIN)
{
if(response==0)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,ROT,"Das Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde bereits Registriert. Gib den Passwort ein.","Einloggen","Abbrechen");
return 1;
}
else
{
Login(playerid,inputtext);
return 1;
}
}
/*
Hier gehlt eine abfrage
{
SendClientMessage(playerid,ROT,"Du brauchst einen Account um auf diesem Server zu spielen!\n Der Vorgang wurde abgebrochen.");
Kick(playerid);
return 1;}
*/
}
return 1;
}
Hier wie es aus sehen sollte
if(dialogid==DIALOG_login)
{
if(response==0)
{
SendClientMessage(playerid,red,"Du hast den vorgang abgebrochen");
Kick(playerid);
return 1;}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,red,"Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,DIALOG_login,DIALOG_STYLE_PASSWORD,"Login","Ein Account unter diesen Namen wurde gefunden\n gebe bitte dein Passwort ein.","Login","Abbrechen");
}
else
{
Login(playerid,inputtext);
return 1;
}
}
}
und hier mal mein kompletes register&login vergleich es einfach mal mit deinempublic OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_regist)
{
if(response==0)
{
SendClientMessage(playerid,red,"Du hast den vorgang abgebrochen!");
Kick(playerid);
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,red,"Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,DIALOG_regist,DIALOG_STYLE_INPUT,"Register","Geb bitte dein gewünschtes Passwort ein","Regist","Abbrechen");
return 1;
}
else
{
Register(playerid,inputtext);
return 1;
}
}
}
//Login
if(dialogid==DIALOG_login)
{
if(response==0)
{
SendClientMessage(playerid,red,"Du hast den vorgang abgebrochen");
Kick(playerid);
return 1;
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,red,"Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,DIALOG_login,DIALOG_STYLE_PASSWORD,"Login","Ein Account unter diesen Namen wurde gefunden\n gebe bitte dein Passwort ein.","Login","Abbrechen");
}
else
{
Login(playerid,inputtext);
return 1;
}
}
}
return 1;
}
-
Also benutze zwar ocmd und weiß auch jetzt nicht ob wir das selbe Car Owner System nutzen doch hier mal wie ich es bei mir gelöst habe
ocmd:carlock(playerid,params[]) //Schließt das Auto ab
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
new Autodatei[100], i = Carkey[playerid];
new Float:carx,Float:cary,Float:carz;
format(Autodatei,sizeof(Autodatei),"/Cars/%s_Auto_%d.ini",name,i);
if(dini_Exists(Autodatei))
{
if(i == 0) //Fragt ab ob der Spieler den 1 Schlüssel hat
{
GetVehiclePos(Spielercar[playerid][0],carx,cary,carz);
if(IsPlayerInRangeOfPoint(playerid,5,carx,cary,carz) && IsRightCarkey(playerid)) //Fragt ab ob der Spieler am Auto steht und den Schlüssel dafür hat
{
if(Autos[playerid][0][Abgeschlossen] == 0) //Fragt ab ob das Auto nicht abgeschlossen ist
{
Autos[playerid][0][Abgeschlossen] = 1;
SetVehicleParamsEx(Spielercar[playerid][0],engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
DisplayTextForPlayer(playerid,"~r~Abgeschlossen", 8, 1, 2);
return 1;
}
else if(Autos[playerid][0][Abgeschlossen] == 1) //Fragt ab ob das Auto abgeschlossen ist
{
Autos[playerid][0][Abgeschlossen] = 0;
SetVehicleParamsEx(Spielercar[playerid][0],engine,lights,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective);
DisplayTextForPlayer(playerid,"~g~Augeschlossen", 8, 1, 2);
return 1;
}
}
else
{
SendClientMessage(playerid,red,"Du bist nicht an deinem Auto oder hast den falschen Schlüssel.");
return 1;
}
}
else if(i == 1)//Fragt ab ob der Spieler den 2 Schlüssel hat
{
GetVehiclePos(Spielercar[playerid][1],carx,cary,carz);
if(IsPlayerInRangeOfPoint(playerid,5,carx,cary,carz) && IsRightCarkey(playerid))
{
if(Autos[playerid][1][Abgeschlossen] == 0)
{
Autos[playerid][1][Abgeschlossen] = 1;
SetVehicleParamsEx(Spielercar[playerid][1],engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
DisplayTextForPlayer(playerid,"~r~Abgeschlossen", 8, 1, 2);
return 1;
}
else if(Autos[playerid][1][Abgeschlossen] == 1)
{
Autos[playerid][1][Abgeschlossen] = 0;
SetVehicleParamsEx(Spielercar[playerid][1],engine,lights,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective);
DisplayTextForPlayer(playerid,"~g~Augeschlossen", 8, 1, 2);
return 1;
}
}
else
{
SendClientMessage(playerid,red,"Du bist nicht an deinem Auto oder hast den falschen Schlüssel.");
return 1;
}
}
return 1;
}
return 1;
}Ich weiß das geht auch kürzer doch wollte erstmal das es überhaupt geht