Beiträge von Splash

    Ich finde die Überschrift lustig. Es steht "Gegen die Ausdrucksweiße der Admins" aber ich sehe hier nur Sachen die BlackAce löschte. Naja würde mal eher denken hier ist jemand sauer, dass sein "Tutorial" gelöscht wurde mit so einer wie ich finde super Begründung.


    Meine Güte wenn du wissen willst warum er es gelöscht hat, dann schreibe ihn privat an, statt so nen Fass hier auf zumachen, da auch BlackAce NUR ein Mensch ist und keine Machine...


    Auch wenn feni12 nicht ein wirklicher Rechtschreibprofi ist, finde ich, nicht über ihn zu urteilen.
    Es ist schon richtig, dass man durch die Gründe nicht weiß, was man genau falsch gemacht hat.
    Liegt es an der Artikulation oder an was? Aber ich glaube löschen ohne Grund tuen sie nicht.


    Der Administrator/Moderator ist zu 100% bereit wenn man ihn freundlich via PN fragt warum weshalb wieso die Gründe zu nennen und muss nicht ein Roman als Grund schreiben.

    Sogesehen ist die Idee nicht so schlecht, also ich finde sie gut, ABER ich weiss jetzt nicht ob es bei WBB möglich ist, macht es doch Post abhängig (die Zeit bis er klicken darf). Wenig posts == mehr Zeit, mehr posts == weniger Zeit. Zudem wenn es möglich ist, sollte man dann noch die Registrierdaten einbeziehen. D.h. Wer länger registriert ist, bekommt weniger Zeit, wer kürzer registriert ist mehr Zeit.


    Bevor jemand fragt warum sollten die jenigen die mehr Posts und länger hier registriert sind weniger Zeit bekommen zu klicken, möchte ich dazu sagen, dass sie wissen MÜSSTEN was in den Regeln steht und somit eigentlich auch eine Santionierung eher sinnvoll ist, als die Regeln zu zeigen.


    Bei einem "Frischling" kann man noch die Hoffnung haben, dass er sich dadurch ändert.


    Jedoch muss ich dazu sagen dass das zeigen der Regeln dann gecountet werden sollte, sollte man dann z.B. 3 mal oder öfters die Regeln gezeigt bekommen haben, sollte die Administration darauf hingewissen werden wenn sie diesen "Button" klicken, damit sie wissen: "Ey dem wurde schon so und so oft die Regeln gezeigt, jetzt reicht es aber!".

    @Dark.Shadow du wirst ihn schon richtig verstanden haben, aber er wird den Sinn nicht verstehen.


    [LoH]Joker


    Du musst bei dem Callback OnPlayerStateChange eine abfrage machen ob er in ein Auto einsteigt, sollte seine newstate == PLAYER_STATE_DRIVER sein, schaltest du den Motor ab und gibst ihm eine Nachricht als Beispiel aus, das er mit einer bestimmten Taste diesen starten kann. Nachdem du ihm dies gegeben hast, gehst du zu dem Callback OnPlayerKeyStateChange und fragst da als aller erstes ab ob er in einem Fahrzeug sitzt. Dann fragst du ab, ob er den Key gedrückt hat, wenn ja startest du den Motor.


    Eine nützliche Funktion für den Motor ist: SetVehicleParamsEx

    Wie wäre es einmal mit etwas Respekt dem jenigen der Helfen möchte?


    zudem wäre es vlt. auch sehr hilfreich wenn du uns einmal die Zeilen zeigst die die Warnings hervorrufen.

    Für mich wäre ein kompettentes Team wichtig, was auch einen einmal hilft wenn man Probleme mit Games hat und auch bei bestimmten Sachen einfach nur durchgreifen, trotzdem wollte ich in der Lage sein meine Meinung frei zu äußern, da es für mich das wichtigste Gut ist.


    Dann sollte sich die Community auf jeden Fall in eine Richtung entscheiden, in dem Sinne entweder International ODER national, d.H. entweder NUR englisch oder nur deutsch.


    Was wäre mir noch wichtig, naja ein gutes Klima unter allen. (hat aber eher weniger mit der Administration als mit den Members zu tun)

    Wäre es nicht eigentlich auch genug einfach die Information der Räder abzufragen? Da die Motorhaube ja nun normaler weisse über den Vorderräder wäre.


    D.h.


    new Float:X, Float:Y, Float:Z;
    GetVehicleModelInfo(vehid, VEHICLE_MODEL_INFO_WHEELSFRONT, X, Y, Z); //vehid musste natürlich selber machen :P
    printf("Die Motorhaube liegt etwa be %.1fm X, %.1fm Y und %.1fm Z", X, Y, Z);


    Sollte nur ein Vorschlag sein wie ich es probieren würde, da es am einfachsten scheint.

    Es gibt keinen Hardware Ban bei SA:MP, den den du meinst ist ein Serial Ban der JEDOCH nicht die Hardware beinhaltet, es ist ein Hash aus mehreren Sachen, wie z.B. Windows Nutzername, Installationspfad, was weiterhin bedeuten würde, sobald jemand den gleichen Windows Nutzernamen hat hat er zu 99,9% auch den gleichen Serial wie der andere.


    Jedoch um dich nicht im unwissen sterben zu lassen, der native ist:


    native gpci(playerid,serial,len[]);


    Dazu solltest du dir dies durchlesen: Official gpci reply by Kalcor


    Und um deine andere Frage zu beantworten, ja gibt es einfach mal nach Anti Cheat in den Suchfuntionen der SA:MP Foren suchen.


    Man kann zwar mit gpci und ein paar anderen Sachen einem Cheater es erschweren zu connecten, jedoch ist es so gut wie unmöglich es ihm komplett zu sperren.


    EDIT: Zusatz

    Wenn du die beiden Funktionen vernünftig nutzt bekommst du die Skin Selection weg. Sorry wen das jetzt hart klingt, aber wenn du willst das wir hier für dich das zusammen scripten, dann bist du als Scripter falsch. Fragen kann man, man kann fragen wie man etwas macht, aber NICHT fragen ob einer jemanden etwas komplett scriptet. Dafür sind andere Bereiche hier da.


    Solltest du Probleme haben diese beiden Funktionen richtig zu nutzen, dann frag und zeig uns wie du es genutzt hast derzeitig.


    Um dir einen kleinen Denkanstoss zu geben, du musst beim registrieren dem Spieler einen Skin setzen, den speicherst du ab, setzt nach dem er scih erfolgreich registriert hat (am besten in deinen Register stock SpawnPlayer(playerid); ein und beim Login, liest du den Skin den er als letztes hatte aus nachdem er sich erfolgreich eingeloggt hatte und nutzt wieder SpawnPlayer(playerid); damit er sofort gespawnt wird (diesmal natürlich nachdem er sich erfolgreich eingelogt hatte und den Skin bekam).

    Du musst natürlich auch durch alle Ärzte loopen, da du aber schon i für den user nimmst würde ich dir raten einen anderen Buchstaben oder Wort zu nutzen.


    Also:



    //dein format davor.
    for(new=a;a<MAX_PLAYERS;a++)
    {
    if(PlayerInfo[a][pMember] == 4 || PlayerInfo[a][pLeader] == 4)
    {
    SendClientMessage(a,Hellblau,ALLSTRING);
    }
    }

    Du musst den Namen von dem geheilten auch erst neu getten, da du in deinem CMD, pname beim ersten für den geheilten nutzt, dann etwas später für die playerid der heilt.


    Also GetPlayerName(i,pname,MAX_PLAYER_NAME); noch vor der formatierung.


    Einfacher wäre es gewesen, wenn du für den geheilten und den heiler ein extra new anlegst. z.B. new pName[MAX_PLAYER_NAME],phName[MAX_PLAYER_NAME] dann eins für den sani nimmst und eins für den geheilten.


    EDIT:


    Noch einfacher ist es mit einem GetName stock.


    stock GetName(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
    return Name;
    }


    Dann kannst du es so nutzen:


    format(string, 256, "Du hast deinen Patienten %s behandelt und bekommst 200$ für deine Arbeit.",GetName(pname));


    format(string, 256, "Der Sanitäter %s hat deine Wunden behandelt.",GetName(playerid));


    //und


    format(ALLSTRING,sizeof(ALLSTRING),"Sanitäter %s hat sich um %s gekümmert und ihn behandelt.",GetName(playerid),GetName(pname));


    Und kannst dir die funktion GetPlayerName jedesmal sparen.