help with vehicle spawn
#1

hello guys, i have vehicle spawner.. but, it just only work with name.. no work with id.. how to fix ?

pawn Код:
CMD:veh(playerid, params[])
{
    if(PlayerInfo[playerid][Jailed] == true) return SendClientMessage(playerid, COLOR_RED, "You can't use this command when you are in jail");
    if(PlayerInfo[playerid][World] != DMWorldID && PlayerInfo[playerid][World] != TDMWorldID)
    {
        if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, COLOR_RED, "ERROR: you need to be the driver of the vehicle or be onfoot to use this command");
        new aVehicle[64], Color1, Color2;
        if(sscanf(params, "s[64]I(-1)I(-1)", aVehicle, Color1, Color2)) return SendClientMessage(playerid,COLOR_YELLOW, "Correct usage: /veh [car ID/name] [color1] [color2]");
        new veh = GetVehicleModelID(aVehicle);
        if(veh < 400 || veh > 611) return SendClientMessage(playerid,COLOR_RED, "ERROR: This is not a valid vehicle name! Please try again ");
        if(IsPlayerInAnyVehicle(playerid)) DestroyVehicle(GetPlayerVehicleID(playerid));
        new Float:Pos[4];
        GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]); GetPlayerFacingAngle(playerid, Pos[3]);
        new PVeh = CreateVehicle(veh, Pos[0], Pos[1], Pos[2], Pos[3]+90, Color1, Color2, -1);
        LinkVehicleToInterior(PVeh, GetPlayerInterior(playerid));
        SetVehicleVirtualWorld(PVeh, GetPlayerVirtualWorld(playerid));
        PutPlayerInVehicle(playerid, PVeh, 0);
        vehhasmissile[veh] = 0;
        vehhasminigun[veh] = 0;
        vehhascargo[veh] = 0;
        vehhaswindshieldupgrade[veh] = 0;
        vehhascarwreck[veh] = 0;
        SendCommandToAdmins(playerid,"/veh");
        GameTextForPlayer(playerid, "~y~Enjoy your new ~r~ride", 2000, 1);
        return 1;
    }
    else return SendClientMessage(playerid, COLOR_RED, "ERROR: you can't use this command in this world");
}
how to fix it ?
Reply
#2

any one can help me ?
Reply
#3

you have "s" a string in sscanf. Is that your problem ? Im at cell now i cant see the whole code
Reply
#4

Quote:
Originally Posted by [ISS]jumbo
Посмотреть сообщение
you have "s" a string in sscanf. Is that your problem ? Im at cell now i cant see the whole code
yes.. how to fix ?
Reply
#5

(facepalm)
I should just have this message copied on my clipboard.
For single-parameter commands Sscanf IS NOT needed...
That's what "params" is for, if it is a single-parameter command that is not a player's ID/name then use 'params'
Try this, it's the /veh command I use in my script.
pawn Код:
CMD:veh(playerid, params[])
{
    new string[256], Float:Pos[4];
    if(isnull(params)) return SCM(playerid, COLOR_ERROR, "[USAGE]: /veh [model ID/model name]");
    if(!IsPlayerLoggedIn(playerid)) return SCM(playerid, COLOR_ERROR, "[ERROR]: You cannot use any commands until you are logged in.");
    if(PlayerInfo[playerid][pAdmin] == 0) return SCM(playerid, COLOR_ERROR, "[ERROR]: You aren't an admin!");
    if(PlayerInfo[playerid][pAdmin] < 4) return SCM(playerid, COLOR_ERROR, "[ERROR]: Your admin level is not high enough.");
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    GetPlayerFacingAngle(playerid, Pos[3]);
    if(IsNumeric(params))
    {
        new model = strval(params);
        if(model > 611 || model < 400) return SCM(playerid, COLOR_ERROR, "[ERROR]: Vehicle models range from 400 to 611");
        new vehicle = CreateVehicle(model, Pos[0], Pos[1], Pos[2], Pos[3]+1, random(250), random(250), -1);
        SetVehicleNumberPlate(vehicle, "Admin Car");
        format(string, sizeof(string), "%s (%d) has created vehicle ID %d with model %s (%d) at %s", PlayerName(playerid), playerid, vehicle, VehicleNames[model-400], model, GetPlayer3DZone(playerid));
        SendAdminMessage(COLOR_ADMIN, string);
        if(IsPlayerInAnyVehicle(playerid)) RemovePlayerFromVehicle(playerid);
        PutPlayerInVehicle(playerid, vehicle, 0);
    }
    if(!IsNumeric(params))
    {
        new model = GetVehicleModelIDFromName(params);
        if(model > 611 || model < 400) return SCM(playerid, COLOR_ERROR, "[ERROR]: That is not a valid vehicle.");
        new vehicle = CreateVehicle(model, Pos[0], Pos[1], Pos[2], Pos[3]+1, random(250), random(250), -1);
        SetVehicleNumberPlate(vehicle, "Admin Car");
        format(string, sizeof(string), "%s (%d) has created vehicle ID %d with model %s (%d) at %s", PlayerName(playerid), playerid, vehicle, VehicleNames[model-400], model, GetPlayer3DZone(playerid));
        SendAdminMessage(COLOR_ADMIN, string);
        if(IsPlayerInAnyVehicle(playerid)) RemovePlayerFromVehicle(playerid);
        PutPlayerInVehicle(playerid, vehicle, 0);
    }
    return 1;
}
You'll need this stock.
pawn Код:
stock GetVehicleModelIDFromName(vname[])
{
    for(new i = 0; i < 211; i++)
    {
        if(strfind(VehicleNames[i], vname, true) != -1)
        return i + 400;
    }
    return -1;
}
And if you don't have dutils or an include that doesn't include this stock (or just don't have it at all...)
pawn Код:
stock IsNumeric(const string[]) {
    new length=strlen(string);
    if (length==0) return false;
    for (new i = 0; i < length; i++) {
        if (
        (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+') // Not a number,'+' or '-'
        || (string[i]=='-' && i!=0)                                             // A '-' but not at first.
        || (string[i]=='+' && i!=0)                                             // A '+' but not at first.
        ) return false;
    }
    if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
    return true;
}
Reply
#6

i get this eror

Код:
E:\Server\GTA SA\SAMP\Dedicated Server\Z_SUMO v1.1.6\gamemodes\hs.pwn(30) : error 017: undefined symbol "VehicleNames"
E:\Server\GTA SA\SAMP\Dedicated Server\Z_SUMO v1.1.6\gamemodes\hs.pwn(25045) : error 017: undefined symbol "SCM"
E:\Server\GTA SA\SAMP\Dedicated Server\Z_SUMO v1.1.6\gamemodes\hs.pwn(25051) : error 017: undefined symbol "SCM"
E:\Server\GTA SA\SAMP\Dedicated Server\Z_SUMO v1.1.6\gamemodes\hs.pwn(25059) : error 017: undefined symbol "SCM"
E:\Server\GTA SA\SAMP\Dedicated Server\Z_SUMO v1.1.6\gamemodes\hs.pwn(25044) : warning 204: symbol is assigned a value that is never used: "string"
E:\Server\GTA SA\SAMP\Dedicated Server\Z_SUMO v1.1.6\gamemodes\hs.pwn(34987) : error 021: symbol already defined: "GetVehicleModelIDFromName"
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)