versuch mal indem du z.b. statt "Skin=%d" -> " Skin='%d' " schreibst wie du es bei strings und floats gemacht hast
Beiträge von SmD
-
-
ich weis nicht ob meine antwort hier noch gebraucht wird, aber so würde es funktionieren:
if(GetPlayerAnimationIndex(playerid))
{
new animlib[32];
new animname[32];
GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
if(!strcmp(animname,"VEND_USE",true))
{
new Float:phealth;
GetPlayerHealth(playerid,phealth);
SetPlayerHealth(playerid,phealth);
ClearAnimations(playerid);
}
return 0;
}//edit: das ganze unter OnPlayerUpdate
-
ich denke es liegt an der abfrage bei statechange. Du gibst dem server den befehl, dass er überprüfen soll, ob der spieler z.b. In fraktion 5 ist obwohl das auto garnicht zur fraktion 5 gehört. Unter statechange müsstest du soweit ich gesehen hab mal alle "!=" durch "==" ersetzen.
-
sry fail von mir
er kann die datei nicht finden er entweder heißt sie anders oder du musst sie noch in den ordner kopieren -
ocmd:setskin(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFF0000FF,"Du bist kein Admin!");
new pID,skinid;
if(sscanf(params,"ii",pID,skinid)) return SendClientMessage(playerid,0xFFFFFFFF,"Info: /setskin [playerid] [Skin-ID]");
if(skinid < 0 || skinid > 299) return SendClientMessage(playerid,0xFF0000FF,"Ungültige Skin-ID!");
SetPlayerSkin(pID,skinid);
return 1;
} -
wenn du mit dini nur ganze zahlen schreiben willst, dann musst du dini_IntSet benutzen
-
ich hatte schon mal ein ähnliches thema, müsstest es dir etwas zusammenlesen aber eigentlich kein problem:
-
um z.b. geld in eine spielerdatei zu speichern wäre das ein beispiel:
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
new spielerdatei[64];
format(spielerdatei,sizeof(spielerdatei),"%s.ini",playername);
dini_IntSet(spielerdatei,"Geld",GetPlayerMoney(playerid)); -
-
vielleicht liegts ja daran, dass du bei einigen strcmp's das ==0 vergessen hast
-
-
-
oben ins script:
forward knastzeit(pID);
new Frei[MAX_PLAYERS] = -1; //das durch die alte ersetzendann erstellst du dir unten im script eine neue funktion:
public knastzeit(pID)
{
if(Frei[pID] == 0)
{
//das was passiert wenn er seine zeit abgesessen hat
Frei[pID] = -1;
}
else
{
Frei[pID]--;
SetTimerEx("knastzeit",60000,0,"i",pID);
}
return 1;
}und in deinem einbuchten command:
SetTimerEx("knastzeit",60000,0,"i",pID);und ersetzt "Frei[pID] = 240*wantedlevel"
durch "Frei[pID] = 3*wantedlevel", da mein lösungsvorschlag mit minuten arbeitetdann der befehl:
if(!strcmp(cmdtext,"/knastzeit",true))
{
if(Frei[playerid] == -1) return SendClientMessage(playerid,0xFFFFFFFF,"Du sitzt nicht im Knast");
new string[256];
format(string,sizeof(string),"Du musst noch %i Minuten im Knast sitzen", Frei[playerid]);
SendClientMessage(playerid,0xFFFFFFFF,string);
return 1;
}//edit
wegen dem aus dem knast cheaten unter onplayerspawn:
if(Frei[playerid] != -1)
{
//hier der knastport
SetTimerEx("knastzeit",60000,0"i",playerid);
} -
also ich habs getestet es funktioniert einwandfrei
-
if(!strcmp(cmdtext,"/time",true,5))
{
if(cmdtext[5] == 0) return SendClientMessage(playerid,0xFFFF00FF,"BEFEHL: /time [Stunde]"); // wenn der Spieler keine parameter angegeben wird ihm der befehl gezeigt
new time = strval(cmdtext[5]); //in die variable "time" wird geschrieben was der spieler für eine stunde angegeben hat
if(time < 1 || time > 24) return SendClientMessage(playerid,0xFF0000FF,"Du kannst nur Zahlen zwischen 1 und 24 angeben");
SetWorldTime(time); //Die Tageszeit, also die Stunde, wird auf dem Server verändert
return 1;
} -
dcmd_f(playerid, params[])
{
if(GetPlayerFraktion(playerid, 1)) return SendClientMessage(playerid, COLOR_GREY, "*:: Du bist in keiner Fraktion. ::*");
new str[256];
if(sscanf(params, "s", str)) return SendClientMessage(playerid, COLOR_GREY, "*:: /f [Text] :: Fraktionchat ::*");
if(strlen(str) < 4 || strlen(str) > 255) return SendClientMessage(playerid, COLOR_GREY, "*:: Die Nachricht muss zwischen 4 und 255 Buchstaben lang sein. ::*");
new string[256];
if(GetPlayerFraktion(playerid, 3))
{
switch(PlayerInfo[playerid][pRank])
{
case 8: { format(string, sizeof(string), "** (( Director %s: %s )) **", ReadName(playerid), str); }
case 7: { format(string, sizeof(string), "** (( Deputy Director %s: %s )) **", ReadName(playerid), str); }
case 6: { format(string, sizeof(string), "** (( Assistant Director %s: %s )) **", ReadName(playerid), str); }
case 5: { format(string, sizeof(string), "** (( Special Agent in Charge %s: %s )) **", ReadName(playerid), str); }
case 4: { format(string, sizeof(string), "** (( Assistant Special Agent in Charge %s: %s )) **", ReadName(playerid), str); }
case 3: { format(string, sizeof(string), "** (( Supervisory Special Agent %s: %s )) **", ReadName(playerid), str); }
case 2: { format(string, sizeof(string), "** (( Special Agent %s: %s )) **", ReadName(playerid), str); }
case 1: { format(string, sizeof(string), "** (( New Agent %s: %s )) **", ReadName(playerid), str); }
case 0: { format(string, sizeof(string), "** (( New Agent %s: %s )) **", ReadName(playerid), str); }
}
SendMessage(PlayerInfo[playerid][pMember], COLOR_YELLOW, string);
SendMessage(PlayerInfo[playerid][pLeader], COLOR_YELLOW, string);
FraktionLog(string);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "*:: Du bist in keiner Fraktion ::*");
return 1;
}
return 1;
}man könnte statt switch auf die normale if-abfrage verwenden ich finde switch aber etwas besser
-
um positionen abzuspeichern machst du dir einfach ein paar variabeln:
new Float:x,Float:y,Float:z;
als beispiel und ließt dann die position mit GetPlayerPos aus.
dann schreibst du mit dini in die dateien, z.B.:
dini_FloatSet(spielerdatei,"PosX",x);das entscheidende dabei ist, dass du Float statt Int(eger) benutzt da eine koordinate etwas so aussieht: 1024.00486
und int nur ganze zahlen umfasst -
du kannst mit mta auch die geschlossenen machen, du musst einfach nur ein weiteres tor einfügen und es in die "offene position" setzen
-
steht über den forwards noch was, vll hast du ja da ein ; vergessen?
-
ich denke nicht das du das ersetzten musst die funktion ist weiterhin vorhanden