[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Musst aber noch die Kollisionen entfernen weil genau das ist die unsichtbare Wand..
-
Also "Load with Colls" okei, danke
-
Moin,
Ich hätte da so ne kleine Frage
Ich habe für den Spieler ein Textdraw erstellt wenn er als Fahrer einsteigt (geht) nun wollte ich es aber nach 5 Sekunden wider zerstören lassen (geht nicht (bekomme "tag mismatch"))Hier der Code vlt könnt ihr mir ja helfen, finde den fehler nicht
Code
Alles anzeigennew Text:VehicleInfoDraw[5]; public OnPlayerStateChange(playerid, newstate, oldstate) { if(GetPlayerState(playerid)== PLAYER_STATE_DRIVER) { for(new i = 0; i < sizeof(VehicleInfoDraw); i++) TextDrawShowForPlayer(playerid, VehicleInfoDraw[i]); SetTimerEx("FahrzeugInformationen", 5000, 0, "%d", playerid); } return 1; } //Fahrzeug Informationen löschen forward FahrzeugInformationen(playerid); public FahrzeugInformationen(playerid) { for(new i; i<sizeof(VehicleInfoDraw); i++) { PlayerTextDrawDestroy(playerid,VehicleInfoDraw[i]); //Hier ist der Tag Mismatch } return 1; }Ich hoffe ihr könnt mir helfen und vielen dank im Voraus

Mit freundlichen Grüßen
Pytroxis -
Eventuell mal mit PlayerText:VehicleInfoDraw[MAX_PLAYERS][5]; versuchen? Bin aber nicht sicher
Müsstest dann immer so schreiben: VehicleInfoDraw[playerid][i] -
Code
Alles anzeigenCMD:hacken(playerid, params[]) { new vehicleid = GetPlayerVehicleID(playerid); if(!(IsAFraktionsVeh(vehicleid) == INVALID_VEHICLE_ID)) { if(IsValidVehicle(vehicleid)) { new fV = IsAFraktionsVeh(vehicleid), string[128]; if(Spieler[playerid][pFraktion] == fVehicle[fV][vehFraktion]) { if(!IsPlayerInArea(playerid, 1174.9628,-1888.9697,1905.4333,-1342.0233)) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Zone!"); { Spieler[playerid][pWheelTime] = 30; SetTimerEx("WantedHacken", 30000, 0, "i", playerid); if(Spieler[playerid][pWheelTime] > 1) { format(string, sizeof(string), "~b~Hackvorgang:~w~%d", Spieler[playerid][pWheelTime]); GameTextForPlayer(playerid, string, 30000, 5); } } } } } return 1; } forward WantedHacken(playerid); public WantedHacken(playerid) { new pID, string[128]; new wanteds = Spieler[pID][pWanteds]; OnWantedChange(pID, Spieler[pID][pWanteds], (Spieler[pID][pWanteds]-1)); Spieler[pID][pWanteds] -= 1; format(string, sizeof(string), "%s hat einen Eintrag entfernt. Verbliebend: %d.", GetName(pID), wanteds); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); format(string, sizeof(string), "Dir wurde ein Eintrag von Wheelman %s entfernt. Verbleibend: %d", GetName(playerid), wanteds); SendClientMessage(pID, COLOR_LIGHTBLUE, string); UpdateWantedTD(pID); return 1; }Hey, wen ich /hacken eingebe wird der Hackvorgang: 30 nicht runtergezählt bleibt einfach stehn und der GameText verschwindet wider an was liegt das?
Ich finde den Fehler einfach nicht es Funktioniert auch nicht warum auch immer... -
Beitrag von Pytroxis ()
Dieser Beitrag wurde vom Autor gelöscht (). -
-
[ Dachdecker
Habe das gemacht und bekomme im Editor nun keine Fehler mehr allerdings sagt mir nun der Server wenn ich es nutze:Code[14:16:09] [debug] Run time error 4: "Array index out of bounds" [14:16:09] [debug] Accessing element at index 5 past array upper bound 4 [14:16:09] [debug] AMX backtrace: [14:16:09] [debug] #0 0000a91c in public OnPlayerStateChange (0, 2, 1) from test.amx
Allerdings ist theoretisch alles richtig gesetzt und der Index ist auch groß genug allerdings weiß ich nicht mehr was ich noch machen kann...Code
Alles anzeigennew PlayerText:VehicleInfoDraw[MAX_PLAYERS][5]; // Es werden auch nur 5 genutzt public OnPlayerStateChange(playerid, newstate, oldstate) { if(GetPlayerState(playerid)== PLAYER_STATE_DRIVER) { for(new i=0; i<sizeof(VehicleInfoDraw); i++) PlayerTextDrawShow(playerid,VehicleInfoDraw[playerid][i]); SetTimerEx("DestroyCarInfo", 5000, 0, "%d", playerid); } return 1; } //Fahrzeug Informationen löschen forward DestroyCarInfo(playerid); public DestroyCarInfo(playerid) { for(new i=0; i<sizeof(VehicleInfoDraw); i++) PlayerTextDrawDestroy(playerid,VehicleInfoDraw[playerid][i]); return 1; } -
Versuchs mal mit "i"
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(GetPlayerState(playerid)== PLAYER_STATE_DRIVER)
{
for(new i=0; i<sizeof(VehicleInfoDraw); i++) PlayerTextDrawShow(playerid,VehicleInfoDraw[playerid][i]);
SetTimerEx("DestroyCarInfo", 5000, 0, "i", playerid);
}
return 1;
}
//Fahrzeug Informationen löschen
forward DestroyCarInfo(playerid);
public DestroyCarInfo(playerid)
{
for(new i=0; i<sizeof(VehicleInfoDraw); i++) PlayerTextDrawDestroy(playerid,VehicleInfoDraw[playerid][i]);
return 1;
} -
@Dachdecker
Leider immer noch der selbe Fehler
Danke aber schon für deine Hilfe bisher und für deine Verbesserung mit dem i
MfG
-
Leider immer noch der selbe Fehler
Das Problem liegt hier
for(new i=0; i<sizeof(VehicleInfoDraw); i++) PlayerTextDrawDestroy(playerid,VehicleInfoDraw[playerid][ i ]);
sizeof(VehicleInfoDraw) ist MAX_PLAYERS
Aber du willst ja den size von "sizeof(VehicleInfoDraw[])"
-
Joa...hab mal kurz was gebastelt...
Das hier wäre eine Möglichkeit: http://pastebin.com/JYQJcjuLViel Spaß

Danke schonmal dafuer
Leider habe ich beim Erweitern einige Probleme
Wo ist der Haken?
Der Compiler haengt sich auf, bzw. hoert nicht mehr auf zu Compilen wenn ich folgendes drin habe.C
Alles anzeigenstock static postCredits[]="~w~~h~~h~Post Production"#A#"\ ~w~~h~~h~Editorial and Post Production Executive"#A#"\ ~w~ Knogle "#A#"\ ~g~~h~~h~Post Production Manager~w~Knogle"#A#"\ ~w~Knogle"#A#"\ ~w~AOR Supervisor"#A#"\ ~w~Knogle"#A#"\ ~w~ Sound Effect Editors"#A#"\ ~w~Knogle"#A#"\ ~w~Post Production Coordinator"#A#"\ ~w~ Knogle"#A#"\ ~w~ Lead Programer"#A#"\ ~w~ Knogle"#A#"\ ~w~ Map Artists"#A#"\ ~w~ Knogle"#A#"\ ~w~ Level Designers"#A#"\ ~w~Knogle"; -
Der String ist zu groß, dass du ihn direkt eingeben kannst...
Machs mal so:
C
Alles anzeigennew postCredits[512]; //Und dann unter OnFilterScriptInit strcat(postCredits,"~w~~h~~h~Post Production"#A); strcat(postCredits,"~w~~h~~h~Editorial and Post Production Executive"#A); strcat(postCredits,"~w~ Knogle "#A); strcat(postCredits,"~g~~h~~h~Post Production Manager~w~Knogle"#A); strcat(postCredits,"~w~Knogle"#A); strcat(postCredits,"~w~AOR Supervisor"#A); strcat(postCredits,"~w~Knogle"#A); strcat(postCredits,"~w~ Sound Effect Editors"#A); strcat(postCredits,"~w~Knogle"#A); strcat(postCredits,"~w~Post Production Coordinator"#A); strcat(postCredits,"~w~ Knogle"#A); strcat(postCredits,"~w~ Lead Programer"#A); strcat(postCredits,"~w~ Knogle"#A); strcat(postCredits,"~w~ Map Artists"#A); strcat(postCredits,"~w~ Knogle"#A); strcat(postCredits,"~w~ Level Designers"#A); strcat(postCredits,"~w~Knogle"); -
Der String ist zu groß, dass du ihn direkt eingeben kannst...
Habe mal eine Frage zu dem ganzen,
A ist ja als "~n~~n~~n~~n~~n~~n~~n~" definiert.
Nach dem String ist "#A" ja mit einem Doppelkreuz definiert.
Wo ist der Unterschied zwischen "#A" und einfach nur einem normalen "A" ? -
ich bekomme in der Armybase die Kollision nicht weg. Ich fahr immer gegen unsichtbare Wände, was kann ich tun
-
Wo ist der Unterschied zwischen "#A" und einfach nur einem normalen "A" ?
Es gibt keinen

Kannst anstatt "x" auch immer #x schreiben.
Zum Beispiel:
if(!strcmp(cmdtext, "/Hallo", true))//ist das selbe wie:
if(!strcmp(cmdtext,#/Hallo,true)) -
Kannst anstatt "x" auch immer #x schreiben.
Danke dir !

-
Nicht direkt Scripting bezogen, aber ist es normal, dass an Spieler attached 3D Labels je nach Distanz von Spieler zu Spieler sich in der höhe verschieben, da sie nicht skaliert werden?
-
Nicht direkt Scripting bezogen, aber ist es normal, dass an Spieler attached 3D Labels je nach Distanz von Spieler zu Spieler sich in der höhe verschieben, da sie nicht skaliert werden?
Soweit ich weiß ist das normal. War bei mir auch so.
Danke dir !

Warum auch immer man sich seinen Code absichtlich unleserlich macht bliebt hier das Rätsel.
Schreib das bitte auf keinen Fall so. Du weißt zwar jetzt dass es geht und was es macht, nutze das aber bitte nicht.Erstens kennen 99,99% diese Schreibweise nicht und zweitens macht es den Code unleserlich, vor allem deshalb weil das Syntax Highlighting für Strings nicht funktioniert.
Und drittens klappt es nicht, wenn eingebettete Farbcodes im String sind. -
