Zitat von Teddybärchen*** Streamer Plugin v2.5.2 by Incognito loaded ***
2.5.2 ist die alte Version. Die neue ist 2.6.1
https://code.google.com/p/samp…mer-plugin/downloads/list
Zitat von Teddybärchen*** Streamer Plugin v2.5.2 by Incognito loaded ***
2.5.2 ist die alte Version. Die neue ist 2.6.1
https://code.google.com/p/samp…mer-plugin/downloads/list
Also. Zuallererst fügt man die Map in den Public "OnGameModeInit" ein.
Dazu muss die Map in CreateObject, oder CreateDynamicObject sein wenn du einen Streamer benutzt. Sollte es noch im MTA Fomat sein, kannst du es mit diesem (http://gtamap.delux-host.com/converter/) Converter auf das PAWN oder auf ein Streamer Format umwandeln.
Hat man es dann auf dem gewünschten Format kann man es in den Public "OnGameModeInit" einfügen.
Jetzt zu der Frage mit den Toren. Man kann ein Tor machen, dass mit einem Befehl auf und zu geht. Mann kann aber auch eins machen wo das Tor sich nach einer bestimmten Zeit wieder schließt. Ich zeige dir diese beiden Varianten.
1. Die Befehl auf/zu Variante
Zuerst muss man das Tor definieren. Somit kann man es später im Befehl auch anwenden. Dazu erstellen wir jetzt eine Variable.
new Tor;
Jetzt haben wir diese erstellt, und sie steht nur so da. Um jetzt dieser Variable ein Tor zuzuweisen gehen wir in OnGameModeInit und schauen wo sich das Tor befindet. Es ist ratsam die Tore extra einzufügen, damit man es später leichter hat. Hat man das Tor gefunden schreiben wir nun folgendes:
Tor = CreateObject(.....);
Tor = CretaeDynamicObject(....);
Jetzt haben wir das Tor, also das Objekt auf dieser Variable. Nun können wir auch mit dem Befehl beginnen, diesen machen wir in dem Public OnPlayerCommandText. Das Grundgerüst sieht so aus.
if(strcmp(cmdtext,"/tor",true) == 0)
{
return 1;
}
Der Befehl steht. Wenn man jetzt Ingame /tor machen würde, würde nichts passieren. Das ändern wir jetzt. Zuerst erstellen wir unter der Variable "Tor" eine neue bool.
new bool:TorStatus = false;
Mit dem "TorStatus" können wir nun das Tor "lenken". Sprich wenn man den Befehlt einmal eingibt öffnet es sich, und wenn man den Befehl ein zweites mal eingibt schließt es sich. Um das zu ermögliche schreiben wir jetzt folgendes in den Befehl.
if(TorStatus == false)
{
TorStatus = true;
}
else if(TorStatus == true)
{
TorStatus = false;
}
Somit bestimmen wir ob das Tor auf oder zu gehen soll. Haben wir das gemacht, kommt jetzt MoveObjectoder MoveDynamicObject. Je nachdem ob du einen Streamer benutzt. Jetzt lassen wir das Tor erstmal öffnen. Dazu machen wir -10 an die Z Achse. Somit verschwindet das Tor im Boden.
MoveObject(Tor,X,Y,Z-10,5.0);
MobeDynamicObject(Tor,X,Y,Z-10,5.0);
Was machen wir jetzt? Wir lassen das Objekt "Tor" um -10 in den Boden senken, und das mit der Geschwindigkeit 5. X,Y,Z sind die Koordinaten von Tor. Also die vom CreateObject bzw. CreateDynamicObject wenn du einen Streamer benutzt.. Nun ist das Tor unten, und die Variable "TorStatus" ist auf true. Wenn wir jetzt den Befehl erneut eingeben, soll das Tor ja wieder hochfahren. Das machen wir, in dem wir nun die alten Koordinaten dort wieder einfügen, also das -10 weg.
MoveObject(Tor,X,Y,Z,5.0);
MobeDynamicObject(Tor,X,Y,Z,5.0);
Zusammen sieht das so aus
if(strcmp(cmdtext,"/tor",true) == 0)
{
if(TorStatus == false)
{
MoveObject(Tor,X,Y,Z-10,5.0);
MoveDynamicObject(Tor,X,Y,Z-10,5.0);
TorStatus = true;
}
else if(TorStatus == true)
{
MoveObject(Tor,X,Y,Z,5.0);
MoveDynamicObject(Tor,X,Y,Z-10,5.0);
TorStatus = false;
}
return 1;
}
Jetzt kann man noch eine Message senden lassen wenn das Tor auf oder zu ist.
SendClientMessage(playerid,FARBE,"Das Tor ist offen");
SendClientMessage(playerid,FARBE,"Das Tor ist zu");
2. Die Tor auf/zu Variante mit dem Timer
Um das möglich zu machen, brauchen wir einen neuen Public. Wenn wir den jetzt nur so erstellen, kommt ein Warning. Man muss immer ein forward Publicname(); machen, damit alles funktioniert. Das machen wir jetzt. Diesen neuen Public mache ich ganz unten in das Script.
forward TorZu();
public TorZu()
{
return 1;
}
Jetzt können wir einen Timer verwenden. Dieser Timer greift nur auf einen Public. Alles andere würde nicht funktionieren. Wir werden nun in diesen Public schon einmal den "Zu-Vorgang" hineinschreiben.
public TorZu()
{
MoveObject(Tor,X,Y,Z,5.0);
MoveDynamicObject(Tor,X,Y,Z-10,5.0);
return 1;
}
Wenden wir uns nun dem Befehl zu. Diesen muss man jetzt ändern. Man macht jetzt nur den "Öffnen-Vorgang" hinein. Den "Schließen-Vorgang" übernimmt ja dann der Timer.
if(strcmp(cmdtext,"/tor",true) == 0)
{
MoveObject(Tor,X,Y,Z,-10,5.0);
MoveDynamicObject(Tor,X,Y,Z-10,5.0);
return 1;
}
Auch dazu erstellen wir jetzt einen Timer der dann das Tor schließt. Dazu verwenden wir SetTimer.
SetTimer("TorZu",2000,false);
was machen wir jetzt? Wir sagen dem Timer das er auf den Public "TorZu" zugreifen soll. Und zugreifen soll er erst in 2 Sekunden. (2000 Millisekunden = 2 Sekunden). Mit false sagen wir das der Timer nicht wiederholt werden soll. Wenn wir jetzt den Befehl eingeben würden, würde das Tor 1. aufgehen und 2. sich automatisch schließen. Kommen wir nun zu der Abfrage ob der Spieler in der nähe des Tores ist. Es ist sinnlos wenn man einen Tor Befehl erstellt den man dann überall anwenden kann. Deswegen gibt es eine Abfrage ob der Spieler in der nähe eines Punktes ist. Das macht man mit IsPlayerInRangeOfPoint. Dazu nehmen wir die Koordinaten vom Tor.
if(IsPlayerInRangeOfPoint(playerid,7.0,X,Y,Z))
{
//Tor Zeugs
}
else SendClientMessage(playerid,FARBE,"Du bist nicht in der Nähe");
Wir fragen ab ob der Spieler in der Nähe vom Tor ist. Die Distanz kann man für sich einstellen, je nachdem wie weit man den Befehl nutzen darf/soll.
So viel erfolg beim Scripten.
Du musst die gelöschten Objekte mit dem SAMP Map Construction wieder löschen. Die Removes werden nicht in der .map Datei gespeichert.
ZitatD:\gta Reallife Server\gamemodes\GGL.pwn(224) : error 017: undefined symbol "KEY_YES"
D:\gta Reallife Server\gamemodes\GGL.pwn(229) : error 017: undefined symbol "KEY_NO"
Update mal deine Pawno Include
Hat das Script noch einer?
Wenn ja, ich bitte um einen DL!
Klar doch. --> http://www.samp-scripts.de/download/Fusion.rar
Läuft dein vServer über linux?
1. [SERVER][ WINDOWS ]
2. keine .so Endung bei den Plugins.
Installiere C++ mal auf deinem VServer. Das hat bei einigen wohl geholfen.
Ist das .NET Framework auf dem neuesten Stand?
In den Regeln steht nix von Pastebin o.Ä.
ZitatDer Quellcode muss ebenfalls hochgeladen werden, wobei dieser nicht eingepackt werden darf. Dies dient dem Schutz der User, um keine Schadsoftware zu verbreiten.
Über Ausnahmen lässt sich diskutieren.
Quelle: Regeln für den Showroom
Hat einer noch den Download?
Hier: http://www.samp-scripts.de/dow…%20-%20Script%200.5.2.rar
ZitatOke danke könnte vlt jemand helfen ein Biz Generator zu finden/Hochladen?
Ja.
Download: http://www.file-upload.net/dow…-House-Generator.rar.html
Tutorial: Häuser einfügen
Du kannst in der Auswahl "Houses" oder "Businesses" auswählen.
1. Farben definierung macht man so:
#define FarbenName Farbcode
2. warning 217: loose indentation
Das heißt nur, dass etwas nicht richtig eingerügt ist.
3. Du hast die Abfrage if(dialogid == DIALOG_REGISTER) außerhalb des Publics "OnDialogResponse".
4. 334 -- 335 : error 001: expected token: ",", but found ";"
Du hast dort die "SendClientMessage nicht fertig gemacht.
5. error 055: start of function body without function header
Du hast hinter der letzten Klammer ein Semikolon gemacht.
6. error 017: undefined symbol "return1"
Du hast das Leerzeichen zwischen return und 1 vergessen.
7. error 017: undefined symbol "rank"
Du hast "rank" statt wie erstellt "rang" genommen.
8. warning 209: function "ocmd_..." should return a value
Du hast das "return 1;" im ocmd Command vergessen.
Hier ist das Verbesserte: http://pastebin.com/uXV0XkFx
Ich zitiere mal Jeffry aus einem andren Thema wo es die selbe Frage war.
Quelle: Möchte Scripten richtig lernen
Alles anzeigenAlso ich habe PAWN gelernt, indem ich mir den LAdmin4v2 (damals sehr neu) genommen habe, und versucht habe, die einzelnen Teile zu verstehen. Dann habe ich einfach losgelegt, und überlegt, welcher Teil das tut, was ich will. Den Code hab ich mir dann angeschaut, und so für den neuen Code verändert, dass er seinen Zweck erfüllt hat.
Wichtig: Fang klein an, jeder tut das. Ich arbeite nun fast 4 Jahre mit PAWN und mein Wissen ist noch lange nicht komplett, im Gegenteil.
Falls dir jemand sagt, du sollst dir die PAWN Doc durchlesen, lass es, genauso rate ich dir davon ab das wiki in allen Einzelteilen durchzulesen. Du wirst es nicht verstehen. Das kannst du in 3 Jahren machen, wenn du es verstehst, und selbst dann wirst du den Großteil in der Pawn Doc nicht auf Anhieb verstehen.
Noch was: Ausprobieren. Du kannst nichts kaputt machen. Das einzige was passieren kann, ist dass du Errors bekommst. Na und? Für was gibt es STRG+Z. Einfach probieren, wenn du nicht weiter kommst, lass es, oder frag nach Hilfe, sofern es im kleinen Bereich ist.
Learning By Doing nennt sich das. Nicht aufgeben, einfach machen machen machen. Das muss nicht immer perfekt sein, und muss auch nicht immer Sinn ergeben, hauptsache du machst was. Zum Anfang kannst du dir z.B. vornehmen, einen FilterScript der hier im Forum veröffentlicht wurde (einen einfachen) nachzumachen. Musst ihn ja nicht auch veröffentlichen, aber nur zur Übung einfach nachmachen. Wenn du hängst, kannst du ja nachsehen, was falsch ist.
Meiner Meinung nach besser als alles andere.
Wie machst du das?
Du suchst dir einen Filterscript der irgendwas macht, sei es ein Auto Spawn Menu.
Schau dir zuerst mal an, was der FilterScript denn machst (z.B. ein Auto-Menu, um Auto's zu spawnen). Dann überlegst du, was du denn alles dafür brauchst, suchst dir die Funktionen zusammen (Google, SAMP Wiki) und legst los so ein Menu zu erstellen. Wenn du irgendwo hängst, kannst du einen Blick in den Code werfen, und ein paar Zeilen, die du denkst zu verstehen abschreiben, dann siehst du ja was passiert.
Am Besten ist es aber, wenn du es ganz ohne in den Code zu schauen hin bekommst, deshalb fang mit leichten Dingen an.
Bis du erst mal richtig rein findest vergehen mit Sicherheit 1-3 Monate! Also nicht verzagen, du wirst am Anfang ziemlich oft stecken bleiben und auf die Nase fallen (ist wie laufen lernen). Ich weiß das von mir. Wenn du einmal drinne bist, dann gehts jeden Tag besser.
PS: Ich hab es ganz alleine gelernt. Die einzige Hilfestellung die ich damals hatte war ein /kill Command aus 6 Zeilen code, den mir jemand gemacht hat. Den gebe ich dir auch:
if(strcmp(cmdtext, "/kill", true) == 0)
{
SetPlayerHealth(playerid, 0.0);
SendClientMessage(playerid, 0xFF0000FF, "Du hast dich selbst getötet.");
return 1;
}
Das fügst du im callback OnPlayerCommandText ein. Dann auf den Compiler drücken, und Server neu starten.
Viel Erfolg! Dranbleiben!
Du kannst ja mal hier schauen ob du da ein passendes findest. --> http://www.co-optimus.com/system/1/xbox-360.html
Zu zweit an einer Konsole? Oder über Internet?
Dann hast du nicht den Wert 15 bei pLeader oder pMember.
Mach mal die Abfrage vom Leader und Member raus, und probier es erneut. Oder setzte zuvor pLeader und/oder pMember auf 15.