Beiträge von |-|auke





    SAMPit, ist das Profitool für Serverowner mit einer großen oder auch kleinen Anzahl von Spielern.
    Du kannst deinen ganzen Server von deinem Desktop aus verwalten. Ganz ohne knifflige CMD´s oder inGame sein zu müssen.



    SAMPit bietet dir unteranderem diese ganzen Funktionen:


    - Ein sehr übersichtliches und schlichtes Design mit einfacher Bedienung
    - Kompatibilität zu allen Servern! Ob Homeserver oder Linux, alle funktionieren damit
    - Einen einfachen Login zu jedem SA:MP Server über das RCON Passwort
    - Eine Liste, in der alle Spieler stehen, die gerade online sind
    - Kick- und Bannfunktion, ausgewählter Spieler
    - Ändern des Servernamens
    - Ändern des Gamemode-Textes
    - Ändern des Mapnamen
    - Einstellen der Schwerkraft
    - Gamemode wechseln/laden
    - Filterscript laden
    - Filterscript entfernen
    - RCON Passwort ändern
    - GMX ausführen
    - Bans zurücksetzen
    - Serverlog löschen
    - Server beenden

    - Nachrichten zu den Spielern senden





    Hier sind ein paar Bilder davon, wie du schon bald deinen Server verwalten könntest!












    SAMPit wurde entwickelt von Hauke und Linaks.
    Es steht unter unserem Copyright, und ist nicht open Source!





    Wir hoffen, dass wir euch somit die Arbeit erleichtert haben und freuen uns über ein Feedback


    Downloadlink: Klick mich
    Virusscan: Klick mich



    Windows Vista & 7 User müssen SAMPit als Administrator starten!

    Es wird Netframework 3.5 benötigt!





    SAMPit ist ab der Version 1.2 nun KOSTENLOS!


    Zitat von Wichtige Information!

    SAMPit benötigt immer noch Lizenzen.
    Diese Lizenzen könnt ihr euch kostenlos hier erstellen: Klick mich
    Bitte bedenkt, dass ich euch das Tool kostenlos zur Verfügung stelle. Also erstellt euch aus fairness nur einen Lizenzcode.


    Viel Spaß damit!
    Gruß Hauke :)

    Ich habe mir deine Funktion garnicht angesehen, ist aber natürlich das selbe ;)
    Ganz gleich wie groß MAX_PLAYERS bei dir ist. Diese Variante wird immer mehr Ressourcen brauchen. Es sei denn, MAX_PLAYERS ist gleich 1.

    Ist gerade durch eine Frage entstanden:

    new pIP[16],strste,step,blocks[4][4];
    GetPlayerIp(playerid,pIP,16);
    for(new strs=0;strs!=16;strs++)
    if(pIP[strs]=='.'||!pIP[strs]) {
    strmid(blocks[step],pIP,strste,strs);
    strste=strs+1;
    step++;
    }


    Damit werden die "IP Blöcke" einer IP Adresse eines Spielers in das Array blocks gespeichert.

    @ nickman:
    Versuch es mal so:

    new pIP[16],strste,step,blocks[4][4];
    GetPlayerIp(playerid,pIP,16);
    for(new strs=0;strs!=16;strs++)
    if(pIP[strs]=='.'||!pIP[strs]) {
    strmid(blocks[step],pIP,strste,strs);
    strste=strs+1;
    step++;
    }

    Hier werden die "IP Blöcke" jeweils in dem Array blocks gespeichert.
    Ich glaube ich poste das gleich nochmal unter nützliche Codeschnipsel, kann vielleicht ja noch der eine oder andere brauchen..


    PS: Sehr kreative Signatur, die du hast. Leute, lasst euch doch mal was eigenes einfallen..

    Eine Tabelle mit Bildern ^^.
    Kleiner Tipp von mir: Tabellen sind nicht für das Layout der Seite gedacht. Tabellen dienen dem Inhalt der Seite. Also verwende lieber css Elemente, denn die Zeit der Tabellen für das Layout ist schon seit Jahren vorbei ;)



    Das ist allerdings nicht Ressourcenschonender.
    So wird ein großer Speicherplatz schon vorreserviert, der wohl in 90% aller Fälle nie genutzt wird. Bei einem Aufruf einer Funktion, die den Namen zurück gibt, wird weniger Speicherplatz für kürzere Zeit gebraucht.
    Demnach wäre eine Funktion wie die folgende besser:

    stock _GetPlayerName(playerid) {
    new _name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,_name,MAX_PLAYER_NAME);
    return _name;
    }

    Die Benutzung ist ganz einfach:

    printf("Ein Spieler mit dem Namen %s hat mit dem Server verbunden",_GetPlayerName(playerid));

    @ Gabsch: Totaler Blödsinn!
    Lies dir lieber erstmal durch, was return macht.
    @AC/DC: Lies dir den vorletzten Post nicht durch, bzw. behalte nichts davon im Gedächnis, weil nicht eine Zeile davon stimmt.
    Zu deinem Problem:
    Versuch es mal so. Ich habe es nicht testen können, da ich sscanf nicht habe.

    ocmd:put(playerid,params[])
    {
    if(IsPlayerConnected(playerid)) {
    if(PlayerToPoint(10.0,playerid,2133.82666016,-1787.04248047,12.52786732) || PlayerToPoint(10.0,playerid,2805.2058,-1418.9055,16.2500)) {
    new option[32],menge;
    if(sscanf(params,"s",option)&&sscanf(params,"si",option,menge)) {
    SendClientMessage(playerid, COLOR_WHITE, "|__________________ Put __________________|");
    SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /put [NAME]");
    SendClientMessage(playerid, COLOR_GREY, "Verfügbare Namen: Mats, Drogen");
    SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
    return 1;
    }
    if(!sscanf(params,"si",option,menge)) {
    if(!strcmp(option,"Mats",true)) {
    if(menge < 1) {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /put mats [Menge]");
    format(string, sizeof(string), " Du hast %d Mats bei dir.", PlayerInfo[playerid][pMats]);
    return SendClientMessage(playerid, COLOR_GRAD3, string);
    }
    if(menge > PlayerInfo[playerid][pMats]) return SendClientMessage(playerid, COLOR_GRAD2, " So viele Materialien hast du nicht!");
    PlayerInfo[playerid][pMats] -= menge;
    PlayerInfo[playerid][pBoxMats] += menge;
    format(string, sizeof(string), " %d Materialien in die Savebox gelegt!", menge);
    return SendClientMessage(playerid, COLOR_GRAD4, string);
    }
    else if(!strcmp(option,"Drogen",true)) {
    if(menge < 1) {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /put drogen [Menge]");
    format(string, sizeof(string), " Du hast %d Drogen bei dir.", PlayerInfo[playerid][pDrugs]);
    return SendClientMessage(playerid, COLOR_GRAD3, string);
    }
    if(menge > PlayerInfo[playerid][pDrugs]) return SendClientMessage(playerid, COLOR_GRAD2, " So viele Drogen hast du nicht!");
    PlayerInfo[playerid][pDrugs] -= menge;
    PlayerInfo[playerid][pBoxDrugs] += menge;
    format(string, sizeof(string), " %d Drogen in die Savebox gelegt!", menge);
    return SendClientMessage(playerid, COLOR_GRAD4, string);
    }
    }
    }
    else return SendClientMessage(playerid, COLOR_RED, " Du bist an keiner Savebox!");
    }
    return 1;
    }

    Zitat


    C:\Users\Benedikt Wittmann\Desktop\Reallife962.pwn(1819) : warning 219: local variable "x2" shadows a variable at a preceding level
    C:\Users\Benedikt Wittmann\Desktop\Reallife962.pwn(1819) : warning 219: local variable "y2" shadows a variable at a preceding level
    C:\Users\Benedikt Wittmann\Desktop\Reallife962.pwn(1819) : warning 219: local variable "z2" shadows a variable at a preceding level


    x2,y2,z2 existieren schon. Du musst sie umbenennen.


    Wenn du den Streamer im Plugin nutzt, musst du die entsprechende include einbinden.