Sa:Mp Pawno Tutorial

09/22/2010 16:32 Psycho_Ente#1
Gta San Andreas Multiplayer
Als aller erstes erkläre ich euch für was ihr Pawno eigentlich braucht.
Wenn ihr einen eigenen Server haben wollt, müsst ihr Pawno lernen.
Auch wenn man fertige Scripts downloaden kann, mag ich es lieber, welche selber zu coden.

Kapitel 1: Eigenen Server machen.
Um euch einen eigenen Server für Sa:Mp zu machen gebt ihr in google folgendes ein: "samp server". Es dürfte der 2. Link sein.
Wenn ihr euch die Server Datein gedownloadet habt, geht ihr auf euren Desktop und macht einen neuen Ordner der wie folgt heisst(Ist jetzt nur ein Beispiel) "Samp Server".
Nun entpackt ihr die Ganzen Datein,welche ihr gedownloadet habt, in euren neuen Ordner.
Ich nenne euch nun die Anfangs wichtigsten Datein und Ordner.
Was wohl am wichtigsten ist, ist die Samp Server.exe.
Auch wichtig ist für uns der "Pawno"- ordner.
Ausserdem werden wir die Server.cfg zum einstellen des Servers benötigen.

Jetzt öffnen wir die Server.cfg.
wir sehen folgenden Text: (Meiner hat sich schon ein wenig geändert, drüfte aber garnicht so schlimm sein wenn ich es so reinstelle oder?)
Quote:
echo Executing Server Config...
lanmode 1
rcon_password asdf123
maxplayers 50
port 7777
hostname German Fun Explosion DM/Stunt/Base/Drift
gamemode0 drift 1
filterscripts base gl_actions gl_property gl_realtime adminspec rampe
announce 1
query 1
weburl Nichts Vorhanden
maxnpc 0
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
als erstes ändern wir die Zeile wo "Lanmode" steht, bei euch dürfte dort eine Null sein, diese ändern wir in eine 1 um über Hamachi spielen zu können :D

Bei rcon_passwort könnt ihr auswählen, wie das Passwort für das Admin-login sein soll.

bei maxplayers können wir einstellen wie viele auf dem Server spielen können.

Den Port kann man auch ändern, dieser muss freigegeben werden, um ohne hamachi spielen zu können.

Der Hostname beschreibt den Namen des Servers, in meinem Fall:
German Fun Explosion DM/Stun/Base/Drift

In der Zeile wo gamemode0 drift 1 steht können wir unseren Gamemode auswählen welchen wir gleich anfertigen.
Um diesen zu ändern zeige ich euch was dort stehen muss:

gamemode0 [gamemodename] 1

bei Filterscripts können wir kleine Scripts hinzufügen wie gl_realtime, welches zum Beispiel die Echte Zeit oben rechts im Spiel angibt.

den Rest können wir ersteinmal so lassen.
Allerdings können wir bei :
Weburl unsere Homepage anzeigen lassen.

Pawno Einführung (ClientMessages)
Um Pawno zu starten gehen wir in den Pawno Ordner dann auf Pawno.exe
Nun sehen wir unsere Arbeitsfläche.
Links können wir unser Script bearbeiten.
Rechts stehen Befehle die wir benutzen können.

Um nun ein Script machen zu können gehen wir auf:
File -> New
Den gesamten inhalt ersetzt ihr durch folgenden!


Ich weiss, es sieht nach sehr Viel aus, aber das ist es garnicht, da wir die meisten sachen davon kaum benutzen werden.

Als aller erstes wollen wir einen /help befehl erstellen.
Dafür gehen wir zu:
"public OnPlayerCommandText(playerid, cmdtext[])"

Der inhalt davon ist ja wie folgt:

PHP Code:
public OnPlayerCommandText(playeridcmdtext[])
{
    if (
strcmp("/mycommand"cmdtexttrue10) == 0)
    {
        
// Do something here
        
return 1;
    }
    return 
0;

Erklärung des ganzen:

In OnplayerCommandText schreiben wir befehle /sky oder /help rein.
Wie wir sehen ist direkt unter OnPlayerCommandText eine Geschweifte Klammer auf ( { )

und ganz unten davon eine Geschweifte Klammer zu ( } )
Ausserdem eine Zeile über der geschweiften Klammer zu folgendes:
PHP Code:
return 0
Dies sagt Samp dann: "OnPlayerCommandText soll immer wieder neu abgespielt werden."
Ausserdem sagt es Samp dann: "Hier sind die Ganzen Commands"

eine Befehlabfrage wie /help starten wir wie ihr oben seht:

PHP Code:
if (strcmp("/help"cmdtexttrue10) == 0
Dies sagt Samp: "Hier ist ein neuer Befehl."
Direkt da drunter müssen wir wieder eine geschweifte Klammer auf machen ( { ).
nun schreiben wir eine zeile weiter runter folgendes:
PHP Code:
return 1
Dies sagt Samp: "Dieser Befehl soll nur einmal ausgeführt werden."
Wir machen zwei leerzeilen und wieder eine geschweifte Klammer zu ( } ).
Das ganze sieht nun wie folgt aus:
PHP Code:
public OnPlayerCommandText(playeridcmdtext[])
{
    if (
strcmp("/help"cmdtexttrue10) == 0
    {
     
     return 
1;
    }
return 
0;

Unser Help befehl soll unserem Spieler sagen was der Server für Befehle zu bieten hat.
Dafür lassen wir eine ClientMessage zum User schicken.

Dies geht wie folgt:

Wir geben zwischen den 2 Klammern bei unserem befehl /help folgendes ein:
PHP Code:
SendClientMessage(playeridFarbe"Message"); 
Bei unserem Help befehl sieht das dann so aus:

PHP Code:
public OnPlayerCommandText(playeridcmdtext[])
{
    if (
strcmp("/help"cmdtexttrue10) == 0
    {
     
SendClientMessage(playerid0xFF00FF00"es gibt folgendes:\n /help");
     return 
1;
    }
return 
0;

Ihr fragt euch nun bestimmt warum mitten in meinem Text folgendes steht:
"\n"
Dies löst eine neue Zeile aus, denn ich finde es schöner wenn nicht alles in einer Reihe steht.

Mit unserem neuen Wissen können wir nun euch noch folgendes machen.
Wir können einstellen, dass wenn der User connected, ihm einen Guten Tag gewünscht wird.
Dafür suchen wir folgendes:

PHP Code:
public OnPlayerConnect(playerid)
{
    return 
1;

Im prinzip machen wir das selbe, wir geben wir eine ClientMessage aus.
Wir schreiben wieder:
PHP Code:
SendClientMessage(playerid0xFF00FFFF"Willkommen auf dem Server"); 
Zwischen der ersten Klammer un dem Return 1;

Das sieht dann so aus:
PHP Code:
public OnPlayerConnect(playerid)
{
    
SendClientMessage(playerid0xFF00FFFF,"Willkommen auf dem Server");
    
    return 
1;

Pawno Einführung (GivePlayer... und SetPlayer...)

Als nächstes wollen wir einen /heal befehl machen.
Dazu gehen wir wieder zu OnPlayerCommantText
Unseres sieht nun immer noch wie folgt aus:
PHP Code:
public OnPlayerCommandText(playeridcmdtext[])
{
    if (
strcmp("/help"cmdtexttrue10) == 0)
    {
        
SendClientMessage(playerid0xFF00FF00"es gibt folgendes:\n /help");
        
        return 
1;
    }
    return 
0;

Um einen neuen Befehl einzufügen gehen wir unter die Zweitletze geschweifte Klammer zu und geben wieder folgendes ein:
PHP Code:
    if (strcmp("/healme"cmdtexttrue10) == 0)
    {
    
    return 
1;
    
    } 
Das kennen wir ja nun schon, und ich brauche es nicht weiter erklären.
Das ganze sieht ja nun so aus:
PHP Code:
public OnPlayerCommandText(playeridcmdtext[])
{
    if (
strcmp("/help"cmdtexttrue10) == 0)
    {
        
SendClientMessage(playerid0xFF00FF00"es gibt folgendes:\n /help");
        
        return 
1;
    }
    if (
strcmp("/healme"cmdtexttrue10) == 0)
    {
    
    return 
1;
    
    }
    return 
0;

Um nun einen Healbefehl machen zu können müssen wir ersteinmal wissen.
Durch welche Funktion das ausgeführt werden kann.
Nähmlich durch folgenden:
PHP Code:
SetPlayerHealth(playeridLEBEN); 
Wir denken kurtz nach, wie viel Leben so ein User maximal haben kann.
Genau kling logisch: 100
Also schreiben wir anstatt LEBEN eine 100 dahin.
Das sieht nun so aus:
PHP Code:
    if (strcmp("/healme"cmdtexttrue10) == 0)
    {
        
SetPlayerHealth(playerid100);
        
        return 
1;
    } 
Wenn wir mögen können wir dem Spieler noch sagen, dass er geheilt wurde, dies geschiet wieder durch eine ClientMessage, die kennen wir schon und werde sie nicht weiter erklären.

Mit ClientMessage sieht es nun so aus:
PHP Code:
    if (strcmp("/healme"cmdtexttrue10) == 0)
    {
        
SetPlayerHealth(playerid100);
        
SendClientMessage(playerid0xFF00FFFF"Du wurdest Geheilt.");
        
        return 
1;
    } 
Um einen /kill befehl zu erstellen, ändern wir den Wert 100 einfach zu 0 um.

Morgen werde ich das Tutorial weiter schreiben.
Dort kommt folgendes vor:
Dialoge
Teleporter
GiveWeapon

Bitte gebt kritik oder lob!
09/22/2010 19:05 D-Eller#2
Ja echt Gutes TuT. werde es gleich mal Versuchen :D
09/28/2010 10:21 voiD Art's#3
Man sollte sich schon ein bisschen mehr mit der Sprache beschäftigen bevor man so ein Tutorial schreibt.... Dann würde nämlich einem auch auffallen, dass die Sprache nicht Pawno heißt.. Das ist die IDE in der man codet. Die Sprache heißt nur Pawn. Der Rest ist eig ok, jedoch solltest du auch bestimmte Sachen genauer erklären, aber wie ich vermute, kennst du dich selbst nicht wirklich richtig mit der Sprache aus. Jeder Neuling würde jetzt zum Beispiel immernoch nicht wissen was z.B strcmp bedeutet und was in den Parametern angegeben werden muss. Zudem gibt es schnellere Methoden die auch Ressourcen schonend sind, was bei SA-MP mittlerweile sehr wichtig ist. Als Ansporn mal hier die Methoden: einmal die strtok Methode und dann wäre noch die methode mit dcmd & sscanf. Vlt machst du ja dazu mal ein Tutorial

-Flaver
09/28/2010 11:35 MrSm!th#4
Die Beschreibung von
Code:
{
,
Code:
}
und
Code:
 return 0;
ist dir so gar nicht gelungen o.ô

das heißt, dass 0 zurückgegeben wird und die klammern begrenzen die funktion OnPlayerCommandText, alles was zwischen ihnen steht, wird ausgeführt, wenn man die funktion aufruft
08/25/2012 18:03 Rocksta4R#5
leute ich verstehe es immer noch nicht mit den pawno kann mir jemand von sein server reallife den pawno text hier kopieren pls denn ich brache hilfe aber bitte ich will ein fertigen pawno text also bitte nicht in köstchen sondern hier alles kopieren an alle noch danke
08/27/2012 01:33 DerB0ss#6
Quote:
Originally Posted by Rocksta4R View Post
leute ich verstehe es immer noch nicht mit den pawno kann mir jemand von sein server reallife den pawno text hier kopieren pls denn ich brache hilfe aber bitte ich will ein fertigen pawno text also bitte nicht in köstchen sondern hier alles kopieren an alle noch danke
Ragemob, Ein Script hat bis zu 30-60k Zeilen, witzig c:

Das tut find ich eigentlich ganz ok , allerdings bringts keinem was
Da du meiner Meinung nach zuwenig gezeigt hast
z.B was sind variablen, wie macht man Spawnwaffen, Wie erstellt man
Einen Spawn sowie Autos..

Rest sollte klar sein^

Maaks~