Beiträge von InternetInk aka Benjamin

    Sicher, dauert einen moment ich editiere dann den Beitrag hier.


    //Edit
    ======================================================================
    Okay du willst also dem "Killer" eine Nachricht zukommen lassen wen er grade getötet hat.


    Im richtigen public bist du schonmal, OnPlayerDeath.
    OnPlayerDeath gibt dir einige Parameter an die Hand, die du bei unsicherheit immer in der Wiki nachlesen kannst:
    http://wiki.sa-mp.com/wiki/OnPlayerDeath
    Folgende sind gegeben:
    playerid - Die ID des Spielers der gestorben ist (Der Grund dafür das dieses public aufgerufen wird)
    killerid - Die ID des Spielers der playerid getötet hat
    reason - Ein vordefinierter Grund der mitgeliefert wird, enthält z.B. die Mordwaffe bzw. Todesart, spielt hier aber erstmal keine Rolle


    public OnPlayerDeath(playerid, killerid, reason)
    {
    SendDeathMessage(killerid,playerid,reason);// Zeigt die Todesnachricht rechts im Label an..
    //Die Death Message ist so in Ordnung und die folgende if-Abfrage auch
    if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    //Sie fragt ob die killerid ungleich der Standard ID für Ungültig ist, wenn ja , wenn also ein Connecteter Spieler playerid gekillt hat, bekommt der killer Score plus
    //Es kann ja auch sein das playerid durch einen Sturz stirbt, dann ist killerid gleich der Ungültigen ID und die if-Abfrage wird nicht ausgeführt.
    GivePlayerMoney(killerid,1000);
    //Auch in Ordnung


    //nun kommt es
    SendClientMessage(killerid,ROT,"Glückwunsch, du hast %s gekillt.");
    //und Dafür spring ich mal aus dem pwn bereich raus

    Wenn du einen Namen in einen String (String = Zeichenkette/Zeichenfolge) einbauen willst musst du diese formatieren.
    Dazu gibt es die format Funktion.
    Dort musst du nun Parameter angeben,
    output[] - Der String, welcher ausgegeben werden soll
    len - Die maximale Länge, welche ausgegeben werden soll
    format[] - Der formatierte String
    {Float,_}:... - Argumente jeder Art
    Anhand der [] weiß man das es sich bei dem Parameter um strings handelt und anhand des eingeklammerten Floats um eine Aufzählung.
    Wir brauchen also einen neuen string, da es in Pawn streng genommen keinen Datentyp string gibt bauen wir uns selbst einen indem wir einer Variable einfach ein Array geben.


    new playername[MAX_PLAYER_NAME];
    In dem string der 24 Zeichen groß ist (weil MAX_PLAYER_NAME mit 24 definiert ist) können wir nun den Namen speichern.


    Dazu brauchen wir die GetPlayerName Funktion


    GetPlayerName(playerid,playername,sizeof(playername));
    Wir speichern den namen von playerid in den playername string.


    Jetzt haben wir schonmal den namen, nun brauchen wir noch einen string indem wir die Nachricht packen.
    new dstring[128];
    diesen formatieren wir jetzt, dazu geben wir format folgende dinge an:
    ersteinmal worein er speichern soll,wie lang das maximal sein soll, dann unser Text mit den %'ten als Platzhalter für die einzusetzenden Variabeln und schließlich unsere Variabeln.


    format(dstring,sizeof(dstring),"Glückwunsch, du hast %s gekillt.",playername);


    Das wars, den dstring können wir nun versenden:
    SendClientMessage(killerid,ROT,dstring);


    Fertig sieht das dann so aus:

    public OnPlayerDeath(playerid, killerid, reason)
    {
    SendDeathMessage(killerid,playerid,reason);// Zeigt die Todesnachricht rechts im Label an..


    if(killerid != INVALID_PLAYER_ID)
    {
    new playername[MAX_PLAYER_NAME];
    new dstring[128];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(dstring,sizeof(dstring),"Glückwunsch, du hast %s gekillt.",playername);
    SendClientMessage(killerid,ROT,dstring);
    SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    GivePlayerMoney(killerid,1000);
    }
    return 1;
    }

    Der gestorbene ist playerid, also musst du dir den namen von playerid mit GetPlayerName in einen string speichern lassen.
    Den string musst du dann zusammen mit dem restlichen Text den du haben willst in einen weiteren string formatieren.
    Den kannst du dann ausgeben.

    Da du das nichteinmal weißt rate ich dir von der Verwendung eines mehreren zehntausend-Zeilen großen Scriptes schlicht ab.
    Du kennst dich dafür zu wenig aus.



    //Closed


    Du hast ja nun die Include (Die kommt übrigends in den Pawno/Includes Ordner)

    Der Regeneffekt ist ganz nett, aber die Schrifteffekte sehen echt nicht gut aus.


    Mal daran gedacht bei der Schrift Effekte wie z.B. ein leichtes Verwischen/Verzerrung/Verschwommenheit etc. einzuarbeiten?


    Außerdem würde ich (Auch wenn es mit der Polizeisirene recht gut aussieht) bei Regen eher zu insgesamt dunkleren Farben mit wenigen Lichtquellen tendieren.


    Alles in allem aber durchaus Potential.

    Scripting Fragen kommen in den Scripting Bereich //Verschoben


    @ Blu3scReeN
    Nein, 32


    @ Thread
    Du musst wenn du eine Variable in eine Zeichenkette einbinden willst, diese formatieren mit der format funktion
    Außerdem musst du dir den Spielernamen ersteinmal besorgen, mit GetPlayerName und einem weiteren string.

    //
    if(strcmp(cmdtext,"/Kennzeichen",true) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid,kstring[30],pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    vehicleid = GetPlayerVehicleID(playerid);
    format(kstring,sizeof(kstring),"%s Auto",pName);
    SetVehicleNumberPlate(vehicleid,kstring);
    SetVehicleToRespawn(vehicleid);
    PutPlayerInVehicle(playerid,vehicleid,0);
    }
    return 1;
    }


    //Edit

    ode rso das man das selber auswählen kann !?!?Q


    Dazu müsstest du mit Parametern arbeiten, ich glaube dazu wärst du noch nicht in der Lage ;)

    Du nutzt ja auch immer die iconid 54, du musst pro Haus eine andere id verwenden.
    Nimm statt 54 die hausicons Variable, beachte aber das diese bei 0 Anfängt und du somit bisherige Marker überschreibst die die Selbe ID haben.
    Also würde ich alle anderen von 0 bis gebraucht von hand bennen und die hausicons Variable folgendermaßen eintragen:

    SetPlayerMapIcon(playerid,30+hausicons,HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez],32,0,0);

    Die 30 wäre dann dein Puffer