Beiträge von [DT]Sniper

    Die funktionen helfen:
    forward Float:GetXYInFrontOf(&Float:a, &Float:x, &Float:y, Float:distanc);
    Float:GetXYInFrontOf(&Float:a, &Float:x, &Float:y, Float:distanc)
    {
    x += (distanc * floatsin(-a, degrees));
    y += (distanc * floatcos(-a, degrees));
    return a;
    }


    forward Float:GiveRotation(&Float:a, Float:ap);
    Float:GiveRotation(&Float:a,Float:ap)
    {
    a+=ap;
    if(a <0){a=360-(a*-1);}
    if(a >360){a=0+(a-360);}
    return a;
    }


    Und dann wäre folgendes zu machen:
    new Float:vX,Float:vY,Float:vZ,Float:vR;
    GetVehiclePos(veh,vX,vY,vZ);
    GetVehicleZAngle(veh,vR);
    GiveRotation(vR,180.0);
    GetXYInFrontOf(vR, vX, vY, 10.0);//die 10 sind ein schätzwert und wird warscheinlich zu viel sein.
    //nun kannst du mit vX,vY,vZ den Checkpoint erstellen wenn du mapAndres nutzt kannst du die Z variable damit nochmals holen, damit auch Hänge kein Problem mehr sind.

    Wollte selbest erst eine Kritik dazu veröffentlichen habe es dann aber gelassen. Finde es einfach nicht angemessen dass dies so von statten geht.


    Ich checke es nicht, dass ihr deshalb so rumheult....
    Zum thema Sniper hats genehmigt:
    Ich habe Beavis als er mich gefragt hat geschrieben, dass ich nicht denke, dass es ein Problem sei wenn es sowas im smalltalk postet.
    Warum habe ich das gesagt? Viele sagen jetzt, dass ich dies gesagt habe, weil Beavis in dem Scripting Team [DT] ist... Doch ich habe es gesagt, da ich im Kopf hatte, da dort schon öfters solche Fragen gestellt wurden. Wer dies nicht glaubt hier einige Beispiele:
    Ideen Für Einen Reallife-Server
    REALLIFE SERVER ! ! Wir wollen eure Ideen umsetzen
    [Suche] Ein paar Ideen für Reallife Script


    Also ich verstehe euch nicht, bei diesen ganzen Sachen sagt keiner was, aber wehe es Postet einer, der nachweisslich mit einem Mitglied des Breadfishteams in Kontackt steht...


    edit:
    Jony:
    lollipop:
    IntelligenT:

    überprüf ob der spieler in einem Fahrzeug mit dem Model Mähdrescher sitzt (welche modelid ist der den dann kann ich dir nochmehr helfen.)
    Wenn er nicht drine sitz gib ne meldung aus, dass der Befehl nur in einem Mähdrescher nutzbar ist.
    Am besten lässt du dann beim aussteigen auch den Job abrechen, sonst kommen Leute auf die idee den Befehl im Mähdrescher zu machen und dann auszusteigen um die Checkpoints im Infernus abzufahren.

    Oder auch sowas wie nen tresor für waffen oder geld


    Sowas ist geplant.
    Eine Hausbank gibt es automatisch, um Mieteinnahmen zu verwalten.


    Da etwas geplant ist mit den man sich Objecte Kaufen und selbst Positioneren kann ist es auch möglich einen Waffen Tresor mit Funktion (siehe DT_SaveBox) zu kaufen.

    Irgendwann ist für jeden das erste mal.
    Ich sags dir, wenn du einmal mit MySql gearbeitet hast willste davon nicht mehr weg, da MySql in fast jeder Sprache gelich genutzt werden kann. zudem hat Mysql viel einfachere Möglichkeiten um Statisticken auszuwerten oder viele Daten zu bearbeiten (Beispielsweise alle User mit Level 20 Löschen oder ähnliches)

    Nein, leider nicht, da ich momentan alles 3 mal schreibe (Sql Strickenkid, SQL G-Stylzz und sql lite) dauert es alles etwas länger, ich habe vor diese Woche wieder Intensiv damit weiter zu machen.


    edit:
    Hab heute angefangen weiter zu machen, habe auch die Status anzeige in meiner Signatur überholt. Ja sie ist was zurück gegangen, da ich mit den neuen Sa-mp Versionen mehr neue Sachen reinbringen will :)

    Drawdistance lässst sich durch 0.3x schon erhöhen :)


    Es wäre noch gut wenn man das Radar Verschieben könnte oder hiden(falls das hiden nicht schon möglich ist^^)


    Nette idee, wäre auch froh wenn man auch Textdraws erstellen kann die hinter dem Hud oder dem Radar liegen.


    edit:
    Ich habe mir auch schon immer gewünscht, das ich Scriptseitig Screens machen kann, also für Blitzer oder ähnliches, damit ich diese Screens dann im Ucp oder vl. auch direkt ingame anzeigen lassen kann :)

    native SAMPFox_Init(samp_port,sampfox_port=42690);


    Warum lesst ihr den samp port nicht aus der server cfg?


    Sieht sehr Nice aus.
    Freue mich auch auf die Source, da ich persönlich sher iNteressiert daran bin wie man Samp plugins schreibt und solche Plugin Sources erklären einiges :)


    edit:
    Schade, dass das Wiki noch nicht vollständig ist, sammel hier mal Funktionen zu dennen ich Info suchen wollte:
    TakePlayerPhoto(playerid);
    native TogglePlayerTimeFliesBy(playerid,bool:toggle);
    native GetPlayerTimeFliesByState(playerid);
    native SAMPFox_Kick(playerid);// Unterschied zum normalen Kick?
    native SendIdentInfo(playerid,ip[],port,nickname[]);


    Unterschied zwichen:
    native IsSAMPFoxConnected(playerid);
    und
    native IsSAMPFoxIdentified(playerid);

    2.1 Dialog zum schließen des Zolles



    Ich benutz meist für die Dialogids case und für die listitems if-Statements
    das ist jedem dennoch selbst überlassen es schenkt sich im großen und
    ganzen sag ich mal nix es sind nur kleine unterschied und zwar das
    else if abfragen schneller sind als die Verwendung von switch. Jedoch
    wenn man die möglichkeit hat Ternäre Operatoren zu verwenden was eine vereinfachung von


    Code
    if(...)
    ...
    else
    ....


    ist und sind zu dem noch schneller da er keine Anweisung durchführen muss, sondern nur
    Werte zurück gibt. Was man hier nun noch beachten sollte ist das man
    bei der Verwendung von mehreren if-Abfragen ein else if benutzt da dies
    schneller ist als ständig neue if abfragen aufzurufen da die
    hinzugefügten else if zur if abfrage dazu gehören


    der code geht
    solange weiter bis eines davon richtig ist. Daher kann man einer if
    Bedingung unendlich viele else if Bedingung anhängen jedoch nur eine
    "else".


    Nun ruf ich danach eine for-schleife und lass auch danasch die richtige Zahl in einer variabel Temporär speichern unter


    Code
    ZollClickID[MAX_PLAYERS char];


    Das char reduziert den Memory Verbrauch (RAM) vom Skript von normale 2000
    bytes auf 500 der einzigste nachteil ist nun das nur Zahlen von 0 bis
    255 gespeichert werden. Das bedeutet das eine Zelle nur 8 Bits fast.
    Dies genügt um ein Zeichen zu Speichern oder eine Zahl. Mann kan
    dies auch noch tun in dem man den deklarierten variabeln gleich noch
    ihren Datentyp zuweisst.Jeder normale deklarierte Integer wird als langer
    Integerwert gehandelt und verbraucht 4 bytes durch new int:....; werden
    nur 2 bytes verbraucht jedoch können nur Werte von -32 768 .. 32 767 gespeichert werden.


    Die for-schleife geht nun von 0 - MAX_ZOLLGATES besser gesagt bis 1 sollte
    nun das gedrückte listitem der Zahl entsprechen so wird die Schleife abgebrochen.
    Die jeweilige deklarierten Variabeln-Array wird der jeweiligen Wert
    zurgeordnet und ein Icon wird auf der map angezeigt. Dies ist hier nur als kleines
    zusätzliches
    Feature drinne das man ungefähr weiß wo dies liegt und um die Schleife
    abzubrechen rufe ich per return gleich den Dialog auf.


    Dort kann man nun den jeweiligen wert eingeben den man will daher benutze
    ich auch sscanf um die eingabe zu überprufen nun kann man true , false ,
    1 , 0 eingeben dies dient zum verändern des Status der Zollschranke, ob diese dann zu oder offen ist.
    Jedoch kann man auch andere Werte eingeben, jedoch kann man die Zollschranke nur noch mit 0 oder false entsperren.
    Nun wird noch eine stock-function aufgerufen um nochmal den string zu formatieren.



    Code
    stock ZollDialogText()
    {
    	strdel(ZOLLCSTRING,0,sizeof(ZOLLCSTRING));
    	new i;
    
    
    	for(; i < MAX_ZOLLGATES; 
    ++i)format(ZOLLCSTRING,sizeof(ZOLLCSTRING),"%s{FFFFFF}Zoll %d | 
    %s\n",ZOLLCSTRING,i,((ZollInfo[i][zState])?("{FF0000}geschlossen"):("{00FF00}offen")));
    }


    hier
    wird der string gecleart damit keine unerwünschte Inhalte im String
    enthalten sind und mit format demenstprechend formatiert hier wird noch
    ein Operator verwendet
    der Ternäre Operator mit Farbcode er vereinfacht das typische

    Code
    if(...){
    
    
    }else{
    
    
    }


    ist
    jedoch weit aus schneller und sehr praktisch der erste ist der true
    wert nach dem ? der zweite der false wert , eine erklärung dazu ist ja
    schon oben erfolgt,
    wie das posten des Codes.



    Ich hoffe das Tutorial war ausführlich genug erklärt.
    Sollte es Probleme geben könnt ihr dies gerne posten


    Mit freundlichen Grüßen IPrototypeI



    Edits:


    Dieser Teil ist ebenso von IPrototypeI