Beiträge von Templer

    Doch, man muss nur eigene Fantasie dafür benützen, siehe hier :P


    stock IsVehicleConnected(vehicleid, bool:deathcheck=false) //by Templer
    {
    new Float:vehicleHealth;
    GetVehicleHealth(vehicleid, vehicleHealth);
    if(deathcheck == false && vehicleHealth > 0.000000) return true;
    else if(deathcheck == true && vehicleHealth >= 250.000000) return true;
    return false;
    }


    Verwendung:


    if(IsVehicleConnected(vehicleid, true)) ==> Wiedergibt true wenn Fahrzeug erstellt und noch nicht am brennen ist...
    if(IsVehicleConnected(vehicleid)) bzw. if(IsVehicleConnected(vehicleid, false)) ==> Wiedergibt true wenn Fahrzeug erstellt ist, jedoch wird nicht überprüft ob Fahrzeug am Brennen ist, also ob es gerade Kaputt geht..

    Ok Sry, habe die Definition CarNames falsch kopiert, hier das richtige:


    new CarName[][] =
    {
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
    "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
    "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
    "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
    "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
    "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
    "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
    "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
    "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
    "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
    "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
    "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
    "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
    "Blista Compact", "Police Maverick", "Boxvillde", "Benson", "Mesa", "RC Goblin",
    "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
    "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
    "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
    "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
    "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
    "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
    "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
    "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
    "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratum",
    "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
    "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
    "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
    "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
    "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
    "Phoenix", "2. Gebrauchtwagen", "1. Gebrauchtwagen", "Luggage", "Luggage", "Stairs", "Boxville",
    "Tiller", "Utility Trailer"
    };


    dcmd_spawn(playerid, params[])
    {
    if (!IsPlayerAdmin(playerid)) return SendClientMessage (playerid, 0xFFFFFFFF, " **Du bist kein Admin!"); //Abfrage ob Spieler RCON-Admin ist
    if (!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, " **/spawn <FahrzeugID>"); //Ob Spieler bei params einen Wert oder Text angegeben hat!
    new cid = -1, nameid = 0, Float:player_pos[4];
    GetPlayerPos (playerid, player_pos[0], player_pos[1], player_pos[2]);
    GetPlayerFacingAngle (playerid, player_pos[3]);
    floatadd(player_pos[0], 5.0);
    floatadd(player_pos[2], 1.0);
    floatadd(player_pos[3], 90.0);
    if(!IsNumeric(params))
    {
    for(; nameid < sizeof(CarName); nameid++)
    {
    new nameid2[100], i = sizeof(CarName), j = strcmp(params, CarName[nameid], true);
    format(nameid2,sizeof(nameid2), "nameid=%i, i=%i, j=%i",nameid, i, j);
    print(nameid2);
    if(strcmp(params, CarName[nameid], true) == 0)
    {
    cid = (nameid+400);
    break;
    }
    }
    if(cid == -1) return SendClientMessage(playerid, 0xFFFFFFFF, "Ungültiger Fahrzeugname!");
    }
    else if (IsNumeric(params)) //Ob das eingegebene einer Zahl entspricht
    {
    if(strval(params) < 400 || strval(params) > 611) return SendClientMessage(playerid, 0xFFFFFFFF, "FahrzeugID nicht kleiner als 400 oder größer als 611!"); //Die Abfrage sollte logisch sein
    cid = strval(params); //Eingegebene Model-ID wird in die Variable cid gespeichert
    }
    gDeleteCreatedVehicles[gCountDeleteCreatedVehicles] = CreateVehicle(cid,player_pos[0],player_pos[1],player_pos[2],player_pos[3],-1,-1,-1); //Erstellt das Fahrzeug
    gCountDeleteCreatedVehicles++; //Addiert den Zähler um 1 mehr
    return 1;
    }

    Wie ist die Definition von valtmp? Also ob du beachtet hast das valtmp ein String ist oder ob es nur ein Integer darstellt. Wenn er einen Integer anzeigt musst du ihn in einen String verwandeln zB.:


    new cache[128];
    valstr(cache, valtmp);
    strmid(PlayerInfo[playerid][pKey], cache, 0, strlen(cache)-1, 255);


    oder du nützt es mit format anstatt von strmid und löscht die unbrauchbaren Arrays die vom String nicht belegt werden...


    new cache[128];
    valstr(cache, valtmp);
    format(PlayerInfo[playerid][pKey], strlen(cache), cache);
    PlayerInfo[playerid][pKey][strlen(cache)+1] = "\0";

    Hier bitte die Lösung:


    dcmd_sn(playerid,params[])
    {
    if(gTeam[playerid] == SFPD || gTeam[playerid] == Cobra || gTeam[playerid] == ARMY)
    {
    new text[128], name[MAX_PLAYER_NAME], string[256];
    if(sscanf(params, "s["#128"]",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /sn [Text]");
    SendClientMessageToAll(COLOR_LIGHTGREEN, "|-_-|Staatsnachricht|-_-|");
    GetPlayerName(playerid,name,sizeof name);
    format(string,sizeof string,"%s: %s",name,text);
    SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    }
    else return SendClientMessage(playerid,COLOR_RED,"Du gehörst nicht dem Staat an!");
    return 1;
    }

    Hier dein wanted Befehl:


    dcmd_wanted(playerid,params[])
    {
    if(gTeam[playerid] == SFPD || gTeam[playerid] == Cobra || gTeam[playerid] == ARMY)
    {
    new ziel;
    new Grund[256];
    if(sscanf(params, "us", ziel,Grund)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /wanted [id] [Grund]");
    if(gTeam[ziel] == SFPD || gTeam[ziel] == Cobra || gTeam[ziel] == ARMY) return SendClientMessage(playerid,COLOR_WHITE,"Du kannst keinen Cop anzeigen");
    if(GetPlayerWantedLevel(ziel)<6) SetPlayerWantedLevel(ziel, GetPlayerWantedLevel(ziel)+1);
    else SendClientMessage(playerid, COLOR_GREY, "Dien Ziel ist schon auf Wanted LVL 6");
    new name[MAX_PLAYER_NAME], string[256];
    GetPlayerName(ziel, name, sizeof(name));
    format(string, sizeof(string), "%s hat dich angezeigt. Grund: %s ", name, Grund);
    SendClientMessage(ziel, COLOR_GREY, string);
    }
    else{SendClientMessage(playerid, COLOR_WHITE, "Du bist kein Cop!");}
    return 1;
    }


    Deine if Abfrage war falsch definiert.. Schaus dir genauer an!
    Und hier dein AdminChat Befehl


    dcmd_ac(playerid,params[])
    {
    if(gAdmin[playerid]>=1)
    {
    new text[256];
    if(sscanf(params, "s",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /ac [Text]");
    new aname[MAX_PLAYER_NAME], astr[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(astr, sizeof(astr), "%s: %s ", aname, text);
    SendClientMessage(playerid, 0xFFFF00FF, astr);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gAdmin[i]>0 && i != playerid)
    {
    format(astr, sizeof(astr), "%s: %s ", aname, text);
    SendClientMessage(i,0xFFFF00FF, astr);
    }
    }
    }
    else{SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin oder dein Admin-Rang ist zu niedrig!");}
    return 1;
    }
    Der Fehler war, dass du dich mim String vertran hast und dir es bei deinem Befehl vorher doppelt dir angezeigt wurde, jedoch wurde beim ersten der String falsch erzeugt und zeigte dir was Leeres an..

    Du hast dich bei einer Klammer verschrieben, probiers so aus ^^


    if(strcmp(cmd, "/holztour", true) == 0)
    {
    new carid = GetPlayerVehicleID(playerid);
    if(IsPlayerConnected(playerid))
    {
    if(mission[playerid] == 0)
    {
    if(IsATruck(carid))
    {
    if(IsATruckDriver(playerid))
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du hast dich für diese Tour entschieden, fahre jetzt bitte zum Sägewerk am Mount Chilliad");
    SetPlayerCheckpoint(playerid,-2025.4109,-2405.6082,30.3521, 5.0);
    Checkpoint[playerid] = 1;
    mission[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast nicht den Beruf Trucker!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du sitzt in keinem Truck!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast Schon einen Auftrag");
    }
    }
    return 1;
    }

    Also damit du es auch verstehst, man erkennt nun zwei FileIncludes.. Das normale und das Dini an den beiden hier:


    #include <file>
    #include <dini>


    Nun um alle Dateien vom normalen FileSystem zu suchen, musst du nach


    File:
    Wovon du dann bei jedem sehen kannst wo der DateiName liegt und wie er heißt
    (kann natürlich sein das nix gefunden wurde weil alles auf dini geschrieben wurde)


    und um nach dem Dini zu suchen ist es nun bissl aufwendiger.. Du musst also nach


    dini_


    suche, und nebenbei steht oft gleich beim ersten Parameter ein StringVariable oder gleich was eingetipptes wie


    dini_Get("hodenkrebs.txt", "Name"); //Bei dem hier ist also entscheident, dass die gesuchte Datei Hodenkrebs heißt!


    Also mit der aufwendigen Methode kann man alle Scriptfiles finden, außer es wurde so geschrieben das sie automatisch beim Script start und beenden erstellt werden.

    also zB:


    if( Bedienung1 && Bedienung2) //Da müssen beide erfüllt sein


    aber bei


    if( Bedienung1 || Bedienung2) //Bedeutet, dass nur eine Erfüllt sein muss

    GameMode name ist unwichtig, wichtig ist mal was bei den Includes steht, also poste mal alle Zeilen von den Includes damit wir sicherstellen können ob ein Filesystem inkludiert wurde, also ob SII, dini und Co

    Ich hab mal alles durchgecheckt und bei mir stürzt er nicht ab, jedoch hab ich dieses public IsAHitman nicht, könntest du diesen Code mal schicken? Ansonsten bitte die Funktionen public ProxDetector und stock strtok neu kopieren...

    Also damit der Befehl nicht blöd rüberkommt, hier meine Variante, zuerst fügst du folgende zwei Sachen ganz oben in deiN Script ein:


    new CarName[] =
    {
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
    "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
    "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
    "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
    "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
    "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
    "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
    "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
    "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
    "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
    "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
    "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
    "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
    "Blista Compact", "Police Maverick", "Boxvillde", "Benson", "Mesa", "RC Goblin",
    "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
    "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
    "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
    "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
    "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
    "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
    "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
    "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
    "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratum",
    "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
    "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
    "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
    "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
    "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
    "Phoenix", "2. Gebrauchtwagen", "1. Gebrauchtwagen", "Luggage", "Luggage", "Stairs", "Boxville",
    "Tiller", "Utility Trailer"
    };


    stock IsNumeric(const string[])
    {
    new i;
    while(string[i] != '\0') //end of string
    {
    if (string[i] > '9' || string[i] < '0'){return 0;}
    i++;
    }
    return 1;
    }


    Danach ersetzt du deinen Befehl mit dem hier (Erklärung inklusive..):


    dcmd_spawn(playerid, params[])
    {
    if (!IsPlayerAdmin(playerid)) return SendClientMessage (playerid, 0xFFFFFFFF, " **Du bist kein Admin!"); //Abfrage ob Spieler RCON-Admin ist
    if (!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, " **/spawn <FahrzeugID>"); //Ob Spieler bei params einen Wert oder Text angegeben hat!
    new cid = -1, nameid = 0, Float:player_pos[4];
    GetPlayerPos (playerid, player_pos[0], player_pos[1], player_pos[2]);
    GetPlayerFacingAngle (playerid, player_pos[3]);
    floatadd(player_pos[0], 5.0);
    floatadd(player_pos[2], 1.0);
    floatadd(player_pos[3], 90.0);
    if(!IsNumeric(params)) //Ob das eingegebene einem Text entspricht
    {
    for(; nameid < sizeof(CarName); nameid++) //Geht alle FahrzeugNamen durch
    {
    if(strcmp(params, CarName[nameid], false) == 0) //Abfrage ob FahrzeugName mit eingegegebenem Namen übereinstimmt
    {
    cid = (nameid+400); //Füge Fahrzeug Model-ID in die Variable cid ein und beende die Schleife
    break;
    }
    }
    if(cid == -1) return SendClientMessage(playerid, 0xFFFFFFFF, "Ungültiger Fahrzeugname!"); //Wird wiedergeben, wenn das eingegebene Fahrzeug nicht gefunden wurde
    }
    else if (IsNumeric(params)) //Ob das eingegebene einer Zahl entspricht
    {
    if(cid < 400 || cid > 611) return SendClientMessage(playerid, 0xFFFFFFFF, "FahrzeugID nicht kleiner als 400 oder größer als 611!"); //Die Abfrage sollte logisch sein
    cid = strval(params); //Eingegebene Model-ID wird in die Variable cid gespeichert
    }
    gDeleteCreatedVehicles[gCountDeleteCreatedVehicles] = CreateVehicle(cid,player_pos[0],player_pos[1],player_pos[2],player_pos[3],-1,-1,-1); //Erstellt das Fahrzeug
    gCountDeleteCreatedVehicles++; //Addiert den Zähler um 1 mehr
    return 1;
    }


    Kannst natürlich den Vergleich zwischen deinem Befehl und meinem auch machen

    Hier der Code, aber was dir bei diesen Abfragen noch fehlt ist die Abfrage ob es ein Truck, Bike, und Co ist


    //-------------------------------------------Lizenzen Prüf System by Tommy------
    //-------------------------------------------Auto-------------------------------
    if(PlayerInfo[playerid][pCarLic] != 1 || PlayerInfo[playerid][pAdmin] < 3)
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "Du besitzt keinen Auto Führerschein.");
    RemovePlayerFromVehicle(playerid);
    }
    //--------------------------------------------Flugschein------------------------
    if(PlayerInfo[playerid][pFlyLic] != 1 || PlayerInfo[playerid][pAdmin] < 3)
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "Du besitzt keinen Flugschein.");
    RemovePlayerFromVehicle(playerid);
    }
    //-------------------------------------------Motorrad---------------------------
    if(PlayerInfo[playerid][pBikeLic] != 1 || PlayerInfo[playerid][pAdmin] < 3)
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "Du besitzt keinen Motorrad Führerschein.");
    RemovePlayerFromVehicle(playerid);
    }
    //------------------------------------------Boot--------------------------------
    if(PlayerInfo[playerid][pBoatLic] != 1 || PlayerInfo[playerid][pAdmin] < 3)
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "Du besitzt keinen Boot Führerschein.");
    RemovePlayerFromVehicle(playerid);
    }
    //-----------------------------------------Truck (Lkw)--------------------------
    if(PlayerInfo[playerid][pTruckLic] != 1 || PlayerInfo[playerid][pAdmin] < 3)
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "Du besitzt keinen LKW Führerschein.");
    RemovePlayerFromVehicle(playerid);
    }
    //-------------------------------Lizenzen beim einsteigen überprüfen Ende-------

    Hier der richtige Code

    new Float:gRandomPlayerSpawns[][4] = {
    {-436.3541,-60.9857,58.8750,190.5244}, //Laut Pawno wäre hier der fehler
    {-748.4637,-130.3719,65.8281,107.0515},
    {-66.8372,175.9710,2.7621,157.0835},
    {-708.6617,-2120.6670,25.1484,308.9853},
    {-58.9969,54.3903,3.1103,158.6110},
    {-339.7625,10.4319,8.5621,256.7478},
    {87.9485,-165.2493,2.5938,262.9519},
    {-49.8091,-270.1113,6.6332,175.6957},
    {88.6539,-302.7438,1.5781,358.5981},
    {259.7324,-301.8735,1.9184,54.4346 },
    {-57.4438,-498.7912,3.7765,11.7349},
    {-447.3348,-280.6157,40.9398,13.9908},
    {-803.0630,188.2318,5.4128,272.3053}
    };