Beiträge von IPrototypeI

    schreib dir eine stock-funktion da du hier die möglichkeit hast string auszugeben
    ich hab dir hier mal ein beispiel verfasst





    stock GetFraktionName(playerid)
    {
    new string[30];
    switch(sSpieler[playerid][Gang]){
    case 1:format(string,30,"Ballas");
    case 2:format(string,30,"Grove");
    default:format(string,30,"Niemand");
    }
    return string;
    }




    Was ist das Projekt SAMP-Extension ?


    Das Projekt SAMP- Extension wird eine Erweiterung
    für den San Andreas Multiplayer (SAMP), welche die Möglichkeiten,
    welche bisher möglich sind in SAMP um ein großes Stück zu erweitern.
    Diese Erweiterung bezieht sich auf die Vermissten SAMP Innovation ,
    welche vom SAMP Developer-Team bisher nicht umgesetzt wurden.
    Da dieses Projekt als nebensächliches Freizeitprojekt von unserer Seite her entsteht
    ist der Entwicklungsfortschritt nicht so groß wie bei einem Vollzeitprojekt.


    Was ist SAMP-Extension genau?


    SAMP-Extension wird ein Plugin beinhalten, welches für Windows und Linux kompatibel sein wird.
    Zu dem ist noch eine zusätzliche Anwendung nötig die auch beinhaltet ist,
    welche der Spieler sich downloaden muss (zusätzlicher Client).



    Was beinhaltet SAMP-Extension?


    SAMP-Extension beinhaltet momentan die Möglichkeiten den HUD als auch die Mini-Map
    auszuschalten, einzeln Bots für die Spieler zu erstellten, die Hardware-ID
    auszulesen und die Gravitationskraft für den einzelnen Spieler einzustellen.
    Die Besonderheit bei den Bots ist das diese nicht in der Spielerliste von SAMP vermerkt
    werden, daher bietet dies neue Möglichkeiten in das Spielgeschehen einzugreifen.
    Es wird geplant dieses Botsystem ähnlich aufzubauen wie das, welches MTA beinhaltet
    um den jeweiligen Skripten ein neues und umfangreiches Spektrum an Möglichkeiten zu bieten.
    Weitere Erneurungen die SAMP nicht beinhaltet,
    die jedoch bei dieser Erweiterung umgesetzt werden.
    Ist die Ermittlung der Mausposition des Spielers, als auch die Festlegung des Wasserstandes
    oder die der Wellenhöhe.


    Projektmitglieder:


    Entwickler:
    Mysteriöser Unbekannter


    BlackAce


    Management(Funktionstester):
    IPrototypeI


    Links:
    Blog
    http://saext.gtanetwork.eu/


    IRC
    http://webchat.kerat.net:3988/…s=sampextensions&prompt=0


    Diskussionsforum:
    http://saext.gtanetwork.eu/board/index.php?page=Index


    Was wir jedoch genau von euch wollen ist eine kleine Bewertung/Beurteilung des Projektes.


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.



    Nebeninfos

    Spoiler anzeigen
    Dieser Post wurde von Kones genehmigt


    Edits:

    Spoiler anzeigen

    edit 1:
    - Verlinkungen hinzugefügt | Name | Blog | Irc
    edit 2:
    - neue Verlinkung zum Blog
    edit 3:
    - Verlinkung zum Diskussionsforum


    das ganze geht am ressourcensparendsten, wenn man die namen in einer array speichert sobald ein spieler das game betrettet.

    Wie berechnet man die Geschwindigkeit ohne GetVehicle/PlayerVelocity?


    Das ist mir noch nicht so ganz klar...


    in dem man es ganz einfach berechnet wie man es normal auch macht GetVehicle/PlayerVelocity gibt die Momentangeschwindigkeit wieder
    also v = lim delta s : delta t


    also könntest du ganz einfach v = s/t rechnen oder du machst es genau so wie oben .
    Dabei ist zu beachten das du zwei messungen hast die möglich einen geringen unterschied haben daher lim.
    lim soll bedeuten das delta t nahe 0 ist.


    Bsp:
    erste Messung
    100 meter
    zeit: 5s


    zweite Messung
    196 Meter
    zeit: 7s


    196 - 100 = 96 m (delta s)
    7s - 5s = 2s (delta s) geht jetzt nicht richtung 0 jedoch ist es mal als beispiel aufgeführt


    96/2 = 48m/s

    @Rayx3 müssen ja nicht 300 verschiedene sein ;)


    easy doing

    #include <a_samp>
    #include <sscanf2>
    #include <YSI\y_bit>
    #include <ocmd>


    #define Admin 1


    new BitArray:AdminPrison< MAX_PLAYERS >,
    Checkpoint_Count[ MAX_PLAYERS ];

    new Float: RandomPoints[][3] = {
    {16.6533,-4.4106,3.1172},
    {-5.1362,8.2907,3.1172},
    {-16.5218,31.4184,3.1172},
    {-7.9983,42.6634,3.1172}
    };
    public OnPlayerSpawn(playerid)
    {
    if(Bit_Get(AdminPrison, playerid))return SetPlayerPos(playerid,23.2298,-24.6682,3.1172);
    return 1;
    }
    public OnPlayerEnterCheckpoint(playerid)
    {
    new string[64];
    if(Bit_Get(AdminPrison, playerid)){
    Checkpoint_Count[playerid]--;
    if(Checkpoint_Count[playerid] == 0){
    SendClientMessage(playerid,-1,"Du hast nun deine Strafe absolviert!");
    Bit_Vet(AdminPrison, playerid);
    SpawnPlayer(playerid);
    }else{
    format(string,64,"Du musst noch %d Checkpointe ablaufen",Checkpoint_Count[playerid]);
    SendClientMessage(playerid,-1,string);
    new x = random(sizeof(RandomPoints));
    SetPlayerCheckpoint(playerid,RandomPoints[x][0],RandomPoints[x][1],RandomPoints[x][2],2.0);
    }
    }
    return 1;
    }
    ocmd:prison(playerid, params[])
    {
    new pID, num, string[90];
    if(GetPlayerAdmin(playerid) < Admin)return SendClientMessage(playerid,-1,"Du bist dazu nicht berechtigt");
    if(sscanf(params,"ud",pID,num))return SendClientMessage(playerid,-1,"Benutzung: /prison [ID] [Checkpoints]");
    SetPlayerPos(playerid,23.2298,-24.6682,3.1172);
    format(string,90,"Du wurdest von %s in das Adminprison gesteckt und musst nun %d checkpoints ablaufen",PlayerName(playerid),num);
    SendClientMessage(pID,-1,string);
    Checkpoint_Count[playerid] = num;
    Bit_Let(AdminPrison, playerid);
    new x = random(sizeof(RandomPoints));
    SetPlayerCheckpoint(playerid,RandomPoints[x][0],RandomPoints[x][1],RandomPoints[x][2],2.0);
    return 1;
    }
    stock PlayerName(player)
    {
    new pName[MAX_PLAYER_NAME];
    return GetPlayerName(player,pName,MAX_PLAYER_NAME);
    }
    stock GetPlayerAdmin(playerid) return PlayerInfo[playerid][pAdmin]; // Definition des Adminlevels

    Befehl geht eig, aber jetzt das Problem wenn ich SWAT Duty gehe und ein anderer verlieren alle ihre Waffen..


    vllt:
    for(new i = 0; i < MAX_PLAYERS; i++)


    Oder so etwas?


    also wenn der command dann nicht gegangen wäre würde ich auch nicht mehr weiter wissen da das mit dem mehr als 20 zeilen nur
    vllt in ausnahme fällen crashed das einzigste was dabei passieren können bei zu großen strings ist das sich der name verzerrt
    also sonderzeichen enthält.
    um mich oben nochmal zu korrigieren.


    zu dem setzt du die waffen von einer unbekannten id(bestimmt nicht gewollte id) auf 0
    giveplayerid
    PlayerInfo[giveplayerid][pGun4] = 0;

    OnPlayerCommandText(playerid,"");


    ist die lösung den rest kannst ja selbst machen mit der taste bietet sich es an wenn du printf bein OnPlayerKeyStateChange
    benutzt und die newkeys printen lässt dann hast du von den tasten den wert

    Wie mache ich das jetzt richtig, du schreibst i.welche Codes ohne das ich weiss wie ich diese benutze . .


    if(strcmp(cmd, "/swatduty", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pMember] == 22 || PlayerInfo[playerid][pLeader] == 22)
    {
    if (IsPlayerInRangeOfPoint(playerid,3.0,254.2361,76.9261,1003.6406) ||IsPlayerInRangeOfPoint(playerid,3.0, 217.5230,184.4352,1003.0313)
    || PlayerInfo[playerid][pLocal] != 255)
    {
    if(OnDuty[playerid]==0)
    {
    SetPlayerSkin(playerid,285);
    OnDuty[playerid] = 1;
    GetPlayerName(playerid,PlayerTrueName[playerid],19);
    new rand = random(19);
    if(rand == 0)return SetPlayerName(playerid,"Alpha");
    else if(rand == 1)return SetPlayerName(playerid,"Beta");
    else if(rand == 2)return SetPlayerName(playerid,"Gamma");
    else if(rand == 3)return SetPlayerName(playerid,"Omega");
    else if(rand == 4)return SetPlayerName(playerid,"Delta");
    else if(rand == 5)return SetPlayerName(playerid,"Epsilon");
    else if(rand == 6)return SetPlayerName(playerid,"Zeta");
    else if(rand == 7)return SetPlayerName(playerid,"Eta");
    else if(rand == 8)return SetPlayerName(playerid,"Theta");
    else if(rand == 9)return SetPlayerName(playerid,"Iota");
    else if(rand == 10)return SetPlayerName(playerid,"Kappa");
    else if(rand == 11)return SetPlayerName(playerid,"Lambda");
    else if(rand == 12)return SetPlayerName(playerid,"Omikron");
    else if(rand == 13)return SetPlayerName(playerid,"Rho");
    else if(rand == 14)return SetPlayerName(playerid,"Sigma");
    else if(rand == 15)return SetPlayerName(playerid,"Tau");
    else if(rand == 16)return SetPlayerName(playerid,"Ypsilon");
    else if(rand == 17)return SetPlayerName(playerid,"Psi");
    else if(rand == 18)return SetPlayerName(playerid,"Omega");
    }
    else if(OnDuty[playerid]==1)
    {
    SetPlayerName(playerid,PlayerTrueName[playerid]);
    SetPlayerSkin(playerid,280);
    ResetPlayerWeapons(giveplayerid);
    PlayerInfo[giveplayerid][pGun1] = 0; PlayerInfo[giveplayerid][pAmmo1] = 0;
    PlayerInfo[giveplayerid][pGun2] = 0; PlayerInfo[giveplayerid][pAmmo2] = 0;
    PlayerInfo[giveplayerid][pGun3] = 0; PlayerInfo[giveplayerid][pAmmo3] = 0;
    PlayerInfo[giveplayerid][pGun4] = 0; PlayerInfo[giveplayerid][pAmmo4] = 0;
    SetPlayerColor(playerid,COLOR_WHITE); // white
    OnDuty[playerid] = 0;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist in keiner Umkleide !");
    return 1;
    }
    }
    }
    return 1;
    }


    das erste GetPlayerName war unnötig du verwendest dieses nicht mal und zum zweiten teil
    setzt du den string auf 0 DerName keine zeichen enthält daher crashed der server

    Create3DTextLabel ( "Ich bin bei den Koordinaten: \ n 30,0, 40,0, 50,0 " , 0x008080FF, 30.0 , 40.0 , 50.0 , 40.0 , 0 , 0 ) ;


    native
    Create3DTextLabel(text[], color, Float:X,Float: Y, Float:Z, Float:DrawDistance, virtualworld, testLOS)


    text: "Ich bin bei den Koordinaten: \ n 30,0, 40,0, 50,0"


    Farbe/color: 0x008080FF


    X Position/Float:X: 30.0


    y Position/Float: Y: 40.0


    Z Position/Float:Z: 50.0


    Float:DrawDistance/ Anzeige distanz: 40.0


    virtuellewelt: 0


    testLOS/ ob es hinter Objekten angezeigt werden soll (mauer) oder nicht: 0


    http://wiki.sa-mp.com/wiki/Create3DTextLabel


    Wie wäre es wenn du ganz einfach OnPlayerCommandText beim dem drücken der taste aufrufst

    Willst du die Zeit ermittlen , die ein spieler von einer bestimmten position zu einem bestimmten checkpoint braucht.
    Wenn dies so ist schau einfach mal bei den Codeschnipsel rein dort hatte ich so etwas mal gepostet + bestenliste

    hier bitte



    enum Enum{
    Float: X,
    Float: Y,
    Float: Z,
    string[30],
    }
    new array[4][Enum] = {
    {-1455.8683,36.5781,14.1484,"~w~San Fierro~n~%d Meter"},
    {1433.1556,1462.8600,10.8203,"~w~Las Venturas~n~%d Meter"},
    {1756.8927,-2543.6868,13.5469,"~w~Los Santos~n~%d Meter"},
    {105.6276,2487.5879,24.1000,"~w~Verdant Meadows~n~%d Meter"}
    };


    stock beispiel(playerid)
    {
    new i, distance[3],string2[60], vid = GetPlayerVehicleID(playerid);
    for(; i< sizeof(array); ++i){
    distance[0] = floatround(GetVehicleDistanceFromPoint(vid, array[i][X],array[i][Y],array[i][Z]));
    if(distance[1] == 0 || distance[0] < distance[1]){
    distance[1] = distance[0];
    distance[2] = i;


    }


    }
    format(string2,60,array[distance[2]][string],distance[1]);
    return string2;
    }

    versuch mal ein kleineren string also rund 19 zeichen , da samp einen namen bis zu 20 Zeichen unterstützt und
    MAX_PLAYER_NAME enthält 24 Zeichen.




    und GetPlayerName kannst du auch vereinfachen


    GetPlayerName(playerid,PlayerTrueName[playerid],19);


    weil was anderes würde mir nicht in den sinn kommen du kannst ja nochmal das
    crashdetekt plugin drüber laufen lassen. Aber grundlegend ist an SetPlayerName nix falsch



    Einen angenehmen Abend!
    vernachlässigen ist aber auch, dass wir das Gameplay angenehmer und sicherer machen wollen. Trainer oder Hacks gehören von nun an der Vergangenheit an.

    Zabus xD das glaubst du doch wohl selbst nicht es wird niemals möglichsein alle arten von cheats zu verbannen auf legaler art und weise .
    Es wird immer eine möglichkeit geben anticheats zu umgehen . *Hust* grp-lauchner und good-player.exe