GTAinside.com - Grand Theft Auto Mods, Addons, Cars, Maps, Skins and more.

Go Back   GTAinside.com Foren > GTA San Andreas > Multiplayer

Reply
 
Thread Tools Rating: Thread Rating: 3 votes, 5.00 average.
Old 12.05.2008, 12:56   #1
Mr. Maccaroni
SA:MP Scripter
 
Mr. Maccaroni's Avatar
 
Join Date: Apr 2008
Posts: 53
Post Scripting-Tutorial: Die Grundlagen

Die Grundlagen

Vorwort - In diesem Tutorial zeigen wir Ihnen den Aufbau eines funktionierenden Scripts und die Aufgaben der einzelnen Kategorien - auch "Callbacks" genannt.
Im Laufe des Tutorials werden wir nur noch die fachsprachigen Ausdrücke benutzen, da diese auch generell in den meisten Script-Foren von Gebrauch sind.
Unsere deutschsprachige Scriptvorlage (Template), auch bei uns im Downloadbereich im Serverpack verfügbar, enthält bereits alle wichtigen und standartmäßigen Callbacks, sowie kleine
Einstiegshilfen und Extras.

____________________________________________

Nun aber zum Eigentlichen - Öffnet das Template mit dem PAWN-Editor (Wir empfehlen den meistverwendeten namens "Pawno") und schaut euch das Script ein wenig an.
Nun denkt ihr vielleicht "Da ist aber schon eine Menge gemacht worden.", jedoch täuscht das. Die grünmarkierten Zeilen sind nur kleine Randinformationen. Sie sind im Script
nicht von Gebrauch und sind deshalb "undefinied". Um etwas zu undefinieren setzt man // vor die Zeile bzw. vor die Randinformation. Um mehrere Zeilen zu undefinieren,
setzt man /* am Anfang der Randinformation und */ am Ende der Randinformation (Siehe Bild 1).

1 Randinformationen in 2 verschiedenen Varianten


____________________________________________

Nun sehen wir ziemlich weit am Anfang des Scripts folgendes "#include <a_samp>". Dies definiert die INC-Datei, welche die verfügbaren und im Script zu verwendeten
Funktionen. Die INC-Dateien befinden sich im "include"-Ordner im Installationsverzeichnis des PAWN-Editors. Standartmäßig sind schon einige vorhanden (a_samp.inc,
float.inc, core.inc, ...). Also das "#include <a_samp>" definiert die entsprechende INC-Datei, jedoch gibt es hier einen Sonderfall. Die Includes "a_players", "a_objects", "a_sampdb"
und "a_vehicles" müssen nicht im Script definiert werden, solang "a_samp" definiert wurde. Wenn wir nämlich die a_samp.inc mit dem Texteditor öffnen, sehen wir, dass schon
einige vorhandene Includes in der a_samp.inc definiert sind (Siehe Bild 2).

2 Alle definierten Includes in der "a_samp.inc"


____________________________________________

Weiter im Script treffen wir auf "#define GROVE 0". Dies ist eine Definition eines Werts. Diese Definitionen haben die Aufgabe, Zahlen im Script durch Wörter zu ersetzen,
um sich zum Beispiel Team-ID's oder Skin-ID's besser merken zu können (Kleines Beispiel - Siehe Bild 3).

3 Ein Beispiel zur Verwendung einer Wertdefinition


Also die Definition "FRAUENSKIN" ersetzt die Zahl 13 im Script. Jedoch ist einem das selbst überlassen, ob, wo und wann man eine Definition einbaut (Sie sind nicht notwenig, sondern dienen
der Orientierung im Script und um anstelle einer Zahl ein Wort einzufügen).
Es gibt jedoch noch 2 weitere Definitionsarten - Die Stringdefinitionen (Um Wörter oder einzeilige Texte zu definieren - Strings) und die Hexcode bzw. Pawncodedefinition (Häufig verwendet, um lange
Farbcodes in Chatnachrichten zu ersetzen). Sie werden genau wie bei der Wertdefinition (Siehe Bild 3 und oben) angewendet und geschrieben, jedoch muss man bei der Stringdefinition vor und nach dem zu
ersetzenden String " setzen (anders als bei Variablen in einem String, muss man keinen formaten Text erstellen - Siehe Bild 4).

4 Ein Beispiel zur Verwendung einer Stringdefinition


____________________________________________

Nun die Definitionen abhacken - Weiter geht's im Script.
Dort sehen wir als nächstes "new String[256];" und "new Spielername[256];". Dies sind sogenannte Variablen. Es gibt auch hier wieder 2 verschiedene Arten - "Deklaration" und "Einstellung bzw. Setting".
Deklarationen definieren Variablen mit einem zurzeit noch unbestimmten Wert. Ein Setting dagegen definiert Variablen mit einem bestimmten, jedoch doch Funktionen veränderbaren Wert (Siehe Bild 5).

5 Beispiel einer Deklaration und einer Einstellung bzw. Setting



Variablen können genause verwendet werden, wie eine Definition, nur das deren Wert durch eine Funktion verändert werden kann. Um einen Wert einer Variable in einer Chatnachricht einzublenden, müssen
wir erstmal einen formaten Text erstellen (Siehe Bild 6).

6 Beispiel eines formaten Textes mit der Verwendung von einer Deklaration und einer Einstellung



Ein wichtiger Hinweis - Eine Deklaration sollte stets nur in einer Funktion oder in einer Chatnachricht verwendet werden, wenn ihr zuvor ein Wert bestimmt wurde, ansonsten ist das Ergebnis 0 und somit erscheint auch in der Nachricht eine 0 (Deklarationen sollten möglichst unter der Kategorie "public OnGameModeInit" einen Wert bekommen).
Um einer Variable einen neuen Wert zu definieren, schreiben wir NameDerVariable = Wert; (Beispiel: AnzahlDerAutos = 52;).

____________________________________________

Nun begeben wir uns langsam aber sicher zu den Kategorien - "Callbacks". In Callbacks werden Handlungen und Funktionen (Zum Beispiel Erscheinen einer Nachricht oder Ändern des Wertes einer Variable) gesteuert. Die Handlungen und Funktionen könnt ihr rechts in der Spalte sehen. Dort sind sie nach ihren Includes geordnet, in denen sie sich befinden.

Die Funktionen in einem Callback werden nur ausgelöst, wenn der Callback aktiv ist (Kleines Beispiel - Siehe Bild 7).

7 Beispiel des Callbacks "OnGameModeInit()"


OnGameModeInit() bestimmt die Handlungen, die beim Starten des Servers auftreten, zB. SetGameModeText, SetWeather, uvm. (Die Handlungen treten nur auf, während der Server startet).
Weitere Callbacks und ihre Funktionen:

OnGameModeInit(); - Beim Starten des Servers.
OnGameModeExit(); - Beim Beenden oder Neustarten des Servers.
OnPlayerConnect(playerid); - Beim Verbinden eines neuen Spielers.
OnPlayerDisconnect(playerid, reason); - Beim Verlassen eines neuen Spielers.
OnPlayerSpawn(playerid); - Beim Spawnen eines Spielers.
OnPlayerDeath(playerid, killerid, reason); - Beim Tod eines Spielers.
OnVehicleSpawn(vehicleid); - Beim Spawnen eines Vehikel.
OnVehicleDeath(vehicleid, killerid); - Beim Zerstören eines Vehikel.
OnPlayerText(playerid, text[]); - Beim Senden eines Nachricht.
OnPlayerCommandText(playerid, cmdtext[]); - Beim Senden eines Befehls.
OnPlayerRequestClass(playerid, classid); - Beim Auswählen eines neuen Skins in der Skinauswahl.
OnPlayerEnterVehicle(playerid, vehicleid, ispassenger); - Beim Einsteigen eines Vehikel.
OnPlayerExitVehicle(playerid, vehicleid); - Beim Aussteigen eines Vehikel.
OnPlayerStateChange(playerid, newstate, oldstate); - Beim Ändern des Status (Zu Fuss, Im Auto, Beifahrer, ...)
OnPlayerEnterCheckpoint(playerid); - Beim Betreten eines Checkpoints
OnPlayerLeaveCheckpoint(playerid); - Beim Verlassen eines Checkpoints
OnPlayerEnterRaceCheckpoint(playerid); - Beim Betreten eines Renncheckpoints
OnPlayerLeaveRaceCheckpoint(playerid); - Beim Verlassen eines Renncheckpoints
OnRconCommand(cmd[]); - Beim Senden eines RCON-Befehls.
OnPlayerPrivmsg(playerid, recieverid, text[]); - Beim Senden einer Privatnachricht.
OnPlayerRequestSpawn(playerid); - Beim Spawnen nach der Skinauswahl.
OnObjectMoved(objectid); - Beim Bewegen eines Objekts.
OnPlayerObjectMoved(playerid, objectid); - Beim Bewegen eines Spielerobjects.
OnPlayerPickUpPickup(playerid, pickupid); - Beim Aufsammeln eines Pickups.
OnPlayerSelectedMenuRow(playerid, row); - Beim Bestätigen einer Menüauswahl.
OnPlayerExitedMenu(playerid); - Beim Verlassen eines Menüs.
OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid); - Beim Ändern des Interiors.

____________________________________________

Wenn ihr mit eurem Script zufrieden seid, kontrolliert es noch einmal und startet den Kompiler mit der F5-Taste oder mit dem
-Button in der Navigationsleiste. Speichert das Script nun im Ordner "gamemodes" unseres SA:MP-Server-Ordners und tragt es in die server.cfg ein. Nun sollten alle Vorbereitungen getroffen sein und ihr könnt euer Script testen.

____________________________________________


Viel Spaß und Erfolg wünscht euch
Mr. Maccaroni und die
San Andreas Script Crew.


Dieses Dokument unterliegt dem © Copyright und deutschen Urheberrecht. Es darf nicht ohne jegliche Angaben von uns veröffentlicht werden. Alle Texte sind selbst erstellt und Eigentum der SA Script Crew.
http://www.SA-Script-Crew.de.tf
__________________
Mr. Maccaroni is offline   Reply With Quote
Old 12.05.2008, 13:33   #2
kennny94
Registered User
 
Join Date: May 2007
Location: San Andreas
Posts: 50
Send a message via ICQ to kennny94
Sehr schön !!!

War sicher en große arbeit aber hat sich gelohnt wie man sieht
__________________
Mein erster Mod war eine Hummer Limo
kennny94 is offline   Reply With Quote
Old 12.05.2008, 13:44   #3
Mr. Maccaroni
SA:MP Scripter
 
Mr. Maccaroni's Avatar
 
Join Date: Apr 2008
Posts: 53
Ich hoffe nur, dass es auch vielen hilft, sonst wäre ja alles umsonst :P
__________________
Mr. Maccaroni is offline   Reply With Quote
Old 12.05.2008, 16:59   #4
kennny94
Registered User
 
Join Date: May 2007
Location: San Andreas
Posts: 50
Send a message via ICQ to kennny94
Naja solange das nichtmal mim Server klappt brauch ich noch nichts mit Pawno zu machen
Logisch !
__________________
Mein erster Mod war eine Hummer Limo
kennny94 is offline   Reply With Quote
Old 12.05.2008, 18:51   #5
RemoteC
Ehrenmitglied
 
RemoteC's Avatar
 
Join Date: Jul 2005
Location: WIEN
Posts: 2,611
Send a message via ICQ to RemoteC Send a message via MSN to RemoteC
Thumbs up

Sehr gut beschrieben Ich hoffe, dass sich das viele User zu Herzen nehmen und nicht mehr so oft gefragt wird wie scripten überhaupt funktioniert.

Ich habe mir weiters erlaubt den Titel so zu ändern, dass es noch eindeutiger ist worum es hier geht, und das Thema oben festgepinnt.

mfg

RemoteC
__________________
Suzuki GS 500F
RemoteC is offline   Reply With Quote
Old 12.05.2008, 19:06   #6
Mr. Maccaroni
SA:MP Scripter
 
Mr. Maccaroni's Avatar
 
Join Date: Apr 2008
Posts: 53
Ok danke :P
Es werden bald noch mehr kommen, vielleicht schon morgen.
Dort wird dann genauer auf einzelne Segmente eingegangen.
__________________
Mr. Maccaroni is offline   Reply With Quote
Old 12.05.2008, 20:27   #7
kennny94
Registered User
 
Join Date: May 2007
Location: San Andreas
Posts: 50
Send a message via ICQ to kennny94
Könntest du vielleicht i-wie eien Thread amchen wo du genau beschreibst (mit bildern) wie man ein Server erstma erstellt
Weild er andere Thread hilft net wirklich ^^
__________________
Mein erster Mod war eine Hummer Limo
kennny94 is offline   Reply With Quote
Old 13.05.2008, 13:09   #8
Mr. Maccaroni
SA:MP Scripter
 
Mr. Maccaroni's Avatar
 
Join Date: Apr 2008
Posts: 53
Ich fange nachher an :P
__________________
Mr. Maccaroni is offline   Reply With Quote
Old 14.05.2008, 15:12   #9
tigerinc
Registered User
 
Join Date: May 2003
Posts: 8
Hi,
das mit den scripten is schon ne coole sache. Leider komme ich damit gar nicht klar.
Die kleine Einführung is schon gut, aber aber besser wäre es anhand eines kleinen Scriptes.

Ich würde gerne einen kleinen Server machen wollen, für meinen Bruder und mich. Aber wie gesagt; kein Plan wie man das macht. Leider...
tigerinc is offline   Reply With Quote
Old 14.05.2008, 15:18   #10
Mr. Maccaroni
SA:MP Scripter
 
Mr. Maccaroni's Avatar
 
Join Date: Apr 2008
Posts: 53
Ich kann dir hier jetzt wenig weiterhelfen, aber guck' mal in meine Signatur :P
__________________
Mr. Maccaroni is offline   Reply With Quote
Old 14.05.2008, 16:40   #11
tigerinc
Registered User
 
Join Date: May 2003
Posts: 8
Danke Mr. Maccaroni, werd da mal schauen.
tigerinc is offline   Reply With Quote
Old 07.08.2009, 19:39   #12
El_Survio
Registered User
 
Join Date: Aug 2009
Posts: 2
sorry das ich den alten thread wieder raushole^^, aber die bilder sind "verschwunden" (warscheinlich gelöscht)... kann mir die jemand wiederherstellen?


ansonsten: schönes tutorial
El_Survio is offline   Reply With Quote
Old 02.09.2009, 21:28   #13
johkor
Registered User
 
Join Date: Sep 2009
Posts: 1
Hi,
ich bin auf dieses Forum gestoßen weil ich lernen wollte wie man scriptet. Jetzt ist das Problem das dieses Template ich nicht finden kann. Und deshalb qollte ich fragen ib du mir den Link geben kannst.

Mfg John
johkor is offline   Reply With Quote
Old 01.10.2010, 17:27   #14
randley
Registered User
 
randley's Avatar
 
Join Date: Sep 2010
Posts: 47
Ich versteh was nicht

ich versteh jetzt nicht wo ich mir die template datei runterladen kann
randley is offline   Reply With Quote
Old 16.03.2011, 21:08   #15
HAHA6565
Registered User
 
Join Date: Mar 2011
Posts: 1
Angry

Man sieht die Beispiele nicht bitte bitte will umedingt die Bilder sehen plssssssssss bitteee bitteeeee


sonst ist alles super aber pls brauche die Bilder
HAHA6565 is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 22:18.