[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Beitrag von Corvus ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Jetzt:
[19:23:23] Gas: 99.5 | playerid: 8 | veh: 224
[19:23:39] Gas: 99.0 | playerid: 8 | veh: 224 -
Geht doch, ich sehe da keine ewigen Zahlen mehr. Du?
Es geht von 99.5 auf 99.0, das passt doch. -
Textdraw zeit trotzdem noch viele Zahlen.
-
Dann ändere
format(string2,sizeof(string2),"~r~Tank:%s %0.1f ", Tank, Gas[VID]);
zu:
format(string2,sizeof(string2),"~r~Tank:%s %0.1f ", Tank, Gas[VID]);
printf("string2: %s", string2);
printf("VID: %d, playerid: %d", VID, playerid);Was wird geprintet?
-
Folgendes:
[19:42:34] string2: ~r~Tank:~g~ 100.0
[19:42:34] VID: 222, playerid: 0
[19:42:53] Gas: 99.5 | playerid: 8 | veh: 222
[19:43:09] Gas: 99.0 | playerid: 8 | veh: 222
[19:43:26] Gas: 98.5 | playerid: 8 | veh: 222 -
Ja, jetzt hast du den print nur bei deinem OnPlayerStateChange eingefügt.
Du hast auch noch einen Timer, bei dem der Tankwert aktualisiert wird. Suche mal nach "~r~Tank:" (ohne die Anführungszeichen), dann siehst du wo das überall verwendet wird. Da muss es noch einen Timer geben, der den Wert aktualisiert, denn die Berechnung ist korrekt. -
Hier:
if(TakingLesson[i] == 2)
{
if(value > 75)
{
SendClientMessage(i,COLOR_LIGHTRED,"Du Fährst zu schnell, Fahr langsamer sonst fällst du durch die Prüfung");
}
if(value >= 100)
{
SendClientMessage(i,COLOR_KNALLROT,"Du hast die Prüfung nicht bestanden.");
RemovePlayerFromVehicle(i);
SetVehicleToRespawn(GetPlayerVehicleID(i));
SetPlayerPos(i,1215.3406,-1821.1357,13.5950);
CP[i] = 0;
DisablePlayerCheckpoint(i);
TakingLesson[i] = 0;
}
}
if(IsABoat(VID) || IsAFahrrad(VID))
{
format(string2,sizeof(string2),"~r~KM/H:~g~ %d",value);
format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
TextDrawSetString(Tacho2[i], string);
TextDrawSetString(Tacho4[i],string2);
}
else if(IsAPlane(VID))
{
new Float:cx,Float:cy,Float:cz;
GetVehiclePos(VID,cx, cy, cz);
format(string, sizeof(string), "%f",cz);
format(string2,sizeof(string2),"~r~KM/H:~g~ %d",value);
format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
TextDrawSetString(Tacho2[i], string);
TextDrawSetString(Tacho4[i],string2);
}
else
{
new Speed[20];
new Float:leben;
if(value >= 0 && value <= 75){Speed = "~g~";}
if(value > 75){Speed = "~r~";}
new Tank[20];
if(Gas[VID] > 10 && Gas[VID] <= 20){Tank = "~y~";}
if(Gas[VID] <= 10){Tank = "~r~";}
if(Gas[VID] > 20){Tank = "~g~";}
VehSpeed[VID] = value;
GetVehicleHealth(VID,leben);
format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
format(string1,sizeof(string1),"~r~KM/H:~g~ %d",value);
format(string2,sizeof(string2),"~r~Tank:~g~ %s %d", Tank, Gas[VID]);
format(string4,sizeof(string4),"~r~Zustand:~g~ %.1f",leben/10);
TextDrawSetString(Tacho2[i], string);
TextDrawSetString(Tacho3[i], string);
TextDrawSetString(Tacho4[i],string1);
TextDrawSetString(Tacho5[i],string4);
TextDrawSetString(Tacho6[i],string2);
} -
format(string2,sizeof(string2),"~r~Tank:~g~ %s %d", Tank, Gas[VID]);
zu:
format(string2,sizeof(string2),"~r~Tank:%s%0.1f", Tank, Gas[VID]);Das hättest du auch selbst sehen können, oder?

-
Ja eig. schon dank dir
-

Wie mache ich, dass die Textdraw-Box nicht über die Map geht, sondern unter der Map?
-
Das geht leider nicht.
-
Hi zusammen,
sicherlich eine ziemlich dumme Frage, aber warum wird der Spieler nicht aus dem Fahrzeug gekickt, wenn er den rechten Dialogbutton drückt?case DIALOG_FAUTOHAUS:
{
if(response)
{
new id=GetPVarInt(playerid,"buyCarID");
new fid=GetPVarInt(playerid,"Fraktion");
new pr=GetPVarInt(playerid,"buyCarPreis");
printf("1");
if(GetPVarInt(playerid,"Money") < pr)
{
SCM(playerid,COLOR_GREY,"Du hast nicht genügend Geld.");
RemovePlayerFromVehicle(playerid);
printf("2");
}
else
{
printf("3");
WithdrawPlayerMoney(playerid,pr);
AddFrakCar(1708.1882,1286.8730,10.5252,359.1886,fid,id,FraktionsInfo[fid][f_Farbe],FraktionsInfo[fid][f_Farbe]);
RemovePlayerFromVehicle(playerid);
SCM(playerid,COLOR_YELLOW,"Du hast dieses Fahrzeug für deine Fraktion gekauft.");
printf("4");
}
}
else
{
RemovePlayerFromVehicle(playerid);
}
}Eine zweite Frage hätte ich auch noch:
Ich überprüfe unter OnPlayerStateChange wenn ein Spieler ein Fahrzeug als Spieler betritt, ob er dieses Fahrzeug fahren darf (Job, Fraktion etc.). Wenn er es aber nicht darf, soll er rausgeworfen werden. Steigt der Spieler aber ein und fährt weiter, passiert nichts und er kann das Fahrzeug ohne Probleme fahren, bis er langsamer wird und/oder steht.Dazu auch nochmal den Code (Beispiel):
if(IsAMedicCar(GetPlayerVehicleID(playerid)))
{
if(GetPVarInt(playerid,"Fraktion") != 2)
{
RemovePlayerFromVehicle(playerid);
SCM(playerid,COLOR_GREY,"Du bist kein Sanitäter.");
}
} -
Zu deine 2 Frage, probier es mal so.
for(new i=0; i<sizeof(IsAMedicCar); i++)
{
if(GetPlayerVehicleID(playerid) == IsAMedicCar[i])
{
if(GetPVarInt(playerid,"Fraktion") != 2)
{
RemovePlayerFromVehicle(playerid);
SCM(playerid,COLOR_GREY,"Du bist kein Sanitäter.");
}
}
return 1;
} -
if(dialogid == DIALOG_COLOR)
{
if(response)
{
switch(listitem)
{
new vehicleid = GetPlayerVehicleID(playerid);
GivePlayerMoney(playerid,-2500);
GameTextForPlayer(playerid,"~r~KOSTEN: ~w~$2500",2500,3);
case 0:
{
SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
ChangeVehicleColor(vehicleid,3,3);
return 1;
}
case 1:
{
SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
ChangeVehicleColor(vehicleid,86,86);
return 1;
}
case 2:
{
SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
ChangeVehicleColor(vehicleid,106,106);
return 1;
}
case 3:
{
SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
ChangeVehicleColor(vehicleid,172,172);
return 1;
}
case 4:
{
SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
ChangeVehicleColor(vehicleid,6,6);
return 1;
}
case 5:
{
SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
ChangeVehicleColor(vehicleid,13,13);
return 1;
}
case 6:
{
SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
ChangeVehicleColor(vehicleid,0,0);
return 1;
}
case 7:
{
SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
ChangeVehicleColor(vehicleid,1,1);
return 1;
}
}
}
}Aufgrund diesem PAWN-Code spackt mein Compiler ab. Weiß jemand warum? Habe bereits einiges rumprobiert...
-
if(dialogid == DIALOG_COLOR)
{
if(!response) return 1;
new vehicleid = GetPlayerVehicleID(playerid);
GivePlayerMoney(playerid,-2500);
GameTextForPlayer(playerid,"~r~KOSTEN: ~w~$2500",2500,3);
switch(listitem)
{
case 0: ChangeVehicleColor(vehicleid,3,3);
case 1: ChangeVehicleColor(vehicleid,86,86);
case 2: ChangeVehicleColor(vehicleid,106,106);
case 3: ChangeVehicleColor(vehicleid,172,172);
case 4: ChangeVehicleColor(vehicleid,6,6);
case 5: ChangeVehicleColor(vehicleid,13,13);
case 6: ChangeVehicleColor(vehicleid,0,0);
case 7: ChangeVehicleColor(vehicleid,1,1);
}
return SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
}Zwischen switch und case gehört nur switch und case ^^.
Zudem ist diese Methode deutlich übersichtlicher :).L.G.

-
Kann mir jemand den Sscanf Stock schicken oder hier Posten?
Finde den nicht. -
max1907:
benutz das plugin: http://forum.sa-mp.com/showthread.php?t=120356 -
Warum wird KM und 0 Untereinander geschrieben:
Tacho7[i] = TextDrawCreate(143.999969, 379.555419, "~w~ 0 Km");
TextDrawLetterSize(Tacho7[i], 0.212666, 1.807404);
TextDrawTextSize(Tacho7[i], 31.999998, 14.933333);
TextDrawAlignment(Tacho7[i], 1);
TextDrawColor(Tacho7[i], -1);
TextDrawSetShadow(Tacho7[i], 0);
TextDrawSetOutline(Tacho7[i], 1);
TextDrawBackgroundColor(Tacho7[i], 51);
TextDrawFont(Tacho7[i], 2);
TextDrawSetProportional(Tacho7[i], 1);

