Beiträge von Goldkiller

    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(killerid == INVALID_PLAYER_ID)
    {
    //senden dem Der einen Team Kill gemacht "-1" Score
    SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);

    }
    else
    {
    if(gTeam[killerid]!= gTeam[playerid])
    {
    SendDeathMessage(killerid,playerid,reason); // Sendet eine Anzeige Wehn wer Tot gemacht hat..
    SetPlayerScore(killerid,GetPlayerScore(killerid)+1);

    }
    else
    {
    SetPlayerScore(killerid,GetPlayerScore(killerid)-1); // Hier liegt der Fehler...auch wenn das Team gleich ist hast du +1 gemacht
    }
    }
    new String[46], Spieler[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Spieler,sizeof(Spieler));
    format(String,sizeof(String),"%s ist Tot",Spieler);// Gibt an Welcher Spieler tot ist.
    SendClientMessageToAll(Rot,String);
    return 0;
    }

    Sieht so aus als sollte admincar ein Array sein.

    // In den Kopfbereich des Scripts ( Auch "Oben" genannt)
    new admincar[10]; // 10 Admincars???
    //OnGameModeInit()
    admincar[0] = AddStaticVehicle(411,1910.0447,708.6887,10.5474,359.6258,25,0); // car 1 infernus
    admincar[1] = AddStaticVehicle(412,1910.0447,708.6887,10.5474,359.6258,25,0); // car 2
    admincar[2] = AddStaticVehicle(413,1910.0447,708.6887,10.5474,359.6258,25,0); // car 3
    ...
    admincar[9] = AddStaticVehicle(522,1910.0447,708.6887,10.5474,359.6258,25,0); // car 10

    Sieht wirklich nett aus,mir sind bisher paar Sachen aufgefallen.


    Wenn man "Server CFG Bearbeiten" auswählt,aber keinen Pfad angibt sondern direkt auf Abbrechen drückt,gibt es ein Fehler im Programm.


    Speichert man mit GUI PawnXYZ ein Script indem es zB Umlaute gibt ( Ä Ö Ü ), werden sie im Pawno Editor falsch angezeigt.Inwiefern das jetzt mit GUI PawnXYZ zusammenhängt weiss ich nicht.


    Anstatt der Buttons(?) Tabs ausblenden / Tabs einblenden würde ein Button reichen,der immer von ausblenden / einblenden auf das jeweils Andere umspringt.


    Trotzdem toller Editor,weiter so :) .

    Das Callback ist ja schön und gut,würd es aber nicht benutzten außer um ein wirklich effizientes AntiCheat - Script zu schreiben.
    Du hättest auch mal erwähnen sollen,dass das Callback sehr häufig aufgerufen wird,einfach bei jedem network Update.


    Würde es keinen Anfänger empfehlen das Callback zu benutzten,gibt schon viel zu viele Idioten die OnPlayerUpdate() dafür benutzten die Spielerstatistik zu speichern,was völliger blödsinn ist und den Server schnell in die Knie zwingt.

    public tut1(playerid)
    {
    SendClientMessage(playerid,COLOR_HELLBLAU,"Willkommen beim Tutorial");
    SendClientMessage(playerid,COLOR_HELLBLAU,"Bitte ließt euch das sorgfälltig durch");
    SendClientMessage(playerid,COLOR_HELLBLAU,"Hier wird erklärt an was ihr euch halten sollt");
    SendClientMessage(playerid,COLOR_HELLBLAU,"Viel Spaß beim lesen");
    SetTimer("tut2",2000 , 0);
    }


    public tut2(playerid)
    {
    SendClientMessage(playerid,0xFFFF00FF,"x¸,ø¤°``°¤ø,¸-Die Regeln-¸,ø¤°``°¤ø,¸x");
    SetTimer("tut3",1000 , 0);
    }

    Woher soll das Script wissen was playerid ist ?
    Das wurde hier im Forum schon 1000x durchgekaut,benutzt die Suchfunktion und such nach "SetTimerEx".

    Ist eigentlich schon mal jemand von euch auf die Idee gekommen anhand von einer Variable die Sprache des Spielers festzustellen?
    #define GERMAN 0
    #define ENGLISH 1


    new Language[MAX_PLAYERS];
    //
    if(Language[playerid]==GERMAN) { }
    else if(Language[playerid]==ENGLISH) { }

    Zitat

    MAX_PLAYER_NAME gibt meines Wissensnach an das die Variable einen Namen Speichern soll


    Nein,MAX_PLAYER_NAME ist eine Zahl die angibt wie lang der Name maximal in SA:MP sein kann.
    new Name[24];
    Ist genau das Gleiche.


    Zitat

    Ich weiß, dieses Tut ist nicht perfekt. Ich weiß auch das Goldkiller,DMA und [NSG]Bright es hätten besser machen können und es schlecht finden werden und meckern werden


    Stimmt,was es an sizeof(blah) nicht zu verstehen gibt weiss ich nicht :P.

    Könnte daran liegen,dass WaffenString ein leerer String ist da du nur WaffenString einen String zuweist wenn die WaffenID 0,30 oder 31 ist aber bei allen Anderen nix,weshalb der String leer bleibt.


    case 0: { WaffenString = "Keine"; }
    case 30: { WaffenString = "AK47"; }
    case 31: { WaffenString = "M4"; }
    default : { WaffenString ="- Error -"; }

    text[] ist ein String,kein Integer.
    /*
    if(strlen(text) > 50 ) { // Damit kannst du einen Crash verhindern
    return 0;
    }
    */
    new
    model = strval(text); // Du musst doch zuerst den String in eine Zahl umwandeln
    if(model < 0 || model > 126) {
    return SendClientMessage(playerid, COLOR_RED, "Bitte nur Zahlen von 0 - 126"); // Eigentlich sind model id's von 400 bis 611
    }
    new
    Float:x,
    Float:y,
    Float:z;
    GetPlayerPos(playerid, x,y,z);
    jobcar = CreateVehicle(model, x+1.0,y,z+1.0, 0,-1,-1,60000); // -Offset
    PutPlayerInVehicle(playerid, jobcar, 0);
    JobInfo[playerid][Model] = model;
    InProcess[playerid] = 3;
    Versuch mal ob es funktioniert,kann das schlecht testen xP.

    Guckt doch mal aus dem Fenster,es ist mittlerweile Sommer.
    Wer da lieber vor seinem PC sitzt,als draußen mit Freunden irgendetwas macht ist selber Schuld.Da kann man es Breadfish wohl nicht ganz so übel nehmen,auch wenn er euch als Kunden(Ich meine nur die,die bei ihm Server bestellt haben) gegenüber Support in irgendeiner weise Schuldig ist. Oha klingt das geil.
    out.

    Eigentlich wird der Timer nicht zerstört wenn Ich deinen Ausgangspunkt richtig verstanden habe.Du hast zwar Wiederholung auf false / 0 gesetzt,ob der wirklich aus dem Speicher gelöscht wird weiss ich nicht.Ich zerstör den nach Aufrufen der Funktion meist selber.Kann ja nicht schaden.
    new loginTimer[MAX_PLAYERS]; // Irgendwo im Header
    //
    KillTimer(loginTimer[playerid]);
    loginTimer[playerid]=SetTimerEx("BlaBla", 900000, 0, "d", playerid)