[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Wie kann man den Bildschirm weiß machen ?
Über ein Textdraw oder wäre es auch anders Möglich ?Hatte mal so ein System geschrieben gehabt:
C
Alles anzeigenstatic PlayerText:blitz[MAX_PLAYERS]; stock Blitzer_Init(playerid) //z.B. bei OnPlayerConnect aufrufen { blitz[playerid] = CreatePlayerTextDraw(playerid,650.000000, 0.000000, !"Neues Textdraw"); PlayerTextDrawBackgroundColor(playerid,blitz[playerid], 255); PlayerTextDrawFont(playerid,blitz[playerid], 1); PlayerTextDrawLetterSize(playerid,blitz[playerid], 0.500000, 25.000000); PlayerTextDrawColor(playerid,blitz[playerid], -1); PlayerTextDrawSetOutline(playerid,blitz[playerid], 0); PlayerTextDrawSetProportional(playerid,blitz[playerid], 1); PlayerTextDrawSetShadow(playerid,blitz[playerid], 1); PlayerTextDrawUseBox(playerid,blitz[playerid], 1); PlayerTextDrawBoxColor(playerid,blitz[playerid], -120); PlayerTextDrawTextSize(playerid,blitz[playerid], -10.000000, 0.000000); return 1; } stock Blitz_Player(playerid) //Wenn der Spieler geblitzt wurde { PlayerTextDrawShow(playerid,blitz[playerid]); GameTextForPlayer(playerid,!"~r~Geblitzt!",5000,5); PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0); //Süßer sound SetTimerEx(!"@remove",1500,0,!"i",playerid); } static @remove(i);@remove(i) return PlayerTextDrawHide(i,blitz[i]);
Mir würde auch kein anderer vernünftiger Weg einfallen das ohne TextDraw zu lösen...wüsste aber auch nicht wieso
-
Beitrag von PlayEasy ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Fehler Gefunden ^^ (). -
Danke dir
Hab nur gedacht kannst man auch anders Lösen, man kann Ja fragenHabe eine andere frage wie mache ich das dass der Blitzer den Spieler angucken muss ?
Sprich habe Links und Rechts ein Blitzer und will dass der Blitzer der für meine Fahrbahn zuständig ist ( der zur mir gerichtet ist ) dann auch meine Fahrbahn Blitzt.
So erstelle ich meine BlitzerCodeBlitzi[i][blitz_ID] = CreateDynamicObject(18880, Blitzi[i][blitz_x], Blitzi[i][blitz_y], Blitzi[i][blitz_z], 0.0, 0.0, Blitzi[i][blitz_r]);
Habe noch ein Problem festgestellt.
Irgendwie wird die Kilometer Anzeige "über dem Weißen angezeigt" -
Irgendwie wird die Kilometer Anzeige "über dem Weißen angezeigt"
Du musst das TextDraw als letztes erstellen mit dem Blitzer, dann wird es auch über allen angezeigt
Habe eine andere frage wie mache ich das dass der Blitzer den Spieler angucken muss ?
Wäre es nicht einfacher....den Blitzer Trigger point nur auf der einen Spur zu halten, wo er auch in die Richtung fährt?
Ansonsten kannst du das anhand der [wiki]GetVehicleZAngle[/wiki] ja einfach prüfen, in welche Richtung das Auto zeigen sollte, damit der Blitzer reagiert
-
Bekomme hier immer den Befehl das HX, HY HZ und hInterior nie benutzt wurden in der letzten Zeile wo es benutzt wurde.
Den Widerspruch hört man schon raus
warning 204: symbol is assigned a value that is never used: "hInterior"
warning 204: symbol is assigned a value that is never used: "HZ"
warning 204: symbol is assigned a value that is never used: "HY"
warning 204: symbol is assigned a value that is never used: "HX" -
-
Also meinst du einfach nur abfragen ob das Auto in die Richtung fährt über die Z Rotation ?
Jaa...das ist doch das, was du wissen wolltest
Darüber kannst du prüfen, ob das Auto auf den Blitzer zu fährt...oder eben nicht
Den Widerspruch hört man schon raus
Da ist kein Widerspruch, du benutzt es nicht.
Du hast die Variablen deklariert und gibst ihnen einen Wert.
Aber du fragst den Wert ja nirgends ab, also benutzt du die Variable nicht, du weist ihnen nur einen Wert zu
-
Wie kann ich am besten ein Erfahrungslevel System erstellen, wo die User Erfahrungspunkte bekommen und dadurch das Level steigt ?
Hab Grade keine Idee wie ich es am besten Umsetzen soll :$
-
Wie kann ich am besten ein Erfahrungslevel System erstellen, wo die User Erfahrungspunkte bekommen und dadurch das Level steigt ?
Das kommt darauf an, wie sie diese Erfahrungspunkte erhalten sollen.
Aber üblicherweise passiert das ja über dein "PayDay".
Du kannst also einfach eine Spieler-Variable wie das Level machen, die nennst du dann z.b. pExp.
C//Damit gibst du an, dass der Spieler Pro Level 4 XP braucht //Also um auf Level 2 zu kommen 4 //Um auf level 3 zu kommen 8 //Um auf Level 4 zu kommen 16 //Kannst den Faktor natürlich beliebig Variieren stock GetXPNeeded(playerid) { return 4*SpielerInfo[playerid][pLevel]; }
Dann gibst du dem Spieler pro PayDay einfach immer einen Xp.. -
Hey,
Habe mal eine Frage ich möchte gerne verschiedene Autohaus Bizen machen..
So käuft man ein Fahrzeug:
C
Alles anzeigencase DIALOG_BUYPRIVATEVEHICLE: { new string[128]; if(!response) { UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); return 1; } if(response) { for(new i=0;i<sizeof(autoVehicles);i++) { if(GetPlayerVehicleID(playerid) == autoVehicles[i]) { if(Spieler[playerid][pLevel] < VehicleShop[i][Level]) { format(string, sizeof(string), "{33CCFF}Dieses Fahrzeug kannst du erst ab Level %d kaufen.", VehicleShop[i][Level]); SendClientMessage(playerid, COLOR_WHITE, string); UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); return 1; } if((GetMoney(playerid) - VehicleShop[i][Preis]) < 0) { SendClientMessage(playerid, COLOR_WHITE, ERROR_MONEY); UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); return 1; } if(GetPlayerVehicleCount(playerid) >= MAX_PLAYER_VEHICLES) { SendClientMessage(playerid, COLOR_WHITE, "Du kannst keine weiteren Fahrzeuge kaufen!"); SetCameraBehindPlayer(playerid); UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective); return 1; } new playerName[MAX_PLAYER_NAME+1], nPlate[32]; GetPlayerName(playerid, playerName, sizeof(playerName)); format(nPlate, sizeof(nPlate), "%c%c 1%d", toupper(playerName[0]), toupper(playerName[1]), randomex(10000, 99999)); GiveMoney(playerid, -VehicleShop[i][Preis]); Others[Staatskasse] += VehicleShop[i][Preis]; format(string, sizeof(string), "{33CCFF}Dein Fahrzeug (%s) steht am Autohaus bereit.", VehicleShop[i][Name]); SendClientMessage(playerid, COLOR_WHITE, string); CreatePlayerVehicle(playerid, VehicleShop[i][modelid], VehicleShop[i][buySpawnX], VehicleShop[i][buySpawnY], VehicleShop[i][buySpawnZ], VehicleShop[i][buySpawnA], nPlate, (VehicleShop[i][Preis]/2), 0, 1, 1); SetCameraBehindPlayer(playerid); UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective); return 1; } } } }
Wie kann ich den Autohaus mit der zugewiesenen ID das geld in die Biz kasse geben?
abfrage für den kauf: VehicleShop[i][AutohausID] //Um die ID zu erfahren des Autohauses
Biz[1][bKasse] += VehicleShop[i][Preis]; //Die eins ist dafür das es in das Biz ein soll. aber da es verschiedene Bizen gibt kann man ja nicht allen das Geld geben nur da wo er halt das Fahrzeug gekauft hat wäre ja unfair
-
Du weißt ja, an welchem Biz er sich das Auto gekauft hat, als er es sich kauft...
Du hast also 2 Möglichkeiten...
Entweder du speicherst das in einem PVar und fügst das da einfach ein..
oooder du prüfst die Positionen von dem Biz und checkst, an welchem er sich befindet..und hast so die ID.
-
Das heitßt auf deutsch gesagt.
if(IsPlayerInRangeOfPoint(playerid, 50.0, 953.2609, -1741.4628, 17.0195))
{
Biz[9][bKasse] += VehicleShop[i][Preis]/2;
}Meinst ungefähr so wüsste sonst den weg nicht weiter das Business befindet sich da und wen er in den umkreis ist kann er ja kaufen?
-
Meinst ungefähr so wüsste sonst den weg nicht weiter das Business befindet sich da und wen er in den umkreis ist kann er ja kaufen?
Zum Beispiel so
Musst nur schauen, dass in diesem 50m Radius, nicht zufällig noch ein anderes Autohaus liegt
-
Man könnte in der theorie ja eine arena erstellen wo er sich befinden muss oder etwa nicht?
Dann könnte das ja auch klappen? -
Man könnte in der theorie ja eine arena erstellen wo er sich befinden muss oder etwa nicht?
Dann könnte das ja auch klappen?Natürlich
Gibt viele Möglichkeiten das zu machen...
Kannst auch einfach Checken ob das Auto zu dem Biz gehört...
-
E:
AddPlayerClass(283,2067.0037,1367.3481,10.6719,308.5652,0,0,0,0,0,0); // Autohaus OldTimer Ecke 1
AddPlayerClass(283,2237.4001,1523.3188,10.8125,145.5911,0,0,0,0,0,0); // Autohaus OldTimer Ecke 2AddPlayerClass(283,1025.1053,-1787.5189,13.8612,28.0382,0,0,0,0,0,0); // Autohaus Intercars Ecke 1
AddPlayerClass(283,924.6554,-1579.4823,13.5469,224.4016,0,0,0,0,0,0); // Autohaus Intercars Ecke 2Hab dazu auch eine Zone erstellen lassen um zu schaun ob dies auch soweit korrekt ist.
Dies sind die Abfragen der Area und zugleich die Bizen dabei.
Habe die Bizen geprüft die sind korrekt und Funktionieren auch.C
Alles anzeigenif(IsPlayerInArea(playerid, 1025.1053, -1579.4823, 924.6554, -1787.5189)) //Intercars Autohaus { Biz[9][bKasse] += VehicleShop[i][Preis]/2; Biz[9][bProdukte] --; UpdateBizLabel(9, Biz[9][bOwned]); } if(IsPlayerInArea(playerid, 2067.0037, 1523.3188, 2237.4001, 1367.3481)) //Oldtimer Autohaus { Biz[10][bKasse] += VehicleShop[i][Preis]/2; Biz[10][bProdukte] --; UpdateBizLabel(10, Biz[10][bOwned]); }
Nun kommen wir zu den Teil vom stock siehe hier:
Cstock IsPlayerInArea(playerid, Float:zminX, Float:zminY, Float:zmaxX, Float:zmaxY) { new Float:zoneX, Float:zoneY, Float:zoneZ; GetPlayerPos(playerid, zoneX, zoneY, zoneZ); if(zoneX >= zminX && zoneX <= zmaxX && zoneY >= zminY && zoneY <= zmaxY) { return 1; } return 0; }
Nun zu erklärung:
Ich habe nun beide Autohäuser eingefügt und die Area dazu.
Nun Versuche ich Frustrierend ein Auto zu kaufen in der hoffung das die hälte davon in die Biz kasse fließt.
Aber dies ist nicht der fall.. -
E:
AddPlayerClass(283,2067.0037,1367.3481,10.6719,308.5652,0,0,0,0,0,0); // Autohaus OldTimer Ecke 1AddPlayerClass(283,2237.4001,1523.3188,10.8125,145.5911,0,0,0,0,0,0); // Autohaus OldTimer Ecke 2AddPlayerClass(283,1025.1053,-1787.5189,13.8612,28.0382,0,0,0,0,0,0); // Autohaus Intercars Ecke 1AddPlayerClass(283,924.6554,-1579.4823,13.5469,224.4016,0,0,0,0,0,0); // Autohaus Intercars Ecke 2
Hab dazu auch eine Zone erstellen lassen um zu schaun ob dies auch soweit korrekt ist.
Dies sind die Abfragen der Area und zugleich die Bizen dabei.
Habe die Bizen geprüft die sind korrekt und Funktionieren auch.C
Alles anzeigenif(IsPlayerInArea(playerid, 1025.1053, -1579.4823, 924.6554, -1787.5189)) //Intercars Autohaus { Biz[9][bKasse] += VehicleShop[i][Preis]/2; Biz[9][bProdukte] --; UpdateBizLabel(9, Biz[9][bOwned]); } if(IsPlayerInArea(playerid, 2067.0037, 1523.3188, 2237.4001, 1367.3481)) //Oldtimer Autohaus { Biz[10][bKasse] += VehicleShop[i][Preis]/2; Biz[10][bProdukte] --; UpdateBizLabel(10, Biz[10][bOwned]); }
Nun kommen wir zu den Teil vom stock siehe hier:Cstock IsPlayerInArea(playerid, Float:zminX, Float:zminY, Float:zmaxX, Float:zmaxY) { new Float:zoneX, Float:zoneY, Float:zoneZ; GetPlayerPos(playerid, zoneX, zoneY, zoneZ); if(zoneX >= zminX && zoneX <= zmaxX && zoneY >= zminY && zoneY <= zmaxY) { return 1; } return 0; }
Nun zu erklärung:
Ich habe nun beide Autohäuser eingefügt und die Area dazu.
Nun Versuche ich Frustrierend ein Auto zu kaufen in der hoffung das die hälte davon in die Biz kasse fließt.
Aber dies ist nicht der fall..Zeig mal bitte deinen Befehl / Funktion wo du erläuterst wo das Geld von den Autos hin geht.
-
C
Alles anzeigencase DIALOG_BUYPRIVATEVEHICLE: { new string[128]; if(!response) { UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); return 1; } if(response) { for(new i=0;i<sizeof(autoVehicles);i++) { if(GetPlayerVehicleID(playerid) == autoVehicles[i]) { if(Spieler[playerid][pLevel] < VehicleShop[i][Level]) { format(string, sizeof(string), "{33CCFF}Dieses Fahrzeug kannst du erst ab Level %d kaufen.", VehicleShop[i][Level]); SendClientMessage(playerid, COLOR_WHITE, string); UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); return 1; } if((GetMoney(playerid) - VehicleShop[i][Preis]) < 0) { SendClientMessage(playerid, COLOR_WHITE, ERROR_MONEY); UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); return 1; } if(GetPlayerVehicleCount(playerid) >= MAX_PLAYER_VEHICLES) { SendClientMessage(playerid, COLOR_WHITE, "Du kannst keine weiteren Fahrzeuge kaufen!"); SetCameraBehindPlayer(playerid); UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective); return 1; } new playerName[MAX_PLAYER_NAME+1], nPlate[32]; GetPlayerName(playerid, playerName, sizeof(playerName)); format(nPlate, sizeof(nPlate), "%c%c 1%d", toupper(playerName[0]), toupper(playerName[1]), randomex(10000, 99999)); GiveMoney(playerid, -VehicleShop[i][Preis]); Others[Staatskasse] += VehicleShop[i][Preis]; if(IsPlayerInArea(playerid, 1025.1053, -1579.4823, 924.6554, -1787.5189)) //Intercars Autohaus { Biz[9][bKasse] += VehicleShop[i][Preis]/2; Biz[9][bProdukte] --; UpdateBizLabel(9, Biz[9][bOwned]); } if(IsPlayerInArea(playerid, 2067.0037, 1523.3188, 2237.4001, 1367.3481)) //Oldtimer Autohaus { Biz[10][bKasse] += VehicleShop[i][Preis]/2; Biz[10][bProdukte] --; UpdateBizLabel(10, Biz[10][bOwned]); } format(string, sizeof(string), "{33CCFF}Dein Fahrzeug (%s) steht am Autohaus bereit.", VehicleShop[i][Name]); SendClientMessage(playerid, COLOR_WHITE, string); CreatePlayerVehicle(playerid, VehicleShop[i][modelid], VehicleShop[i][buySpawnX], VehicleShop[i][buySpawnY], VehicleShop[i][buySpawnZ], VehicleShop[i][buySpawnA], nPlate, (VehicleShop[i][Preis]/2), 0, 1, 1); SetCameraBehindPlayer(playerid); UnfreezePlayer(playerid); RemovePlayerFromVehicle(playerid); GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective); return 1; } } } }
-
Schau dir mal die Parameter deiner IsPlayerInArea an und vergleiche sie mit deinen Koordinaten, an einigen Stellen sind die vertauscht.
Parameter der Funktion:
stock IsPlayerInArea(playerid, Float:zminX, Float:zminY, Float:zmaxX, Float:zmaxY)minimal X
minimal Y
maximal X
maximal YUnd hier deine Aufrufe der Funktion:
if(IsPlayerInArea(playerid, 1025.1053, -1579.4823, 924.6554, -1787.5189)) //Intercars Autohaus
maximal X
maximal Y
minimal X
minimal Yif(IsPlayerInArea(playerid, 2067.0037, 1523.3188, 2237.4001, 1367.3481)) //Oldtimer Autohaus
minimal X
maximal Y
maximal X
minimal Y -