skin aussuchen via command

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
  • Hi erstmal also ich erkläre mal ich habe in meinen script ein gewandgeschäfft wo man sich seinen skin aussuchen (kaufen) ich hätte das gerne mit ein comman nur weis ich nicht wie ich das machen soll ???


    if(strcmp("/Skin", cmdtext, true) == 0)
    {
    Setplayerskin(playerid, 1,2,3,4,5,6.....also die skin id`s
    }
    return 1;

  • Also ich hab auch sowas drinnen, allerdings mit nem Dialog Menü^^



    wenn du mit dcmds arbeitest:

    dcmd_skin(playerid,params[])
    {
    new skinid;


    if(sscanf(params, "d",skinid))
    {
    return SendClientMessage(playerid,COLOR,"Nutze: /skin [id]")
    }
    SetPlayerSkin(playerid,skinid);


    }

    müsste funktionieren^^

  • jo und dann noch unter OnPlayerCommand



    dcmd(skin,4,cmdtext);


    und falls du strtok benutzt



    if(strcmp(cmd, "/skin", true) == 0)
    {
    new tmp;
    tmp = strtok(cmdtext,idx);
    if(strlen(tmp))
    {
    return SendClientMessage(playerid,COLOR_RED,"Verwendung : /skin [Skinid]");
    }
    new skinid=strval(tmp);
    SetPlayerSkin(playerid,skinid);
    return 1;
    }

    RFT

  • also maL danke für die vielen antworten aber das verstehe ich irgendwe nicht von wo soll denn das script denn die skin id´s rausfinden könnt ihr mir vill ein bsp machen


    Julian ne ich arbeite nicht mit dcmd ^^ das verstehe ich überhaupt nicht habs mir zwar schon paar mal angesehen nur keine chance das zu lernen^^

  • lol job Blackfox seins is kürzer bei meinem fehlt das !



    if(strcmp(cmd, "/skin", true) == 0)
    {
    new tmp;
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    return SendClientMessage(playerid,COLOR_RED,"Verwendung : /skin [Skinid]");
    }
    new skinid=strval(tmp);
    SetPlayerSkin(playerid,skinid);
    return 1;
    }


    bin dcmd nun gewohnt und vergesse das immer


    //edit ich habs zu erst auch nicht gerafft blos dann hab ich mir dcmd mal ganz ordentlich durch gelesen und wenn dus dann drauf hast ich sags dir das ist wirklich so einfach

    RFT

  • hmm^^


    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1035) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1037) : warning 219: local variable "tmp" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1038) : error 006: must be assigned to an array
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1039) : error 035: argument type mismatch (argument 1)
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1043) : error 035: argument type mismatch (argument 1)
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1038) : warning 204: symbol is assigned a value that is never used: "tmp"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1074) : warning 217: loose indentation
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.
    kein plan sry

  • strtok gibt einen Zeichen Array zurück , Fehler dabei tmp ist keine Array sondern hat nur eine Zelle


    new tmp[128];
    if(!strcmp(cmd, "/skin", true))
    {
    tmp = strtok(cmdtext,idx);
    if(!tmp[0])return SendClientMessage(playerid,COLOR_RED,"Verwendung : /skin [Skinid]");
    SetPlayerSkin(playerid,strval(tmp));
    return 1;
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • habe ich schon ??


    new tmp[128];
    if(!strcmp(cmd, "/skin", true))
    {
    tmp = strtok(cmdtext,idx);
    if(!tmp[0])return SendClientMessage(playerid,COLOR_RED,"Verwendung : /skin [Skinid]");
    SetPlayerSkin(playerid,strval(tmp););
    return 1;
    }


    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1035) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1035) : error 021: symbol already defined: "tmp"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1040) : error 001: expected token: ",", but found ";"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1040) : error 029: invalid expression, assumed zero
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1040) : warning 215: expression has no effect
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1070) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1005) : warning 204: symbol is assigned a value that is never used: "tmp"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.

  • ja das habe ich auch schon gemacht
    ist noch dieses problem hier


    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(1040) : error 001: expected token: ",", but found ";"


    if(!strcmp(cmd, "/skin", true))
    {
    tmp = strtok(cmdtext,idx);
    if(!tmp[0])return SendClientMessage(playerid,COLOR_RED,"Verwendung : /skin [Skinid]");
    SetPlayerSkin(playerid,strval(tmp); //<----das ist zeile 1040
    return 1;
    }

  • Aso & tmp ist bei dir bereits definiert daher lösche die tmp Variable einfach

    if(!strcmp(cmd, "/skin", true))
    {
    tmp = strtok(cmdtext,idx);
    if(!tmp[0])return SendClientMessage(playerid,COLOR_RED,"Verwendung : /skin [Skinid]");
    SetPlayerSkin(playerid,strval(tmp));
    return 1;
    }


    Sorry das ");)" war mein Fehler, vertippt

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Bei mir kommen Folgende Error:

    Code
    C:\San Andreas\gamemodes\test.pwn(354) : error 017: undefined symbol "cmd"
    C:\San Andreas\gamemodes\test.pwn(356) : error 017: undefined symbol "strtok"
    C:\San Andreas\gamemodes\test.pwn(356) : error 033: array must be indexed (variable "tmp")


    MEIN CODE:

    Code
    new tmp[128];
    	if(!strcmp(cmd, "/skin", true))
    	{
    	tmp = strtok(cmdtext,idx);
    	if(!tmp[0])return SendClientMessage(playerid,COLOR_BRIGHTRED,"Verwendung : /skin [Skinid]");
    	SetPlayerSkin(playerid,strval(tmp));
    	return 1;
    	}


    Was mache ich falsch?

  • Du brauchst dazu die Funktion strtok


    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    Zudem definier in OnPlayerCommandText :


    new cmd[128],idx,tmp[128];

    Mfg. BlackFoX_UD_ alias [BFX]Explosion