Beiträge von Goldkiller

    Lock it
    Download:Lock It


    Was kann Lock it?
    Nicht viel.Es ist ein einfaches Vehicle Lock System wie es schon 100 zuvor gab.Ein Vorteil dürfte sein das Fahrzeuge automatisch un-Locked werden sobald sie eine gewisse Zeit nicht mehr benutzt werden (zwischen 121 und 240 sec).
    Es werden nicht 1000 von Timern erstellt sondern nur einer (Was in anderen Unlock Script's nicht so ist).


    Bla bla viel spaß.

    Davon haste vorher aber nix gesagt...Versteh auch nicht so recht wie du es meinst mit einem Menu
    Ich gehe mal davon aus du hast bereits ein Menu.
    Case (ZAHL) steht für den X-ten Eintrag im Menu.
    default wird dann aufgerufen wenn keines der Fälle (case) zutrifft

    public OnPlayerSelectedMenuRow(playerid, row)
    {
    new Menu:Current;
    Current=GetPlayerMenu(playerid);
    if(Current==MeinMenu) {
    switch(row) {
    case 0:{
    // Hier immer neues Car Spawnen???
    /*
    if(CarCount[playerid]==0) {
    CreateVehicle(....);
    }
    else if(CarCount[playerid]==1) {
    CreateVehicle(....);
    }
    else if(CarCount[playerid]==2) {
    CreateVehicle(....);
    }
    CarCount[playerid]++;
    */
    }
    case 1: {
    }
    case 2: {
    }
    case 3: {
    }
    case 4: {
    }
    case 5: {
    }
    default: {
    print("Fail");
    }
    }
    }
    else if(Current==EINANDERESMENU) { ...
    }
    return 1;
    }

    Noch ein nützlicher Link:
    Simple Menu Tutorial


    new CarCount[MAX_PLAYERS];


    public OnPlayerConnected(playerid) {
    //....
    CarCount[playerid]=0;
    return 1;
    }
    //---------
    if(!strcmp("/deincommand",cmdtext,true)) {
    if(CarCount[playerid]==0) {
    CreateVehicle(....);
    }
    else if(CarCount[playerid]==1) {
    CreateVehicle(....);
    }
    else if(CarCount[playerid]==2) {
    CreateVehicle(....);
    }
    CarCount[playerid]++;
    return 1;
    }
    Kannst es auch mit 'case' machen ,aber nicht "switch" davor vergessen.Außerdem kannst du AddStaticVehicle nur in OnGameModeInit() oder OnFilterscriptInit() benutzten.CreateVehicle(...) dagegen überall.

    ...
    Zeig einfach mal den Gesamten Quelltext ( Von mir aus per PM falls es nicht jeder lesen soll).

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(login,5,cmdtext);
    dcmd(register,8,cmdtext);
    return 0;
    }



    dcmd_register(playerid....) { // Irgendwo im Script nur nicht über main bzw nicht oben im Script .
    dcmd_login(playerid....) {


    stock IsPlayerInArea(playerid,Float:MinX,Float:MaxX,Float:MinY,Float:MaxY) {
    new Float:X,Float:Y,Float:Z; GetPlayerPos(playerid,X,Y,Z);
    return (X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) ? 1 : 0;
    }

    Unter OnGamemodeInit()

    SetTimer("AreaCheck", 5*1000, 1);//5sec reichen

    Irgendwo unter main()

    public AreaCheck(){
    for(new i;i<GetMaxPlayers();i++) {
    if(IsPlayerConnected(i)) {
    if(IsPlayerInArea(i,MinX,MaxX,MinY,MaxY)) {//Koordinaten von ls
    }
    else {
    new Float:H;
    GetPlayerHealth(i,H);
    SetPlayerHealth(i,H-20.0);
    }
    }
    }
    return 1;
    }

    Das wird nicht ganz funktionieren (Glaube ich)
    Wenn du eine Zeile ließt,wird dir die meistens falsch zurück gegeben (Bei windoof anders als Linux soweit ich weiss)
    zB:
    In der whitelist steht:
    [KAQ]Noob
    Brot


    Beim lesen bekommst du aber:
    '[KAQ]Noob ' zurück.Mit 1 oder 2 Leerzeichen am Ende.
    StripNewLine(string[]) fixt das.



    #include <a_samp>


    #define RED 0xAA3333AA
    #define YELLOW 0xFFFF00AA


    forward Whitelist(playerid);


    new gdebug = 0;


    public Whitelist(playerid)
    {
    if (gdebug==1){printf("DEBUG Whitelist Check(%d) (%s)", playerid);}
    new playername2[MAX_PLAYER_NAME];
    new storedcopname[64];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    new File: file = fopen("Whitelist.cfg", io_read);
    if (file)
    {
    new valtmp[MAX_PLAYER_NAME];
    while (fread(file, valtmp)) {
    StripNewLine(valtmp);
    if (!strcmp(valtmp, playername2, true, strlen(playername2))) {
    fclose(file);
    return 1;
    }
    }
    }
    fclose(file);
    return 0;
    }


    public OnPlayerConnect(playerid)
    {
    if (Whitelist(playerid)) {
    } else {
    SendClientMessage(playerid, RED, "Du stehst nicht auf der Whitelist");
    }
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256];
    new idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp(cmd, "/whitelist", true) == 0)
    {
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    return SendClientMessage(playerid, YELLOW, "Benutze: /whitelist [spielername]");
    }
    if ((IsPlayerAdmin(playerid)))
    {
    new File:hFile,coordsstring[128];
    format(coordsstring,128, "%s\r\n",result);
    hFile = fopen("Whitelist.cfg", io_append);
    fwrite(hFile, coordsstring);
    fclose(hFile);
    SendClientMessage(playerid, RED,"Der Spieler wurde zur Whitelist geaddet!");
    }
    return 1;
    }
    return 1;
    }
    //-----------------------strtok-----------------------------
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }
    //----------------------------------------------------
    /**
    * Strips Newline from the end of a string.
    * Idea: Y_Less, Bugfixing (when length=1) by DracoBlue
    * @param string
    */
    stock StripNewLine(string[])
    {
    new len = strlen(string);
    if (string[0]==0) return ;
    if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
    string[len - 1] = 0;
    if (string[0]==0) return ;
    if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
    }
    }



    Hab eine Whitelist Funktion in meinem Adminscript.Falls du noch kein Adminscript hast und Whitelist/Blacklist brauchst dürfte das wohl was für dich sein.gAdmin aus meiner Sig :X

    /*---- Includes ---*/
    #include <a_samp>


    new Exlac_Car;


    public OnGameModeInit()
    {
    SetGameModeText("My GameMode");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    Exlac_Car=AddStaticVehicle(400,300.0,200.0,300.0,0.0,-1,-1);
    return 1;
    }



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(vehicleid==Exlac_Car && !ispassenger ) { // !ispassenger = Falls nicht Beifahrer also Fahrer.
    if(strcmp(PlayerName(playerid),"Exlac",true)) { //Falls der Name nicht "Exlac" ist
    RemovePlayerFromVehicle(playerid);
    }
    }/*
    else if(vehicle==...) {
    }*/
    return 1;
    }


    stock PlayerName(playerid) {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return name;
    }
    Das ganze könntest du auch mit einer Liste machen in der die Namen der Spieler steht dem die Wagen gehören.

    Zitat


    zum Starten, SOUND_GOGO_TRACK_START 1062
    zum beenden SOUND_GOGO_TRACK_STOP 1063


    Da steht es doch.

    if(strcmp(cmdtext,"/mstop", true == 0)
    {
    PlayerStopSound/*ALL*/(playerid, 1063,0.0,0.0,0.0);
    SendClientMessage(playerid,"du hast die musik gestoppt");
    return 1;
    }
    Bin mir nicht sicher ob du überall Musik stoppen kannst bzw ob es funktioniert.

    Dazu brauchst du Textdraw
    Hilfe gibts:
    hier - SA:MP Forum
    hier - SA:MP Wiki



    new Text:sVersion;


    public OnFilterScriptInit()
    {
    sVersion=Text:TextDrawCreate(485,10,"~r~Beta Script 0.1b"); // ~r~ = Rot
    TextDrawFont(sVersion,3);
    TextDrawSetProportional(sVersion,true);
    TextDrawSetShadow(sVersion,0);
    TextDrawSetOutline(sVersion,1);


    return 1;
    }


    public OnFilterScriptExit()
    {
    TextDrawDestroy(sVersion);
    return 1;
    }
    public OnPlayerConnect(playerid)
    {
    TextDrawShowForPlayer(playerid,sVersion);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    TextDrawHideForPlayer(playerid,sVersion);
    return 1;
    }

    So sollte es in etwa passen :pinch:

    Falls es noch nicht geht,kann aber auch an einem falschem Pfad liegen.
    Schau mal nach ob du SA:MP im gleichen Ordner installiert hast wie in deiner Einstellung in SA:MP angegeben.