Ah danke dir
Ja Debugging ist toll wenn man es versteht
Funktioniert aber jetzt vielen Dank
Beiträge von Pascal.
-
-
Der Log sieht so aus:
Code
Alles anzeigen[16:40:41] OnPlayerStateChange wurde aufgerufen! (playerid: 0) [16:40:41] 0 ist im Auto als Fahrer [16:40:41] Vehicle-ID: 9 [16:40:41] id_x: 1 (i=0) [16:40:41] id_x: 2 (i=1) [16:40:41] id_x: 3 (i=2) [16:40:41] id_x: 4 (i=3) [16:40:41] id_x: 5 (i=4) [16:40:41] id_x: 6 (i=5) [16:40:41] id_x: 7 (i=6) [16:40:41] id_x: 8 (i=7) [16:40:41] id_x: 9 (i=8) [16:40:44] OnPlayerStateChange wurde aufgerufen! (playerid: 0)
-
Sorry für die späte antwort.
Habe das jetzt nochmal getestet diesmal ist der Server nicht abgestürzt.Hier das enum:
enum autohauscarSystem {
model,
Float:c_x,
Float:c_y,
Float:c_z,
Float:c_r,
c_preis,
c_level,
ah_id,
id_x
} -
-
Jo das Public wird aufgerufen, dann liegt es denke an der Abfrage.
-
Hey Community!
Anscheind wird bei mir nicht OnPlayerStateChange aufgerufen.
Ich möchte abfragen ob er im Autohaus car ist wenn ja soll ein Dialog kommen, aber es kommt rein garnix.
Nun habe ich versucht es zu printen leider ohne erfolg, bei dem print kam garnix raus, deshalb vermute ich dass er OnPlayerStateChange nicht aufruft.public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new vID = GetPlayerVehicleID(playerid);
for(new i=0; i<sizeof(ahCars); i++)
{
if(ahCars[i][id_x]!=vID)continue;
printf("%s ist im Autohaus car %s, id: %i drinne.",SpielerName(playerid),VehicleName[vID-400],ahCars[i][id_x]);
SetPVarInt(playerid,"BuyCarID",i);
new string[250];
format(string,250,"{0089E5}Fahrzeug: {FEFEFE}%s\n{0089E5}Kaufpreis: {FEFEFE}%d$\n{0089E5}Kauflevel: {FEFEFE}%d\n\n\
Möchten sie das Fahrzeug kaufen?",VehicleName[vID-400],ahCars[i][c_preis],ahCars[i][c_level]);
ShowPlayerDialog(playerid,DIALOG_AHKAUFEN,DIALOG_STYLE_MSGBOX,"Autohaus",string,"Kaufen","Abbrechen");
printf("Dialog wurde aufgerufen\n%s",string);
break;
}
return 1;
}
return 1;
} -
Mit SendClientMessage.
Aso, wohl etwas fail
Danke dir. -
Hi, Irgendwie Funktioniert das schreiben in einer anderen zeile nicht.
Vorher ging es aber nun habe ich auch keine ahung mehr, ich sehe dort keine Fehler.
Der schreibt mir alles in 1 Zeilenew string[200];
pInfo[i][pRespekt]++;
format(string,200,"\
{007AFF}==========> Zahltag <==========\n\
{007AFF}Geld: {FEFEFE}5.000$\n\
{007AFF}Respektpunkte: {FEFEFE}%i/%i",
pInfo[i][pRespekt],GetPlayerScore(i)*8); -
Sowas "ähnliches" hatte ich auch mal, schauh hier:
Anklickbare TextDraws Funktionieren nicht -
Was meinst du das mit dem Anklicken?
if(clickedid == DeineTextdrawVariable)in meinem fall war es zb registerr und einloggen
registerr = TextDrawCreate(481.000000, 294.000000, "Registrierung");
TextDrawLetterSize(registerr, 0.449999, 1.600000);
TextDrawTextSize(registerr, 620.500000, 14.0000);
TextDrawAlignment(registerr, 1);
TextDrawColor(registerr, -1061109505);
TextDrawUseBox(registerr, true);
TextDrawBoxColor(registerr, -1523963137);
TextDrawSetShadow(registerr, 2);
TextDrawSetOutline(registerr, 0);
TextDrawBackgroundColor(registerr, 255);
TextDrawFont(registerr, 2);
TextDrawSetProportional(registerr, 1);
TextDrawSetSelectable(registerr, true);einloggen = TextDrawCreate(528.000000, 317.187500, "Login");
TextDrawLetterSize(einloggen, 0.380499, 1.853749);
TextDrawTextSize(einloggen, 573.500000, 14.000000);
TextDrawAlignment(einloggen, 1);
TextDrawColor(einloggen, -1061109505);
TextDrawUseBox(einloggen, true);
TextDrawBoxColor(einloggen, -1523963137);
TextDrawSetShadow(einloggen, 2);
TextDrawSetOutline(einloggen, 0);
TextDrawBackgroundColor(einloggen, 255);
TextDrawFont(einloggen, 2);
TextDrawSetProportional(einloggen, 1);
TextDrawSetSelectable(einloggen, true); -
Okay, ich habe noch was aus mein damaligen Selfmade gefunden.
Schicke dir einfach mal die Codes, vllt findest du ja was passendes.public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == registerr)
{
new string[150];
new Spielerdatei[128];
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",SpielerName(playerid));
if(!dini_Exists(Spielerdatei))
{
//Register
format(string,150,"\
{FAFAFA}Herzlich Willkommen auf German Reallife, {00B9FF}%s.\n\
{FAFAFA}Bitte wähle ein Passwort um dich zu Registrieren.",SpielerName(playerid));
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung",string,"Wählen","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Information","Information:\
Du hast bereits ein Account klicke bitte auf ""Einloggen"".","Okay","_");
}
}
if(clickedid == einloggen)
{
new string[150];
new Spielerdatei[128];
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",SpielerName(playerid));
if(dini_Exists(Spielerdatei))
{
//Login
format(string,150,"\
{FAFAFA}Willkommen zurück auf German Reallife, {00B9FF}%s.\n\
{FAFAFA}Bitte gib dein Passwort ein um fortzufahren.",SpielerName(playerid));
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",string,"Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Information","Information:\
Dein Account wurde nicht gefunden, klicke bitte auf ""Registrierung"".","Okay","_");
}
}
return 1;
}Ist halt auf Dini, hatte es aber auch mal auf MySQL, habe ich aber umgeschrieben.
-
Du fügst das Public ein.
http://wiki.sa-mp.com/wiki/OnPlayerClickPlayerTextDrawDort musst du abfragen auf welches Textdraw er klickt.
bsp: Er klickt auf Registrieren dort fragst du ab ob er schon Registriert ist --> Wenn ja sag ihm er ist schon registriert.
Wenn nein --> Gib ihn ein Dialog.
So sagen wir mal du hast ihn DIALOG_REGISTER gezeigt, dort musst du das unter OnPlayerDialogResponse machen mit dem Registrieren.
Sorry für die "nicht" gute erklärung.
Aber sollte dir denke ein wenig helfen. -
Eventuell in PVars speichern?
Oder in einer Variable, die oben im Script deklariert wurde. -
Ich bin jetzt gerade sehr verwirrt, ich blicke dort einfach garnicht mehr durch.
Da ich jetzt möchte wenn er das erste mal mit dem Flugzeug die Route geschafft hat soll er das gleiche nochmal machen
nur mit ein Maverick.
Wenn er die Route mit dem Maverick geschafft hat soll das beendet werden.
Jeffry:public OnPlayerEnterRaceCheckpoint(playerid)
{
if(GetPVarInt(playerid,"Prufung") == 1)
{
new cID = GetPVarInt(playerid, "fCP");
new Float:range;
if(cID == sizeof(fsCP)-1) range = 20.0;
else range = 10.0;
if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
{
cID++;
if(cID >= sizeof(fsCP))
{
new string[150];
DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
new vID = CreateVehicle(487,419.8472,2503.8560,17.8609,89.4706,1,1,-1);
SetPVarInt(playerid,"Flugzeug",vID);
SetPVarInt(playerid,"fCP",0); //Setzen Checkpoint 0 (es wird ab 0 angefangen zu zählen)
SetPlayerRaceCheckpoint(playerid, 3,fsCP[0][fx],fsCP[0][fy],fsCP[0][fz], fsCP[1][fx],fsCP[1][fy],fsCP[1][fz], 10); //Hier wird der Checkpoint erstellt & der 2 Checkpoint auch
TextDrawShowForPlayer(playerid, usebox3);
TextDrawShowForPlayer(playerid, arz);
TextDrawShowForPlayer(playerid, info1);
format(string,150,"Fliege mit dem Maverick~n~erneut den Rundflug.");
TextDrawSetString(info1,string);
SetVehicleVirtualWorld(GetPVarInt(playerid,"Flugzeug"),GetPlayerVirtualWorld(playerid));
PutPlayerInVehicle(playerid,vID,0);
SetPVarInt(playerid,"Stufe",1);
}
SetPVarInt(playerid, "fCP", cID);
if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
}
return 1;
}
if(GetPVarInt(playerid,"Prufung") == 1)
{
if(GetPVarInt(playerid,"Stufe") == 1)
{
new cID = GetPVarInt(playerid, "fCP");
new Float:range;
if(cID == sizeof(fsCP)-1) range = 20.0;
else range = 10.0;
if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
{
cID++;
if(cID >= sizeof(fsCP))
{
SetPVarInt(playerid, "fCP", 0);
new string[128];
format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
SCM(playerid,COLOR_GRAU,string);
DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
SetPlayerVirtualWorld(playerid,0);
SetPVarInt(playerid,"Prufung",0);
SetPVarInt(playerid,"Flugschein",1);
DisablePlayerRaceCheckpoint(playerid);
SavePlayer(playerid);
SetPVarInt(playerid,"Stufe",0);
}
SetPVarInt(playerid, "fCP", cID);
if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
}
return 1;
}
return 1;
}
DisablePlayerRaceCheckpoint(playerid);
return 1;
} -
Dann mach die Abfrage dort rein wo man sein Job annimt.
also listitem 0-9.
Sollte so passen -
Meinst du eine Textdraw Texture?
Ansonsten zeig uns mal ein Beispiel. -
Du musst abfragen ob der Spieler bereits ein Job hat.
Ich weiß nicht wie du deine Spielerdaten heißen aber mache dir ein Beispiel:dcmd_job(playerid,params[])
{
#pragma unused params
if(pInfo[playerid][pJob] >0)return SCM(playerid,COLOR_GRAU,"Du hast bereits ein Job.");
if(IsPlayerInRangeOfPoint(playerid,4.0,1419.4509,-1001.0847,-17.3952))
{
ShowPlayerDialog(playerid, DIALOG_JOB, DIALOG_STYLE_LIST, "JobMenu","Müllmann\nTaschendieb\nStraßenreiniger\nWaffendealer\nDrogendealer\nFarmer\nPilot\nHure\nHolzfäller\nTaxifahrer\nJob kündigen","Auswählen", "Abbrechen");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Hier bekommst du keinen Job!");
}
return 1;
}Hinzugefügt wurde
if(pInfo[playerid][pJob] >0)return SCM(playerid,COLOR_GRAU,"Du hast bereits ein Job."); -
Solltest dich schon etwas besser ausdrucken.
Was für Tabellen?
MySQL Tabellen? -
Oh die habe ich übersehen, den Fehler hattest du auch
-
ocmd:clear(playerid,params[])
{
if(GetPVarInt(playerid,"Fraktion")== 1 || GetPVarInt(playerid,"Fraktion")== 4 || GetPVarInt(playerid,"Fraktion")== 2)
{
new pID,vehicleid = GetPlayerVehicleID(playerid);
if(IsPlayerInRangeOfPoint(playerid,5.0,1481.0104,-1778.0242,3288.7859) || IsPlayerInRangeOfPoint(playerid,5.0,242.5531,1861.5344,14.0840) || IsACopCar(vehicleid)){
{
new string[128],sendername[MAX_PLAYER_NAME],name32[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(sscanf(params,"u",pID))return SCM(playerid,COLOR_FADE3,"/clear [spieler]");
GetPlayerName(pID,name32,sizeof(name32));
if(!IsPlayerConnected(pID))return SCM(playerid,RED,"Spieler ist Offline!");
if(GetPVarInt(pID,Wanted) <1)return SCM(playerid,RED,"Der Spieler hat keine Wanteds!");
format(string, sizeof(string), "Du hast die Strafakte von %s gelöscht!",name32);
SCM(playerid,ROT, string);
format(string, sizeof(string), "Officer %s hat deine Wanteds gelöscht!",sendername);
SCM(pID,ROT, string);
format(string,sizeof(string),"HQ: %s hat die Strafakte von %s gelöscht.",sendername,name32);
StaatCast(string);
SetPVarInt(pID,"Wanted",0);
TextDrawHideForPlayer(pID,wanteddraw[pID]);
return TextDrawHideForPlayer(pID,wantedstern);
}
else return SCM(playerid,RED,"Du bist nicht am Clearpunkt/in einem Streifenwagen!");
}
return SCM(playerid,RED,"Du bist kein Beamter!");
}