if(strcmp(cmd, "/makeadmin", true) == 0)
steht über den COmmands aber im Callback OnPlayerCommandText
cmd = strtok(cmdtext, idx);
wenn nicht hinzufügen.
MFG RFT
if(strcmp(cmd, "/makeadmin", true) == 0)
steht über den COmmands aber im Callback OnPlayerCommandText
cmd = strtok(cmdtext, idx);
wenn nicht hinzufügen.
MFG RFT
strtok(string[],&idx,seperator = ' ')
{
new ret[128], i = 0, len = strlen(string);
while(string[idx] == seperator && idx < len) idx++;
while(string[idx] != seperator && idx < len)
{
ret[i] = string[idx];
i++;
idx++;
}
while(string[idx] == seperator && idx < len) idx++;
return ret;
}
das rauß ist 2 mal drinnen und wenn der Error mit C:\DOKUME~1\Kadir\Desktop\SERVER~1\GAMEMO~1\TDM.pwn(3244) : error 047: array sizes do not match, or destination array is too small dann steht liegts an der Include dann setzte den String tmp auf 256
Moin war mein Fehler meine strtok Funktion die ich dir gesendet hab entfernen die hast du damit doppelt drinnen.
MFG RFT
ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
new pos = 0;
while (text[pos] < 0x21) // Strip out leading spaces
{
if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
pos++;
}
new userid = INVALID_PLAYER_ID;
if (IsNumeric(text[pos])) // Check whole passed string
{
// If they have a numeric name you have a problem (although names are checked on id failure)
userid = strval(text[pos]);
if (userid >=0 && userid < MAX_PLAYERS)
{
if(!IsPlayerConnected(userid))
{
/*if (playerid != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0xFF0000AA, "User not connected");
}*/
userid = INVALID_PLAYER_ID;
}
else
{
return userid; // A player was found
}
}
/*else
{
if (playerid != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
}
userid = INVALID_PLAYER_ID;
}
return userid;*/
// Removed for fallthrough code
}
// They entered [part of] a name or the id search failed (check names just incase)
new len = strlen(text[pos]);
new count = 0;
new name[MAX_PLAYER_NAME];
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
GetPlayerName(i, name, sizeof (name));
if (strcmp(name, text[pos], true, len) == 0) // Check segment of name
{
if (len == strlen(name)) // Exact match
{
return i; // Return the exact player on an exact match
// Otherwise if there are two players:
// Me and MeYou any time you entered Me it would find both
// And never be able to return just Me's id
}
else // Partial match
{
count++;
userid = i;
}
}
}
}
if (count != 1)
{
if (playerid != INVALID_PLAYER_ID)
{
if (count)
{
SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
}
else
{
SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
}
}
userid = INVALID_PLAYER_ID;
}
return userid; // INVALID_USER_ID for bad return
}
IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}
strtok(string[],&idx,seperator = ' ')
{
new ret[128], i = 0, len = strlen(string);
while(string[idx] == seperator && idx < len) idx++;
while(string[idx] != seperator && idx < len)
{
ret[i] = string[idx];
i++;
idx++;
}
while(string[idx] == seperator && idx < len) idx++;
return ret;
}
ganz nach unten ins Script wo ist da das problem o.o
MFG RFT
ganz nach unten
ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
new pos = 0;
while (text[pos] < 0x21) // Strip out leading spaces
{
if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
pos++;
}
new userid = INVALID_PLAYER_ID;
if (IsNumeric(text[pos])) // Check whole passed string
{
// If they have a numeric name you have a problem (although names are checked on id failure)
userid = strval(text[pos]);
if (userid >=0 && userid < MAX_PLAYERS)
{
if(!IsPlayerConnected(userid))
{
/*if (playerid != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0xFF0000AA, "User not connected");
}*/
userid = INVALID_PLAYER_ID;
}
else
{
return userid; // A player was found
}
}
/*else
{
if (playerid != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
}
userid = INVALID_PLAYER_ID;
}
return userid;*/
// Removed for fallthrough code
}
// They entered [part of] a name or the id search failed (check names just incase)
new len = strlen(text[pos]);
new count = 0;
new name[MAX_PLAYER_NAME];
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
GetPlayerName(i, name, sizeof (name));
if (strcmp(name, text[pos], true, len) == 0) // Check segment of name
{
if (len == strlen(name)) // Exact match
{
return i; // Return the exact player on an exact match
// Otherwise if there are two players:
// Me and MeYou any time you entered Me it would find both
// And never be able to return just Me's id
}
else // Partial match
{
count++;
userid = i;
}
}
}
}
if (count != 1)
{
if (playerid != INVALID_PLAYER_ID)
{
if (count)
{
SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
}
else
{
SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
}
}
userid = INVALID_PLAYER_ID;
}
return userid; // INVALID_USER_ID for bad return
}
IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}
strtok(string[],&idx,seperator = ' ')
{
new ret[128], i = 0, len = strlen(string);
while(string[idx] == seperator && idx < len) idx++;
while(string[idx] != seperator && idx < len)
{
ret[i] = string[idx];
i++;
idx++;
}
while(string[idx] == seperator && idx < len) idx++;
return ret;
}
if(strcmp(cmd, "/makeadmin", true) == 0)
{
new tmp[128], idx;
tmp = strtok(cmdtext, idx);
if(!tmp[0])return SendClientMessage(playerid, Orange, "Benutze: /makeadmin [ID] [Level]");
new pId = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!tmp[0])return SendClientMessage(playerid, Orange, "Benutze: /makeadmin [ID] [Level]");
new Level = strval(tmp);
if(PlayerInfo[playerid][pAdmin] < 5)return SendClientMessage(playerid, Orange, "You are not Admin.");
if(!IsPlayerConnected(pId))return SendClientMessage(playerid, Orange, "The User is Offline.");
new pName[24], pAName[24];
PlayerInfo[pId][pAdmin] = Level;
GetPlayerName(pId, pName, 24); GetPlayerName(playerid, pAName, 24);
printf("AdmCmd: %s has promoted %s to a level %d admin.", pAName, pName, Level);
format(string, sizeof(string), " You have been promoted to a level %d admin by %s", Level, pAName);
SendClientMessage(pId, Orange, string);
format(string, sizeof(string), " You have promoted %s to a level %d admin.", pName,Level);
SendClientMessage(playerid, Orange, string);
return 1;
}
Ich bin dagegen und der rest des Team mit sicherheit auch.
Weil man sich nach der registrierung bevor man was schreibt die Regeln durch zu lesen hat.
MFG RFT
Moin macht das per PN aus das hier ist kein Smalltalk.
*Closed*
MFG RFT
if(strcmp(cmd, "/makeadmin", true) == 0)
{
new tmp[128], idx;
tmp = strtok(cmdtext, idx);
if(!tmp[0])return SendClientMessage(playerid, Orange, "Benutze: /makeadmin [ID] [Level]");
new pId = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!tmp[0])return SendClientMessage(playerid, Orange, "Benutze: /makeadmin [ID] [Level]");
new Level = strval(tmp);
if(PlayerInfo[playerid][pAdmin] < 5)return SendClientMessage(playerid, Orange, "You are not Admin.");
if(!IsPlayerConnected(pId))return SendClientMessage(playerid, Orange, "The User is Offline.");
new pName[24], pAName[24];
PlayerInfo[para1][pAdmin] = Level;
GetPlayerName(pId, pName, 24); GetPlayerName(playerid, pAName, 24);
printf("AdmCmd: %s has promoted %s to a level %d admin.", pAName, pName, Level);
format(string, sizeof(string), " You have been promoted to a level %d admin by %s", Level, pAName);
SendClientMessage(pId, Orange, string);
format(string, sizeof(string), " You have promoted %s to a level %d admin.", pName,Level);
SendClientMessage(playerid, Orange, string);
return 1;
}
Moin unter welchen Callback haste die.
new BallasCar[7];
new GrooveCar[15];
new LCNCar[10];
das ganz nach oben
GrooveCar[0] = AddStaticVehicle(522,2506.0669,-1743.7526,13.0620,356.0646,86,86); // Grove Street
GrooveCar[1] = AddStaticVehicle(579,2484.5884,-1755.1102,13.4804,3.7055,86,86); // Grove Street
GrooveCar[2] = AddStaticVehicle(579,2484.7947,-1754.6130,13.4767,358.5887,86,86); // Grove Street
GrooveCar[3] = AddStaticVehicle(560,2489.6550,-1755.2129,13.2294,359.4737,86,86); // Grove Street
GrooveCar[4] = AddStaticVehicle(560,2490.4724,-1754.8311,13.2067,359.7295,86,86); // Grove Street
GrooveCar[5] = AddStaticVehicle(560,2494.5706,-1755.0374,13.2168,0.0539,86,86); // Grove Street
GrooveCar[6] = AddStaticVehicle(424,2502.3953,-1745.7700,13.1923,90.4451,86,86); // Grove Street
GrooveCar[7] = AddStaticVehicle(522,2503.0591,-1741.5037,13.1193,86.9154,86,86); // Grove Street
GrooveCar[8] = AddStaticVehicle(411,2489.1597,-1741.0542,13.2694,91.6841,86,86); // Grove Street
GrooveCar[9] = AddStaticVehicle(468,2476.9001,-1755.9961,13.2156,5.5541,86,86); // Grove Street
GrooveCar[10]= AddStaticVehicle(468,2478.3206,-1756.0050,13.2040,4.3641,86,86); // Grove Street
GrooveCar[11]= AddStaticVehicle(559,2480.8201,-1754.9912,13.2062,356.0418,86,86); // Grove Street
GrooveCar[12]= AddStaticVehicle(567,2498.2554,-1755.0765,13.3198,0.2178,86,86); // Grove Street
GrooveCar[13]= AddStaticVehicle(567,2503.1357,-1754.9265,13.2738,8.7884,86,86); // Grove Street
GrooveCar[14]= AddStaticVehicle(565,2502.7971,-1749.4114,13.0320,92.1775,86,86); // Grove Street
das unter OnGameModeinit
MFG RFT
Moin,
Setz unter OnPlayerSpawn.
TextDrawShowForPlayer(playerid, Date);
und das muss so aussehen
public settime()
{
new hour,minute,second;
new string[256],year,month,day;
gettime(hour,minute,second);
if (minute <= 9)
format(string,25,"%02d:%02d",hour,minute);
TextDrawSetString(Uhr,string);
getdate(year, month, day);
format(string, sizeof string, "%02d/%s%02d/%s04%d", day, ((month < 10) ? ("0") : ("")), month, (year < 10) ? ("0") : (""), year);
TextDrawSetString(Date, string);
return 1;
}
MFG RFT
Viel zu unschonend da er von der ersten Ziffer an checken will reichts wenn er nur die erste durchcheckt.
if(!inputtext[0])
MFG RFT
Auch das geht einfacher.
if(!strcmp(cmd, "/pay", true) == 0)
{
new Parameter, String[128], pName[24];
Parameter = strtok(cmdtext, idx);
if(!Parameter[0])return SendClientMessage(playerid, GELB, "Verwendung: /pay [playerid] [Menge]");
new pId = ReturnUser(Parameter); //falls die ReturnUser Funktion exestiert
if(!IsPlayerConnected(pId))return SendClientMessage(playerid, GELB, "Info: Dieser Spieler ist offline");
Parameter = strtok(cmdtext, idx);
if(!Parameter[0])return SendClientMessage(playerid, GELB, "Verwendung: /pay [playerid] [Menge]");
new Amount = strval(Parameter);
if(Amount < 1)return SendClientMessage(playerid, Gelb, "Info: Der Betrag darf nicht unter 1$ liegen");
if(GetPlayerMoney(playerid) < Amount)return SendClientMessage(playerid, GELB, "Info: Soviel Geld besitzt du nicht");
GetPlayerName(playerid, pName, 24);
format(String, 128, "Info: Du hast von %s %d$ erhalten", pName, Amount);
SendClientMessage(pId, GELB, String);
GetPlayerName(pId, pName, 24);
format(String, 128, "Info: Du hast %s %d$ gegeben", pName, Amount);
SendClientMessage(playerid, GELB, String);
GivePlayerMoney(pId, Amount);
GivePlayerMoney(playerid, -Amount);
return true;
}
*Closed* + Verwarnung.
MFG RFT
Moin,
einfach im Ordner Autostart einfügen findest du im Startmenu.
MFG RFT
Meine Hobbys:
RFT Tontechnik
- ich repariere die Verstärker aus der DDR Zeit aber auch neue repariere ich mit dem unterschied das die alte Technik beschaulicher ist.
Kampfsport
- Thaiboxen
Mit Kollegen was unternehmen.
usw....usf....
MFG RFT
Ich hatte drauf hingewiesen diesen beleidigenden Scriptschnipsel zu entfernen ich hatte dir 2 Tage Zeit gegeben dies wurde nicht getan.
*Snip*+*Closed*+*Verwarnung*
MFG RFT