Beiträge von Mogly1
-
-
Wenn du das einzelnd machen willst.
Code
Alles anzeigenif(Spieler[playerid][pBank] >= 5000000) { //steuern dazu geben oder so Spieler[playerid][pBank] -= floatround(ReichenSteuer*fsteuern[pReichensteuer]); Others[Staatskasse] += ReichenSteuer; } if(Spieler[playerid][pHouseRent] != 0) { //Wenn er eingemitet ist, miete abziehen Spieler[playerid][pBank] -= MietPreis; } if(Spieler[playerid][pHouseKey] != 0) { //ka. glaube wenn er nen hause hat dann halt mietpreise dazu geben oder stromkosten abziehen :D:D } //und am ende dann erst den Text anzeigenlassen evt. format(string, sizeof(string), ""COLOR_HEX_WHITE"Lohn: "COLOR_HEX_GREEN"%d$ "COLOR_HEX_WHITE"| Lohnsteuer: "COLOR_HEX_RED"-%d$ {FFFFFF}| KFZ-Steuer: {AA3333}-%d$", (Lohn+steuerGeld), steuerGeld, SteuerKFZ);.... -
♦Mindestalter: 16 Jahre♦
-> Ausnahmen sind gestattet, Vorraussetzungen sind Geistige Reifeund RP Verständniss
Also, 18 Jahre sollte schon ein Muss sein.
Das Spiel GTA V ist doch auch erst ab 18 oder?
Und wenn ihr dann auch noch ausnahmen macht...
Sagen wir ein 14-Jähriger würde die Kreterin erfüllen und ich würde auf dem Server mit einem 14-Jährigen spielen, ob wohl GTA V erst ab 18 ist.
Da würde ich mir schon etwas blöd vorkommen.
Ansonsten wollte ich noch in Erfahrung bringen ob Mods auf dem Server sind(Fahrzeuge, Skins...)?
-
Aber da fehlt doch noch ganz viel?
Das sind bis jetzt nur definitionen....
Also ich kann dir hier mein Video als Hinweis geben. Damals war ich kein MySQL Profi, aber wenn du es einfach nach Tippst und ein wenig verstehst, kommst du ganz schnell klar damit
Video nutzt ältere mysql, Version:Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.Sonst verweise ich ganz gerne noch hier rauf:
[jTuT] MySQL R41-4 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)
Aber falls du noch weiteren Code hast mit connect(in OngamemodeInit) oder OnPlayerSave(oder so) dann kann man dir da bestimmt noch weiter helfen.
-
Also ganz Simple erklärt, du erstellst eine neue variable, weißt dieser dann dem Fahrzeug zu und fragst beim einstiegen oder beim Hinsetzen ab, ob er in der Fraktion ist am besten benutzt du dafür OnplayerStateChange
Vor weg, der Code ist kommenteir, ich hoffe man kann es erkennen....
Simple dann so:
die 10 steht für die maximalen Fahrzeuge, kannst du natürlich erhöhen, diese variablen sind dann ein Array, ein Array fängt immer mit 0 an zu zählen, dass bedeutet Minimum wäre ballas_Car[0] und Max ballas_Car[9], alles darüber gibt Fehler, es sei denn du erhöhst die 10

unter OnGameModeInit dann
Codeballas_Car[0]=AddStaticVehicle(405,1220.4780,-928.0273,42.9246,181.7324,36,1); ballas_Car[1]=AddStaticVehicle(411,1230.4780,-928.0273,42.9246,181.7324,36,1); ballas_Car[2]=AddStaticVehicle(412,1240.4780,-928.0273,42.9246,181.7324,36,1); ballas_Car[3]=AddStaticVehicle(413,1250.4780,-928.0273,42.9246,181.7324,36,1); grove_Car[0]=AddStaticVehicle(411,1260.4780,-928.0273,42.9246,181.7324,36,1);Als Beispiel, hier kannst du wie gesagt bis zu der zahl neun gehen oder du erhöhst die 10

dann bei OnPlayerStateChange
Code
Alles anzeigenif(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)//Fragt ab ob wir Fahrer oder Passagier sind, bedeutet wenn du willst das man sich als Beifahrer rein setzen darf, entferne "|| newstate == PLAYER_STATE_PASSENGER" { new vehicle = GetPlayerVehicleID(playerid);//gibt die Aktuelle Id vom Fahrzeug, indem wir sitzen zurück for(new i=0; i<sizeof(ballas_Car);i++)//geht alle Fahrzeuge durch von den Ballas { if(vehicle == ballas_Car[i])//Fragt ab, ob wir in einem ballas Fahrzeug sitzen { if(playerFaction[playerid]!=2)//Fragt ab ob wir nicht in der Fraktion von der Ballas sind, Bitte anpassen zu deinem System!!!!! { RemovePlayerFromVehicle(playerid);//entfernt den Spieler vom Fahrzeug wieder SendClientMessage(playerid,-1,"Du bist kein Mitglied der Ballas");//gibt eine Nachricht aus } return 1;//beendet, da wir das Fahrzeug gefunden haben (geht auch break, falls darunter noch Code kommt welcher ausgeführt werden soll) } } for(new i=0; i<sizeof(grove_Car);i++)//geht alle Fahrzeuge durch von den GroveStreet { if(vehicle == grove_Car[i])//Fragt ab, ob wir in einem GroveStreet Fahrzeug sitzen { if(playerFaction[playerid]!=1)//Fragt ab ob wir nicht in der Fraktion von der Grovestreet sind, Bitte anpassen zu deinem System!!!!! { RemovePlayerFromVehicle(playerid);//entfernt den Spieler vom Fahrzeug wieder SendClientMessage(playerid,-1,"Du bist kein Mitglied der Grovestree");//gibt eine Nachricht aus } return 1;//beendet, da wir das Fahrzeug gefunden haben (geht auch break, falls darunter noch Code kommt welcher ausgeführt werden soll) } } }Du siehst also, bei mehr Fraktionen musst du nur die for schleife kopieren und anpassen.
oder du nutzt ein Enum um bei mehrer fraktionen, mehr übersicht zu haben
Code
Alles anzeigenenum Cars{ model, Float:fx, Float:fy, Float:fz, Float:fr, c1, c2, faction, id } new frakCars[][Cars] = { // {modelid,x,y,z,angle,color1,color2,fraktionid} {411,1230.4780,-928.0273,42.9246,181.7324,6,1,1},//Fraktion 1 {412,1230.4780,-938.0273,42.9246,181.7324,6,1,1},//Fraktion 1 {413,1230.4780,-948.0273,42.9246,181.7324,6,1,2}, //Fraktion 1 {414,1230.4780,-958.0273,42.9246,181.7324,6,1,2},//Fraktion 2 {415,1230.4780,-968.0273,42.9246,181.7324,6,1,2} //Fraktion 2 };In FrakCars, setzt du genau die werte ein, die eigentlich in AddStaticVehicle stehen und am ende fügst du dann mit einem Komma noch die frations id hinzu.
Bsp. unser gepseichertes Fahrzeug AddStaticVehicle(405,1220.4780,-928.0273,42.9246,181.7324,36,1);
wir kopieren alels aus der Klammer, "405,1220.4780,-928.0273,42.9246,181.7324,36,1"
und fügen am ende noch die Fraktion hinzu, welche das Fahrzeug nutzen darf, sagen wir mal die Fraktionsid 3 darf das Fahrzeug nutzen, dann sieht es so aus:
"405,1220.4780,-928.0273,42.9246,181.7324,36,1,3" und das fügen wir ein
also so dann fertig. wichtig, dadrüber hitner der "}" dann ein Komma setzen. (seihe oben das Bsp.)
dann unter OnGameModeInit
Codefor(new i=0;i<sizeof(frakCars);i++)//geht alle Erstellten autos durch { frakCars[i][id] = AddStaticVehicle(frakCars[i][model],frakCars[i][fx],frakCars[i][fy],frakCars[i][fz],frakCars[i][fr],frakCars[i][c1],frakCars[i][c2]);//erstellt unser Auto und weisst die id zu }dann unter OnPlayerStateChange
Code
Alles anzeigenif(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) { new vehicle = GetPlayerVehicleID(playerid); for(new i=0; i<sizeof(frakCars);i++)//geht alle Erstellten autos durch { if(vehicle == frakCars[i][id])//überprüft ob wir in einem dieser Fahrzeuge sitzen { if(playerFaction[playerid]!=frakCars[i][faction])//Fragt ab, ob wir nicht der Fraktion sind { RemovePlayerFromVehicle(playerid);//entfernt uns vom Fahrzeug new string[120]; format(string,sizeof(string),"Du bist kein Mitglied der Fraktion: %s",GetFactionName(frakCars[i][faction])); SendClientMessageToAll(-1,string);//gibt uns eine Nachricht, das wir nicht zu der gesetzten Fraktion gehören. } return 1;//beendet, da wir das Fahrzeug gefunden haben (geht auch break, falls darunter noch Code kommt welcher ausgeführt werden soll) } } }zusatz funktion, GetFactionName
Code
Alles anzeigenstock GetFactionName(fractionid) { new string[20]; switch(fractionid) { case 0: string="Zivi"; case 1: string="Grove Street"; case 2: string="Ballas"; } return string; }Somit, musst du einfach nur oben ein neues Fahrzeug hinzufügen und sparst dir immer, das napassen der Variablen
Ich hoffe einer dieser Varianten konnte dir helfen.
-
Also, was ich jetzt rausgesehen habe bei deinem Script,
1. Setze die gangzone1 auch einen Wert
2. Für deine Abfrage brauchst du die min und max werte von einer Zone also diese
GangZoneCreate(1053.1774,-1416.4441, 782.6472,-1638.3611);
Vor erst sollte es eigentlich dann so aussehen
(Laut Wiki //GangZoneCreate(minX, minY, maxX, maxY);)
minX
minY
maxX
maxY
GangZoneCreate(782.6472,-1638.3611,1053.1774,-1416.4441);
Diese werte setzt du nun in die Abfrage ein:
Codeif(IsPlayerInArea(playerid, 782.6472,-1638.3611,1053.1774,-1416.4441)) { //Wenn in der Zone } else { //wenn nicht }Soweit hoffe ich, dass dir dies deine Frage beantwortet.
(Ich würde dir aber gleich empfehlen auf Enum anzupassen, das wird dann eig. Übersichtlicher und einfacher.)
-
@Grosim
Ich habe dafür, die ersten Leerzeichen allgemein weggemacht, fand ich für den Chat schöner.
Funktion:Bsp.:
Code
Alles anzeigenpublic OnPlayerText(playerid, text[]) { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); new chatMessage[136+MAX_PLAYER_NAME],chatMessage2[100]; //Was du wolltest------ chatMessage=RemoveFirstSpaces(text); if(strlen(chatMessage)==0) { SendClientMessage(playerid,0xFFFFFF,"[Info]Du musst schon etwas schreiben"); return 0; } format(chatMessage,sizeof(chatMessage),"%s sagt: %s",Spielername(playerid),chatMessage); //-------- if(strlen(chatMessage) > 128) { chatMessage2=chatMessage; strdel(chatMessage,128,strlen(chatMessage)); strdel(chatMessage2,0,128); chatMessage2=RemoveFirstSpaces(chatMessage2); format(chatMessage2,sizeof(chatMessage2),"%s sagt: %s",Spielername(playerid),chatMessage2); } for(new i=0;i<MAX_PLAYERS;i++) { if(!IsPlayerConnected(i))continue; if(!IsPlayerInRangeOfPoint(i,10,x,y,z))continue; SendClientMessage(i,0xFFFFFF,chatMessage); if(strlen(chatMessage2) > 0) { SendClientMessage(i,0xFFFFFF,chatMessage2); } } return 0; }Also, mit chatMessage=RemoveFirstSpaces(text); bekommst du den String ohne Leerzeichen, wenn dieser dann die Länge 0 hat, weißt Du das nichts im Text geschrieben wurde.
So hatte ich das gelöst. Mfg. Mogly1
-
-
-
Bau dir ein paar print's mit ein, und schau wo es endet. bei so viel Code mit Spieler Infos. wird es schwer da durch zu sehen

-
Wenn du den String, also deine Einlog versuche anzeigen willst im Titel oben dann nutze es so
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,string,"Dein Account wurde gefunden bitte Logge dich ein ","OK",""); -
Okay weil du so nett gefragt hast palwal
Wir erstellen ein Fire enum, wo wir die Position, Id, Leben und den Text speichern
ungefähr so dann.
Code
Alles anzeigen#define MAX_FIRE 500 //sind die maximalen Flamen die erstellt werden können enum fire_enum { fire_id, fire_health, Float:fire_x, Float:fire_y, Float:fire_z, Text3D:fire_3D } new fire[MAX_FIRE][fire_enum];dann erstellen wir einfach mal ein Feuer in dem wir ein object erstllen und dort das enum mit den Daten befüllen, wir nehmen also GetPlayerPos und setzen das Leben auf 100 von dem Feuer, die id setzen wir auf das erstellte Obejct, also dann so:
(Nutze hierbei ocmd als include)
Code
Alles anzeigenocmd:createfire(playerid,params[]) { new Float:PlayerPos[3];//Speichert unsere Pos aka. X,Y,Z GetPlayerPos(playerid, PlayerPos[0],PlayerPos[1],PlayerPos[2]);//setzt unsere Werte for(new i=0; i < MAX_FIRE; i++) //geht alle Feuer, bis also MAX_FIRE was wir oben definiert haben { if(fire[i][fire_id] == 0)//Wenn unser Feuer keine id hat, erstellen wir an diesem punkt (index) ein Feuer { fire[i][fire_id]=CreateObject(18691, PlayerPos[0],PlayerPos[1],PlayerPos[2]-3, 0, 0, 0.0);//Setzen hier die fire_id zu unserer Object id fire[i][fire_x]=PlayerPos[0];//Setzen die X Koordinate fire[i][fire_y]=PlayerPos[1];//Setzen die Y Koordinate fire[i][fire_z]=PlayerPos[2];//Setzen die Z Koordinate fire[i][fire_health]=100;//Setzen das leben von dem Feuer auf 100 new string[50];//geben ein 3DTextlabel, ist aber kein muss format(string,sizeof(string),"Feuer(%d): %d%",fire[i][fire_id],fire[i][fire_health]);//formatieren den String um unser Feuer Leben azuzeigen fire[i][fire_3D]=Create3DTextLabel(string,-1,PlayerPos[0],PlayerPos[1],PlayerPos[2],10,0,0);//erstellen den 3Dtext und speichern die id unter fire_3D ab break;//brechen die schleife ab, da wir eine freie id gefunden haben(sonst würden wir ja zig flammen erstellen) } } return 1;//damit kein Fehler kommt und der Befehl existiert }So nun haben wir ein Feuer erstellt also beim ersten Aufruf haben wir somit im index = 0 die ganzen Daten.
Nun Bauen wir einen Timer ein, da OnPlayerUpdate zu viel Ressourcen zieht(verbessert mich wenn das nicht stimmt MfG.)
Ich habe hier jetzt SetTimerEx genommen.
Diesen Timer nutzen wir um Schaden uns abzuziehen und dem Feuer wenn wir mit dem Feuerlöscher draufhalten.
Code
Alles anzeigen#define FIRE_DMG 5 #define Holding(%0) \ ((newkeys & (%0)) == (%0))//definiert das Holding new fire_timer[MAX_PLAYERS];//Damit wir den Timer auch deleten können public OnPlayerConnect(playerid) { fire_timer[playerid]=SetTimerEx("Second",1000, true, "i",playerid);//starten den Palyer Timer return 1; } public OnPlayerDisconnect(playerid, reason) { KillTimer(fire_timer[playerid]);//löschen den PlayerTimer return 1; } forward Second(playerid); public Second(playerid)//jede Sekunde wird das aufgerufen { for(new i=0; i < MAX_FIRE; i++)//gehen alle feuer durch { if(fire[i][fire_id] != 0)//Wenn das Feuer existiert gehen wir in die Bedingung rein, sonst passiert nix { if(IsPlayerInRangeOfPoint(playerid,3,fire[i][fire_x],fire[i][fire_y],fire[i][fire_z]))//Fragt ab ob wir in der reichweite vom Feuer sind (range = 3 hier) { new newkeys,l,u;//das ist aus dem was ich verlinkt habe simple gesagt fragt ab ob wir die Taste Fire aka schießen gedrückt halten. GetPlayerKeys(playerid, newkeys, l, u);//same if(Holding(KEY_FIRE))//same { if(GetPlayerWeapon(playerid) == 42)//frag ab ob wir den Feuerlöscher haben { if(PlayerFaces(playerid, fire[i][fire_x], fire[i][fire_y], fire[i][fire_z], 1))//aus dem Script was ich verlinkt habe, wenn du aufs Feuer Zielst { fire[i][fire_health]-=33;//ziehen dem Feuer dann leben ab new string[50];//Setzen den neuen Text mit dem Leben format(string,sizeof(string),"Feuer(%d): %d%",fire[i][fire_id],fire[i][fire_health]);//Setzen den neuen Text mit dem Leben Update3DTextLabelText(fire[i][fire_3D], -1, string);//updaten hier unseren Text, da er ja schon erstellt worden ist if(fire[i][fire_health] <= 0)//Wenn das Feuer kein leben mehr hat oder unter 0 fällt, wird es gelöscht dazu kommen wir gleich { DeleteFire(i);//löscht das feuer } } } } if(GetPlayerSkin(playerid) != 277 && GetPlayerSkin(playerid) != 278 && GetPlayerSkin(playerid) != 279)//Wenn man kein feuerwehr skin hat bekommt man damage { //berechnet unser neues Leben new Float:health; GetPlayerHealth(playerid,health); health=health-FIRE_DMG;//ziehen hier uns dem Definierten Feuer Dmg ab SetPlayerHealth(playerid,health); } } } } return 1; }So nun müssen wir das Feuer noch löschen, was wir unter DeleteFire angegeben haben
Dazu setzen wir also einfach alle Daten wieder zurück
Code
Alles anzeigenstock DeleteFire(id) { DestroyObject(fire[id][fire_id]);//zerstört das Object fire[id][fire_id]=0;//Setzt id auf 0 und somit kann createFire wieder diese id nutzen fire[id][fire_x]=0;//Setzt Pos auf 0 fire[id][fire_y]=0;//Setzt Pos auf 0 fire[id][fire_z]=0;//Setzt Pos auf 0 fire[id][fire_health]=0; //leben noch mal auf 0 setzen Delete3DTextLabel(fire[id][fire_3D]);//löschen den 3DText, da wir ihn ja wieder dann erstellen mit Create return 1; }So und hier sind noch die 2 Methoden aus dem Script, vom Link
die du benötigst für die Berechnungen(Das ist jetzt Mathe, werde da jetzt nix kommentieren c(: )
Code
Alles anzeigenFloat:DistanceCameraTargetToLocation(Float:CamX, Float:CamY, Float:CamZ, Float:ObjX, Float:ObjY, Float:ObjZ, Float:FrX, Float:FrY, Float:FrZ) { new Float:TGTDistance; TGTDistance = floatsqroot((CamX - ObjX) * (CamX - ObjX) + (CamY - ObjY) * (CamY - ObjY) + (CamZ - ObjZ) * (CamZ - ObjZ)); new Float:tmpX, Float:tmpY, Float:tmpZ; tmpX = FrX * TGTDistance + CamX; tmpY = FrY * TGTDistance + CamY; tmpZ = FrZ * TGTDistance + CamZ; return floatsqroot((tmpX - ObjX) * (tmpX - ObjX) + (tmpY - ObjY) * (tmpY - ObjY) + (tmpZ - ObjZ) * (tmpZ - ObjZ)); } stock PlayerFaces(playerid, Float:x, Float:y, Float:z, Float:radius) { new Float:cx,Float:cy,Float:cz,Float:fx,Float:fy,Float:fz; GetPlayerCameraPos(playerid, cx, cy, cz); GetPlayerCameraFrontVector(playerid, fx, fy, fz); return (radius >= DistanceCameraTargetToLocation(cx, cy, cz, x, y, z, fx, fy, fz)); }Bei Fehlern oder Verbesserungen Bedanke ich mich für die Meldung .
und falls du noch vor hast mit Waffen wände zerstörbar zu machen, kannst du diese Simple Methode nutzen auch für dich evt. nützlich palwal
Code
Alles anzeigenpublic OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) { if(hittype == BULLET_HIT_TYPE_OBJECT) { new string[100]; format(string,sizeof(string),"Objectid: %d",hitid); SendClientMessage(playerid,-1,string); if(IsValidObject(hitid)) { DestroyObject(hitid); } } }natürlich muss dann das Objekt wieder leben haben, aber das Beispiel habe ich ja jetzt gezeigt.
MfG. Mogly1
-
Hier ist ein simples System etwas älter aber, da verstehst man es recht schnell.
Feuerwehrsystem |by XYZGamerXP|
Das kannst du dann auch noch ausbauen.
Aber im Prinzipiell,
musst du ein Feuer Objekt erstellen an den Koords wo du es haben willst, dieses Object dann leben geben und dann wenn es gelöscht wird, Leben abziehen.
Und wenn das Leben auf 0 ist, Destroyst du wieder das Object.
-
@Rocky Balboa
Hier ist sein Connect_To_Database();Codestock Connect_To_Database() { #if defined Testserveran mysql_log( LOG_ALL , LOG_TYPE_HTML); #endif gSQL = mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS); //Wir versuchen mit den Angaben die wir oben im Script gemacht haben uns mit dem MySQL Server zu verbinden. mysql_oquery("SELECT 1", THREAD_CONNECTION_CHECK1 , INVALID_PLAYER_ID ,gSQL); tMySQL = SetTimer("MySQL_Connection_Check",5003,false); }wollte hier das nur fix für alle ersichtlich machen
MfG. Mogly1
Aber hast du evt. in der Tabelle bei Admin keine Default Value?
Bzw. hilft dir der Link eventuell:
https://stackoverflow.com/ques…snt-have-a-default-values -
Also geht es jetzt?
-
Nach dem Login?
Speicherst du die Koordinaten richtig und lädst sie auch wieder?
Nicht das du nach dem Logout die Koords nicht richtig in der Db hast und somit beim Einloggen dann falsch spawnst.
(Wenn du das im Script drinne hast)Oder wei genau meinst du das mit dem durch die Map fallen.
Mfg. Mogly1
-
Hey Domse_Cross
Ich habe hier noch was auf mein Pc gefunden, da kannst du das abgleichen.
(Server mit Includes und das Tutorial Script zwar nicht das aktuellste aber die Version sollte reichen)
https://workupload.com/file/J8KEqSUS8Gv
(Falls der Link nicht geht, PN me)
MfG. Mogly1
-
Also mit den angaben von dir bin ich auf
"The Longing"gestoßen.
Youtube Videos dazu sind paar Monate her(zumindest die mir da empfohlen wurden :D)
und man kann da irgendwie Malen.
Mfg. Mogly1 -
Zitatmit coolen Features und eigenen Systemen.
Welche denn zum Beispiel?
So etwas kann jeder behaupten ^^.
MfG Mogly1.
-
Hast du bei
"OnplayerRegister"
auf groß und klein Schreibung geachtet, also das der public genaus so auch geschrieben ist?
nicht das du es im public mit einem großen P geschrieben hast also so, "OnPlayerRegister".
mfg. M1