Nein werden sie derzeit nicht.
Beiträge von TutNichts
-
-
Alles anzeigen
BlackMonster:
Also es hapert, momentan bei mir nur An der CSS
Das Grundgerüst ist Eigentlich Schon fertig.
Er will nur die CSS nicht wirklich ErkennenWerde später mal Screen, von dem Grund Gerüst machen ohne Css Style
MFG
Sladekillder
Wo haperts? -
OnPlayerSpawn
-
Nein das meinte ich nicht du hast die "Durchlässigkeit" auf nicht vorhanden(00) gestellt, das ergibt irgendwie keinen Sinn^^
Versteh ich jetzt nicht, sorry. -
Doch OnPlayerSpawn?
Ich war mir relativ unsicher.
Aber ich hau das mal in OnPlayerSpawn, danke dafür^^ -
for(new player=0; player)
{ -
Es ist eigenitiative gefordert, deshalb heißt es auch Tutorial.
-

Tutorial von Vincent P. für easy-scripting.net & sa-mp.de
Teil 1: hier
Teil 2: [ SCRIPTING ] Gangfightsystem Teil II - Speichern & LadenWie ich immer wieder lese, sind einige User auf der Suche nach einem gescheiten Gangfightsystem/Gangfightscript. Das ganze möchte ich euch hier demonstrieren, ich hoffe, ich konnte den Usern, die eins suchen, hiermit weiterhelfen!
Ich gehe davon aus ihr wollt das Script bzw. das Tutorial direkt in euren Gamemode einfügen - dann geht's mal los!
Als erstes definieren wir den Spielstand bzw. den "Killcounter".
new CopCount, GangsterCount;
Fachbegriff hierfür: Variablen
Man kann das ganze auch so schreiben:
new CopCount;
new GangsterCount;
aber ich mache das gerne komprimierter.Wenn das getan ist, könnten wir beliebig loslegen, die Variablen hochzuzählen, aber wir wollen das wie folgt machen:
Ein Spiel soll bis 50 gehen und dann direkt wieder von 0 anfangen, jeder Kill in einem Gebiet wird mit einem GameTextForPlayer und einem Punkt für das jeweilige Team belohnt. Das mit der Speicherung lasse ich jetzt mal weg.Die Textdraws
Wir erstellen, um das spielen übersichtlich zu gestalten zwei Textdraws:
new Text:Cops[2], Text:Gangster[2]; //Definierung der Textdraws
Cops[0] = TextDrawCreate(575,97,"Cops");
TextDrawFont(Cops[0],2);
TextDrawTextSize(Cops[0], 602.000000, 121.000000);
TextDrawBackgroundColor(Cops[0], 255);
TextDrawFont(Cops[0], 2);
TextDrawLetterSize(Cops[0], 0.200000, 1.000000);
TextDrawColor(Cops[0], -1);
TextDrawSetOutline(Cops[0], 1);
TextDrawSetProportional(Cops[0], 1);
TextDrawSetShadow(Cops[0], 0);
Cops[1] = TextDrawCreate(500,97," ");
TextDrawFont(Cops[1],2);
TextDrawTextSize(Cops[1], 602.000000, 121.000000);
TextDrawBackgroundColor(Cops[1], 255);
TextDrawFont(Cops[1], 2);
TextDrawLetterSize(Cops[1], 0.200000, 1.000000);
TextDrawColor(Cops[1], -1);
TextDrawSetOutline(Cops[1], 1);
TextDrawSetProportional(Cops[1], 1);
TextDrawSetShadow(Cops[1], 0);Gangster[0] = TextDrawCreate(575,90,"Gangster");
TextDrawFont(Gangster[0],2);
TextDrawTextSize(Gangster[0], 602.000000, 121.000000);
TextDrawBackgroundColor(Gangster[0], 255);
TextDrawFont(Gangster[0], 2);
TextDrawLetterSize(Gangster[0], 0.200000, 1.000000);
TextDrawColor(Gangster[0], -1);
TextDrawSetOutline(Gangster[0], 1);
TextDrawSetProportional(Gangster[0], 1);
TextDrawSetShadow(Gangster[0], 0);
Gangster[1] = TextDrawCreate(500,90," ");
TextDrawFont(Gangster[1],2);
TextDrawTextSize(Gangster[1], 602.000000, 121.000000);
TextDrawBackgroundColor(Gangster[1], 255);
TextDrawFont(Gangster[1], 2);
TextDrawLetterSize(Gangster[1], 0.200000, 1.000000);
TextDrawColor(Gangster[1], -1);
TextDrawSetOutline(Gangster[1], 1);
TextDrawSetProportional(Gangster[1], 1);
TextDrawSetShadow(Gangster[1], 0);
Auf die Textdraws möchte ich nun nicht weiter eingehen, da ich hier wiegesagt erklären möchte, wie man ein Gangfightsystem erstellt.Wie ihr bestimmt schon aus dem Code entnommen habt, geht es mir um ein "Cops"-"Gangster"-"Fightsystem" - wenn ihr was anderes wollt, einfach beliebig ändern!

Die ZoneKommen wir nun schon zur GangZone, die wir wie folgt "anwenden".
Wir schreiben unter OnGameModeInit folgendes:
Firmengebiet = GangZoneCreate(70.06725, 1307.922, 280.269, 1483.09);
Eine GangZone ist wie folgt aufgebaut:
MinX, MinY, MaxX, MaxY - wie auch die Funktion unten "IsPlayerInArea".
Das ganze könnt ihr hier nochmal nachlesen: http://wiki.sa-mp.com/wiki/GangZoneCreate
Nochmal als Grafik:
Rot = Die GangZone die angezeigt wird
Punkt 2 = /save-Punkt 1 // MaxX, MaxY
Punkt 1 = /save-Punkt 2 // MinX, MinY
und schreiben oben in das Script:
new Firmengebiet;
Damit hätten wir das ganze definiert.
Zur Erklärung, wir haben soeben eine GangZone erstellt mit den Koordinaten: MinX, MinY, MaxX, MaxY - mehr haben wir auch gar nicht gemacht bei diesem Schritt.Sichtbarkeit des Textdraws & der GangZone
Wir möchten nun, das Spieler, die neu auf den Server connecten bzw. überhaupt connecten die GangZone überhaupt sehen und auch die Textdraws bestaunen können, das machen wir wie folgt: unter OnPlayerConnect schreiben wir ganz einfach folgendes:
TextDrawShowForPlayer(playerid, Cops[0]); //Textdraw zeigen
TextDrawShowForPlayer(playerid, Cops[1]); // Same here
TextDrawShowForPlayer(playerid, Gangster[0]); //here
TextDrawShowForPlayer(playerid, Gangster[1]); //and here
Und OnPlayerSpawn:
GangZoneShowForAll(Firmengebiet,0xFFFFFF00);//Dem Spieler die GangZone zeigen bzw. allen Spielern
GangZoneFlashForAll(Firmengebiet,0xFFFFFF00);//Die GangZone "flashen" lassen. ;)
Bis hier sollte alles klar sein.Die wichtigste Funktion: IsPlayerInArea
Ihr fügt bitte noch folgendes hinzu unter kein Callback!
stock IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
{
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
else return 0;
}Das wichtigste: OnPlayerDeath
Im Prinzip kann es losgehen, wir springen zum wichtigsten Teil, OnPlayerDeath ... ich setze hierbei voraus, das ihr ein funktionstüchtiges Login- & Registersystem habt, die Definitionen der Fraktionen müsst ihr anpassen!
if(Spieler[playerid][Fraktion] == 1 && Spieler[killerid][Fraktion] == 2 && IsPlayerInArea(playerid, 70.06725, 1307.922, 280.269, 1483.09))
Diese Abfrage solltet ihr anpassen, dort passiert folgendes, ich übersetze mal:
wenn(Spieler[der getötet worden ist][in Fraktion] == 1 UND Spieler[der gekillt hat][in Fraktion] == 2 UND Spieler(der getötet worden ist, in, der, gangzone, ist))
Sollte klar sein, gehe ich zumindest von aus...
if(Spieler[playerid][Fraktion] == 1 && Spieler[killerid][Fraktion] == 2 && IsPlayerInArea(playerid, 70.06725, 1307.922, 280.269, 1483.09))//1 ist jetzt mal Cops und 2 Gangster
{
new Str[100], Str2[5];//Definierung der Strings
GangsterCount++;//Erhöhen der Punkte um 1
format(Str,sizeof(Str), "[Gangfight] %d (Cops) : %d (Gangster)", CopCount, GangsterCount);//Nachricht formatieren
SendClientMessageToAll(Farbe, Str);//Nachricht schicken
format(Str2,sizeof(Str2), "~r~%d", GangsterCount);//Textdraw formatieren
TextDrawSetString(Gangster[1], str);//Textdraw updaten
}
Ich hoffe Anhand der Kommentare ist alles klar.Kommen wir nun dazu, wenn der Cop der Mörder war:
if(Spieler[playerid][Fraktion] == 2 && Spieler[killerid][Fraktion] == 1 && IsPlayerInArea(playerid, 70.06725, 1307.922, 280.269, 1483.09))
{
new Str[100], Str2[5];//Definierung der Strings
CopCount++;//Erhöhen der Punkte um 1
format(Str,sizeof(Str), "[Gangfight] %d (Cops) : %d (Gangster)", CopCount, GangsterCount);//Nachricht formatieren
SendClientMessageToAll(Farbe, Str);//Nachricht schicken
format(Str2,sizeof(Str2), "~b~%d", CopCount);//Textdraw formatieren
TextDrawSetString(Cops[1], str);//Textdraw updaten
}Und wer siegt?
Gewinnen soll ja auch jemand, stimmt ja...
Dazu erstellt ihr einfach eine Abfrage ob der Spielstand z.B. mehr als 50 ist oder mehr als 200, wieviel ihr auch immer wollt, das sieht z.B. so aus:
if(CopCount > 50 && GangsterCount < 50)
{
SendClientMessageToAll(Farbe, "Diese Runde gewannen die Cops!");
CopCount = 0;//Die Variable der Cops wieder auf 0 setzen
GangsterCount = 0; // Die Variable der Gangster auf 0 setzen
format(Str,sizeof(Str), "~r~%d", GangsterCount);//Textdraw formatieren
TextDrawSetString(Gangster[1], Str);//Textdraw updaten
format(Str2,sizeof(Str2), "~b~%d", CopCount);//Textdraw formatieren
TextDrawSetString(Cops[1], Str2);//Textdraw updaten
}
und
if(CopCount < 50 && GangsterCount > 50)
{
new Str[10], Str2[10];
SendClientMessageToAll(Farbe, "Diese Runde gewannen die Gangster!");
CopCount = 0;
GangsterCount = 0;
format(Str,sizeof(Str), "~r~%d", GangsterCount);//Textdraw formatieren
TextDrawSetString(Gangster[1], Str);//Textdraw updaten
format(Str2,sizeof(Str2), "~b~%d", CopCount);//Textdraw formatieren
TextDrawSetString(Cops[1], Str2);//Textdraw updaten
}
das ganze unter OnPlayerDeath.
Sprich, wenn die 50er Marke von einer der Teams erreicht worden ist, wird der Punktestand auf 0 gesetzt und es fängt von neu an.Ich hoffe ich konnte helfen.

- Vincent#EDIT: Teil 2 hinzugefügt
-
Kurze Frage noch: Geht das damit auch? Das war nur in der Theorie von mir so gedacht, wusste jetzt nicht ob es geht.^^
-
Godfather? Selfmade? Was für Spray?
-
Gar kein Enum nutzen, einfach ne Variable
-
Weiß ja nicht genau was du vorhast. :p
-
SpielerInfo[playerid][pGeld]
Mhpf, einfach mal vll:
GetPlayerMoney ?^^ -
MAX_iAir
MAX_uAir
MAX_noAirDa kannst du alles reinmachen, du musst es nur definieren^^
-
Das mit der Zeit machst du mit gettime und der Differenz würde ich sagen
-
Z Koordinate erhöhen
-
- Ohrringe
- T-Shirt
- Timecodevinyl's -
Immer noch, das liegt bestimmt irgendwie am Script, danke euch aber^^
-
Will alles nicht gehen
-
Warnings sind immernoch da, die gleichen. Das hab ich auch schon versucht gehabt.