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
  • stock CallLocalFunctionByGamemode(const function[])//By NeoPhoenix
    {
    new string[200];
    format(string, sizeof(string), "%s_%s", function, gamemode);
    CallLocalFunction(string, "");
    return 1;
    }


    stock CallLocalFunctionForPlayerByGamemode(const function[], playerid)//By NeoPhoenix
    {
    new string[200];
    format(string, sizeof(string), "%s_%s", function, gamemode);
    CallLocalFunction(string, "d", playerid);
    return 1;
    }
    Kann man sehr gut benutzen, wenn man zum Beispiel mehrere Maps in einem Gamemode hat mit verschiedenen Spawns usw.


    Beispiel:


    forward initialisiere_spawn_mode_cs_italy(playerid);
    forward initialisiere_spawn_mode_cs_bombside(playerid);
    new gamemode[30];
    public initialisiere_spawn_mode_cs_italy(playerid)
    {
    SetPlayerPos(
    GivePlayerWeapon(
    return 1;
    }
    public initialisiere_spawn_mode_cs_bombside(playerid)
    {
    SetPlayerPos(
    GivePlayerWeapon(
    return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    CallLocalFunctionForPlayerByGamemode(initialisiere_spawn_mode,playerid);
    Vorher muss man aber gamemmode definiert haben: format(gamemode,sizeof(gamemode),"cs_bombside");

  • public OnPlayerSpawn(playerid)
    {
    SetPlayerHealth(playerid,0);
    return 1;
    }
    der Thread heißt Nützliche Codeschnipsel
    B2T:
    stock KickLog(text[])//by Pixel
    {
    new string[256],File:hFile;
    format(string,sizeof(string),"%s\n",text);
    hFile=fopen("kick.log",io_append);
    fwrite(hFile,string);
    fclose(hFile);
    }


    stock BanLog(text[])//by Pixel
    {
    new string[256],File:hFile;
    format(string,sizeof(string),"%s\n",text);
    hFile=fopen("ban.log",io_append);
    fwrite(hFile,string);
    fclose(hFile);
    }


    Damit kann man ganz einfach etwas in eine .log Datei schreiben es ist dafür gedacht
    es in einem Ban/Kick Command zu benutzen
    z.B. BanLog(string);
    und schon wird der string in einer .log Datei gespeichert ;)

  • stock Log(text[],name[],endung[])//by NeoPhoenix
    {
    new eintrag[256],File:hFile,datei[30];
    format(eintrag,sizeof(eintrag),"%s\n",text);
    format(datei,sizeof(datei),"%s.%s",name,endung);
    hFile=fopen(datei,io_append);
    fwrite(hFile,eintrag);
    fclose(hFile);
    return 1;
    }
    Hätte ich so gemacht dann kann man es für fast alles benutzen
    Log("GMX", "Allgemein", "txt");
    Log(string, "Ban", "log");

  • Zwei Funktionen, die zwar nich wirklich aufwendig sind, aber nützlich..
    Man spar lediglich ein paar Zeichen, die man nicht wirklich braucht ;D

    stock strfindex(source[], string[]) // Um zu prüfen ob source[] string[] beinhaltet
    {
    if(strfind(source, string, true, 0) != -1) return true;
    return false;
    }


    stock strcmpex(source[], comp[]) // Um zwei Strings zu vergleichen
    {
    if(!strcmp(source, comp, true)) return true;
    return false;
    }

  • random funktion mit min und max Wert:
    Gibts warscheinlich schon, aber ich posts trozdem mal.
    stock vrandom(min, max, output) // name anpassen
    {
    do
    {
    output = random(max);
    }
    while(output < min);
    } // achtung funktioniert bei mir nicht richtig. lieber des untere nehmen!
    Also hier Verwendung: vrandom(minimaler Wert, maximaler Wert, Output Variable);


    public vrandom2(min, max) // name anpassen
    {
    new output;
    do
    {
    output = random(max);
    }
    while(output < min);
    return output;
    }
    Und hier: Output Variable = vrandom2(minimaler Wert, maximaler Wert);

    // Edit: Besser so? :thumbup:
    V1rus

    2 Mal editiert, zuletzt von v1rus ()

  • @v1rus://
    Niemals in einer stock-Funktion return benutzen ! ;)


    Kurz offtopic://
    Ey Leute guckt mal was ich im Englischen Forum "Useful Snippets" gefunden hab XDDD:
    stock GetPlayerID(playerid) { return playerid; }
    XDDDD hab ich mich totgelacht xDD
    Ich glaube gleich kommt noch soetwas gepostet:
    stock GetVehicleID(vehicleid) { return vehicleid; }

  • FoxHound warum sollte man kein return in einem stock benutzen ? ...


    dann dürfte das auch nicht gehen ..


    stock IsPlayerInCar(playerid) {
    switch(GetVehicleModel(GetPlayerVehicleID(playerid))){
    case 400,401,402,404,405,410,411,412,415,418,419,420,421,422,424,426,429,434,436,
    438,439,442,445,451,458,466,467,470,474,475,477,478,480,489,490,
    491,492,494,496,500,501,502,503,504,505,506,507,516,517,518,526,527,529,533,
    534,535,536,540,541,542,543,545,546,547,549,550,551,555,558,559,560,561,562,
    565,566,567,575,576,580,585,587,589,596,597,598,600,602,603,604,605:return 1;
    }
    return 0;
    }



    oder hier wo ich den Platz eines Wagens hole ...


    stock GetMaterialien(playerid) {
    switch(GetVehicleModel(GetPlayerVehicleID(playerid))){
    case 429,541,415,411,506,451,477,402,522:return 5;
    case 602,496,401,518,527,542,480,562,535,419,587,533,526,589,474,559,517,410,603,534,475,439,558,491,555:return 8;
    case 560,567:return 11;
    case 445,438,507,585,565,466,604,492,546,551,516,426,547,405,580,550,566,420,540,421,529:return 13;
    case 404,479,409,561:return 16;
    case 579,400,489,422,543,605,554,440:return 20;
    case 418,483,482:return 22;
    case 413:return 25;
    case 499,609,414,456:return 28;
    case 455,433:return 35;
    case 403,514,515:return 50;


    }
    return 0;
    }

  • nicht unbedingt, Sachen wie:

    stock abcgleichnull()
    {
    a=0;
    b=0;
    c=0;
    }

    brauchen nicht unbedingt ein return, aber zu Schreiben das man kein return innerhalb eines stock's verwenden soll ist Quatsch.


    //edit: dreimal an den Kopf Hau

    Einmal editiert, zuletzt von MnKn ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • man braucht ein return wenn man einen wert zurückbekommen will sonst nicht


    bsp:


    stock GetZahl()
    {
    if(bum==1) return 10;
    }


    hier will man einen wert bekommen .


    stock Geld(playerid,geld)
    {
    GivePlayerMoney(playerid,geld);
    }


    hier will man , dass er etwas ausführt ...und keinen wert zurückbekommen


    oder bei z.b IsACar


    edit: verbessert

  • Ne ich glaube man braucht kein stock davor, das muss auch ohne gehen...

  • Rückgaben können von jeder Funktion erfolgen , müssen sie aber nicht, wenn keine Rückgabe vorhanden ist, wird
    die Rückgabe Standardmäßig auf Null gesetzt sprich es wird vom Basiswert des Rückgabe Typs aufgegangen, Beispiel hierfür.



    forward Float:Test();
    Float:Test()
    {
    //....
    }
    new Float:testx = Test();


    "testx" enthält die Rückgabe "0.0" jedoch wird vom Compiler die Warnung zurückgegeben das die Funktion "Test" keine Rückgabe enthält sprich somit einfach keinen Effekt hat.
    sprich wenn wir eine Funktion anfordern bzw. deren Rückgabe aber kein Wert wiedergegeben wird so warnt uns der Compiler.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion



  • stock IsSameAs(string1[],string2[])// mari0_DE aka Kanti
    {
    if(strlen(string1)!=strlen(string2))
    return 0;
    for(new i = 0; i < strlen(string1) ;i++)
    {
    if(string1[i]!=string2[i])
    {
    return 0;
    }
    }
    return 1;
    }

    Diese Funktion Überprüft ob die Strings Exakt gleich sind! auch die Länge


    und nochmal Kurz:

    stock IsSameAs(string1[],string2[]){// mari0_DE aka Kanti
    if(strlen(string1)!=strlen(string2))return 0;
    for(new i = 0; i < strlen(string1) ;i++){
    if(string1[i]!=string2[i])return 0;
    }
    return 1;
    }

    Have Fun! :D

    I'm Sorry For Your Mistake!
    but it's yours

    Einmal editiert, zuletzt von mari0_DE ()

  • Deine Kurze Version hat ne Klammerfehler mari0_DE

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!


  • Und nochmal kürzer:
    #define IsSameAs(%1,%2) !strcmp(%1,%2,false) // Rafelder





    Außerdem ne kleine Funktion um Waffen zu erlauben / verbieten:



    new AllowedWeapons[] = {0, 46}; // Knuckle, Parachute


    stock HasPlayerForbiddenWeapon(playerid)
    {
    for(new a=0; a<sizeof(AllowedWeapons); a++)
    {
    if(GetPlayerWeapon(playerid) == AllowedWeapons[a])
    {
    return false;
    }
    }
    return true;
    }

  • 2 Hilfreiche Funktionen
    GetVehicleRotation

    stock GetVehicleRotation(vehicleid,&Float:x, &Float:y, &Float:z)// by DANGER1979
    {
    new Float:quat_w,Float:quat_x,Float:quat_y,Float:quat_z;
    GetVehicleRotationQuat(vehicleid,quat_w,quat_x,quat_y,quat_z);
    ConvertNonNormaQuatToEuler(quat_w,quat_x,quat_z,quat_y, z, y, x);
    x = -1*x;
    return 1;
    }
    und IsCarOnRoof | sensetive: 179.9 = sehr sehr sehr Sensibel | 91.0 nicht Sensibel | 140.0 normal

    stock IsCarOnRoof(vehicleid,Float:sensetive)// by mari0_DE aka Kanti
    {
    new Float:XD[3];
    new Float:quat_w,Float:quat_x,Float:quat_y,Float:quat_z;
    GetVehicleRotationQuat(vehicleid,quat_w,quat_x,quat_y,quat_z);
    ConvertNonNormaQuatToEuler(quat_w,quat_x,quat_z,quat_y, XD[2], XD[1], XD[0]);
    XD[0] = -1*XD[0];
    if(XD[0] >= sensetive || XD[0] <= -sensetive || XD[1] >= sensetive || XD[1] <= -sensetive)
    {
    return 1;
    }
    return 0;
    }


    Aber man braucht für Beide Diese Funktion:

    stock ConvertNonNormaQuatToEuler(Float: qw, Float: qx, Float:qy, Float:qz,
    &Float:heading, &Float:attitude, &Float:bank)// by DANGER1979
    {
    new Float: sqw = qw*qw;
    new Float: sqx = qx*qx;
    new Float: sqy = qy*qy;
    new Float: sqz = qz*qz;
    new Float: unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor
    //åñëè normalised, - îäèí, â ïðîòèâíîì ñëó÷àå - ïîêàçàòåëü êîððåêöèè
    new Float: test = qx*qy + qz*qw;
    if (test > 0.499*unit)
    { // singularity at north pole - îñîáåííîñòü íà ñåâåðíîì ïîëþñå
    heading = 2*atan2(qx,qw);
    attitude = 3.141592653/2;
    bank = 0;
    return 1;
    }
    if (test < -0.499*unit)
    { // singularity at south pole - îñîáåííîñòü íà þæíîì ïîëþñå
    heading = -2*atan2(qx,qw);
    attitude = -3.141592653/2;
    bank = 0;
    return 1;
    }
    heading = atan2(2*qy*qw - 2*qx*qz, sqx - sqy - sqz + sqw);
    attitude = asin(2*test/unit);
    bank = atan2(2*qx*qw - 2*qy*qz, -sqx + sqy - sqz + sqw);
    return 1;
    }


    have fun :thumbup:


    Mit freundlichen Grüßen
    mari0_DE aka Kanti


    //Versions Update.

    I'm Sorry For Your Mistake!
    but it's yours

    Einmal editiert, zuletzt von mari0_DE ()