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
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 ? xD
1. 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 )
- 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)
Alles anzeigen
Dev-Blog Video (
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.
#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;
}
Alles anzeigen
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.
Finde ich ganz nett, durfte ja selbst ein paar Mauern setzten^^
Ist denn nun schon was auf der großen freien Fläche?
Du müsstest die Variable ptor Global erstellen, sonst ist die ja immer 0
Kann mir wer sagen was ich falsch gemacht habe? Irgendwie wills nicht so flippen xD
Es kommt darauf an, was du machen wolltest, dein Befehl sorgt dafür, dass das Fahrzeug, wenn es auf dem Dach liegt und der Fahrer den Befehl eingibt, das Fahrzeug wieder normal auf den Reifen steht und das Fahrzeug repariert wird.
Falls du was anderes vor hattest, müsstest du dies nochmals genauer erläutern
Moin,
bin nun schon länger auf der Suche aber finde folgenden Infernus Mod einfach nicht mehr, vielleicht kennt den ja einer von euch. (Der Spoiler war standartmäßig)
Nicht nur er, sondern alle, die auf den TS connecten wollen müssen 3.1.6 besitzen.
Hatte ich einfach mal als Selbstverständlich erachtet^^
Sollte aber auch eigentlich kein Problem sein, wenn man sein TS ganz normal updated, ist momentan die Stable Version
Die steht zwar da, wurde aber nie durchgesetzt. Wozu auch?
Wenn du dir die Regelung mal anschaust findest du direkt einen Grund, der das ganze sinnvoll werden lässt, so ist es kaum noch möglich die Projekte von 2016 und älter runterzuladen, da der Link ausgelaufen ist.
Der Rest sind nur schönheits Sachen die sowieso niemand merken würde wenn dieser Thread nicht käme.
Ob es nun die Optik betrifft oder nicht, Kritik darf man doch trotzdem äußern, oder etwa nicht :o
Habe natürlich direkt mehrere Punkte die ich kritisieren möchte:
Punkt 1.0.1:
Die Sonderregeln für den Bereich "Sponsoring / Scripting Angebote und Anfragen" müssen ggf. erneuert werden, da es ja Breadfish ja eine GTA:Community (lul) ist und es ja immer mehr GTA V Beiträge/Fragen gibt und somit das ganze für SAMP, MTA & VC-MP veraltet ist.
Punkt 2.7.3:
Die Regeln für den Showroom müssen ggf. erneuert werden, da der dortige Punkt 1 von kaum einem Beachtet wird und die Themen trotzdem freigeschalten werden.
Beispiele:
Veröffentlichung alte Maps von IRP
Stadthalle Los Santos mit DOWNLOAD !
Stadthalle Interior - Download
[*NEU*] 2017 SOM 0.6 + UCP Reallife MYSQL R41 (NEU) SAMP 0.3.7 2017 [*NEU*]
Veröffentlichung • Westside Stories Script
PS zu Punkt 2.7.3: Weiterhin ist es laut dem Regelwerk nicht erlaubt Pastebin zu nutzen bzw. es einfach mit in das Thema zu integrieren.
Punkt 3.2.0:
Die Pranger-Regeln müssen ggf. erneuert werden, da der dortige Paragraph 1, eine "erste Kontaktaufnahme auf SA-MP.DE" (Zitat aus den Pranger-Regeln §1) beinhaltet, dies ja nun aber eine GTA-Community ist und die Domain mittlerweile ja nur noch weiterleitet.
Punkt 4.2.69:
Der Überblick der Verwarnungen und Sanktionen muss ggf. erneuert werden, da es nun "breadfish.de" ist und "SAMP.DE" lediglich weiterleitet.
Punkt 5.8.3:
Joa, das war es auch schon von mir, würde mich natürlich über Rückmeldung freuen.
Ich kann dir, wie @m4a_X schon so halb angekratzt hat, die neue Funktion "Server Nicknames" empfehlen. Mit dieser kannst du jeden beliebigen Namen nehmen und ihn einer IP/Domain zuweisen, die auf einen TS verweist.
Dazu einfach auf der MyTeamSpeak Seite anmelden/registieren, danach auf Server Nicknames klicken (http://prntscr.com/gxy35c), danach einfach einen neuen Eintrag hinzufügen: http://prntscr.com/gxy3rb
Wichtig ist nur, dass du die TS Version 3.1.6 haben musst