Hi unszwar möchte ich das ich während des Spiels ich mir einen Skin geben kann.Naja ich kann das aber nur mit diesem Befehl:
if(strcmp(cmdtext,"skin 8",true)==0)
{
SetPlayerSkin(playerid,8);
return 1;
}
Ich möchte es aber nicht 300 mal schreiben.Könnt ihr mir sagen wie das geht?
/skin 0-300
- Neumaner
- Geschlossen
- Erledigt
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
-
-
Heißt das, du willst es speichern oder wie?
-
Habe das mal für jemanden gemacht (nur für GF !!!):
if(strcmp(cmd, "/skin", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /skin [playerid] [skinid]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1336)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /skin [playerid] [skinid]");
return 1;
}
new Nummer = strval(result);
if(Nummer > 299 || Nummer < 0) { SendClientMessage(playerid, COLOR_GREY, "Die Nummer darf nicht unter 0 und über 299 sein!"); return 1; }
format(string, sizeof(string), "* Du hast den Skin von %s auf die Skinid %d geändert.", giveplayer, Nummer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
SetPlayerSkin(giveplayerid, PlayerInfo[giveplayerid][pChar] = Nummer);
SetPlayerSkin(giveplayerid, PlayerInfo[giveplayerid][pModel] = Nummer);
SendClientMessage(giveplayerid, COLOR_GREEN,"Dein Skin wurde von einem Administrator geändert !");
}
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Dir ist es nicht erlaubt, diesen Befehl zu benutzen!");
}
}
return 1;
}mfg.
-
GF bringt mir wenig
Nein ich möchte es nicht abspeichern.Ich möchte /skin 0 eingeben und dann während des Spieles den CJ Skin erhalten.Und ich möchte nicht:
if(strcmp(cmdtext,"skin X",true)==0)
{
SetPlayerSkin(playerid,X);
return 1;
}
eingeben müssen ins Script.Darum meine Frage: Gibt es ne andere Möglichkeit?Wenn ja wie? -
if(strcmp(cmd, "/skin", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Benutze: /skin [skinid]");
return 1;
}
new skin;
skin = strval(tmp);
SetPlayerSkin(playerid, skin);
return 1;
}mfg.
-
Ganz oben ins Script
new curPlayerSkin[MAX_PLAYERS] = {MIN_SKIN_ID, ...};
dcmd_s(playerid, params[])
{
new idx, iString[128];
iString = strtok(params, idx);if (!strlen(iString)) {
SendClientMessage(playerid, COLOR_RED, "[BENUTZUNG]: /s SKINID");
return true;
}idx = strval(iString);
if (IsInvalidSkin(idx) || idx < MIN_SKIN_ID || idx > MAX_SKIN_ID) {
SendClientMessage(playerid, COLOR_RED, "[ERROR]: Falsche SKINID");
return true;
}SetPlayerSkin(playerid, idx);
curPlayerSkin[playerid] = idx;
format(iString, 128, "Dein Skin wurde erfolgreich zu Skin ID %d verändert !", idx);SendClientMessage(playerid, COLOR_GREEN, iString);
return true;
} -
curPlayerSkin[playerid] = idx;
schöner Copy & Paste
wird ihm aber glaube ich nur Errors bringen, da er kein dcmd verwendet und das was ich oben markiert habe, sinnlos ist
mfg.
-
Quelle vergessen
Und ich hab ja auch nicht gesagt das es von mir ist xDD
Quelle:
fsdebug xD -
schreib drüber:
new tmp[256];
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;
}mfg.
-
Das ganz unten ins Script:
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;
}
Edit:
Grrr...
Kaliber war schneller -
Oke keine Errors beim Compilieren.Ingame jedoch funktioniert der Command /skin bzw. /skin 1 nicht.
Edit: Veränderung der Sachlage
-
breadfish.de
Hat das Thema geschlossen.