[ERRORS] im Filterscript

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
  • Guten Abend,
    ich bekommt folgende Errors im Filterscript:


    Zeile (190) : error 008: must be a constant expression; assumed zero
    Zeile (212) : error 008: must be a constant expression; assumed zero
    Zeile (240) : error 008: must be a constant expression; assumed zero
    Zeile (255) : error 008: must be a constant expression; assumed zero
    Zeile (266) : error 008: must be a constant expression; assumed zero
    Zeile (277) : error 008: must be a constant expression; assumed zero
    Zeile (286) : error 008: must be a constant expression; assumed zero
    Zeile (296) : error 008: must be a constant expression; assumed zero
    Zeile (306) : error 008: must be a constant expression; assumed zero


    Kann mit dieses nicht viel Anfangen da ich nicht sehr viel vom Scripten verstehe und gerade noch dabei bin etwas zu lernen.
    Jeffry habe versucht das Umzusetzen was Sie mir vorhin geraten haben.



    Filterscript:


    /* Eventsystem by ErikSon */



    #include <a_samp>
    #include <ocmd>


    //Farben
    #define Schwarz 0x000000FF
    #define Rot 0xE10000FF
    #define Gelb 0xFFE600FF
    #define HBlau 0x00FFFFFF
    #define DBlau 0x0000FFFF
    #define Blau 0x2E9AFEFF
    #define HGruen 0x00FF00FF
    #define Orange 0xFFAB00FF
    #define Weiss 0xFFFFFFFF
    #define Grau 0xDCDCDCFF
    #define Gold 0xD4A017AA
    #define Lila 0x7800FFFF
    #define Pink 0xFF00CDFF
    #define Gruen 0x009F32FF


    //Sonstiges
    #define SCM SendClientMessage
    #define SCMToAll SendClientMessageToAll
    new fmex[128];
    #define SCMToAllF(%0,%1,%2) format(fmex,128,%1,%2) && SendClientMessageToAll(%0, fmex)
    #define SCMF(%0,%1,%2) format(fmex,128,%2) && SendClientMessage(%0,%1,fmex)



    //Enums
    enum EEvent
    {
    Float:ex,
    Float:ey,
    Float:ez,
    EventStart,
    Waffe,
    Schuss,
    Float:Leben,
    Float:Armour,
    Fahrzeug,
    sCP
    };
    new Event[EEvent];


    new Waffen[MAX_PLAYERS][2],
    CP[MAX_PLAYERS],
    CPI[50],
    Float:CPX[50],
    Float:CPY[50],
    Float:CPZ[50],
    Float:ox[MAX_PLAYERS],
    Float:oy[MAX_PLAYERS],
    Float:oz[MAX_PLAYERS],
    EventVeh[MAX_PLAYERS],
    OnEvent[MAX_PLAYERS];



    new VehName[][] =
    {
    "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", "Boxville", "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", "Stratium",
    "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", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
    "Tiller", "Utility Trailer"
    };


    new
    dEventManager = 5001,
    dEventManager2 = 5002,
    dEWaffe = 5003,
    dESchuss = 5004,
    dEFahrzeug = 5005,
    dELeben = 5006,
    dEArmour = 5007,
    dECP = 5008,
    dEDCP = 5009;


    //////////////////////////////////////
    //////////////////////////////////////
    //////////////////////////////////////
    //////////////////////////////////////






    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print("Eventsystem by ErikSon");
    print("--------------------------------------\n");
    Event[Schuss] = 1;
    Event[Waffe] = 0;
    Event[Fahrzeug] = 0;
    Event[Leben] = 100.00;
    Event[Armour] = 100.00;
    for(new i = 0; i<50; i++)
    {
    CPX[i] = 0;
    CPY[i] = 0;
    CPZ[i] = 0;
    CPI[i] = 0;
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    if(Event[EventStart] == 1)SCM(playerid,Blau,"**Es läuft zur Zeit ein Event. Tippe '/gotoevent', um dich zum Event zu teleportieren.");
    return OnEvent[playerid] = 0;
    }


    public OnPlayerDisconnect(playerid, reason)return OnEvent[playerid] = 0;


    public OnPlayerSpawn(playerid)
    {
    if(OnEvent[playerid] == 1)
    {
    GetPlayerPos(playerid,ox[playerid],oy[playerid],oz[playerid]);
    for (new i = 0; i < 13; i++)GetPlayerWeaponData(playerid, i, Waffen[playerid][0], Waffen[playerid][1]);
    ResetPlayerWeapons(playerid);
    SetPlayerPos(playerid,Event[ex],Event[ey],Event[ez]);
    SetPlayerArmour(playerid,Event[Armour]);
    SetPlayerHealth(playerid,Event[Leben]);
    GivePlayerWeapon(playerid,Event[Waffe],Event[Schuss]);
    EventVeh[playerid] = CreateVehicle(Event[Fahrzeug],Event[ex],Event[ey],Event[ez],-1,1,1,-1);
    SetVehicleNumberPlate(EventVeh[playerid],"Event");
    OnEvent[playerid] = 1;
    PutPlayerInVehicle(playerid,EventVeh[playerid],0);
    }
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,7,CPX[CP[playerid]],CPY[CP[playerid]],CPZ[CP[playerid]]))
    {
    if(Event[sCP] != 1)return 1;
    CP[playerid] ++;
    if(CPI[CP[playerid]] == 0)
    {
    DisablePlayerRaceCheckpoint(playerid);
    return SCMToAllF(Blau,"Spieler '%s' ist am Ziel angekommen!",Name(playerid));
    }
    else
    {
    if(CPI[CP[playerid]+1] == 0)return SetPlayerRaceCheckpoint(playerid,1,CPX[CP[playerid]],CPY[CP[playerid]],CPZ[CP[playerid]],CPX[CP[playerid]],CPY[CP[playerid]],CPZ[CP[playerid]],7);
    else return SetPlayerRaceCheckpoint(playerid,0,CPX[CP[playerid]],CPY[CP[playerid]],CPZ[CP[playerid]],CPX[CP[playerid] +1],CPY[CP[playerid] +1],CPZ[CP[playerid] +1],7);
    }
    }
    return 1;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new i,s,w,id;
    switch(dialogid)
    {
    case dEventManager:
    {
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    GetPlayerPos(playerid,Event[ex],Event[ey],Event[ez]);
    SCMToAll(Blau,"**Es wurde ein Event gestartet. Tippe '/gotoevent', um dich zum Event zu teleportieren.");
    if(CPI[0] == 0)return Event[EventStart] = 1;
    else return Event[EventStart] = 1,SCM(playerid,Blau,"Tippe '/startevent', um die Checkpoints zu aktivieren.");
    }
    case 1:return ShowPlayerDialog(playerid,dECP,DIALOG_STYLE_LIST,"Checkpoints - erstellen/löschen","Checkpoint erstellen\nCheckpoint löschen","Auswählen","Abbrechen");
    case 2:return ShowPlayerDialog(playerid,dEFahrzeug,DIALOG_STYLE_INPUT,"Fahrzeug","Tippe die Fahrzeug-ID\ndes Fahrzeuges ein,\ndas jeder Eventteilnehmer\nerhalten soll.\n\nUm kein Fahrzeug einzustellen,\ntippe -1 ein.","Auswählen","Abbrechen");
    case 3:return ShowPlayerDialog(playerid,dEWaffe,DIALOG_STYLE_INPUT,"Waffe","Tippe die Waffen-ID der Waffe ein,\ndie jeder Eventteilnehmer\nerhalten soll.\n\nUm keine Waffe einzustellen,\ntippe -1 ein.","Auswählen","Abbrechen");
    case 4:return ShowPlayerDialog(playerid,dESchuss,DIALOG_STYLE_INPUT,"Munition","Tippe ein, wie viel\nMunition jeder Eventteilnehmer\nfür seine Waffe erhalten soll.\n\nUm keine Munition einzustellen,\ntippe -1 ein.","Auswählen","Abbrechen");
    case 5:return ShowPlayerDialog(playerid,dELeben,DIALOG_STYLE_INPUT,"Leben","Tippe ein, wie viel Leben (HP)\njeder Eventteilnehmer erhalten soll.","Auswählen","Abbrechen");
    case 6:return ShowPlayerDialog(playerid,dEArmour,DIALOG_STYLE_INPUT,"Schutzweste","Tippe ein, wie viel Schutzweste\njeder Eventteilnehmer erhalten soll.","Auswählen","Abbrechen");
    }
    }
    }
    case dECP:
    {
    if(response)
    {
    new Float:x,Float:y,Float:z;
    x = 0; y = 0; z = 0;
    switch(listitem)
    {
    case 0:
    {
    for(i = 0; i<50; i++)
    {
    GetPlayerPos(playerid,x,y,z);
    id = i;
    if(CPI[id] == 1)continue;
    CPX[id] = x;
    CPY[id] = y;
    CPZ[id] = z;
    CPI[id] = 1;
    i += 50;


    SCMF(playerid,Blau,"Checkpoint (%d) wurde auf der Position '%f , %f , %f' platziert.",id,CPX[id],CPY[id],CPZ[id]);
    }
    }
    case 1:ShowPlayerDialog(playerid,dEDCP,DIALOG_STYLE_INPUT,"Checkpoint löschen","Bitte gebe die Checkpoint-ID ein,\n die du löschen willst.\n\nUm alle Checkpoints zu löschen,\ntippe die Zahl 50 ein.","Löschen","Abbrechen");
    }
    }
    }
    case dEDCP:
    {
    if(response)
    {
    if(strval(inputtext) < 0 && strval(inputtext) > 50)return ocmd_event(playerid);
    if(strval(inputtext) == 50)
    {
    for(i=0; i<50; i++)CPX[i] = 0,CPY[i] = 0,CPZ[i] = 0,CPI[i] = 0;
    return SCM(playerid,Rot,"Du hast alle Checkpoints gelöscht.");
    }
    CPX[strval(inputtext)] = 0,CPY[strval(inputtext)] = 0,CPZ[strval(inputtext)] = 0, CPI[strval(inputtext)] = 0;
    return SCMF(playerid,Rot,"Du hast den Checkpoint %i gelöscht.",strval(inputtext));
    }
    }

    case dEFahrzeug:
    {
    if(response)
    {
    if(strval(inputtext) == -1)return Event[Fahrzeug] = 0, ocmd_event(playerid);
    else if(!strval(inputtext))SCM(playerid,Rot,"**Bitte gebe eine Fahrzeug-ID ein!");
    else if(strval(inputtext) < 400 || strval(inputtext) > 611)SCM(playerid,Rot,"**Die Fahrzeug-ID darf nicht kleiner als 400 & nicht größer als 611 sein!");
    Event[Fahrzeug] = strval(inputtext);
    return ocmd_event(playerid);
    }
    }
    case dEWaffe:
    {
    if(response)
    {
    if(strval(inputtext) == -1)return Event[Waffe] = 0, ocmd_event(playerid);
    else if(!strval(inputtext))SCM(playerid,Rot,"**Bitte gebe eine Waffen-ID ein!");
    else if(strval(inputtext) < 0 || strval(inputtext) > 46)SCM(playerid,Rot,"**Die Waffen-ID darf nicht kleiner als 0 & nicht größer als 46 sein!");
    Event[Waffe] = strval(inputtext);
    return ocmd_event(playerid);
    }
    }
    case dESchuss:
    {
    if(response)
    {
    if(!strval(inputtext))return SCM(playerid,Rot,"**Bitte gebe eine Schussmenge ein!"); ocmd_event(playerid);
    Event[Schuss] = strval(inputtext);
    return ocmd_event(playerid);
    }
    }
    case dELeben:
    {
    if(response)
    {
    if(!strval(inputtext))return SCM(playerid,Rot,"**Bitte gebe eine Lebensangabe ein!"),ocmd_event(playerid);
    else if(strval(inputtext) < 0)return SCM(playerid,Rot,"**Die Lebensangabe darf nicht kleiner als 0 sein!"),ocmd_event(playerid);
    Event[Leben] = strval(inputtext);
    return ocmd_event(playerid);
    }
    }
    case dEArmour:
    {
    if(response)
    {
    if(!strval(inputtext))return SCM(playerid,Rot,"**Bitte gebe eine Schutzwestenangabe ein!"),ocmd_event(playerid);
    else if(strval(inputtext) < 0)return SCM(playerid,Rot,"**Die Schutzwestenangabe darf nicht kleiner als 0 sein!"),ocmd_event(playerid);
    Event[Armour] = strval(inputtext);
    return ocmd_event(playerid);
    }
    }
    case dEventManager2:
    {
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    SCMToAll(Rot,"**Das Event wurde beendet.");
    Event[EventStart] = 0;
    Event[sCP] = 0;
    for(i=0; i<MAX_PLAYERS; i++)
    {
    if(OnEvent[i] == 0)continue;
    ResetPlayerWeapons(i);
    DestroyVehicle(EventVeh[i]);
    SetPlayerPos(i,ox[i],oy[i],oz[i]);
    SetPlayerHealth(i,100);
    SetPlayerArmour(i,0);
    OnEvent[i] = 0;
    for(w = 0; w<13; w++)for(s = 0; s<9999; s++)return GivePlayerWeapon(i,Waffen[i][w],Waffen[i][s]);
    }
    }
    }
    }
    }
    }
    return 0;
    }


    //Befehle
    ocmd:gotoevent(playerid)
    {
    if(Event[EventStart] == 0)return SCM(playerid,Rot,"**Es läuft zur Zeit kein Event!");
    GetPlayerPos(playerid,ox[playerid],oy[playerid],oz[playerid]);
    for (new i = 0; i < 13; i++)GetPlayerWeaponData(playerid, i, Waffen[playerid][0], Waffen[playerid][1]);
    SetPlayerPos(playerid,Event[ex],Event[ey],Event[ez]);
    SetPlayerArmour(playerid,Event[Armour]);
    SetPlayerHealth(playerid,Event[Leben]);
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,Event[Waffe],Event[Schuss]);
    EventVeh[playerid] = CreateVehicle(Event[Fahrzeug],Event[ex],Event[ey],Event[ez],-1,1,1,-1);
    SetVehicleNumberPlate(EventVeh[playerid],"Event");
    OnEvent[playerid] = 1;
    PutPlayerInVehicle(playerid,EventVeh[playerid],0);

    if(CPI[0] == 0)return 1;
    CP[playerid] = 0;
    if(CPI[1] == 0)return SetPlayerRaceCheckpoint(playerid,1,CPX[0],CPY[0],CPZ[0],CPX[1],CPY[1],CPZ[1],7);
    else return SetPlayerRaceCheckpoint(playerid,0,CPX[0],CPY[0],CPZ[0],CPX[1],CPY[1],CPZ[1],7);
    }


    ocmd:event(playerid)
    {
    if(!IsPlayerAdmin(playerid))return SCM(playerid,Rot,"**Du bist kein RCON-Admin!");
    new string[144];
    if(Event[Fahrzeug] == 0) {format(string,144,"Event starten\nCheckpoints\nFahrzeug: Keins\nWaffe: %s\nSchuss: %i\nLeben: %.2f\nSchutzweste: %.2f",Waffenname(Event[Waffe]),Event[Schuss],Event[Leben],Event[Armour]);}
    else if(Event[Fahrzeug] != 0) {format(string,144,"Event starten\nCheckpoints\nFahrzeug: %s\nWaffe: %s\nSchuss: %i\nLeben: %.2f\nSchutzweste: %.2f",VehName[Event[Fahrzeug] -400],Waffenname(Event[Waffe]),Event[Schuss],Event[Leben],Event[Armour]);}
    if(Event[EventStart] == 0)return ShowPlayerDialog(playerid,dEventManager,DIALOG_STYLE_LIST,"Eventmanager",string,"Auswählen","Abbrechen");
    else if(Event[EventStart] == 1)return ShowPlayerDialog(playerid,dEventManager2,DIALOG_STYLE_LIST,"Eventmanager","Event beenden","Auswählen","Abbrechen");
    return 1;
    }


    ocmd:startevent(playerid)
    {
    if(!IsPlayerAdmin(playerid))return SCM(playerid,Rot,"**Du bist kein RCON-Admin!");
    if(Event[sCP] != 0)return SCM(playerid,Rot,"Die Checkpoints sind schon aktiviert!");
    SCMToAllF(Blau,"Admin '%s' hat die Checkpoints aktiviert!",Name(playerid));
    return Event[sCP] = 1;
    }





    //Stocks
    stock Waffenname(id)
    {
    new wn[32];
    switch(id)
    {
    case 0:(wn = "Faust");
    case 1:(wn = "Schlagring");
    case 2:(wn = "Golfschläger");
    case 3:(wn = "Schlagstock");
    case 4:(wn = "Messer");
    case 5:(wn = "Baseballschläger");
    case 6:(wn = "Schaufel");
    case 7:(wn = "Billiardschläger");
    case 8:(wn = "Katana");
    case 9:(wn = "Kettensäge");
    case 10:(wn = "Dildo");
    case 11:(wn = "Dildo");
    case 12:(wn = "Dildo");
    case 13:(wn = "Dildo");
    case 14:(wn = "Blumen");
    case 15:(wn = "Stock");
    case 16:(wn = "Granate");
    case 17:(wn = "Rauchgranate");
    case 18:(wn = "Molotov");
    case 22:(wn = "9mm");
    case 23:(wn = "Silencer");
    case 24:(wn = "Desert Eagle");
    case 25:(wn = "Shotgun");
    case 26:(wn = "Sawn-off");
    case 27:(wn = "Combat");
    case 28:(wn = "Uzi");
    case 29:(wn = "MP5");
    case 30:(wn = "Ak47");
    case 31:(wn = "M4");
    case 32:(wn = "Tec 9");
    case 33:(wn = "Gewehr");
    case 34:(wn = "Sniper");
    case 35:(wn = "Raketenwerfer");
    case 36:(wn = "Stinger");
    case 37:(wn = "Flammenwerfer");
    case 38:(wn = "Minigun");
    case 39:(wn = "Rucksackbomben");
    case 40:(wn = "Fernzünder");
    case 41:(wn = "Spray");
    case 42:(wn = "Feuerlöscher");
    case 43:(wn = "Kamera");
    case 44:(wn = "Nachtvisier");
    case 45:(wn = "Nachtvisier");
    case 46:(wn = "Fallschirm");
    }
    return wn;
    }



    stock Name(playerid)
    {
    new name[MAX_PLAYERS];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    //sscanf Code


    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }