Ich finde das ganze ehrlich gesagt ein wenig zu Eckig und der Übergang bei der Einfahrt ist ein wenig hart (Straße/Bürgersteig zu Sand/Dreck.
Und die Dreck-Textur in dem Gebäude müsste noch entfernt werden.
Beiträge von Whice
-
-
Durch die Variable "dbhandle" wie es auch oben steht
Meine Frage war wo du jene Zeile denn stehen hast, also bei OnGameModeInit, bei OnVehicleSpawn, und wo genau in jenen Publics.
ein paar Sachen am Script geändert
Was hast du denn geändert?
-
Du verwendest an zwei Stellen in der Schleife ein return 1; Ich denke mal, dass dies die Schleife unterbricht.
Das heißt für dich einfach nur, dass erste return 1; zu continue; ändern und das zweite einfach entfernen.Weiterhin solltest du darauf achten, dass die Variable i nicht immer in der Tabelle i ist, somit einfach die Variable user_id verwenden.
-
Die Map gefällt mir super gut, ich habe diesmal auch keinen Kritikpunkt aber doch eine kleine Frage.
Und zwar sieht man ja einen kleinen Außenbereich mit Tischen, dass heißt man kann auch im Lokal essen?
Wenn dies zutreffen sollte, fehlt mir irgendwie eine Tür, durch die ich in das Gebäude kann. Die einzige Tür ist diese Mitarbeitertür beim Drive-Thru oder sehe ich da was falsch? -
Hast du denn auch eine Tabelle mit den Spalten und einen Benutzer mit dem Passwort angelegt?
Wo erstellt du denn die Verbindung in deinem Script (mysql_connect)
-
Habe ein kleines Problem in C#
Ich möchte die Hintergrundfarbe ändern, wenn der jeweilige Button geklickt wurde.
Es funktioniert auch, allerdings nicht wenn ich darüber hover, ich möchte dies allerdings immer haben, fällt da jemandem eine Lösung ein?C
Alles anzeigenint activButton = 0; private void btn_general_MouseEnter(object sender, EventArgs e) { if (activButton != 1) { btn_general.BackColor = Color.FromArgb(105, 105, 105, 105); } } private void btn_general_MouseLeave(object sender, EventArgs e) { if (activButton != 1) { btn_general.UseVisualStyleBackColor = true; } } private void btn_general_Click(object sender, EventArgs e) { if (activButton != 1) { btn_general.BackColor = Color.FromArgb(105, 105, 105, 100); activButton = 1; } } private void btn_einstellungen_MouseEnter(object sender, EventArgs e) { if (activButton != 2) { btn_einstellungen.BackColor = Color.FromArgb(105, 105, 105, 105); } } private void btn_einstellungen_MouseLeave(object sender, EventArgs e) { if (activButton != 2) { btn_einstellungen.UseVisualStyleBackColor = true; } } private void btn_einstellungen_Click(object sender, EventArgs e) { if(activButton != 2) { btn_einstellungen.BackColor = Color.FromArgb(1, 1, 1, 1); activButton = 2; } } -
Ich hatte vorhin schon mit Risq darüber geschrieben aber mir sind noch ein paar Sachen aufgefallen.
Zu aller erst finde ich den grundsätzlichen Stil gut, die Steinwände habe ich bisher nur wenig gesehen, auch das Wasser unten gefällt mir gut.
Die Arbeitsräume in der 1. Etage finde ich an sich auch nett gestaltet, aber stehen da echt Regale vor den Fenstern?
Die 2. Etage finde ich grundsätzlich auch recht Zweckmäßig gestaltet, nur würde mir der Brunnen, wenn ich in dem Zimmer sitze doch ein wenig auf den Sack gehen^^Alles in allem aber sehr solide arbeit von euch

-
Das ist gefährlich, denn je nach Bildschirmauflösung sieht das dann anders aus.
Ja, da habe ich nun auch schon viel zu gehört, allerdings noch keinen Fix gefunden (ausgenommen es halt nicht zu benutzen^^)
Krass das noch Leute 2017 SAMP Roleplay Gamemmodes entwickeln
Naja, mir macht halt das Scripten noch Spaß, da dachte ich mir, warum das ganze nicht in einem Projekt verwirklichen?

-
“Charackter” wird ohne ck geschrieben, sprich “Charakter”.
Stimmt, werde ich beim nächsten Mal drauf achten

-
Bilder von Systemen sind immer gerne gesehen
Wenn du mir bis heute Abend zeit gibst, versuche ich mich mal an einem kleinen Video

//Edit ist zwar das erste richtig editierte Video, aber da sieht man wenigstens einiges

-
Whice xD prntscr.com/h0jbp5
ja gg^^, das kommt dabei raus, wenn man zwei Möglichkeiten im Kopf hat

Werde es gleich mal ändern -
Wie Geil jetze ist er der Meinung auch ein Dev-Blog zu machen für ein Script was er schon Streamt xD
Aber es wird im Stream gescriptet deswegen ist es iwie Dumm aber jeden seine Sache.
Allgemein es zu Streamen ist doch Dumm wer guckt es denn bitte ? xD1. Ja, natürlich ist es Dumm, denn die Videos werden auf Twitch ja auch 14 bzw. 60 Tage gespeichert und dann sind sie weg, der Dev-Blog nicht..
2. Klar ist es zu Streamen dumm, da ja so Leute das Scripten lernen könnten und mal sehen könnten wie solche Scripts aufgebaut sind..
3. Wenn es dich nicht interessiert, schau es doch nicht? Ich beschwere mich ja auch nicht, dass du Rainbow für 0 Leute streamst..
4. Nur weil ich nun nicht mehr mit dir scripte und du keinen fähigen und aktiven anderen Scripter mehr hast, musst du hier nicht so rumheulen, wenn du möchtest kann ich dir noch 20 Cent geben, die Parkuhr interessiert sich bestimmt für deine Probleme
-
Grundgesetzlich kannst du dies schwer sagen, geht es um einen DM Server, einen Reallife oder Roleplay Gamemode?
Wenn beispielsweise Roleplay, müsste man sich Gedanken machen, was passiert wenn du einen Timeout hat, in einer RP Situation ist und am anderen Ende der Map ist? -
Hier mal der Stand meines Roleplay-Gamemodes, den ich ausschließlich in meinem Stream erstelle.
(Das ganze wird übrigens in nächster Zeit wieder öfter der Fall sein
)HTML
Alles anzeigen- MySQL-Include/Plugin implementiert (R41-4 by BlueG) - OCMD-Include implementiert (2.1.1 by ?) - Streamer-Include/Plugin implementiert (v2.9.1 by Icognito) - sscanf2-Inclclude/Plugin implementiert (2.8.2 by ?) - MySQL Register/Login System erstellt (Passwort Verschlüsselung per SHA-256) - Dynamisches Fraktionssystem erstellt - Dynamisches Adminsystem erstellt - Dynamisches Gebäudesystem erstellt - Support-System erstellt - Autohaussystem für Spielerfahrzeuge erstellt - LSPD Befehle erstellt (/dienst, /kleidung, /waffen) - LSPD Umkleide/Waffenkammer gemappt - Verschiedene Tore für das PD hinzugefügt - Tacho-System hinzugefügt (KM-Stand, Tank, Fahrzeugname, Zustand, Geschwindigkeit) - Job Pizzabote erstellt - Spieler-Fahrzeuge hinzugefügt - Speicherung beim Disconnect hinzugefügt - Admin-/Helfer-Chat mit @a & @h hinzugefügt - Schreib-Reichweite von Spielern angepasst - /motor erstellt und auf Taste Z gelegt - /licht erstellt und auf Taste 2 gelegt - Enter/Exit in Gebäude auf F/Enter gelegt - Tuning-System erstellt - Log-System (MySQL-Basierend erstellt) - Adminbefehle '/clearchat' erstellt (Löscht den Chatverlauf aller Spieler) - Adminbefehl '/fehlermeldungen' erstellt (Zeigt alee gemeldeten Bugs/Fehler) - Adminbefehl '/fehler [Fehler-ID]' erstellt (Zeigt genaue Informationen über einen gemeldeten Bug/Fehler) - Adminbefehl '/fehlerloeschen [Fehler-ID]' erstellt (Löscht einen gemeldeten Fehler/Bug) - Adminbefehl '/tickets' erstellt (Zeigt alle offnenen Tickets an) - Adminbefehl '/as [ID/Name]' erstellt (Nimmt sich einem Ticket eines Spieler an) - Adminbefehl '/neulinge' erstellt (Zeigt eine Liste aller Neulinge, die Neulingshilfe brauchen) - Adminbefehl '/neuling [ID/Name]' erstellt (Nimmt sich einem Neuling an) - Adminbefehl '/speichern' erstellt (Speichert alle Fahrzeuge/Accounts, etc.) - Adminbefehl '/freeze [ID/Name]' erstellt (Setzten einen Spieler an der Position fest) - Adminbefehl '/unfreeze [ID/Name]' erstellt (Gibt einen Spieler wieder frei) - Adminbefehl '/supm' erstellt (Erstellt ein Supporter-Mobil) - Adminbefehl '/bearbeiten' erstellt (Bearbeitet alle Variablen von Fraktionen [Name, RangNamen, etc.]) - Adminbefehl '/fl' erstellt (Zeigt eine Liste aller Fraktionen an) - Adminbefehl '/setint [ID/Name] [Interior-ID]' erstellt (Setzt einen Spieler in ein Interior) - Adminbefehl '/setvw [ID/Name] [Virtuelle Welt]' erstellt (Setzt einen Spieler in eine virtuelle Welt) - Adminbefehl '/setskin [ID/Name] [Skin-ID]' erstellt (Setzt den Skin eines Spielers) - Adminbefehl '/setfraktion [ID/Name] [Fraktions-ID]' erstellt (Setzt den Spieler in eine Fraktion) - Adminbefehl '/spawn [ID/Name]' erstellt (Spawnt einen Spieler) - Adminbefehl '/setadmin [ID/Name] [Rang-ID]' erstellt (Befördert/Degradiert einen Admin, etc.) - Adminbefehl '/goto [ID/Name]' erstellt (Teleportiert den Spieler zu angegebenen Spieler) - Adminbefehl '/gethere [ID/Name]' erstellt (Teleportiert einen Spieler zu sich) - Adminbefehl '/entercar [Vehicle-ID]' erstellt (Teleportiert sich selbst in ein Fahrzeug) - Adminbefehl '/gotopos [X] [Y] [Z]' erstellt (Teleportiert sich selbst zu den Koordinaten) - Adminbefehl '/veh [Model-ID]' erstellt (Erstellt ein Admin-Fahrzeug) - Adminbefehl '/dc' erstellt (Löscht das derzeitige Fahrzeug) - Adminbefehl '/weste [ID/Name] [Wert]' erstellt (Setzt die Schutzweste eines Spieler auf den Wert) - Adminbefehl '/charban [ID/Name] [Grund]' erstellt (Bannt einen Charackter) - Adminbefehl '/ban [ID/Name] [Grund]' erstellt (Bannt einen Account) - Adminbefehl '/ipban [ID/Name] [Grund]' erstellt (Bannt einen gesammten Account permanent) - Adminbefehl '/kick [ID/Name]' erstellt (Kickt einen Spieler) - Adminbefehl '/leben [ID/Name] [Wert]' erstellt (Setzt das Leben eines Spielers auf den Wert) - Adminbefehl '/zeit [Stunde]' erstellt (Setzt die Zeit von allen auf die Stunde) - Adminbefehl '/wetter [Wetter-ID]' erstellt (Setzt das Wetter von alle auf das Wetter) - Adminbefehl '/hdienst' erstellt (Setzt/Entfernt einen Spieler in den Helfer-Dienst) - Adminbefehl '/adienst' erstellt (Setzt/Entfernt einen Spieler in den Admin-Dienst) - Befehl '/f [Text]' erstellt (Schreibt etwas auf eingestellter Funk-Frequenz) - Befehl '/funkeinstellungen' erstellt (Stellt den Funk auf einen Wert ein. Bsp: 1.2) - Befehl '/dienst' erstellt (Setzt den Spieler in den Cop Dienst) - Befehl '/kleidung' erstellt (Ändert die Kleidung eines Cops) - Befehl '/waffen' erstellt (Rüstet sich als Cop mit Waffen aus) - Befehl '/tanken' erstellt (Tank das Fahrzeug) - Befehl '/tunen' erstellt (Tuned das Fahrzeug) - Befehl '/meinetickets' erstellt (Zeigt von einem selbst erstellte Tickets) - Befehl '/ticket [Ticket-ID]' erstellt (Zeigt ein Ticket an) - Befehl '/sup [Text]' erstellt (Sendet im Support eine Nachricht an den jeweils anderen) - Befehl '/cs [Name/ID]' erstellt (Schließt ein Ticket mit dem jeweiligen) - Befehl '/support' erstellt (Zeigt eine Liste möglicher Supports an [Neulingshilfe, Allgemeine Hilfe, Fehler melden]) - Befehl '/hilfe' erstellt (Zeigt dem Spieler ein Hilfe Dialog an) - Befehl '/gate' erstellt (Öffnet die Tore im PD als PD Beamter) - Befehl '/enter' erstellt (Man betritt ein Gebäude) - Befehl '/exit' erstellt (Man verlässt ein Gebäude) - Befehl '/kanister' erstellt (Nutzt einen Kanister um den Tank des Fahrzeuges zu füllen) - Befehl '/job' erstellt (Nimmt einen angeboten Mini-Job an) - Befehl '/beruf' erstellt (Nimmt einen angebotenen Beruf an) - Befehl '/arbeitsamt' erstellt (Zeigt einem mögliche Berufe an) - Befehl '/kaufen' erstellt (Kauft Waffen im Ammunation) - Befehl '/statistiken' erstellt (Zeigt die Statistiken von einem an) - Befehl '/motor' erstellt (Startet/Stoppt den Motor) - Befehl '/licht' erstellt (Aktiviert/Deaktiviert das Licht) - Befehl '/motorhaube' erstellt (Öffnet/Schließt die Motorhaube) - Befehl '/carlock' erstellt (Öffnet/Schließt ein Fahrzeug) - Befehl '/kofferraum' erstellt (Öffnet/Schließt einen Kofferraum) - Befehl '/tueren' erstellt (Öffnet/Schließt Türen des Fahrzeuges) - Befehl '/scheiben' erstellt (Öffnet/Schließt die Scheiben des Fahrzeuges) - Befehl '/admins' erstellt (Zeigt eine Übersicht aller Admins an) - Versionsvwerwaltung in Form von Git hinzugefügt (09. September 2017) - Bei '/help - Admin' Informationen zu jedem Befehl beim Anklicken hinzugefügt (09. September 2017) - Tanksystem per '/tanken' eingefügt (09. September 2017) - Character und Accountban-System eingefügt (09. September 2017) - Befehle zum Überprüfen ob Spieler gebannt war eingefügt - Charackter-System beim Login eingefügt (11. September 2017) - Ammunation LS betretbar gemacht (17. September 2017) - Befehl /kaufen eingefügt um Waffen im LS Ammunation zu kaufen (17. September 2017) - Befehl /admins hinzugefügt (21. September 2017) - Beruf Trucker hinzugefügt (22. September 2017) - Fahrzeuge für den Beruf Trucker hinzugefügt (22. September 2017) - Befehl /arbeitsamt zur Jobauswahl hinzugefügt (22. Oktober 2017)Dev-Blog Video (
)Externer Inhalt youtu.beInhalte 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.Das ganze werde ich hier nun immer Updaten, falls Fragen/Anregungen sind, gerne per Antwort/PN

-
Finde ich ganz nett, das normal rechteckige Gebäude ist durch dieses Dach der Notaufnahme sehr aufgelockert worden.
Aber sag mal fehlt da nicht ein Object?

-
so kommt das immer im game woran kann das Liegen
Naja, du hast keine Schleife, somit kann es nicht daran liegen, somit denke ich, dass die if-Abfrage einfach zweimal aufgerufen wird.
Wenn es so ist, versuche doch mal die Variable Spieler[playerid][pSpawn] auf einen anderen Wert als 1 in der if-Abfrage zu setzten. -
Könntest du mehr zu dem Fraktions System erzählen? Irgendwas Dynamisch?
Habs versucht so dynamisch wie möglich zu erstellen, bis vor zwei Tagen sah es noch so aus, danke da hat sich nicht viel geändert.
Du konntest weiterhin alles mögliche Ingame bearbeiten, Name, Abkürzung, Rangnamen, etc.Code: Fraktionssystem
Alles anzeigen#define MAX_FRAKTIONEN 10 enum FraktionsDatenEnum { f_ID, f_Name[32], f_Abkuerzung[8], f_Geld, f_Max_Fahrzeuge, f_Fahrzeuge, f_FahrzeugFarbe1, f_FahrzeugFarbe2, f_RangName1[25], f_RangName2[25], f_RangName3[25], f_RangName4[25], f_RangName5[25], f_RangName6[25], Float:f_PickupX_In, Float:f_PickupY_In, Float:f_PickupZ_In, Float:f_PickupR_In, Float:f_PickupX_Out, Float:f_PickupY_Out, Float:f_PickupZ_Out, Float:f_PickupR_Out, Float:f_SpawnX_In, Float:f_SpawnY_In, Float:f_SpawnZ_In, Float:f_SpawnR_In, Float:f_SpawnX_Out, Float:f_SpawnY_Out, Float:f_SpawnZ_Out, Float:f_SpawnR_Out, f_Int, f_VWorld, f_Pickup_In, f_Pickup_Out }; enum PlayerDatenEnum { bool:pLogged, pName[MAX_PLAYER_NAME], pFraktion, pRang } enum { DIALOG_FL, DIALOG_FRAKTION_BEARBEITEN_1, DIALOG_FRAKTION_BEARBEITEN_2, DIALOG_FRAKTION_BEARBEITEN_3, DIALOG_FRAKTION_BEARBEITEN_4, DIALOG_FRAK_INVITE } forward LadeFraktionsDaten(); new fInfo[MAX_FRAKTIONEN][FraktionsDatenEnum]; new pInfo[MAX_PLAYERS][PlayerDatenEnum]; public OnGameModeInit() { new string[256]; mysql_format(handle, string, sizeof(string), "SELECT * FROM `fraktionen`"); mysql_pquery(handle, string, "LadeFraktionsDaten"); } public LadeFraktionsDaten() { new rows; cache_get_row_count(rows); if(rows == 0) { printf("- Es konnten keine Fraktionen gefunden werden!"); return 1; } new var, string[128]; for(new i; i<rows; i++) { cache_get_value_name_int(i, "id", fInfo[i][f_ID]); fInfo[i][f_VWorld] = fInfo[i][f_ID] + 100; cache_get_value_name_int(i, "Geld", fInfo[i][f_Geld]); cache_get_value_name_int(i, "Max_Fahrzeuge", fInfo[i][f_Max_Fahrzeuge]); cache_get_value_name_int(i, "Fahrzeuge", fInfo[i][f_Fahrzeuge]); cache_get_value_name_int(i, "Interior", fInfo[i][f_Int]); cache_get_value_name_int(i, "FahrzeugFarbe1", fInfo[i][f_FahrzeugFarbe1]); cache_get_value_name_int(i, "FahrzeugFarbe2", fInfo[i][f_FahrzeugFarbe2]); cache_get_value_name_float(i, "SpawnX_In", fInfo[i][f_SpawnX_In]); cache_get_value_name_float(i, "SpawnY_In", fInfo[i][f_SpawnY_In]); cache_get_value_name_float(i, "SpawnZ_In", fInfo[i][f_SpawnZ_In]); cache_get_value_name_float(i, "SpawnR_In", fInfo[i][f_SpawnR_In]); cache_get_value_name_float(i, "SpawnX_Out", fInfo[i][f_SpawnX_Out]); cache_get_value_name_float(i, "SpawnY_Out", fInfo[i][f_SpawnY_Out]); cache_get_value_name_float(i, "SpawnZ_Out", fInfo[i][f_SpawnZ_Out]); cache_get_value_name_float(i, "SpawnR_Out", fInfo[i][f_SpawnR_Out]); cache_get_value_name_float(i, "PickupX_In", fInfo[i][f_PickupX_In]); cache_get_value_name_float(i, "PickupY_In", fInfo[i][f_PickupY_In]); cache_get_value_name_float(i, "PickupZ_In", fInfo[i][f_PickupZ_In]); cache_get_value_name_float(i, "PickupX_Out", fInfo[i][f_PickupX_Out]); cache_get_value_name_float(i, "PickupY_Out", fInfo[i][f_PickupY_Out]); cache_get_value_name_float(i, "PickupZ_Out", fInfo[i][f_PickupZ_Out]); cache_get_value_name(i, "Name", string, sizeof(string)); format(fInfo[i][f_Name], sizeof(string), string); cache_get_value_name(i, "Abkürzung", string, sizeof(string)); format(fInfo[i][f_Abkuerzung], sizeof(string), string); cache_get_value_name(i, "RangName1", string, sizeof(string)); format(fInfo[i][f_RangName1], sizeof(string), string); cache_get_value_name(i, "RangName2", string, sizeof(string)); format(fInfo[i][f_RangName2], sizeof(string), string); cache_get_value_name(i, "RangName3", string, sizeof(string)); format(fInfo[i][f_RangName3], sizeof(string), string); cache_get_value_name(i, "RangName4", string, sizeof(string)); format(fInfo[i][f_RangName4], sizeof(string), string); cache_get_value_name(i, "RangName5", string, sizeof(string)); format(fInfo[i][f_RangName5], sizeof(string), string); cache_get_value_name(i, "RangName6", string, sizeof(string)); format(fInfo[i][f_RangName6], sizeof(string), string); if(fInfo[i][f_PickupX_In] != 0) { fInfo[i][f_Pickup_In] = CreateDynamicPickup(1559, 1, fInfo[i][f_PickupX_In], fInfo[i][f_PickupY_In], fInfo[i][f_PickupZ_In], fInfo[i][f_VWorld], fInfo[i][f_Int]); fInfo[i][f_Pickup_Out] = CreateDynamicPickup(1559, 1, fInfo[i][f_PickupX_Out], fInfo[i][f_PickupY_Out], fInfo[i][f_PickupZ_Out], 0, 0); format(string, sizeof(string), "%s-Gebäude\nZum Verlassen 'Enter'", fInfo[i][f_Name]); CreateDynamic3DTextLabel(string, COLOR_WHITE, fInfo[i][f_PickupX_In], fInfo[i][f_PickupY_In], fInfo[i][f_PickupZ_In], 10, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, fInfo[i][f_VWorld], fInfo[i][f_Int]); format(string, sizeof(string), "%s-Gebäude\nZum Betreten 'Enter'", fInfo[i][f_Name]); CreateDynamic3DTextLabel(string, COLOR_WHITE, fInfo[i][f_PickupX_Out], fInfo[i][f_PickupY_Out], fInfo[i][f_PickupZ_Out], 10, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, 0, 0); } var++; } printf("- Es wurden erfolgreich %d Fraktionen geladen!", var); return 1; } public OnPlayerKeyStateChange(playerid, newinteriorid, oldinteriorid) { for(new x; x<sizeof(fInfo); x++) { if(IsPlayerInRangeOfPoint(playerid, 2.5, fInfo[x][f_PickupX_Out], fInfo[x][f_PickupY_Out], fInfo[x][f_PickupZ_Out])) // Spieler ist draußen -> Geht rein { if(pInfo[playerid][pFraktion] != fInfo[x][f_ID]) { new string[128]; format(string, sizeof(string), "[SERVER]{FFFFFF} Du bist nicht in der Fraktion '%s'!", fInfo[x][f_Name]); SendClientMessage(playerid, COLOR_RED, string); return 1; } SetPlayerPos(playerid, fInfo[x][f_SpawnX_In], fInfo[x][f_SpawnY_In], fInfo[x][f_SpawnZ_In]); SetPlayerFacingAngle(playerid, fInfo[x][f_SpawnR_In]); SetPlayerVirtualWorld(playerid, fInfo[x][f_VWorld]); SetPlayerInterior(playerid, fInfo[x][f_Int]); pInfo[playerid][pPos_X] = fInfo[x][f_SpawnX_In]; pInfo[playerid][pPos_Y] = fInfo[x][f_SpawnY_In]; pInfo[playerid][pPos_Z] = fInfo[x][f_SpawnZ_In]; pInfo[playerid][pPos_R] = fInfo[x][f_SpawnR_In]; pInfo[playerid][pInt] = fInfo[x][f_Int]; pInfo[playerid][pVWorld] = fInfo[x][f_VWorld]; SetCameraBehindPlayer(playerid); return 1; } if(IsPlayerInRangeOfPoint(playerid, 2.5, fInfo[x][f_PickupX_In], fInfo[x][f_PickupY_In], fInfo[x][f_PickupZ_In])) // Spieler ist innen -> Geht raus { if(pInfo[playerid][pInt] != 0 && pInfo[playerid][pVWorld] == fInfo[x][f_VWorld]) SetPlayerPos(playerid, fInfo[x][f_SpawnX_Out], fInfo[x][f_SpawnY_Out], fInfo[x][f_SpawnZ_Out]); SetPlayerFacingAngle(playerid, fInfo[x][f_SpawnR_Out]); SetPlayerVirtualWorld(playerid, 0); SetPlayerInterior(playerid, 0); pInfo[playerid][pPos_X] = fInfo[x][f_SpawnX_Out]; pInfo[playerid][pPos_Y] = fInfo[x][f_SpawnY_Out]; pInfo[playerid][pPos_Z] = fInfo[x][f_SpawnZ_Out]; pInfo[playerid][pPos_R] = fInfo[x][f_SpawnR_Out]; pInfo[playerid][pInt] = 0; pInfo[playerid][pVWorld] = 0; SetCameraBehindPlayer(playerid); return 1; } } return 1; } stock SendFrakMessage(FraktionsID, Farbe, Nachricht[]) { for(new i; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i)) continue; if(!pInfo[i][pLogged]) continue; if(pInfo[i][pFraktion] != FraktionsID) continue; SendClientMessageEx(i, Farbe, Nachricht); } return 1; } stock GetFraktionsRang(playerid) { new Rang[26], fID = pInfo[playerid][pFraktion]; switch(pInfo[playerid][pRang]) { case 1: { format(Rang, sizeof(Rang), fInfo[fID][f_RangName1]); } case 2: { format(Rang, sizeof(Rang), fInfo[fID][f_RangName2]); } case 3: { format(Rang, sizeof(Rang), fInfo[fID][f_RangName3]); } case 4: { format(Rang, sizeof(Rang), fInfo[fID][f_RangName4]); } case 5: { format(Rang, sizeof(Rang), fInfo[fID][f_RangName5]); } case 6: { format(Rang, sizeof(Rang), fInfo[fID][f_RangName6]); } default: { format(Rang, sizeof(Rang), "-"); } } return Rang; } ocmd:f(playerid, params[]) { if(!pInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Es ist ein Fehler aufgetreten! Bitte melde dich bei einem Teammitglied!"); if(!pInfo[playerid][pFraktion]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du brauchst dafür eine Fraktion!"); new string[512], fID = pInfo[playerid][pFraktion], Nachricht[256]; if(sscanf(params, "s[256]", Nachricht)) return SendClientMessage(playerid, COLOR_RED, "Benutzung:{FFFFFF} /f [Nachricht]"); for(new i; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i)) continue; if(!pInfo[i][pLogged]) continue; if(fID != pInfo[i][pFraktion] && !pInfo[i][pBigEars]) continue; if(pInfo[i][pBigEars] && fID != pInfo[i][pFraktion]) format(string, sizeof(string), "[F-Chat %s]{FFFFFF} %s %s sagt: %s", fInfo[fID][f_Abkuerzung], GetFraktionsRang(playerid), SpielerName(playerid), Nachricht); else format(string, sizeof(string), "(( ** %s %s sagt: %s ** ))", GetFraktionsRang(playerid), SpielerName(playerid), Nachricht); SendClientMessage(i, COLOR_FRAKTION, string); } format(string, sizeof(string), "[F-Chat %s]{FFFFFF} %s %s sagt: %s", fInfo[fID][f_Abkuerzung], GetFraktionsRang(playerid), SpielerName(playerid), Nachricht); Log("fraktions_log", string); return 1; } ocmd:setrang(playerid, params[]) { if(!pInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Es ist ein Fehler aufgetreten! Bitte melde dich bei einem Teammitglied!"); if(!pInfo[playerid][pFraktion]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du brauchst dafür eine Fraktion!"); if(pInfo[playerid][pRang] < 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du brauchst mindestens Rang 5!"); new pID, Rang; if(sscanf(params, "ud", pID, Rang)) return SendClientMessage(playerid, COLOR_RED, "Benutzung:{FFFFFF} /setrang [ID/Name] [Rang]"); if(!pInfo[pID][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist nicht eingeloggt!"); if(Rang < 1 || Rang > 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Rang muss zwischen 1 und 5 liegen!"); if(playerid == pID) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du kann deinen eigenen Rang nicht verändern!"); if(pInfo[pID][pRang] == Rang) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler hat bereits den besagten Rang!"); if(pInfo[playerid][pFraktion] != pInfo[pID][pFraktion]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist nicht in deiner Fraktion!"); if(pInfo[playerid][pRang] == 5 && Rang == 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Nur der Leiter einer Fraktion kann Co-/Leiter bestimmen!"); if(pInfo[playerid][pRang] == 5 && pInfo[pID][pRang] >= 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Nur der Leiter einer Fraktion kann Co-/Leiter bearbeiten!"); if(pInfo[pID][pRang] == 6) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du kannst keinem Leiter die Rechte entziehen!"); new Status[12], string[256]; if(Rang > pInfo[pID][pRang]) format(Status, sizeof(Status), "befördert"); else format(Status, sizeof(Status), "degradiert"); pInfo[pID][pRang] = Rang; format(string, sizeof(string), "[Fraktion]{FFFFFF} %s %s hat %s zum %s %s!", GetFraktionsRang(playerid), SpielerName(playerid), SpielerName(pID), GetFraktionsRang(pID), Status); SendFrakMessage(pInfo[playerid][pFraktion], COLOR_FRAKTION, string); format(string, sizeof(string), "%s %s hat %s zum %s %s (%s)!", GetFraktionsRang(playerid), SpielerName(playerid), SpielerName(pID), GetFraktionsRang(pID), Status, fInfo[pInfo[playerid][pFraktion]][f_Name]); Log("fraktions_log", string); return 1; } ocmd@2:rauswerfen,uninvite(playerid, params[]) { if(!pInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Es ist ein Fehler aufgetreten! Bitte melde dich bei einem Teammitglied!"); if(!pInfo[playerid][pFraktion]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du brauchst dafür eine Fraktion!"); if(pInfo[playerid][pRang] < 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du brauchst mindestens Rang 5!"); new pID; if(sscanf(params, "u", pID)) return SendClientMessage(playerid, COLOR_RED, "Benutzung:{FFFFFF} /rauswerfen [ID/Name]"); if(!pInfo[pID][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist nicht eingeloggt!"); if(pInfo[pID][pFraktion] != pInfo[playerid][pFraktion]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist nicht in deiner Fraktion!"); if(pInfo[pID][pRang] > 4 && pInfo[playerid][pRang] != 6) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Um einen Co-Leiter rauszuwerfen, muss du Leiter sein!"); if(pInfo[pID][pRang] == 6) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Einen Leiter kann nur ein Admin rauswerfen!"); pInfo[pID][pEingeladen] = false; pInfo[pID][pEinladerFraktion] = 0; pInfo[pID][pFraktion] = 0; pInfo[pID][pRang] = 0; new string[256]; format(string, sizeof(string), "[Fraktion] %s wurde von %s %s aus der Fraktion geworfen!", SpielerName(pID), GetFraktionsRang(playerid), SpielerName(playerid)); SendFrakMessage(pInfo[playerid][pFraktion], COLOR_FRAKTION, string); format(string, sizeof(string), "[Fraktion] Du wurdest von %s %s aus der Fraktion geworfen!", GetFraktionsRang(playerid), SpielerName(playerid)); SendClientMessage(pID, COLOR_FRAKTION, string); format(string, sizeof(string), "[Fraktion] %s wurde von %s %s aus der Fraktion (%s) geworfen!", SpielerName(pID), GetFraktionsRang(playerid), SpielerName(playerid), fInfo[pInfo[playerid][pFraktion]][f_Name]); Log("fraktions_log", string); return 1; } ocmd@2:einladen,invite(playerid, params[]) { if(!pInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Es ist ein Fehler aufgetreten! Bitte melde dich bei einem Teammitglied!"); if(!pInfo[playerid][pFraktion]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du brauchst dafür eine Fraktion!"); if(pInfo[playerid][pRang] < 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du brauchst mindestens Rang 5!"); new pID; if(sscanf(params, "u", pID)) return SendClientMessage(playerid, COLOR_RED, "Benutzung:{FFFFFF} /einladen [ID/Name]"); if(!pInfo[pID][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist nicht eingeloggt!"); if(pInfo[pID][pFraktion] != 0) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist bereits in einer Fraktion!"); if(pInfo[pID][pEingeladen]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler wurde bereits in eine Fraktion eingeladen!"); new string[256]; pInfo[pID][pEingeladen] = true; pInfo[pID][pEinladerFraktion] = pInfo[playerid][pFraktion]; format(string, sizeof(string), "{FFFFFF}Du wurdest von %s %s in die Fraktion (%s) eingeladen!\nMöchtest du Mitglied dieser Fraktion werden?", GetFraktionsRang(playerid), SpielerName(playerid), fInfo[pInfo[playerid][pFraktion]][f_Name]); ShowPlayerDialog(pID, DIALOG_FRAK_INVITE, DIALOG_STYLE_MSGBOX, "{FFFFFF}Fraktionseinladung", string, "{FFFFFF}Annehmen", "{FFFFFF}Ablehnen"); format(string, sizeof(string), "[Fraktion]{FFFFFF} %s %s hat %s in die Fraktion eingeladen!", GetFraktionsRang(playerid), SpielerName(playerid), SpielerName(pID)); SendFrakMessage(pInfo[playerid][pFraktion], COLOR_FRAKTION, string); format(string, sizeof(string), "[Fraktion]{FFFFFF} %s %s hat %s in die Fraktion (%s) eingeladen!", GetFraktionsRang(playerid), SpielerName(playerid), SpielerName(pID), fInfo[pInfo[playerid][pFraktion]][f_Name]); Log("fraktions_log", string); return 1; } ocmd:makezivi(playerid, params[]) { if(!pInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Es ist ein Fehler aufgetreten! Bitte melde dich bei einem Teammitglied!"); if(pInfo[playerid][pAdmin] < 1 || pInfo[playerid][pAdmin] > 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du verfügst nicht die nötigen Berechtiungen!"); new string[256], pID; if(!Adminduty[playerid]) { format(string, sizeof(string), "[SERVER]{FFFFFF} Du bist nicht als %s im Dienst!", GetAdminRang(playerid)); SendClientMessage(playerid, COLOR_RED, string); return 1; } if(sscanf(params, "u", pID)) return SendClientMessage(playerid, COLOR_RED, "Benutzung:{FFFFFF} /makezivi [ID/Name]"); if(!pInfo[pID][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist nicht eingeloggt!"); if(pInfo[playerid][pFraktion] == 0) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist in keiner Fraktion!"); format(string, sizeof(string), "[Adm-Cmd]{FFFFFF} %s %s hat %s aus der Fraktion geschmissen!", GetAdminRang(playerid), SpielerName(playerid), SpielerName(pID)); SendAdminMessage(string); format(string, sizeof(string), "%s Alte Fraktion: %s", string, fInfo[pInfo[pID][pFraktion]][f_Name]); Log("admin_log", string); format(string, sizeof(string), "[Adm-Cmd]{FFFFFF} %s %s hat dich aus der Fraktion geschmissen!", GetAdminRang(playerid), SpielerName(playerid)); SendClientMessage(pID, COLOR_RED, string); pInfo[pID][pFraktion] = 0; pInfo[pID][pRang] = 0; SpielerSpeichern(pID); return 1; } ocmd:asetrang(playerid, params[]) { if(!pInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Es ist ein Fehler aufgetreten! Bitte melde dich bei einem Teammitglied!"); if(pInfo[playerid][pAdmin] < 1 || pInfo[playerid][pAdmin] > 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du verfügst nicht die nötigen Berechtiungen!"); new string[256]; if(!Adminduty[playerid]) { format(string, sizeof(string), "[SERVER]{FFFFFF} Du bist nicht als %s im Dienst!", GetAdminRang(playerid)); SendClientMessage(playerid, COLOR_RED, string); return 1; } new pID, Rang; if(sscanf(params, "ud", pID, Rang)) return SendClientMessage(playerid, COLOR_RED, "Benutzung:{FFFFFF} /asetrang [ID/Name] [Rang]"); if(!pInfo[pID][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist nicht eingeloggt!"); if(Rang < 1 || Rang > 6) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Rang muss zwischen 1 und 6 liegen!"); if(pInfo[pID][pRang] == Rang) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler hat bereits den besagten Rang!"); new Status[12]; if(Rang > pInfo[pID][pRang]) format(Status, sizeof(Status), "befördert"); else format(Status, sizeof(Status), "degradiert"); pInfo[pID][pRang] = Rang; format(string, sizeof(string), "[Adm-Cmd]{FFFFFF} %s %s hat %s zum %s %s!", GetAdminRang(playerid), SpielerName(playerid), SpielerName(pID), GetFraktionsRang(pID), Status); SendFrakMessage(pInfo[playerid][pFraktion], COLOR_RED, string); SendAdminMessage(string); format(string, sizeof(string), "%s %s hat %s zum %s %s (%s)!", GetAdminRang(playerid), SpielerName(playerid), SpielerName(pID), GetFraktionsRang(pID), Status, fInfo[pInfo[pID][pFraktion]][f_Name]); Log("admin_log", string); return 1; } ocmd:setfraktion(playerid, params[]) { if(!pInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Es ist ein Fehler aufgetreten! Bitte melde dich bei einem Teammitglied!"); if(pInfo[playerid][pAdmin] < 1 || pInfo[playerid][pAdmin] > 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du verfügst nicht die nötigen Berechtiungen!"); new string[128], pID, fID; if(!Adminduty[playerid]) { format(string, sizeof(string), "[SERVER]{FFFFFF} Du bist nicht als %s im Dienst!", GetAdminRang(playerid)); SendClientMessage(playerid, COLOR_RED, string); return 1; } if(sscanf(params, "ud", pID, fID)) return SendClientMessage(playerid, COLOR_RED, "Benutzung:{FFFFFF} /setfraktion [ID/Name] [Fraktions-ID]"); if(!pInfo[pID][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist nicht eingeloggt!"); if(!IsValidFraktion(fID)) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Diese Fraktion existiert nicht!"); if(fID == pInfo[pID][pFraktion]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Der Spieler ist bereits in der Fraktion!"); format(string, sizeof(string), "[Adm-Cmd]{FFFFFF} %s %s hat %s in die Fraktion %s gesetzt!", GetAdminRang(playerid), SpielerName(playerid), SpielerName(pID), fInfo[GetFraktionsID(fID)][f_ID]); SendAdminMessage(string); SendFrakMessage(fID, COLOR_RED, string); Log("admin_log", string); format(string, sizeof(string), "[Adm-Cmd]{FFFFFF} %s %s hat dich in die Fraktion %s gesetzt!", GetAdminRang(playerid), SpielerName(playerid), fInfo[GetFraktionsID(fID)][f_ID]); SendClientMessage(pID, COLOR_RED, string); pInfo[pID][pFraktion] = fID; pInfo[pID][pRang] = 1; SpielerSpeichern(pID); return 1; } ocmd@2:fl,fraktionsliste(playerid, params[]) { if(!pInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Es ist ein Fehler aufgetreten! Bitte melde dich bei einem Teammitglied!"); if(pInfo[playerid][pAdmin] < 1 || pInfo[playerid][pAdmin] > 5) return SendClientMessage(playerid, COLOR_RED, "[SERVER]{FFFFFF} Du verfügst nicht die nötigen Berechtiungen!"); new string[512], var; if(!Adminduty[playerid]) { format(string, sizeof(string),"[SERVER]{FFFFFF} Du bist nicht als %s im Dienst!", GetAdminRang(playerid)); SendClientMessage(playerid, COLOR_RED, string); return 1; } for(new i = 1; i<MAX_FRAKTIONEN; i++) { if(fInfo[i][f_ID] == 0) continue; if(var == 0) format(string, sizeof(string), "{FFFFFF}%d - %s (Abk.: %s)\n", fInfo[i][f_ID], fInfo[i][f_Name], fInfo[i][f_Abkuerzung]); else format(string, sizeof(string), "%s%d - %s (Abk.: %s)\n", string, fInfo[i][f_ID], fInfo[i][f_Name], fInfo[i][f_Abkuerzung]); var++; } ShowPlayerDialog(playerid, DIALOG_FL, DIALOG_STYLE_LIST, "{FFFFFF}Fraktionsliste", string, "{FFFFFF}Schließen", ""); return 1; } -
Leider hilft mir das irgendwie noch immer nicht, ich frage mal genauer: Wird es ein Race-Gamemode, ein Reallife Server oder eventuell ein Cops'n Robbers Server?
Soviel ich weiss ist der aktuelle Stand: Dass Mapper auch Scripten können anscheinend Zitat von Risq.
Ich denke mal das kommt denn auch immer auf den Mapper an^^
-
Der Spieler spawnt in Blueberry? Der sollte eig. woanders spawn..
Du scheinst dich ja noch nicht wirklich mit der Funktion auseinandergesetzt zu haben, grundsetztlich ist hier immer das Wiki ganz ratsam, teilweise gibt es dies auch auf Deutsch, ansonsten auf Englisch. (http://wiki.sa-mp.com/wiki/SetPlayerPos)
[PS: Das englische Wiki ist meistens Informativer, da Zusatzinformationen enthalten sind!]Nun solltest du genug über die Funktion wissen, du brauchst also nur die drei Koordinaten. Du kannst standardmäßig Ingame den Befehl /save verwenden, dieser speichert deine aktuellen Koordinaten in die savedpositions.txt, die findest du in folgendem Ordner C:\Users\DEIN_NAME\Documents\GTA San Andreas User Files\SAMP, dort wird AddPlayerClass oder AddStaticVehicle verwendet, die erste Variable ist also für dich irrelevant (Dies ist entweder der Skin oder das Fahrzeug [ModelID]). Du nimmst also den zweiten bis vierten Parameter und fügst sie bei der Funktion SetPlayerPos in deinem Script ein.
Eventuell möchtest du nun doch den Spieler in eine bestimmte Richtung drehen, dies erreichst du mit der Funktion SetPlayerFacingAngle, jene findest du auch im Wiki, hier benötigst du die fünfte Koordinate in der savedpositions.txt.
Viele benutzen nun noch SetCameraBehindPlayer, jene Funktion setzt die Kamera hinder den Spieler, so guckt auch die Kamera in die richtige Richtung. -