Beiträge von Aspire

    mach mal ganz oben noch:


    new vehicle[212][] = {
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perennial", "Sentinel",
    "Dumper", "Firetruck" , "Trashmaster" , "Stretch", "Manana", "Infernus",
    "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Mr 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", "Boxville", "Benson","Mesa","RC Goblin",
    "Hotring Racer", "Hotring Racer", "Bloodring Banger", "Rancher", "Super GT",
    "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropdust", "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 Truck", "Nevada", "Yosemite", "Windsor", "Monster",
    "Monster","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RCTiger",
    "Flash","Tahoma","Savanna", "Bandito", "Freight", "Trailer", "Kart", "Mower",
    "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley",
    "Stafford", "BF-400", "Newsvan","Tug","Trailer","Emperor","Wayfarer","Euros",
    "Hotdog", "Club", "Trailer", "Trailer","Andromada","Dodo","RC Cam", "Launch",
    "Police Car LSPD", "Police Car SFPD","Police Car LVPD","Police Ranger",
    "Picador", "S.W.A.T. Van", "Alpha", "Phoenix", "Glendale", "Sadler",
    "Luggage Trailer","Luggage Trailer","Stair Trailer", "Boxville", "Farm Plow",
    "Utility Trailer"
    };


    und dann so


    if(IsAnOwnableCar(vehicleid))
    {
    format(string,sizeof(string),"Das ist ein %s (%d) BESITZER: %s",vehicle[GetVehicleModel(vehicleid)-400], vehicleid, CarInfo[vehicleid][cOwner]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    }

    wenn string nicht definiert ist mach:
    new string[128];


    if(IsAnOwnableCar(vehicleid))
    {
    new string[128];
    format(string,sizeof(string),"Das ist ein %s (%d) BESITZER: %s",vehicle, vehicleid, CarInfo[vehicleid][cOwner]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    }

    der compiler ersetzt das definierte wort gegen die zahl die man angegeben hat an jeder stelle im script beim compilen. GetMaxplayers hat aber keinen wert weil es eine funktion ist und deshalb schmiert er ab. Du könntest aber
    new SERVER_MAX_PLAYERS = GetMaxPlayers();
    machen
    Bin mir net ganz sicher

    if(strcmp("/duty",cmdtext,true)==0)
    {
    if(Spieler[playerid][team] == 4)
    {
    SetPlayerColor(playerid,0x5E2B00FF);
    SendClientMessage(playerid,0x00FFFAFF, "Du bist jetzt on duty");
    }
    return 1; //hier return 1;
    }


    Weil wenn du kein return 1; hinsetzt läuft der code bei onplayercommandtext weiter und ganz unten steht return 0; und wenn onplayercomandtext 0 returnt dann kommt die meldung unknow command

    hast du die dcmd cmds in OnPlayerComandText?
    Bei dcmd muss es so sein:
    OnPlayerCommandText(...)
    {
    dcmd(aheal,5,cmdtext);
    dcmd(akill,5,cmdtext);
    dcmd(firstaid,8,cmdtext);
    //und immer so weiter
    return 0;
    }
    //die cmds selbst kommen dann ausserhalb von Publics irgendwo im gamemode
    dcmd_aheal(playerid, params[])
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerAdmin(playerid))
    {
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00D7FFFF, "Information: Du wurdest von einem Admin geheilt.");
    SendClientMessage(playerid, 0x00D7FFFF, "Information: Der gewählte Spieler wurde geheilt.");
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Der gewählte Spieler befindet sich nicht auf dem Server.");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "Benutzung:/aheal [Name/ID des Spielers]");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xA0A0A0FF, "** Du bist kein Administrator.");
    return 1;
    }
    //und hier dann immer weiter


    wieso benutzt du nicht sscanf?

    ne die lösung würd ich nicht empfehlen. die schleife müsste 2000 mal durchlaufen werden. Hier mal ein beispiel cmd.


    OnPlayerComandText...
    if(strcmp(cmdtext,"infernus",true)==0)
    {
    new vID,pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    vID = CreateVehicle(411,pos[0],pos[1],pos[2],90,-1,-1,-1);
    PutPlayerInVehicle(playerid,vID,0);
    return 1;
    //nicht getestet müsste aber klappen
    }

    if/* Wenn*/(strcmp/* eingegeben wird */("/killme"/* Der Command /killme */,cmdtext /* Also Command */,true /*Es ist also ein Command*/))

    fail. http://wiki.sa-mp.com/wiki/Strcmp
    strcmp vegleicht 2 strings
    killme der 1 string mit dem der cmdtext(2ter strin (das ingame eingegebene)) verglichen wird.
    das true gibt an obs case sensitiv is, Wenns true ist dann ist hAlLo das selbe wie hallo wenn false dann nicht.
    Ich bin mir nicht sicher aber der command müsste auch ausgeführt werden wenn man irgendwas anderes eingibt, es müsste so sein:
    if(strcmp("/killme",cmdtext ,true )==0)//==0 wenn die strings identisch sind
    dann man kann die cmds nicht überall hinschreiben zumindest nicht die, die du erklärt hast, sie müssen in onplayercommandtext stehen
    wenn man selbst nicht weiß was man macht dann sollte man keine tuts für anfänger machen die lesen das 1mal und denken das es stimmt.
    von mir mal 3/10 weil ich den rest nicht gelesen habe

    Versuchs mal so:


    oben hin:
    new Time,Timer
    forward TIMER()


    dann einen cmd ich nehm mal zcmd:
    CMD:countdown(playerid,params[])
    {
    new String[60];
    if(sscanf(params,"i",Time))return SendClientMessage(playerid,FARBE,"Benutze: /countodwn [1-300] !");
    format(String,sizeof(String),"Du hast den Countdown auf %i sekunden gesetzt",Time);
    SendClientMessage(playerid,FARBE,String);
    Timer = SetTimer("TIMER",1000,1);
    return 1;
    }


    Dann die Public
    public TIMER()
    {
    new Text[60];
    if(Time == 0)
    {
    KillTimer(Timer);
    //was dann passieren soll wenn die zeit vorbei ist
    }
    else
    {
    Time--;
    format(Text,sizeof(Text),Noch %i,Time);
    GameTextForAll(Text,1000,5);
    }
    return 1;
    }


    es ist nicht getestet
    /e etwas am code geändert