hay @ all
und zwar hab ich mein script auf dcmd ungestellt und nun bekomme ich immer bei werbung (/ad) das der string 0 zeichen lang sei
//----------------------------------[advertise]-----------------------------------------------
dcmd_ad(playerid,params[]){return dcmd_advertise(playerid,params);}
dcmd_advertise(playerid,params[])
{
new sendername[MAX_PLAYER_NAME],string[256];
new idx;
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " Du bist derzeit nicht eingeloggt !");
return 1;
}
if(PlayerInfo[playerid][pLevel] < 3)
{
SendClientMessage(playerid, COLOR_GREY, " Du musst mindestens Level 3 sein !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
new result[64];
new length = strlen(params);//ab hier
while ((idx < length) && (params[idx] <= ' '))
{
idx++;
}
new offset = idx;//bis hier wird gezählt
if(sscanf(params,"s",result))
{
return 1;
}
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/ad)vertise [advert text]");
return 1;
}
if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
{
format(string, sizeof(string), " Es wurde bereits geworben warte %d sekunden !", (addtimer/1000));
SendClientMessage(playerid, COLOR_GRAD2, string);
return 1;
}
new payout = idx * 25;
if(GetPlayerMoney(playerid) < payout)
{
format(string, sizeof(string), "* Du hast %d erreicht dies kostet dich $%d, du hast nicht genug Geld.", offset, payout);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
return 1;
}
PlayerMoney[playerid] -= payout;
SBizzInfo[7][sbTill] += payout;
ExtortionSBiz(7, payout);
format(string, sizeof(string), "Werbung: %s, Nummer: %s Ph: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
OOCNews(TEAM_GROVE_COLOR,string);
format(string, sizeof(string), "~r~Paid $%d~n~~w~Message contained: %d Characters", payout, idx);
GameTextForPlayer(playerid, string, 5000, 5);
if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
}
return 1;
}
/advertise zeichen zählen immer 0
- Mike_Traceur
- Geschlossen
- Erledigt
-
-
Könnte daran liegen, dass du kein strtok nutzst und somit auch kein idx als Länge benutzt wird.
Mach es so:
dcmd_ad(playerid,params[]){return dcmd_advertise(playerid,params);}
dcmd_advertise(playerid,params[])
{
new sendername[MAX_PLAYER_NAME], string[128], result[64];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " Du bist derzeit nicht eingeloggt !");
return 1;
}
if(PlayerInfo[playerid][pLevel] < 3)
{
SendClientMessage(playerid, COLOR_GREY, " Du musst mindestens Level 3 sein !");
return 1;
}
if(sscanf(params,"s",result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/ad)vertise [advert text]");
return 1;
}
if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
{
format(string, sizeof(string), " Es wurde bereits geworben warte %d sekunden !", (addtimer/1000));
SendClientMessage(playerid, COLOR_GRAD2, string);
return 1;
}
new idx = strlen(result);
new payout = idx * 25;
if(GetPlayerMoney(playerid) < payout)
{
format(string, sizeof(string), "* Du hast %d erreicht dies kostet dich $%d, du hast nicht genug Geld.", idx, payout);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
return 1;
}
PlayerMoney[playerid] -= payout;
SBizzInfo[7][sbTill] += payout;
ExtortionSBiz(7, payout);
format(string, sizeof(string), "Werbung: %s, Nummer: %s Ph: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
OOCNews(TEAM_GROVE_COLOR,string);
format(string, sizeof(string), "~r~Paid $%d~n~~w~Message contained: %d Characters", payout, idx);
GameTextForPlayer(playerid, string, 5000, 5);
if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
}
return 1;
}Sorry 4 fuckin' indentation
-
super funzt