Hallo Brotfische,
Heute stehe ich mal wieder vor einem Problem, welches ich mir nicht beantworten kann.
Ich habe zwei Textdraw Pfeile erstellt einmal rechts und einmal links ( < > )
Wenn der Spieler auf Rechts klickt wird eine Zähl-Variable hochgezählt, und soll später einen Skin aus einem Array auslesen.
Doch leider wird das TextDraw nicht geupdatet, sprich es ist immer nur der erste Skin zu sehen.
Die Skin Arrays sehen beide so aus:
Die PlayerTextDraws erstelle ich so: (Genaue Koordinaten entfernt, Grund vor Copy & Paste)
new str[5];
format(str,sizeof(str),"%i",GetPlayerSkin(playerid));
playerData[playerid][pRegisterTD][5] = CreatePlayerTextDraw(playerid, XXX.XXXX, XX.XXXX, str);
PlayerTextDrawLetterSize(playerid, playerData[playerid][pRegisterTD][5], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, playerData[playerid][pRegisterTD][5], XX.XXXX, XXX.XXX);
PlayerTextDrawAlignment(playerid, playerData[playerid][pRegisterTD][5], 1);
PlayerTextDrawColor(playerid, playerData[playerid][pRegisterTD][5], -1);
PlayerTextDrawSetShadow(playerid, playerData[playerid][pRegisterTD][5], 0);
PlayerTextDrawSetOutline(playerid, playerData[playerid][pRegisterTD][5], 0);
PlayerTextDrawFont(playerid, playerData[playerid][pRegisterTD][5], 5);
OnPlayerClickPlayerTextDraw:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
new str[258];
//Pfeil rechts:
if(playertextid == playerData[playerid][pRegisterTD][4]){
if(GetPVarInt(playerid,PVAR_REGISTER_SEX) == 1){
if(playerData[playerid][pSkinClicked] == sizeof(MaleSkins)){
playerData[playerid][pSkinClicked] = 0;
printf("[Step 1] %i",playerData[playerid][pSkinClicked]);
}
else{
playerData[playerid][pSkinClicked]++;
printf("[Step 2] %i",playerData[playerid][pSkinClicked]);
format(str,sizeof(str),"%i",
MaleSkins[playerData[playerid][pSkinClicked]]);
printf("[Step 3] %s",str);
PlayerTextDrawSetString(playerid,
playerData[playerid][pRegisterTD][5],str);
}
}
else if(GetPVarInt(playerid,PVAR_REGISTER_SEX) == 2){
if(playerData[playerid][pSkinClicked] == sizeof(FamaleSkins)){
playerData[playerid][pSkinClicked] = 0;
printf("[Step 4] %i",playerData[playerid][pSkinClicked]);
}
else{
playerData[playerid][pSkinClicked]++;
printf("[Step 5] %i",playerData[playerid][pSkinClicked]);
format(str,sizeof(str),"%i",
FamaleSkins[playerData[playerid][pSkinClicked]]);
printf("[Step 6] %s",str);
PlayerTextDrawSetString(playerid,
playerData[playerid][pRegisterTD][5],str);
}
}
}
if(playertextid == playerData[playerid][pRegisterTD][4]){
if(GetPVarInt(playerid,PVAR_REGISTER_SEX) == 1){
if(playerData[playerid][pSkinClicked] == -1){
playerData[playerid][pSkinClicked] = sizeof(MaleSkins);
printf("[Step 7] %i",playerData[playerid][pSkinClicked]);
}
else{
playerData[playerid][pSkinClicked]--;
printf("[Step 8] %i",playerData[playerid][pSkinClicked]);
format(str,sizeof(str),"%i",
MaleSkins[playerData[playerid][pSkinClicked]]);
printf("[Step 9] %s",str);
PlayerTextDrawSetString(playerid,
playerData[playerid][pRegisterTD][5],str);
}
}
else if(GetPVarInt(playerid,PVAR_REGISTER_SEX) == 2){
if(playerData[playerid][pSkinClicked] -1){
playerData[playerid][pSkinClicked] = sizeof(FamaleSkins);
printf("[Step 10] %i",playerData[playerid][pSkinClicked]);
}
else{
playerData[playerid][pSkinClicked]--;
printf("[Step 11] %i",playerData[playerid][pSkinClicked]);
format(str,sizeof(str),"%i",
FamaleSkins[playerData[playerid][pSkinClicked]]);
printf("[Step 12] %s",str);
PlayerTextDrawSetString(playerid,
playerData[playerid][pRegisterTD][5],str);
}
}
}
return 1;
}
Alles anzeigen
Nun habe ich noch ein kleinen Test gemacht.. Undzwar habe ich 5x auf den Pfeil nach Rechts und 5x auf den Pfeil nach links gedrückt. Aber in der server_log.txt wird mir lediglich dies geprintet:
Sprich es wird der Schritt 2 in der Funktion OnPlayerClickPlayerTextDraw aufgerufen.
In diesen Fall ist die SkinClicked jetzt 1 beim hochzählen und aus dem Array wird die SkinID 2 (Step 3) ausgelesen, jedoch wird das Textdraw nicht geupdatet.