Beiträge von ChristianW

    Solltest halt das i im Kopf Schleife deklarieren, dann hast du solche Probleme nicht.
    Nach der 1. Schleife wird i = MAX_FACTIONS sein, falls break nicht eintrifft. Da i = MAX_FACTIONS ist,kann die 2. Schleife nie gestartet werden. Solltest also i zurücksetzen.


    Habs schon selbst rausgefunden habe jetzt darunter i = 0 geschrieben :D
    Danke trotzdem


    Edit: Jetzt geht die for Schleife nr 1 nicht, ich kann 2 mal die Fraktion lala erstellen?

    Hey Com,


    Da ich jetzt festellen will ob der angegebene Name schon vegeben ist habe ich ein Problem.
    Nach der 1. for Schleife wird nichts mehr aufgerufen.


    Die prints sind nicht vorhanden:


    stock CreateDynamicFaction(playerid,name[])
    {
    new string[128], i, query[256];
    if(strlen(name) < 0 || strlen(name) > 64) return SendClientMessage(playerid,WHITE,"["HTML_ROT"Fehler"HTML_WHITE"]: Der eingegebene Fraktionsname war zu lang, bitte verkürze ihn!");
    for(; i < MAX_FACTIONS; i++)
    {
    if(strcmp(Fraktion[i][f_name], name, true))
    {
    SendClientMessage(playerid,WHITE,"["HTML_ROT"Fehler"HTML_WHITE"]: Der angegebene Name ist bereits vorhanden!");
    break;
    }
    }
    for(; i < MAX_FACTIONS; i++)
    {
    print("Ausgeführt!");
    if(Fraktion[i][f_inuse] == false)
    {
    print("Ausgeführt!");
    Fraktion[i][f_inuse] = true;
    Fraktion[i][f_id] = i;
    format(Fraktion[i][f_name],64,"%s",name);
    format(Fraktion[i][f_creator],24,"%s",PlayerInfo[playerid][Name]);
    format(string,sizeof(string),"["HTML_Grün"Info"HTML_WHITE"]: Du hast folgende Fraktion erstellt: %s",name);
    SendClientMessage(playerid,WHITE,string);
    SendClientMessage(playerid,WHITE,"["HTML_Grün"Info"HTML_WHITE"]: Mit ""/editcreatedfraktion"" kannst du der Fraktion Rechte zuweisen!");
    US_PlayerInfo[playerid][Fraktionsid] = i;


    format(query,sizeof(query),"INSERT INTO `faction` (`f_id`,`f_name`,`f_creator`) VALUES ('%i','%s','%s')",i, Fraktion[i][f_name], Fraktion[i][f_creator]);
    sql_free_result(sql_query(shandle[datarow], query, QUERY_THREADED));
    print(query);
    break;
    }
    }
    return 1;
    }


    Gruss

    Das kann ich nicht wirklich nachvollziehen..


    Du shcreibst halt eine Ziffer uasversehen hinter den Command dann stehen da 4 Errors wenn ich dann auf Meldungen klicke steht da 0
    Das mit dem illegalen hat sich erleedigt kommt nichtmehr
    Und das mit dem automatischen Einrücken würde ich schon gerne nutzen das failt ja auch nur bei dem switch und case weil er da doppelt einrückt


    Das ist nur eine Option mein Laden und Speichern von Dateien. Nur dort ist das zu finden.


    Achja wo finde ich das genau?

    Es ist halt so eine Sache, ein Gf zu editieren geht schneller als ein Selfmade zu schreiben. Ein Nachteil wäre, du kennst den Code nicht zu 100% und ein GF hat sehr viele Bugs. Bei einem Selfmade kennt man jede Funktion, denn man hat sie ja auch selber geschrieben. Außerdem kommt eigentlich ein Selfmade besser an bei der Community, jedoch haben viele Server auch erfolg mit GF Edits, aber mit einem Selfmade kann man mal was neues machen bzw bei einem GF ist immer das Standart Grundgerüst das langsam nervt. Ich bin aber für ein Selfmade, die Arbeit lohnt sich anschließend. Jedoch solltest du dir bewusst sein, dass du scripten könne musst, sprich, wenn du deine Daten mit Dini speicherst kannst du es ganz vergessen, denn auf Ressoursen muss man sehr achten, falls man erfolgreich werden will.


    bin ich mir nicht so sicher. Zwar konnte ich vor 1 Jahr noch nicht sooo gut scripten, allerdings komme ich mit meinem Selfmade viel schneller voran, da es nichht so voll ist


    Schau mal:


    ocmd:givegun(playerid,params[])
    {
    new pid, id, munition, string[128];
    if(sscanf(params,"iii",pid,id,munition)) return SendClientMessage(playerid,WHITE,"["HTML_ORANGE"Warnung"HTML_WHITE"]: Benutzung: /givegun [Spielerid / Teil des Names][Waffenid][Munition]");
    {
    if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,WHITE,"["HTML_ROT"Fehler"HTML_WHITE"]: Der angegebene Spieler ist nicht mit dem Spiel verbunden!");
    if(id < 1 || id > 46) return SendClientMessage(playerid,WHITE,"["HTML_ROT"Fehler"HTML_WHITE"]: Die angegebene Waffenid darf nicht kleiner als 1 und grösser als 46 sein!");
    if(munition == 0 || munition > 5000) return SendClientMessage(playerid,WHITE,"["HTML_ROT"Fehler"HTML_WHITE"]: Aus Sicherheitsgründen ist die maximale Munition 5000!");
    if(Weaponwhitelist[id] == true) return SendClientMessage(playerid,WHITE,"["HTML_ROT"Fehler"HTML_WHITE"]: Die angegebene Waffe, wurde als verboten eingestuft, reaktiviere sie mit /showweapons!");
    {
    GivePlayerWeapon(pid,id,munition);
    format(string,sizeof(string),"* Administrator %s hat dir folgende Waffe gegeben: %s | Munition: %i",PlayerInfo[playerid][Name], GetWeaponNameById(id), munition);
    SendClientMessage(pid,Lightblue,string);
    format(string,sizeof(string),"* Du hast dem Spieler %s folgende Waffe gegeben: %s | Munition: %i",PlayerInfo[pid][Name], GetWeaponNameById(id), munition);
    SendClientMessage(playerid,Lightblue,string);
    }
    return 1;
    }
    }


    //----------------------------------[GiveGun]------------------------------------------------
    if(strcmp(cmd, "/givegun", true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 7)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /givegun [playerid] [weaponid(eg. 46 = Parachute)] [ammo]");
    return 1;
    }
    new playa;
    new gun;
    new ammo;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    gun = strval(tmp);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /givegun [playerid] [weaponid] [ammo]");
    SendClientMessage(playerid, COLOR_GRAD4, "3(Club) 4(knife) 5(bat) 6(Shovel) 7(Cue) 8(Katana) 10-13(Dildo) 14(Flowers) 16(Grenades) 18(Molotovs) 22(Pistol) 23(SPistol)");
    SendClientMessage(playerid, COLOR_GRAD3, "24(Eagle) 25(shotgun) 29(MP5) 30(AK47) 31(M4) 33(Rifle) 34(Sniper) 37(Flamethrower) 41(spray) 42(exting) 43(Camera) 46(Parachute)");
    return 1;
    }
    if(gun < 1||gun > 46||gun==27||gun==1||gun==2||gun==9||gun==17||gun==19||gun==20||gun==21||gun==36||gun==39||gun==40||gun==45)
    { SendClientMessage(playerid, COLOR_GRAD1, " wrong WeaponID!"); return 1; }
    tmp = strtok(cmdtext, idx);
    ammo = strval(tmp);
    if(ammo <1||ammo > 999)
    { SendClientMessage(playerid, COLOR_GRAD1, " dont go below 1 or above 999 bullets!"); return 1; }
    if (PlayerInfo[playerid][pAdmin] >= 7)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GivePlayerWeapon(playa, gun, ammo);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht befugt!");
    }
    }
    return 1;
    }


    Im nachhinein stresst es einfach wenn ein Code so lang ist!


    Im GF muss man 10000 Stundne nahc nem Fehler suchen und da vergeht einem die Lust

    Da Hauke es ja erlaubt hat:



    stock GetAge(Birthday[16])
    {
    new D,M,Y,Age;
    getdate(Y,M,D);
    for(new i = strlen(Birthday); i > -1; i--)
    {
    if(Birthday[i] == '.')
    {
    new Tmp[32];
    for(new o = i-1; o > -1; o--)
    {
    if(Birthday[o] == '.')
    {
    strmid(Tmp,Birthday,o+1,i);
    if(strval(Tmp)>=M)
    {
    strmid(Tmp,Birthday,0,o);
    if(strval(Tmp)>D)
    {
    strmid(Tmp,Birthday,i+1,strlen(Birthday));
    Age = Y-strval(Tmp)-1;
    break;
    }
    }
    strmid(Tmp,Birthday,i+1,strlen(Birthday));
    Age = Y-strval(Tmp);
    break;
    }
    }
    }
    }
    return Age;
    }


    Nutzung


    GetAge("29.07.1997")


    Output: 16


    Dankt Hauke

    Hier bin ich mal so nett und nehme euch die Arbeit ab



    stock GetWeaponNameById(weaponid)
    {
    new name[64] = "Fehler";


    switch(weaponid)
    {
    case 1: name = "Bass Knuckles";
    case 2: name = "Golf Club";
    case 3: name = "Nightstick";
    case 4: name = "Knife";
    case 5: name = "Baseball Bat";
    case 6: name = "Shovel";
    case 7: name = "Pool Cue";
    case 8: name = "Katana";
    case 9: name = "Chainsaw";
    case 10: name = "Double-ended Dildo";
    case 11: name = "Dildo";
    case 12: name = "Vibrator";
    case 13: name = "Silver Vibrator";
    case 14: name = "Flowers";
    case 15: name = "Cane";
    case 16: name = "Grenade";
    case 17: name = "Tear Gas";
    case 18: name = "Molotov Cocktail";
    case 22: name = "9mm";
    case 23: name = "Tazer";
    case 24: name = "Desert Eagle";
    case 25: name = "Shotgun";
    case 26: name = "Sawnoff Shotgun";
    case 27: name = "Combat Shotgun";
    case 28: name = "Micro SMG / Uzi";
    case 29: name = "MP5";
    case 30: name = "AK-47";
    case 31: name = "M4";
    case 32: name = "Tec-9";
    case 33: name = "Country Rifle";
    case 34: name = "Sniper Rifle";
    case 35: name = "RPG";
    case 36: name = "HS Rocket";
    case 37: name = "Flamethrower";
    case 38: name = "Minigun";
    case 39: name = "Satchel Charge";
    case 40: name = "Detonator";
    case 41: name = "Spraycan";
    case 42: name = "Fire Extinguisher";
    case 43: name = "Camera";
    case 44: name = "Nights Vus Goggles";
    case 45: name = "Thermal Googles";
    case 46: name = "Parachute";
    }
    return name;


    Der stock funktioniert auch!