Beiträge von Cmdfreak

    Hallo Leute.


    Folgendes:


    Code
    public OnPlayerText(playerid, text[])
    {
       return true;
    }


    Nun muss ich alle Leerzeichen aus dem string text[] entfernen.
    (Das brauche ich für einen Anti-IP-say Algorythmus. Den will ich um jeden Preis selbst entwickeln. Einen sehr guten Ansatz habe ich auch. Aber wie immer scheiterts bei mir an den einfachen Dingen -.-)


    Bin dankbar für alles!
    webcode

    1. Meinst du die OBJEKT Id's von Häusern ?


    -> Download MTA. Und benutzte den MTA Mapper. Der ist total klasse, einfach, hochpräzise und schnell.
    Er erzeugt die von dir gespeicherte MAP im MTA Format. Um sie in SA:MP nutzen zu können, musst du sie
    allerdings konvertieren. Das geht ganz einfach: http://gtamap.delux-host.com/converter/
    Einfach MTA Code aus Dateiname.map einfügen, "PAWNO" auswählen und schon stehen unten die EXAKT konvertierten
    Objekte drinn :) Einfach nur noch in deine Gamemode einfügen.


    2. Meinst du das Interior ?
    Also, in welchem "Innengebäude" man ist. Das kriegst du mit GetPlayerInterior raus.


    Hoffe das bringt was :)

    Hallo zusammen!


    Ich habe mir folgendes Gedacht:
    Wenn ich die Taste KEY_FIRE (o. ä.) drücke, soll eine Rackete (Objekt #1636, eine kleine Bombe) von mir aus 40m zu dem Punkt X (x,y) fliegen.
    Geschwindigkeit: 60 Einheiten oder wie auch immer .



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if( ( newkeys & KEY_FIRE ) && IsPlayerInAnyVehicle(playerid))
    {
    new Float:Angle;
    new VID=GetPlayerVehicleID(playerid);
    GetVehicleZAngle(VID, Angle); // Richtung abfragen

    // ACHTUNG: Die Richtungsabfrage gibt einen "mathematisch positiv orientierten Wert (pfui..)" zurück. d.h. Er beginnt nicht bei 0
    // und wandert RECHTSRUM zu 90*, sondern LINKSRUM. Also gegen den Uhrzeigersinn. Ich muss ihn erst umformen (damit ich ihn mit
    // floatsin , floatcos nutzen kann...
    new Float:Winkel;
    if(Angle<0) Winkel=Angle+Angle; // Der Betrag halt
    Winkel=360-Angle; // Umkehren


    new Float:posX, Float:posY, Float:posZ;
    GetPlayerPos(playerid,posX, posY, posZ); // Wo isn der

    Exotec[playerid]=CreateObject(1636,posX,posY,posZ+2,0,90,Angle); // Rakete genau 3Einheiten über ihm erzeugen ( Gleiche Blickrichtung
    // Das funktioniert(e) übrigends :D


    new Float:newPOSX, Float:newPOSY; // Wo solln das Teil hin
    newPOSX=(floatcos(Angle)*40);
    newPOSY=(floatsin(Angle)*40); // Ich hatte das noch nicht in der Schule. Darum kann hier so einiges falsch sein >< (Kommt erst in 12)


    MoveObject(Exotec[playerid], newPOSX, newPOSY, posZ,60); // Dorthinbewegen [später bei OnObjectMoved.. explodieren lassen...]
    }
    return 1;
    }


    PS: Einrückung is Katherstrophe ich weiss
    :P
    Cmdfreak;

    Hallo Leute.
    Ich entwickle gerade "SoWasIt" - Ein neues Anticheatsystem und komme gut vorran.
    Das einzige, was ich noch ärgert ist, dass es -scheinbar- keine Möglichkeit gibt, Die nächste Kollisionsebene, also die Z Koordinate unter Spieler X -
    abzufragen.


    Es gibt ja nur "SetPlayerPosFindZ", aber das kann ich mir nicht leisten.
    Ständig Spieler durch die Gegend "schubsen", nur im zu testen, ob sie cheaten - ne. Das kann man vergessen.


    Wisst ihr da irgendwas, was mir dir Z Position verraten könnte ?


    :) Cmdfreak;

    Danke!
    (Das SA-MP Wiki Beispiel gab als Beispiel einen Script an, der mir sagte: "You are going to a velocity of: %f %f %f....", daher dachte ich: juhu, die Richtung)


    PS: Gibts auch was für die Höhe abzufragen (Wie hoch zB. Das Panzerrohr steht ??)

    Hallo Leute.
    Ich habe ein kleines Problem.
    Testzweckweise wollte ich folgenden Script erstellen


    - Wenn SHIFT gedrückt wird, erscheint (sofern man in einem Auto ist) in 10u(nits? Meter) Entfernung vor einem eine Schanze.
    ((( Die genau auf die Fahrtrichtung ausgelegt ist, versteht sich )))
    (Info: Diese Idee dient nur zu Testzwecken, die Idee wurde von einem anderen Server geklaut.)


    Problem >< :
    Wie frage ich Die Fahrzeugrichtung (In °) ab ??
    Ich habs schon mit folgenden Versucht:


    GetPlayerVelocity GetVehicleVelocity.


    Doch scheinbar werden da nur die Änderungen seit der letzten Abfrage angezeigt ??


    Brauche bitte Hilfe. Dieses Winkelabfragen werde ich noch häufiger verwenden wollen.
    Cmdfreak;)

    Ich habs.


    Ich habe das Problem mit einem einfachen Trick gelöst:


    Code
    public OnPlayerStreamIn(playerid,forplayerid)
    {
    	if(GetPlayerTeam(playerid)==GetPlayerTeam(forplayerid) 
    	{
        	SetPlayerTeam(playerid,GetPlayerTeam(forplayerid));
         	SetPlayerTeam(forplayerid,GetPlayerTeam(playerid));
    	}
    	return 1;
    }


    Informatisch gesehn ist das wohlmöglich ein Verbrechen, aber egal.
    (Es funktioniert :)

    Also nochmal im klaren ;)
    Ich will kein automatisches AFK System machen (Das mach ich mit nem Command /afk oder /brb und einem 10s Timer, der den Spieler dann an den Rand der Welt teleportiert und freezt. (10s, um Death-Evader Pussis auszuklammern ;) ))


    Ich möchte einen Algorythmus entwickeln, der prüft, ob der Spieler sein Spiel pausiert hat (ESCAPE).
    Die Scriptsprache bietet einem ja nur Anfragemöglichkeiten für die <Nötigsten> Tasten (Ohne mein Verständnis übrigends!).


    Also dachte ich 1. Vielleicht gilt "pausieren" ja als "PlayerStateChange", (wäre ja auch sinnvoll, net ?)
    Aber das war nix :(


    So.. andere Ideen =/

    Hallo.
    Wie kann man abfragen, ob ein Spieler pausiert ist?
    Sagt bloss nicht, das würde nicht funktionieren ;)


    Zuerst dachte ich an eine Abfrage in OnPlayerStateChange, aber das -scheint- nicht der richtige Weg zu sein-.

    Ich.. verstehe nicht ganz ?
    Uhh... Das Callback public OnPlayerDeath(playerid, killerid, reason); wird ja nur gestartet, wenn ein Spieler bereits Tot ist.
    Wenn ich im Callback return false; einbaue, beeinflusst das nicht den Tod des Spielers. Der ist ja schon geschehen.
    Mit OnPlayerDeath() kann ich kills nicht kontrollieren.


    Noch jemand eine Idee, warum dieser Blöde Teamkillbug auftritt :(

    Ich dreh am Rad!


    Ich habe ein großes Problem: Unsere Entwicklergruppe kommt nicht mehr weiter!
    Wir sind 7 Leute. Ich und noch ein anderer sind für die Abteilung Server-Programmierung
    zuständig.
    Folgende Situation:


    Zwei Leute im SELBEN TEAM beschiessen sich.
    Einer verliert Health, der andere nicht.


    Ich dachte, zwei Leute im selben Team können sich nicht killen. ?!?!?
    Bisher kann ich dieses gravierende Problem nut mit einem Kick(); bei OnPlayerDeath(...); lösen.
    Aber auf Dauer wird das KEINE Lösung sein.


    Was ist das Problem ??? Was mache ich falsch ?



    // Spieler spawnt
    public OnPlayerRequestClass ( playerid, classid )
    {
    switch(classid)
    {
    case 0:
    {
    // National Guard
    SetPlayerPos(playerid,-1313.4744,506.2922,11.1953);
    SetPlayerCameraPos(playerid,-1305.4744,506.2922,13.0);
    SetPlayerCameraLookAt(playerid,-1313.4744,506.2922,11.1953);


    /* HIER liegt das Problem. Das Team wird beim selectieren der Teams gesetzt */
    SetPlayerTeam(playerid, ARMY);


    // Alte Texte Zerstören
    CleanUpPlayer(playerid);



    // Neuen Text zeichnen
    TextDrawShowForPlayer(playerid, Teams[0]);
    TextDrawShowForPlayer(playerid, Desc[0]);
    TextDrawShowForPlayer(playerid, Weapons[0]);
    TextDrawShowForPlayer(playerid, WeapDesc[0]);
    }

    Hi Leute :)
    Ich bin auf diesem Forum und in der Welt der SAMP-Serverprogrammierung ncoh etwas neu :/
    Darum krieg ich folgendes nicht hin :( :


    Wenn ein Spieler seine Nachricht 3 mla wiederholt, soll er vom Server gekickit werden.
    Leider hab ich ein Problem mit den folgenden Teilbereichen:


    1. Wie initialisiere ich zwei globale Arrays, in dem die letzte Nachricht und die vorletzte Nachricht eingespeichert werden ?
    -> Mein Vorschlag:


    new Alt[MAX_PLAYERS][1024];
    new SehrAlt[MAX_PLAYERS][1024];


    Das klappt ja noch :/


    2. Wie frage ich ab, ob die Nachricht 3mal wiederholt wurde ???
    -> Mein Vorschlag:


    if( text == Alt[playerid][?] && text == SehrAlt[playerid][?])
    {
    .....
    return false;
    }


    Doch: Das funktioniert irgendwie nicht :( (Grund sind die scheinbar falschen Arrayklammern)


    3. Den aktuell abgesendeten Text der letzten Variable (zuletzt gesendete Nachricht) zuweisen, und den älteren Text dem ganz alten Text zuweisen.
    Hier habe ich schon alles versucht. format.. einfache Zuweisung mit = .. abe rnichts funktioniert.


    So sollte das aber aussehen:


    SehrAlt = "";
    Alt = SehrAlt;
    Text = Alt;


    (Natürlich soll diese Zuweisung erst nach dem Abfragen der Messages statt finden ;), sonst gibts Fehler...)


    Kann mir das mal jemand bitte verbessern :) danke!