Nach den if's zwei Klammern.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Außerdem kannst du das so schreiben:
if((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER))
{
PlayerTextDrawShow(playerid, textdraw_0[playerid]);
//etc...
}
//hier die andere if-AbfrageDu musst nicht x mal die gleiche Abfrage hinschreiben, pro Zeile.
-
Habe alle Textdraws jetzt komplett auf playertextdraws geändert aber irgendwie wenn ich in ein Auto steige passiert nichts
Code
Alles anzeigenif((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER)) { PlayerTextDrawShow(playerid, textdraw_0[playerid]); PlayerTextDrawShow(playerid, textdraw_1[playerid]); PlayerTextDrawShow(playerid, textdraw_2[playerid]); PlayerTextDrawShow(playerid, textdraw_3[playerid]); PlayerTextDrawShow(playerid, textdraw_4[playerid]); PlayerTextDrawShow(playerid, textdraw_5[playerid]); } if((oldstate == PLAYER_STATE_DRIVER) || (oldstate == PLAYER_STATE_PASSENGER)) { PlayerTextDrawHide(playerid, textdraw_0[playerid]); PlayerTextDrawHide(playerid, textdraw_1[playerid]); PlayerTextDrawHide(playerid, textdraw_2[playerid]); PlayerTextDrawHide(playerid, textdraw_3[playerid]); PlayerTextDrawHide(playerid, textdraw_4[playerid]); PlayerTextDrawHide(playerid, textdraw_5[playerid]); }
-
Hey,
bin gerade dabei ein Drive-By-System zu schreiben bei dem man den Drive-By Modus beenden und erneut starten kann.
Das beenden klappt, das erneute starten, nun...
Codeif(newkeys & KEY_CROUCH){ if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_PASSENGER){ if(GetPlayerCameraMode(playerid) == 55){ dPlayerWeapons[playerid] = GetPlayerWeapon(playerid); SetPlayerArmedWeapon(playerid, 1); ApplyAnimation(playerid, "ped", "CAR_sit", 4.1, 0, 0, 0, 0, 0, 0); SetPlayerArmedWeapon(playerid, dPlayerWeapons[playerid]); } } }
Ich frage über GetPlayerCameraMode ab ob der Spieler überhaupt im Drive-By Modus ist. Dann setze ich die Sitz-Animation für ihn damit er mit dem Drive-By aufhört.Das Hauptproblem ist nun, dass anscheinend der Drive-By Modus nicht wirklich beendet ist. Ich habe bereits mit printf den Kamera-Modus nach Beendigung des Drive-By ausgeben lassen und er gibt mir 55 aus was bedeutet, dass er immer noch im Drive-By ist.
Meine Frage ist nun, ob und wie man den Drive-By Modus vollständig beenden kann (ohne den dabei Spieler aus dem Fahrzeug zu werfen usw.).
-
ich hätte da spontan 2 Ideen.
Entweder einfach SetCameraBehindPlayer benutzen oder SetPlayerDrunkLevel auf einem niedrigen Wert benutzen. -
Deine Ansätze haben nicht geklappt, aber hab es trotzdem hingekriegt.
GetPlayerCameraMode war doch nicht 55 als ich den Drive-By beendet habe (es war 18 -> Fahrzeug Kamera)
Ich musste erst mit GetPlayerWeaponData alle Waffen speichern und die letzte Waffe in der Hand in einer Variable, dann ResetPlayerWeapons, nach einem Timer (kA wieso, aber ohne Funktionierts nicht) alle Waffen wieder zurück geben und mit SetPlayerArmedWeapon die letzte Waffe wieder auf die Hand geben.
-
Habe gemerkt das ich zu wenig Informationen angegeben habe, eigentlich müsste er mir den Dialog anzeigen macht er aber nicht.
Ganz Oben
OnGameModeInit
Code
Alles anzeigenfor(new i=0; i<MAX_PLAYERS; i++) { textdraw_0[i] = CreatePlayerTextDraw(i, 633.000000, 358.000000, "NIX"); PlayerTextDrawFont(i, textdraw_0[i], 1); PlayerTextDrawLetterSize(i, textdraw_0[i], 1.491665, 0.699992); PlayerTextDrawTextSize(i, textdraw_0[i], 491.500000, 34.500000); PlayerTextDrawSetOutline(i, textdraw_0[i], 0); PlayerTextDrawSetShadow(i, textdraw_0[i], 0); PlayerTextDrawAlignment(i, textdraw_0[i], 1); PlayerTextDrawColor(i, textdraw_0[i], -256); PlayerTextDrawBackgroundColor(i, textdraw_0[i], 255); PlayerTextDrawBoxColor(i, textdraw_0[i], 106); PlayerTextDrawUseBox(i, textdraw_0[i], 1); PlayerTextDrawSetProportional(i, textdraw_0[i], 1); PlayerTextDrawSetSelectable(i, textdraw_0[i], 0); }
OnPlayerDisconnect
Code
Alles anzeigenpublic OnPlayerStateChange(playerid, newstate, oldstate) { if((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER)) { PlayerTextDrawShow(playerid, textdraw_0[playerid]); PlayerTextDrawShow(playerid, textdraw_1[playerid]); PlayerTextDrawShow(playerid, textdraw_2[playerid]); PlayerTextDrawShow(playerid, textdraw_3[playerid]); PlayerTextDrawShow(playerid, textdraw_4[playerid]); PlayerTextDrawShow(playerid, textdraw_5[playerid]); } if((oldstate == PLAYER_STATE_DRIVER) || (oldstate == PLAYER_STATE_PASSENGER)) { PlayerTextDrawHide(playerid, textdraw_0[playerid]); PlayerTextDrawHide(playerid, textdraw_1[playerid]); PlayerTextDrawHide(playerid, textdraw_2[playerid]); PlayerTextDrawHide(playerid, textdraw_3[playerid]); PlayerTextDrawHide(playerid, textdraw_4[playerid]); PlayerTextDrawHide(playerid, textdraw_5[playerid]); }
Und das unter StateChange
-
Habe gemerkt das ich zu wenig Informationen angegeben habe, eigentlich müsste er mir den Dialog anzeigen macht er aber nicht.
Ganz Oben
OnGameModeInit
Code
Alles anzeigenfor(new i=0; i<MAX_PLAYERS; i++) { textdraw_0[i] = CreatePlayerTextDraw(i, 633.000000, 358.000000, "NIX"); PlayerTextDrawFont(i, textdraw_0[i], 1); PlayerTextDrawLetterSize(i, textdraw_0[i], 1.491665, 0.699992); PlayerTextDrawTextSize(i, textdraw_0[i], 491.500000, 34.500000); PlayerTextDrawSetOutline(i, textdraw_0[i], 0); PlayerTextDrawSetShadow(i, textdraw_0[i], 0); PlayerTextDrawAlignment(i, textdraw_0[i], 1); PlayerTextDrawColor(i, textdraw_0[i], -256); PlayerTextDrawBackgroundColor(i, textdraw_0[i], 255); PlayerTextDrawBoxColor(i, textdraw_0[i], 106); PlayerTextDrawUseBox(i, textdraw_0[i], 1); PlayerTextDrawSetProportional(i, textdraw_0[i], 1); PlayerTextDrawSetSelectable(i, textdraw_0[i], 0); }
OnPlayerDisconnect
Code
Alles anzeigenpublic OnPlayerStateChange(playerid, newstate, oldstate) { if((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER)) { PlayerTextDrawShow(playerid, textdraw_0[playerid]); PlayerTextDrawShow(playerid, textdraw_1[playerid]); PlayerTextDrawShow(playerid, textdraw_2[playerid]); PlayerTextDrawShow(playerid, textdraw_3[playerid]); PlayerTextDrawShow(playerid, textdraw_4[playerid]); PlayerTextDrawShow(playerid, textdraw_5[playerid]); } if((oldstate == PLAYER_STATE_DRIVER) || (oldstate == PLAYER_STATE_PASSENGER)) { PlayerTextDrawHide(playerid, textdraw_0[playerid]); PlayerTextDrawHide(playerid, textdraw_1[playerid]); PlayerTextDrawHide(playerid, textdraw_2[playerid]); PlayerTextDrawHide(playerid, textdraw_3[playerid]); PlayerTextDrawHide(playerid, textdraw_4[playerid]); PlayerTextDrawHide(playerid, textdraw_5[playerid]); }
Und das unter StateChange
Du hast doch ganz oben nur ein Textdraw definiert:
new PlayerText:textdraw_0[MAX_PLAYERS];Aber du willst die unten mit textdraw_1, textdraw_2, etc anzeigen.. Kann ja nicht funktionieren.
Mach es einfach so:
PlayerText:textdraw[6][MAX_PLAYERS];Dann musst du natürlich unten auch alles anpassen: (Beispiel)
PlayerTextDrawHide(playerid, textdraw[0][playerid]);
PlayerTextDrawHide(playerid, textdraw[1][playerid]);
PlayerTextDrawHide(playerid, textdraw[2][playerid]);
... -
Habe alles umgeändert geht trotzdem nicht woran liegt es wohl?
-
Habe alles umgeändert geht trotzdem nicht woran liegt es wohl?
Poste den neuen Code nochmal.
-
Code
Alles anzeigenpublic OnPlayerStateChange(playerid, newstate, oldstate) { if((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER)) { PlayerTextDrawShow(playerid, textdraw[0][playerid]); PlayerTextDrawShow(playerid, textdraw[1][playerid]); PlayerTextDrawShow(playerid, textdraw[2][playerid]); PlayerTextDrawShow(playerid, textdraw[3][playerid]); PlayerTextDrawShow(playerid, textdraw[4][playerid]); PlayerTextDrawShow(playerid, textdraw[5][playerid]); } if((oldstate == PLAYER_STATE_DRIVER) || (oldstate == PLAYER_STATE_PASSENGER)) { PlayerTextDrawHide(playerid, textdraw[0][playerid]); PlayerTextDrawHide(playerid, textdraw[1][playerid]); PlayerTextDrawHide(playerid, textdraw[2][playerid]); PlayerTextDrawHide(playerid, textdraw[3][playerid]); PlayerTextDrawHide(playerid, textdraw[4][playerid]); PlayerTextDrawHide(playerid, textdraw[5][playerid]); }
Code
Alles anzeigenfor(new i=0; i<MAX_PLAYERS; i++) { textdraw[2][i] = CreatePlayerTextDraw(i, 561.000000, 354.000000, ""); PlayerTextDrawFont(i, textdraw[2][i], 2); PlayerTextDrawLetterSize(i, textdraw[2][i], 0.183329, 1.300001); PlayerTextDrawTextSize(i, textdraw[2][i], 400.000000, 17.000000); PlayerTextDrawSetOutline(i, textdraw[2][i], 1); PlayerTextDrawSetShadow(i, textdraw[2][i], 4); PlayerTextDrawAlignment(i, textdraw[2][i], 2); PlayerTextDrawColor(i, textdraw[2][i], -1); PlayerTextDrawBackgroundColor(i, textdraw[2][i], 255); PlayerTextDrawBoxColor(i, textdraw[2][i], 50); PlayerTextDrawUseBox(i, textdraw[2][i], 0); PlayerTextDrawSetProportional(i, textdraw[2][i], 1); PlayerTextDrawSetSelectable(i, textdraw[2][i], 0); }
CodePlayerTextDrawHide(playerid, textdraw[0][playerid]); PlayerTextDrawHide(playerid, textdraw[1][playerid]); PlayerTextDrawHide(playerid, textdraw[2][playerid]); PlayerTextDrawHide(playerid, textdraw[3][playerid]); PlayerTextDrawHide(playerid, textdraw[4][playerid]); PlayerTextDrawHide(playerid, textdraw[5][playerid]);
-
Lass das Textdraw mal bei OnPlayerConnect erstellen.
-
Code
public OnPlayerConnect(playerid) { PlayerTextDrawShow(playerid, textdraw[0][playerid]); PlayerTextDrawShow(playerid, textdraw[1][playerid]); PlayerTextDrawShow(playerid, textdraw[2][playerid]); PlayerTextDrawShow(playerid, textdraw[3][playerid]); PlayerTextDrawShow(playerid, textdraw[4][playerid]); PlayerTextDrawShow(playerid, textdraw[5][playerid]);
Geht immer noch nicht
-
Code
public OnPlayerConnect(playerid) { PlayerTextDrawShow(playerid, textdraw[0][playerid]); PlayerTextDrawShow(playerid, textdraw[1][playerid]); PlayerTextDrawShow(playerid, textdraw[2][playerid]); PlayerTextDrawShow(playerid, textdraw[3][playerid]); PlayerTextDrawShow(playerid, textdraw[4][playerid]); PlayerTextDrawShow(playerid, textdraw[5][playerid]);
Geht immer noch nicht
Du sollt die Textdraws dort erstellen und nicht anzeigen ._.
for(new i=0; i<MAX_PLAYERS; i++)
{
textdraw[2][i] = CreatePlayerTextDraw(i, 561.000000, 354.000000, "");
PlayerTextDrawFont(i, textdraw[2][i], 2);
PlayerTextDrawLetterSize(i, textdraw[2][i], 0.183329, 1.300001);
PlayerTextDrawTextSize(i, textdraw[2][i], 400.000000, 17.000000);
PlayerTextDrawSetOutline(i, textdraw[2][i], 1);
PlayerTextDrawSetShadow(i, textdraw[2][i], 4);
PlayerTextDrawAlignment(i, textdraw[2][i], 2);
PlayerTextDrawColor(i, textdraw[2][i], -1);
PlayerTextDrawBackgroundColor(i, textdraw[2][i], 255);
PlayerTextDrawBoxColor(i, textdraw[2][i], 50);
PlayerTextDrawUseBox(i, textdraw[2][i], 0);
PlayerTextDrawSetProportional(i, textdraw[2][i], 1);
PlayerTextDrawSetSelectable(i, textdraw[2][i], 0);
} -
Danke dir!♥
Wenn dort Wörter mit Leerzeichen sind dann ist das so
Hotring Racer ( so eigentlich )
Hotring
Racer ( so zeigt er es ) -
Danke dir!♥
Wenn dort Wörter mit Leerzeichen sind dann ist das so
Hotring Racer ( so eigentlich )
Hotring
Racer ( so zeigt er es )Da musst du das Leerzeichen auslesen und mit einem "_" ersetzen.
Edit// Hab Grade gesehen das du die Fahrzeug Namen vordefiniert hast. Dann ändere die Leerzeichen einfach in _ um:
getVehicleName(v_model)
{
new carNames[212][] = {"Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
"Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
"Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
"Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
"Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
"Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
"Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
"Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
"Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
"Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
"Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
"Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
"Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
"Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
"Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
"Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
"Stair Trailer","Boxville","Farm Plow","Utility Trailer"};
new string[60];
format(string, sizeof(string), "%s", carNames[v_model-400]);
return string;
} -
Aber _ sieht hässlich aus gibt es da nicht eine andere Lösung das da wirklich ein Leerzeichen ist?
-
Aber _ sieht hässlich aus gibt es da nicht eine andere Lösung das da wirklich ein Leerzeichen ist?
Versuch es einfach mal, es sollte trotzdem ein Leerzeichen angezeigt werden.
-
Du sollt die Textdraws dort erstellen und nicht anzeigen ._.
Danke dir!♥
for(new i=0; i<MAX_PLAYERS; i++)
Achtung!
Bei OnPlayerConnect nicht den Code mit Schleife für alle Spieler einfügen, sonst wird jedes mal wenn ein Spieler den Server betritt, für alle Spieler ein neues Textdraw angelegt.Der Code muss so sein:
textdraw[2][playerid] = CreatePlayerTextDraw(playerid, 561.000000, 354.000000, "");
PlayerTextDrawFont(playerid, textdraw[2][playerid], 2);
//etc...Wenn dort Wörter mit Leerzeichen sind dann ist das so
Erhöhe die 17 bei der PlayerTextDrawTextSize zu 50 oder so.
-
Ich will aber nicht das es so riesig ist soll ja so sein wie es halt ist
& danke für die verbesserung vom Textdraw!♥