[ SCRIPTING ] [jTuT] Interaktive Dialoge
Das ist genau das Richtige für dich. Folge einfach dem Tutorial. Am Ende, wo im Tutorial die Nachricht ist: Ich habe Spieler ... angeklickt.
Dort, setzt du deinen /stats command hin.
Beiträge von Jeffry
-
-
if((IsVehicleCar(GetPlayerVehicleID(playerid)) && fsInfo[playerid][Fuehrerschein] == 0) ||
(IsVehicleMotorBike(GetPlayerVehicleID(playerid)) && fsInfo[playerid][Mottoradschein] == 0) ||
(IsVehicleBoat(GetPlayerVehicleID(playerid)) && fsInfo[playerid][Bootschein] == 0) ||
(IsVehicleHeli(GetPlayerVehicleID(playerid)) && fsInfo[playerid][Flugschein] == 0))Wenn Auto UND kein Autoschein, DANN entferne.
etc -
Versuch es erst mal selber, ohne nach 5 Minuten gleich wieder zu posten. So lernst du ja nichts.
Wenn du es bis morgen Abend nicht geschafft hast, dann mach einen neuen Thread auf und schildere dein Problem. Allerdings sehe ich kein Problem warum du das nicht schaffen sollst, es ist eigentlich alles notwendige schon irgendwo im Code vorhanden, also versuch es einfach mal. Du lernst nur durchs machen, nicht wenn's dir immer andere machen ohne dass du es versucht hast.
Einen neuen Thread dann. Hier ist fertig.
-
Dann musst du abfragen, ob das Vehikel ein Motorrad/Auto/Boot... ist, und daraufhin die Lizenz des jeweiligen Typs prüfen.
Funktionen findest hier:
http://forum.sa-mp.com/showthread.php?t=56426IsVehicleBoat
IsVehicleHeli
etc...Praktisch so:
if(IsVehicleBoat(GetPlayerVehicleID(playerid)) && fsInfo[playerid][Bootschein] == 1) //darf fahren
else // entfernen... -
So: http://pastebin.com/2nBzT2dQ
Du hast ja alles durcheinander gebracht. Da hätte ich noch 100x hier posten können.
So sollte es klappen, kompilieren kann ich es nicht, da ich die includes nicht habe. -
if(sscanf(params,"us",pID,fschein))
Muss meines Wissens so sein:
if(sscanf(params,"us[20]",pID,fschein))Falls es nicht tut, erklär bitte genauer was nicht tut, und was passiert.
-
Also, da du ja wieder nicht den ganzen Code gepostet hast:
new Spielerdatei[64];
entfernen.Wenn du immer noch Fehler hast dann schick den ganzen Code + die Fehler.
Alles markieren => Kopieren => http://www.pastebin.com => Einfügen => Link hier einfügen
Kannst die Expire Time ja auf 1h stellen.
Dein Script wird dir eh keiner klauen wollen, und wenn du meinst doch, dann schick es mir per PN, mir egal.
Aber ich will dir nicht jede Zeile in 10 Posts erklären wie du den Fehler behebst, und danach sind 5 Fehler mehr da als zuvor, wenn du es nicht mal schaffst (so hart es klingt) ein/zwei Wörter richtig zu entfernen. -
-
Die Zeilen stehen doch genau dran, da sind noch 3 weitere. Und in der der Zeile mit dem Error da fehlt ein ";" am Ende.
http://www.pastebin.com
Mach da mal deinen ganzen Code rein, dann mach ich dir die Warnungen kurz weg. Das hat ja keinen Sinn so. -
if(newstate == PLAYER_STATE_DRIVER)
{
if(fsInfo[playerid][Fuehrerschein] != 0 || fsInfo[playerid][Mottoradschein] != 0 || fsInfo[playerid][Bootschein] != 0 || fsInfo[playerid][Flugschein] != 0)
{
SendClientMessage(playerid,COLOR_GRAU,"Mit /motor kannst du den Motor anschalten.");
}
else
{
SendClientMessage(playerid,COLOR_GRAU,"Du besitzt kein Auto/Mottorad/Boot/Flug-schein hol dir ein bei der Fahrschule!");
RemovePlayerFromVehicle(playerid);
}
return 1;
}Die Schleife gehört da nicht hin.
-
Lag daran. dass vehid -1 war, und dann im Array abgefragt wird: Array[-1] => Unknown Command.
ocmd@3:flock,fclock,fcarlock(playerid)
{
new i,Float:dis = 5,vehid = -1;
if(Spieler[playerid][Fraktion] <= 0)return SendClientMessage(playerid,Rot,"Du bist in keiner Fraktion!");
switch(Spieler[playerid][Fraktion])
{
case 3:
{
for(i = 0; i<sizeof(FBIVehs); i++)
{
GetDistanceBetweenPlayerAndCar(i,playerid);
if(dis > GetDistanceBetweenPlayerAndCar(i,playerid))
{
dis = GetDistanceBetweenPlayerAndCar(i,playerid);
vehid = i;
}
}
if(vehid != -1)
{
if(FCarlock[vehid] == 1)
{
FCarlock[vehid] = 0;
for(new p = 0; p<MAX_SPIELER; p++)
{
SetVehicleParamsForPlayer(vehid,p,0,0);
}
SendClientMessage(playerid,Gruen,"Du hast das Fahrzeuge aufgeschlossen.");
}
else if(FCarlock[vehid] == 0)
{
FCarlock[vehid] = 1;
for(new p = 0; p<MAX_SPIELER; p++)
{
SetVehicleParamsForPlayer(vehid,p,0,1);
}
SendClientMessage(playerid,Rot,"Du hast das Fahrzeug abgeschlossen.");
}
}
else
{
SendClientMessage(playerid,Rot,"Du bist bei keinem Fahrzeug.");
}
}
}
return 1;
} -
http://forum.sa-mp.com/showthread.php?t=269126
http://forum.sa-mp.com/showthread.php?t=465410
http://forum.sa-mp.com/showthread.php?t=394765Ich kann dir das erste empfehlen. Die Website ist ein Klcks wenn du mit PHP klar kommst.
-
Auf Anfrage per PM:
So wie Goldkiller es erklärt hat ist es eigentlich schon richtig, so in der Art, oder ähnlich solltest du es schon machen.
Hier hast du mal ein Beispiel System: http://forum.sa-mp.com/showthread.php?t=287688Ich kann dir vorschlagen, du schaust mal in mein Tutorial zu Interaktiven Dialogen rein, das würde dir hier sicher schonmal sehr helfen:
[ SCRIPTING ] [jTuT] Interaktive DialogeAnsonsten sollte dir hier klar sein, das ein Freunde System kein System ist das man in 5 Minuten hinklatscht, sondern das wird einige Zeit in Anspruch nehmen, ich spreche da von 10 und mehr Stunden reiner Arbeitszeit. Und längenmäßig wird es weit über deine vorhandenen 40 Zeilen gehen, vor allem wenn du es speichern und laden willst, was ja sinnvoll wäre.
-
Lösche einfach das "new Spielerdatei" in den viel Zeilen. Es ist bereits definiert, du musst es nicht nochmal in der gleichen Instanz definieren.
-
Dann muß es an was anderem liegen und nicht an dem was der amx backtrace sagt.
Ich würde dir raten, prüfe einfach mal OnPlayerConnect mit den prints, wenn du sagst es startet sofort neu.Ich denke eher, dass es am Code liegt. RAM sollte bei einer Spieler kein Problem sein.
-
stock Spielername(playerid)
{
new r_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, r_name , sizeof(r_name) );
return r_name;
}Unten im GM einfügen, gaaanz unten.
Edit: Ach bin ich dämlich. Völlig falsch rum geschrieben. Danke Scott_Mitchell:
-
Ok, das ist eindeutig zu viel, das musst du selbst debuggen. Ich hab ein paar Dinge getestet, die haben alle getan.
Füge zwischen die Zeilen immer wieder:
print("Stelle 1");
//...code
print("Stelle 2");
//...code
print("Stelle 3");ein. Dann arbeitest du dich an die Zeile hin, die als letztes ausgeführt wird. Die folgende Zeile lässt logischerweise den Server abstürzen. Wenn du die Zeile hast, poste sie bitte hier. Das ist leider eine elende Sucharbeit, da muss jeder mal durch.

-
Gewöhn dir bitte gleich an, zu jedem Error auch gleich den Code zu posten, dann muss man nicht 100x danach fragen, den wird man immer brauchen.
Also bitte den Code posten. -
[20:13:29] [debug] #0 native TextDrawSetString () [080d6e10] from samp03svr
[20:13:29] [debug] #1 004a5444 in public UpdateUhrundDatum () from GeTmyselfmade.amxTextDrawSetString in UpdateUhrundDatum hat deinen Server zerlegt. Liegt wohl daran, dass du einen leeren String zuweist.

Poste mal den Code von UpdateUhrundDatum().
-
Steht überhaupt was in der Datenbank drinne? Mach mal einen Screenshot von "Anzeigen". Und stimmt der Tabellenname "cars"?
Übrigens:
new downer,dplate,Float:sx,Float:sy,Float:sz,model,colo1,colo2,dprice,dcar,iD,Float:sr;zu:
new downer[16],dplate[20],Float:sx,Float:sy,Float:sz,model,colo1,colo2,dprice,dcar,iD,Float:sr;Poste dann bitte nochmal den Code so wie er momentan ist. Da blickt ja keiner mehr durch.
EDIT: Threadstarter hat das Problem gelöst.