ocmd:setsteuern(playerid,params[])
{
if(PlayerInfo[playerid][pLeader] == 7 || PlayerInfo[playerid][pLeader] == 4)
{
new pfad[20],str[128],steuern,was[20];
if(sscanf(params,"i",steuern)) return SendClientMessage(playerid,COLOR_LIGHTBLUE,"Benutzung: /setsteuern [Steuern in %]");
format(pfad,20,"/Steuern.ini");
if(!fexist(pfad)) return dini_Create(pfad);
format(was,sizeof(was),"1");
dini_IntSet(pfad,was,steuern);
format(str,sizeof(str),"Du hast die Steuern auf %d%% gestellt"); //%% Gibt % aus.
SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
}
return 1;
}
Beiträge von Jeffry
-
-
Welchen Wert hat MAX_PLAYERS bei dir? /pawno/includes/a_samp.inc
-
Kennt jemand die Animation vom Grafitti Sprühen?
http://wiki.sa-mp.com/wiki/Animations
STRG+F => GRAFFITI -
Poste bitte den Code so wie er jetzt ist nochmal und beschreibe nochmals genau was passiert, bzw. nicht passiert, hier fehlt ja komplett der Überblick.
-
SetTimer("JailTime", 1000, 0);
zu
SetTimerEx("JailTime", 1000, 0, "d", playerid);Und:
if(SpielerInfo[playerid][pJailTime] > 0)
{
SpielerInfo[playerid][pJailTime]=SpielerInfo[playerid][pJailTime]-1;
return 1;
}zu:
if(SpielerInfo[playerid][pJailTime] > 0)
{
SetTimerEx("JailTime", 1000, 0, "d", playerid);
SpielerInfo[playerid][pJailTime]=SpielerInfo[playerid][pJailTime]-1;
return 1;
} -
if (strcmp("/opark", cmd, true, 10) == 0)
{
if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
{
if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
{
SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
return 1;
}
new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
new Float:X,Float:Y,Float:Z;
new Float:z_rot;
GetVehiclePos(trailercar, X,Y,Z);
GetVehicleZAngle(trailercar, z_rot);
new carowner = GetDtCarOwner(trailercar);
new slot = GetDtCarOwnerSlot(carowner,trailercar);
PlayerCar[carowner][slot][CarPos_x] = X;
PlayerCar[carowner][slot][CarPos_y] = Y;
PlayerCar[carowner][slot][CarPos_z] = Z;
PlayerCar[carowner][slot][CarArrest] = 1;
PlayerCar[carowner][slot][CarRotate] = z_rot;
new fkasse = 2000 + random(2999);
FraktionsKasse[23] += fkasse;
if(carowner != 555)
{
OnPlayerCarUpdate(carowner);
SendClientMessage(carowner, COLOR_WHITE, " Ihr Fahrzeug wurde abgeschleppt, Fahren zu zur Ordnungsamt Base, um ihr auto wieder Freizukaufen.");
PlayerInfo[carowner][pRest] = 1;
SetTimerEx("PlayerCarSpawn",1000,0,"i",carowner);
}
DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
}
return 1;
}Wenn das so nicht tut, schildere bitte dein Problem genauer, vor allem was passiert wenn du was machst.
-
1. also bitte wenn du im auto stirbst wird onplayerexitveh abgefragt is bei mir ja auch so,
2. jeder der bisschen ahunng von scriptng hat versteht was ich meinte mit Settimerex(...). das ich fasch gemacht habe ein bisschen selbstvorderung sollte man schon haben,
3. mann muss den timer killen wenn man ausem auto steigt sons würd das ja recoursen fressen wie wale plankton1.) Wie bereits gesagt, nein, wird es nicht. Hier hast du den Beweis, kannst du gerne selbst testen.
[21/05/2014 21:00:39] OnPlayerEnterVehicle
[21/05/2014 21:01:45] OnPlayerDeath
[21/05/2014 21:01:45] [death] Jeffry died 255
Code:
#include <a_samp>public OnFilterScriptInit()
{
AddStaticVehicle(415,1957.8439,1342.8807,15.374,0.0,0,0);
return 1;
}public OnPlayerDeath(playerid, killerid, reason)
{
print("OnPlayerDeath");
return 1;
}public OnPlayerEnterVehicle(playerid, vehicleid)
{
print("OnPlayerEnterVehicle");
return 1;
}public OnPlayerExitVehicle(playerid, vehicleid)
{
print("OnPlayerExitVehicle");
return 1;
}
=> OnPlayerExitVehicle wurde nicht aufgerufen.2.) Du hast den Code eher verschlimmert als verbessert, ich sehe dabei keine Hilfe, denn der Timerstart war ja im Code verglichen mit deinem Vorhaben gleich, aber hingegen syntaktisch korrekt.
3.) Nein, muss man nicht wenn man einen globalen Timer nimmer, der durch alle Spieler loopt, was wesentlich besser ist, da man bei 500 Spielern dann nicht 500 Timer hat.
-
Narcoti: Das ist absoluter Käse was du da schreibst.
Zum einen stimmt die Syntax nicht, zum anderen macht die Semantik keinen Sinn.Tachotimer[playerid] = SetTimerEx("TachoTimer", 500, 1);
Das wird nur für ID 0 funktionieren, da du playerid nicht übergibst.Den Timer bei OnPlayerExit zu killen ist schlecht, da der Spieler zum Beispiel im Aute sterben kann, und da wird OnPlayerExit nicht aufgerufen.
Zudem fehlt eine Klammer bei dem Code von dir.Selbst die Definition von Tachotimer wird Errors geben, da du einmal { und einmal ] nutzt, das geht nicht.
-
Das liegt daran, dass der Compiler schon weiß was bei der Abfrage raus kommt, da es eine Konstante ist die du da abfragst und keine Variable. Somit steht da für den Compiler:
if(!0) ... => if(1)
Da diese Abfrage immer wahr, bzw andersrum immer unwahr ist, denkt der Compiler, dass die Abfrage keinen Sinn hat.Nimm eine Variable und es tut:
new PassKey = 1; -
Wenn das aus einem Tutorial stammt, Gute Nacht...
Hier mal eine wesentlich geschicktere Variante, die auch nicht zig tausend Timer erstellt.forward TachoTimer();
public TachoTimer()
{
new str[25], speed;
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER || IsPlayerNPC(i)) continue;
GetPlayerSpeed(i, speed);
format(str, sizeof(str), "%0.2f km/h", speed);
TextDrawSetString(Tacho[i][3], str);
}
return 1;
}Unten im Code hinzufügen:
stock GetPlayerSpeed(playerid, &Float:speed) // By: [XST]O_x
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid)!=PLAYER_STATE_PASSENGER)
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
speed = ST[3];
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER && !IsPlayerNPC(playerid))
{
TextDrawSetString(Tacho[playerid][1], VehicleName[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
for(new i = 0; i < 4; i++) TextDrawShowForPlayer(playerid, Tacho[playerid][i]);
}
else
{
for(new i = 0; i < 4; i++) TextDrawHideForPlayer(playerid, Tacho[playerid][i]);
}
return 1;
}OnGameModeInit:
SetTimerEx("TachoTimer", 500, 1); -
if (strcmp("/stats", cmdtext, true) == 0)
{
new premium[20], admin[20];
switch(Stats[playerid][pPremium])
{
case 0: premium = "Keins";
case 1: premium = "Normal";
case 2: premium = "Spezial";
//usw
}
switch(Stats[playerid][pAdmin])
{
case 0: premium = "Spieler";
case 1: premium = "Moderator";
case 2: premium = "Admin";
//usw
}
new string[512];
format(string, sizeof(string), "{FFFFFF}Name:{CC00CC} %s\n",pn(playerid));
format(string, sizeof(string), "%s{FFFFFF}Kills:{CC00CC} %d\n",string,Stats[playerid][pKills]);
format(string, sizeof(string), "%s{FFFFFF}Siege:{CC00CC} %d\n",string,Stats[playerid][pSiege]);
format(string, sizeof(string), "%s{FFFFFF}CP's:{CC00CC} %d\n",string,Stats[playerid][pCash]);
format(string, sizeof(string), "%s{FFFFFF}Premium:{CC00CC} %s\n",string,premium);
format(string, sizeof(string), "%s{FFFFFF}Adminlevel:{CC00CC} %s\n",string,admin);
ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_MSGBOX, "Stats", string, "Ok", "");
return 1;
} -
Du musst bei der Funktion "IsADtCar" hinzufügen, ob das Auto ein Fraktionscar ist.
Oder du machst einfach das hier weg (im Command):
if(!IsADtCar(trailercar))
{
SendClientMessage(playerid, COLOR_GREY, "Du kannst keine Fraktions Cars etc abschleppen!");
return 1;
} -
Stimmt, du hattest ja das Öffnen und Abschließen in einem Command, hab ich nicht drauf geachtet.
Wenigstens mal jemand der auch mitdenkt!Dann hat sich der Aufwand ja gelohnt, viel Spaß.
-
Es geht um den Streamer!
Deine Streamer version ist Outdated, lad dir den Streamer neu runter und pack das Include in deinen Include Ordner.
Nein...
Der Streamer sagt: Ich kann die Definition "BULLET_HIT_TYPE_PLAYER_OBJECT" nicht finden.=> Streamer ist aktueller als die SA-MP Includes.
Außerdem sagte er ja, dass er den Streamer aktualisiert hat.
-
SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
zu:
SetVehicleParamsEx(cInfo[vID][id_x], tmp_engine, tmp_lights, tmp_alarm, 0, tmp_bonnet, tmp_boot, tmp_objective);GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
zu:
GetVehicleParamsEx(cInfo[vID][id_x], tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); -
Lade dir die neuen SA-MP-Includes runter, bzw. update auf die neue 0.3z Version.
http://files.sa-mp.com/samp03z_svr_R2-2_win32.zipDie alten Includes löschen.
-
Ok, dann hätten wir das Problem behoben, sehr gut.
Jetzt kannst du die ganzen Prints entfernen, die brauchen wir nicht mehr, die verwirren nur wenn wir erneut debuggen.Dann postest du den momentanen Code noch einmal hier, und beschreibst genau was wann passiert.
-
stock GetCarID(vID)
{
printf("vID-GetCarID:%i",vID);
for(new i=0; i<50; i++) if(cInfo[i][id_x] == vID) return i;
return -1;
}So, jetzt kannst du das alles einfügen und dann sagen, was geprintet wird.
-
Nein.
Du sollst in diesem Code:
stock GetCarID(vID)
{
printf("vID-GetCarID:%i",vID);
for(new i=0; i<MAX_PRIV_CARS; i++) if(cInfo[i][id_x] == vID) return i;
return -1;
}
MAX_PRIV_CARS ersetzen, und zwar mit dem was bei dir im Code dort steht, wo ich "HIER" geschrieben habe.
Wenn du es immer noch nicht verstehst, poste bitte die Zeile
new cInfo.... -
Schau dir mal das an:
http://forum.sa-mp.com/showthread.php?t=158169Das Bild sieht ja vielversprechend aus.