Beiträge von IPrototypeI

    PHP
    <?php 
    			require("SampQueryAPI.php"); 
    			$samp = new SampQueryAPI("localhost", 7777);
    			if ($samp->isOnline()){
    				$ServerInfo = $samp->getInfo();
    				echo($ServerInfo['players']."/".$ServerInfo['maxplayers']);
    			} else echo("Server ist Offline");
            ?>


    erst die api einbinden danach eine instanz erstellen und auf die daten zugreifen via den funktionen wo ist das Problem daran ?

    Ich hatte gerade eben ein Codeschnipsel geschrieben womit man bestimmen kann abhängig von der Rotation des fahrzeugs ob sich der Spieler vor, neben oder hinter
    dem Auto befindet



    stock GetPlayerPositionNextToACar(playerid,carid){
    if(!GetPlayerVehicleID(playerid))return 0;
    new Float:Pos[7];
    GetVehiclePos(carid,Pos[0],Pos[1],Pos[2]);
    GetVehicleZAngle(carid,Pos[3]);
    GetPlayerPos(playerid,Pos[4],Pos[5],Pos[6]);
    Pos[6] = ((Pos[4] - Pos[0])*floatcos(Pos[3],degrees)+(Pos[5] - Pos[1])*floatsin(Pos[3],degrees));
    Pos[3] = ((-(Pos[4] - Pos[0]))*floatsin(Pos[3],degrees)+(Pos[5] - Pos[1])*floatcos(Pos[3],degrees));
    GetVehicleModelInfo(GetVehicleModel(carid), VEHICLE_MODEL_INFO_SIZE, Pos[0],Pos[1],Pos[2]);
    if(Pos[6] >= 0 && Pos[3] <= (Pos[1]/2) && Pos[3] >= (-Pos[1]/2))return 1; //Rechts
    else if(Pos[6] <= 0 && Pos[3] <= Pos[1]/2 && Pos[3] >= -Pos[1]/2)return 2; //Links
    else if(Pos[3] >= 0 && Pos[6] <= Pos[0]/2 && Pos[6] >= -Pos[0]/2)return 3; // Vorne
    else if(Pos[3] <= 0 && Pos[6] <= Pos[0]/2 && Pos[6] >= -Pos[0]/2)return 4; // Dahinter
    return 0;
    }


    Anwendungsbeispiel:



    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    switch(GetPlayerPositionNextACar(playerid,1)){
    case 1:SendClientMessage(playerid,-1,"Rechts");
    case 2:SendClientMessage(playerid,-1,"Links");
    case 3:SendClientMessage(playerid,-1,"Vorne");
    case 4:SendClientMessage(playerid,-1,"Hinter");
    }
    return 1;
    }


    Keywords: Spieler neben dem Fahrzeug, Spieler vor dem Fahrzeug

    Wenn du Straßen und Wege auswendig machen willst gibt es noch das GPS Plugin, welches die Nodes von GTA Sa nutzt oder du benutzt das Pathfinder Plugin.


    Für eigene Objekte, da musst du eine eigene .hmap erstellen den code dazu gibt es in dem Thread von dem mapandreas Plugin von Mauzen

    Ich danke euch, für die positive Rückmeldung.



    Hier habe ich noch 1 Werk welches ich an iFeet verkauft habe:




    Ranggrafiken:





    //edit


    Ich hab mal wieder paar neue Werke


    Avatare:






    Logo:






    Designs:









    Ts3 Banner:




    UCP Layout:




    Homepage Design (Schlicht):


    @iFeet und die anderen danke für die positiven Rückmeldungen.


    NightMare96


    Editoren haben ja den Sinn, die Arbeit zu erleichtern. Ebenso ist es das selbe wie mit meinem Ingame Mapeditor die Leute wo keine Ahnung haben
    werden es versuchen und sollte es nicht klappen so wird es anschließend einfach gelassen , da sie zu schüchtern sind zu fragen :D.
    Zumindestens ist das mir schon zu ohren gekommen.

    Das liegt am hook der Parameter reason gab es damals noch nicht einfach diesen in der include hinzufügen



    /*
    © Gamer931215
    This script allows to detect deathmatching vehicles and disable them when needed
    */


    //includes/defines
    #include <a_samp>
    #define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
    forward OnPlayerVehicleFire(playerid,vehicleid,allowed);

    /*
    These natives are commented to "fake" the natives for providing autocomplete when included
    native ToggleVehicleWeaponsForAll()
    native ToggleVehicleWeaponsForPlayer(playerid)
    */



    //local variables
    new filter[] = {
    447, //seasparrow
    476, //rustler
    425, //hunter
    520, //hydra
    430, //predator
    432 //rhino
    };
    new DisableForAll = 1;


    //public functions
    stock ToggleVehicleWeaponsForAll(toggle)
    {
    if(toggle == 1)
    {
    DisableForAll = 0;
    } else DisableForAll = 1;
    }


    stock ToggleVehicleWeaponsForPlayer(playerid,toggle)
    {
    SetPVarInt(playerid,"__allowed",toggle);
    }


    stock CanPlayerShootInVehicle(playerid)
    {
    if(DisableForAll == 0)
    {
    return true;
    } else {
    if(GetPVarInt(playerid,"__allowed") == 1)
    {
    return true;
    }
    }
    return false;
    }


    // SA-MP Default functions:


    public OnPlayerUpdate(playerid)
    {
    new keys,updown,leftright;
    GetPlayerKeys(playerid,keys,updown,leftright);
    if(IsPlayerInArmedVehicle(playerid))
    {
    switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
    {
    case 447,476,520: //vehicles with only one weapon
    {
    if(keys & KEY_ACTION)
    {
    if(GetPVarInt(playerid,"__shot") == 0)
    {
    SetPVarInt(playerid,"__shot",1);
    CallLocalFunction("OnPlayerVehicleFire","iii",playerid,GetPlayerVehicleID(playerid),CanPlayerShootInVehicle(playerid));
    return 0;
    }
    }
    }
    default: //all the other vehicles in filter (use KEY_ACTION and KEY_FIRE)
    {
    if(keys & KEY_ACTION || keys & KEY_FIRE) //respond to primary and secondary fire key (like hunter)
    {
    if(GetPVarInt(playerid,"__shot") == 0)
    {
    SetPVarInt(playerid,"__shot",1);
    CallLocalFunction("OnPlayerVehicleFire","iii",playerid,GetPlayerVehicleID(playerid),CanPlayerShootInVehicle(playerid));
    return 0;
    }
    }
    }
    }
    }
    return CallLocalFunction("nodmforu_OnPlayerUpdate","i",playerid);
    }
    #if defined _ALS_OnPlayerUpdate
    #undef OnPlayerUpdate
    #else
    #define _ALS_OnPlayerUpdate
    #endif
    #define OnPlayerUpdate nodmforu_OnPlayerUpdate
    forward nodmforu_OnPlayerUpdate(playerid);


    public OnPlayerConnect(playerid)
    {
    SetPVarInt(playerid,"__shot",0);
    if(DisableForAll == 1)
    {
    SetPVarInt(playerid,"__allowed",0);
    } else SetPVarInt(playerid,"__allowed",1);
    return CallLocalFunction("nodmforu_OnPlayerConnect","i",playerid);
    }
    #if defined _ALS_OnPlayerConnect
    #undef OnPlayerConnect
    #else
    #define _ALS_OnPlayerConnect
    #endif
    #define OnPlayerConnect nodmforu_OnPlayerConnect
    forward nodmforu_OnPlayerConnect(playerid);


    public OnPlayerDisconnect(playerid,reason)
    {
    DeletePVar(playerid,"__shot");
    DeletePVar(playerid,"__allowed");
    return CallLocalFunction("nodmforu_OnPlayerDisconnect","ii",playerid,reason);
    }
    #if defined _ALS_OnPlayerDisconnect
    #undef OnPlayerDisconnect
    #else
    #define _ALS_OnPlayerDisconnect
    #endif
    #define OnPlayerDisconnect nodmforu_OnPlayerDisconnect
    forward nodmforu_OnPlayerDisconnect(playerid,reason);


    public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
    {
    if (!(newkeys & KEY_FIRE) && (oldkeys & KEY_FIRE)) //player released fire key
    {
    SetPVarInt(playerid,"__shot",0);
    }
    if (!(newkeys & KEY_ACTION) && (oldkeys & KEY_ACTION)) //player released fire key
    {
    SetPVarInt(playerid,"__shot",0);
    }
    return CallLocalFunction("nodmforu_OnPlayerKeyStateChange","iii",playerid,newkeys,oldkeys);
    }
    #if defined _ALS_OnPlayerKeyStateChange
    #undef OnPlayerKeyStateChange
    #else
    #define _ALS_OnPlayerKeyStateChange
    #endif
    #define OnPlayerKeyStateChange nodmforu_OnPlayerKeyStateChange
    forward nodmforu_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);


    stock IsPlayerInArmedVehicle(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    for(new i = 0;i<strlen(filter);i++)
    {
    if(filter[i] == GetVehicleModel(GetPlayerVehicleID(playerid)))
    {
    return true;
    }
    }
    }
    return false;
    }


    Die Funktionsweise ist so gedacht, bei /start starten die Motoren an der Seite , in diesem Modus kannst du das Luftschiff hoch und runter bewegen
    während es sich auf der stelle befindet mit dem Befehl /go wechselst du in den Flugmodus und kannst die Flugrichtung über deine Maus bestimmen,
    das Objekt bewegt sich dabei kontinuierlich weiter.


    Daher lass ich die zwei Variablen nicht nebenher laufen. Mit einer Variable wäre das in der Tat einfach gelöst das stimmt , jedoch wollte ich das ganze damals noch erweitern.


    Den Pastebinlink habe ich jetzt aktualisiert, wie auch die zu downloadende Datei.
    Als du mich das erste mal darauf aufmerksam gemacht hattest, hatte ich es irgendwie hier noch vergessen den Pastebinlink auszutauschen.


    /mycommand ruft den Timer auf für den Lauftext sieht man auch am Namen der Funktion , welche aufgerufen wird.


    Zu Punkt 3: Das ist mir recht egal ob strcmp die Zeichenkette bis zu 10 Zeichen überprüft oder 6.


    Zu Punkt 4: Die Abfrage könnte ja jeder noch hinzufügen.



    Ich bedanke mich nochmals für die objektive Bewertung ^^.


    Der ursprüngliche Gedanke zum Release, war der das die Leute bestimmt gewisse Elemente vom Code gebrauchen könnten zum größten Teil die Berechnungen
    und wie bereits geschrieben ich mach sowieso nix mehr in die Richtung und möchte das Skript nicht sinnlos auf meinem PC bunkern bis es irgendwann
    dem Papierkorb zum Opfer wird.