Nützliche Codeschnipsel

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Eine kleine nette funktion, die es euch erlaubt, eigene Countdown Timer zu erstellen, oder sonst irgendwas anderes:



    stock Wait(time)
    {
    new stamp = tickcount();
    while (tickcount() - stamp < time)
    {
    }
    return 1;
    }



    Bsp:



    public CountDown(playerid)
    {
    SendClientMessage(playerid,color,"In 3 Sekunden kommt der zweite Text!");
    Wait(3000); //sind jetzt keine 3 sec. aber wayne.
    SendClientMessage(playerid,color,"In 3 Sekunden kommt der erste Text!");
    Wait(3000);
    SendClientMessage(playerid,color,"Finish!");
    return 1;
    }



    Info: Hat aber ein kleiner hacken, sobald das abläuft per Command oder per timer, kann man komischerweise nichts mehr schreiben, als wär der server kurz aus und dann wieder an, kurz aus und dann wieder an, bis der timer endet.

  • Ich habe eine Funktion entwickelt, welche die verbleibende Tage zurückgibt, wenn der Tag bereits war, bekommt man 0 zurück.
    Info:
    - Es wird immer mit 31 Tagen gerechnet, keine Schaltjahre oder 30 Tage.


    Pastebin


    stock RemainingDays(fut_day, fut_month, fut_year)
    {
    new tod_day, tod_month, tod_year, day;
    getdate(tod_year, tod_month, tod_day);
    if((tod_year >= fut_year) && (tod_month >= fut_month) && (tod_day > fut_day)) return day;
    else if(tod_month > fut_month && (tod_day >= fut_day || tod_day <= fut_day)) return day;
    if(tod_day < fut_day) day += ((fut_day)-(tod_day));
    else if(tod_day > fut_day)
    {
    day += (((31)-(tod_day))+(fut_day));
    if(tod_month + 1 == 13) { tod_month = 1; tod_year++; }
    else tod_month += 1;
    }
    if(tod_month < fut_month) day += ((31)*((fut_month)-(tod_month)));
    else if(tod_month > fut_month) day += ((31)*((fut_month)-(tod_month))); tod_year++;
    if(tod_year < fut_year) day += ((356)*((fut_year)-(tod_year)));
    return day;
    }


    Anwendung:

    new rem = RemainingDays(22, 11, 1995);

    if(rem) printf("\nDu musst %d Tage warten.", rem);
    else printf("\nDu musst nicht mehr warten");
    // Wenn jemand herrausfindet, was an diesem Tag geschah, kann sich ein Cookie nehmen


    €dit: Paar wichtige Änderungen

  • Schneller abgekürztes Afk System:




    new afksystem[MAX_PLAYERS];



    if(!strcmp("/afk",cmdtext,true))
    {
    if (afksystem[playerid] == 1)
    {
    TogglePlayerControlable(playerid,1);
    SendClientMessage(playerid,farbe,"*** Du bist nun AFK! Tippe wiederholt /afk um back zu sein!");
    afk[playerid] = 1;
    }
    else
    {
    TogglePlayerControlable(playerid,0);
    SendClientMessage(playerid,farbe,"*** Du bist vom AFK Modus zurück.");
    afk[playerid] = 0;
    }
    return 1;
    }


  • früher nannte man soetwas Bugscripten.....



    new afk[MAX_PLAYERS];


    if(!strcmp("/afk",cmdtext,true))
    {
    if (afk[playerid] == 0)
    {
    TogglePlayerControlable(playerid,0);
    SendClientMessage(playerid,farbe,"*** Du bist nun AFK! Tippe wiederholt /afk um back zu sein!");
    afk[playerid] = 1;
    }
    else
    {
    TogglePlayerControlable(playerid,1);
    SendClientMessage(playerid,farbe,"*** Du bist vom AFK Modus zurück.");
    afk[playerid] = 0;
    }
    return 1;
    }

  • das entfernt das "SERVER: Unknown Command":



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmdtext...........
    //code, code, code
    if(strcmp(cmdtext...........
    dcmd(blablabla,9,cmdt.......


    else
    {
    new string[128];
    format(string, sizeof(string), "SERVER: Nicht bekannter Command ( %s )!", cmdtext); //das "SERVER: Nicht bekannter Command" könnt ihr beliebig austauschen wies euch gefällt ;)//
    SendClientMessage(playerid, COLOR_WHITE, string);
    }
    return 1;
    }


    mfg xXganzereuroXx

  • bringt so nichts wenn du bei jedem Kommando "andernfalls" abfragst dann stimmt bei jedem Kommando das du eingibst und das vorher überprüft wird vor dem eigentlichen
    das andere wiederum nicht :


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new sndmsg[64];
    format(sndmsg,sizeof sndmsg,"Das Kommando '%s' wurde nicht erkannt!",cmdtext);

    // Kommandos


    return SendClientMessage(playerid,0xFF0000FF,sndmsg);
    }


    würde schon gehen, wird vorher ein formatiert und da bei keinem Kommando mit "return" wiedergegeben wird und so die Funktion auch nicht abgebrochen wird,
    gibt die Funktion die Nachricht die schon formatiert wurde wieder und gibt einen Wert wieder.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ein einfach Script im GUI als Navi
    Pastebin: http://pastebin.com/5BmJNarH
    // NAVI_Script basiert auf einem Tutorial der Breadfish-Community
    // Die Koordinaten stammen vom Team des Servers "Newport City Roleplay"
    // [SERVER: samp4.me:8034 || TS³: www.ydir.de:4035 || Forum: http://newport.warsforum.com]
    // Veröffentlicht im Namen von Spike_130
    #define FILTERSCRIPT
    #define xnavimenu 1
    #include <a_samp>



    public OnFilterScriptInit()
    {
    print("\n------------------------------------------------------------------------------------------------------------------");
    print("Newport City Roleplay -- Navi Script -- GUI verwendet -- /navi zum Benutzen");
    print("[SERVER: samp4.me:8034 || TS³: www.ydir.de:4035 || Forum: http://newport.warsforum.com] ");
    print("------------------------------------------------------------------------------------------------------------------\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }
    public OnPlayerEnterCheckpoint(playerid)
    {
    DisablePlayerCheckpoint();
    GameTextForPlayer(playerid,"~g~Ziel erreicht!", 4000,4);
    return 0;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/navi", cmdtext, true) == 0)
    {
    ShowPlayerDialog(playerid, xnavimenu, DIALOG_STYLE_LIST, "Navi", "BSN\nStadthalle\nBSS\nLSPD\nTaxi Center\nAutohaus1\nPink Pen\nFahrschule\nNoobspawn\nBus Zentrale\nRiesenrad\nAutohaus 2\nAutohaus3\nKrankenhaus\nAlhambra\nSan Andreas News\nWaffenladen\nBank\n24-7\nPayNSpray\nCluckin Bell\nWeiße Haus\nPizza Eck\nSkinshop\nCluckin Bell2\nArena\nDepot", "Los gehts!", "Abbrechen");
    return 1;
    }
    return 0;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == xnavimenu) //
    {
    if(response)
    {
    if(listitem == 0) // BSN
    {
    SetPlayerCheckpoint(playerid,1214.8877,-923.6601,42.9252,3.0);
    }
    if(listitem == 1) // Stadthalle
    {
    SetPlayerCheckpoint(playerid,1478.2631,-1742.2018,13.5469,3.0);
    }
    if(listitem == 2) // BSS
    {
    SetPlayerCheckpoint(playerid,812.4752,-1630.4039,13.3828,3.0);
    }
    if(listitem == 3) // LSPD
    {
    SetPlayerCheckpoint(playerid,1535.4829,-1675.4336,13.3828,3.0);
    }
    if(listitem == 4) // Taxi Center
    {
    SetPlayerCheckpoint(playerid,1789.2567,-1902.7732,13.3961,3.0);
    }
    if(listitem == 5) // Autohaus 1
    {
    SetPlayerCheckpoint(playerid,2125.8643,-1133.8284,25.5028,3.0);
    }
    if(listitem == 6) // Pink Pen
    {
    SetPlayerCheckpoint(playerid,2423.2803,-1229.2598,24.9093,3.0);
    }
    if(listitem == 7) // Fahrschule
    {
    SetPlayerCheckpoint(playerid,2059.3445,-1908.9969,13.5469,3.0);
    }
    if(listitem == 7) //Noobspawn
    {
    SetPlayerCheckpoint(playerid,1613.7458,-2326.8784,13.5469,343,3.0);
    }
    if(listitem == 8) // Bus Zentrale
    {
    SetPlayerCheckpoint(playerid,5994,-1775.7866,13.3984,175.5366,3.0);
    }
    if(listitem == 9) // Riesenrad
    {
    SetPlayerCheckpoint(playerid,2043,-2038.3621,7.6103,190.1084,3.0);
    }
    if(listitem == 10) // Autohaus 2
    {
    SetPlayerCheckpoint(playerid,300.8453,-1519.4828,24.3753,145.3110,3.0);
    }
    if(listitem == 11) // Autohaus 3
    {
    SetPlayerCheckpoint(playerid,557.1075,-1259.1482,17.0347,214.9227,3.0);
    }
    if(listitem == 12) // Krankenhaus
    {
    SetPlayerCheckpoint(playerid,1189.6150,-1341.8518,13.2545,179.3768,3.0);
    }
    if(listitem == 13) // Alhambra
    {
    SetPlayerCheckpoint(playerid,1829.0066,-1683.8195,13.3186,3.0147,3.0);
    }
    if(listitem == 14) // San
    {
    SetPlayerCheckpoint(playerid,1778.4100,-1291.5283,13.4179,121.3653,3.0);
    }
    if(listitem == 15) // Ammu
    {
    SetPlayerCheckpoint(playerid,1364.1365,-1278.0845,13.3288,188.3241,3.0);
    }
    if(listitem == 16) // Bank
    {
    SetPlayerCheckpoint(playerid,1457.8679,-1025.0961,23.6060,269.1043,3.0);
    }
    if(listitem == 17) // 24/7
    {
    SetPlayerCheckpoint(playerid,1316.3810,-913.4822,37.7264,79.0015,3.0);
    }
    if(listitem == 18) // Payspray
    {
    SetPlayerCheckpoint(playerid,1025.3392,-1032.5148,31.6700,92.0001,3.0);
    }
    if(listitem == 19) // Clucking Bell
    {
    SetPlayerCheckpoint(playerid,924.4570,-1352.2742,13.1426,188.9071,3.0);
    }
    if(listitem == 20) // White House
    {
    SetPlayerCheckpoint(playerid,1254.8435,-2035.0063,59.3454,323.0548,3.0);
    }
    if(listitem == 21) // Pizza Eck
    {
    SetPlayerCheckpoint(playerid,2094.6047,-1806.5194,13.3477,182.0819,3.0);
    }
    if(listitem == 22) // Skinshop
    {
    SetPlayerCheckpoint(playerid,2245.4419,-1660.9761,15.1536,246.7492,3.0);
    }
    if(listitem == 23) // Clucking Bell 2
    {
    SetPlayerCheckpoint(playerid,2425.8274,-1507.2355,23.9922,87.6572,3.0);
    }
    if(listitem == 24) // Arena
    {
    SetPlayerCheckpoint(playerid,2688.4971,-1694.3674,9.7232,251.2339,3.0);
    }
    if(listitem == 25) // Depot
    {
    SetPlayerCheckpoint(playerid,2497.1619,-2092.1267,13.5469,265.7008,3.0);
    }
    }
    return 1;
    }
    return 1;
    }

  • IsVehicleOccupied


    Hier hab ich mal was einfach aber nützliches:
    http://pastebin.com/vpJmnHMC
    stock IsVehicleOccupied(vehicleid)
    {
    for(new i=0;i<=GetMaxPlayers();i++)
    {
    If((IsPlayerInVehicle(i, vehicleid)) && (GetPlayerState(i)==PLAYER_STATE_DRIVER))
    {
    return 1;
    }
    }
    return 0;
    }


    Das war für Anfænger, die versuchen die Codes zu verstehen ^^
    Hier ist die kürzere Version:
    stock IsVehicleOccupied(vehicleid) {
    for(new i=0;i<=GetMaxPlayers();i++) {
    if((IsPlayerInVehicle(i,vehicleid)) && (GetPlayerState(i) == PLAYER_STATE_DRIVER)) { return 1; } }
    return 0; }

    2 Mal editiert, zuletzt von FoxHound ()

  • Stats System
    #include <stats>
    Damit Kills und Tode gespeichert werden müsst ihr das hier bei OnPlayerDeath einfügen
    public OnPlayerDeath(playerid, killerid, reason)
    {
    PlayerStats[playerid][tode]++;
    if(killerid != INVALID_PLAYER_ID)
    {
    PlayerStats[killerid][kills]++;
    }
    return 1;
    }
    Ansonsten könnt ihr die Stats z.B. mit diesem Befehl hier abrufen, das Ganze gehört in OnPlayerCommandText rein
    if(strcmp(cmdtext, "/stats", true) == 0)
    {
    GetPlayerStats(playerid);
    return 1;
    }
    -Pastebin

  • static gTeam[MAX_PLAYERS];
    #define TEAM_COP 0


    new CopCar[1];//So viel CopCars man hat


    CopCar[0] = AddStaticVehicle(modelid, cord_X, cord_Y, cord_Z, Angle, Farbe1, Farbe2);


    for(new j = 0;j<sizeof CopCar;j++)
    {
    if(vehicleid == CopCar[j])
    {
    if(gTeam[playerid] != TEAM_COP )
    {
    SendClientMessage(playerid,COLOR_GREY,"Du besitzt keinen Schlüssel für dieses Auto!");
    TogglePlayerControllable(playerid,true);
    return 1;
    }
    }
    }

  • Hallo ,
    hier mal eine Funktion die ein Pickup erstellt und gleich darüber ein 3D Text erstellt das sieht dasn so aus


    stock TextPickup(Text[],color,Pickupid,Type,Float:X,Float:Y,Float:Z)
    {
    CreatePickup(Pickupid,Type,X,Y,Z,0);
    Create3DTextLabel(Text,color,X,Y,Z+0.35,5.0,0);
    return 1;
    }


    Verwendung Beispiel
    TextPickup("Test",Rot,1239,1,1958.3783, 1343.1572, 15.3746);
    Have Fun :D

  • stock TextPickup(Text[],color,Pickupid,Type,Float:X,Float:Y,Float:Z,Float:DD,Virtualworld,testLos)
    {
    CreatePickup(Pickupid,Type,X,Y,Z,Virtualworld);
    Create3DTextLabel(Text,color,X,Y,Z,DD,Virtualworld,testLos);
    return 1;
    }
    ist das gleiche nochmal aber dieses mal kann man auch die DrawDistance,Virtualworlds und testLOS selber bestimmten
    hier noch einmal ein Beispiel
    TextPickup("Test",Rot,1239,1,1958.3783,1343.1572, 15.3746,10.5,0,0);