Hallo zusammen,
ich hätte mal eine kleine Frage: Welchen Wertebereich umfasst ein Integer?
Danke schon mal,
Grüße deadman1717
Beiträge von deadman1717
-
-
Bin nun schon etwas weiter gekommen, mit dem Operator "<<=1" verdopple ich vom Ausgangswert ausgehend.
enum E_MY_TAG (<<= 1)
{
E_MY_TAG_NONE,
E_MY_TAG_MASK = 0xFF,
E_MY_TAG_VAL_1 = 0x100,
E_MY_TAG_VAL_2,
E_MY_TAG_VAL_3,
E_MY_TAG_VAL_4
}
new
E_MY_TAG:gMyTagVar = E_MY_TAG_VAL_2 | E_MY_TAG_VAL_3 | (E_MY_TAG:7 & E_MY_TAG_MASK);
Könnt mir jetzt vllt noch jemand das hier erklären? Wie genau setzt sich hier die Variable gMyTagVar zusammen? Werden einfach alle Werte addiert? Und speziell dieser Teil hier (E_MY_TAG:7 & E_MY_TAG_MASK)Was geschieht hier?
gMyTagVar beträgt am Schluss übrigens 1543 (0x0607). -
!ULLLIIK: Könntest du evtl. in Worten erklären was eine native ist? An deinem Beispiel versteh ich noch nicht was es mir genau bringt. Und was ist mit den beiden anderen Punkten?
Grüße deadman1717 -
Hallo miteinander,
nach längerer Pause wollt ich mal wieder ein wenig scripten. Nun bin ich im Wiki über verschiedene Dinge gestolpert, die ich noch nie gesehen habe und auch nicht verstehe.
enum E_EXAMPLE (>>>= 1)
{
E_EXAMPLE_0 = 31,
E_EXAMPLE_1,
E_EXAMPLE_2
}
Was bedeutet das ">>>="?Ein weiterer Punkt: Was bringt mir eine native function?
Und zum Schluss:
stock BigEndian:operator=(b)
{
return BigEndian:(((b >>> 24) & 0x000000FF) | ((b >>> 8) & 0x0000FF00) | ((b << 8) & 0x00FF0000) | ((b << 24) & 0xFF000000));
}
main()
{
new
BigEndian:a = 7;
printf("%d", _:a);
}
stock BigEndian:operator+(BigEndian:a, BigEndian:b)
{
return BigEndian:42;
}
main()
{
new
BigEndian:a = 7,
BigEndian:b = 199;
printf("%d", _:(a + b));
}
Da gings ums "overloaden" von Operatoren. Was bringt mir das?
Hier der Link im Wiki: http://wiki.sa-mp.com/wiki/Keywords:Initialisers
Danke schon mal im Vorraus für Hilfe und Bemühungen -
Gut, das mit den Textdraws werd ich versuchen. Beim Tank würd ich lieber ein System verwenden, dass nicht auf Zeit arbeitet, sondern auf gefahrene Strecke.
-
Hallo Leute,
ich wollt mal Fragen wie man so einen Tacho hinbekommt. Eine Funktion die die Geschwindigkeit bestimmt hab ich schon. Verwendet man dazu einen Textdraw? Wäre nett wenn ihr mir ein Tutorial posten könntet oder es mir einer erklären könnte. Und wie stehts mit einer Tankanzeige? Ist das schwer zu scripten?
Vielen Dank für eure Hilfe -
Nach langem probieren habe ich das Problem behoben
-
Hallo an alle,
ich habe ein Problem und finde keine Lösung.
Und zwar brauch ich eine Funktion, welche den Namen einens Spielers mit einer Reihe von Namen aus einer INI Datei abgleicht. Im Grunde hab ich die Funktion auch schon, doch sie funktioniert nicht.
new abc=0; //eine globale variable
stock CheckHouse(playerid)
{
new pname[24]; GetPlayerName(playerid,pname,24);
for(new i;i<MAX_HOUSES;i++)
{
if(strcmp(dini_Get("House.ini",hInfo[i][Besitzer]),pname,false)==0) abc = 1;
else abc = 0;
}
}Die Funktion soll also ablaufen bevor geprüft wird ob ein Spieler schon eines der Objekte besitzt. In der Abfrage möchte ich dann einfach mit einer if Abfrage rausfinden ob er ein Objekt hat oder nicht.
Ich hoffe ihr versteht mein Anliegen. Solltet ihr was nich verstehn solltet, aber mir trotzem helfen wollt, fragt einfach nach
mfg//Edit
Um es noch etwas besser auszudrücken häng ich noch den /buy befehl an, mit welchem man ein haus kaufen kann udn für welchen die funktion sein soll.
if (strcmp("/buy", cmdtext, true, 10) == 0)
{
for(new i; i<MAX_HOUSES; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3, hInfo[i][iconx], hInfo[i][icony], hInfo[i][iconz]))
{
new Pname[24]; GetPlayerName(playerid,Pname,24);
for(new S;S<MAX_HOUSES;S++)//Sollte eigentlich checken, ob schon ein Haus vorhanden ist bei diesem Spieler, geht aber nicht
{
if(strcmp(dini_Get("Besitzer.ini",hInfo[S][Hausname]), Pname))
{
SendClientMessage(playerid,weis,"Du besitzt schon ein Haus");
break;
}
}
if(hInfo[i][Gekauft] == 1) return SendClientMessage(playerid,weis,"Dieses Haus ist schon verkauft");
if(GetPlayerMoney(playerid) < hInfo[i][Preis]) return SendClientMessage(playerid,weis,"Du hast nicht genug Geld");
GivePlayerMoney(playerid, - hInfo[i][Preis]);
GameTextForPlayer(playerid, "~r~Haus gekauft!", 2000, 3);
hInfo[i][Gekauft] = 1;
GetPlayerName(playerid,Pname,24);
format(hInfo[i][Besitzer], 24, "%s", Pname);
dini_Set("Besitzer.ini", hInfo[i][Hausname], Pname);
DestroyPickup(PickupID[i]);
PickupID[i] = CreatePickup(1272,1,hInfo[i][iconx],hInfo[i][icony],hInfo[i][iconz],-1);
return 1;
}
}
SendClientMessage(playerid,weis,"Du bist nicht in der Nähe von einem Haus");
return 1;
} -
Hallo,
ich habe hier meinen Code. Ich habe nun folgende Probleme:
-wenn ich mehrere Häuser drinnen hab, dann kann ich nur beim zuerst erstellten den /buy befehl machen, bei den anderen erscheint die Meldung "Du bist nicht in der Nähe von einem Haus".
-es gibt auch Komplikationen bei der Abfrage, ob der Spieler schon ein Haus besitzt, also in dieser Zeile
for(new j=0;j<MAX_HOUSES;j++)
{
if(strcmp(dini_Get("/Besitzsystem/Besitzer.ini",hInfo[j][Hausname]),pname)) return SendClientMessage(playerid,weis,"Du besitzt schon ein Haus");
}
Ich hoffe ihr habt eine Idee wie ich die Fehler beheben kann. Ich danke euch schon im Vorraus.
mfg -
wieso funzt das nich, es kommt weder error noch sonst iwas, es steht halt nur das ABC dran wenn ich einsteig.
-
mit vehicleid gehts, aber wenn ich
if(IsACopCar(vehicleid))
{
SendClientMessage(playerid,white,"ABC");
RemovePlayerFromVehicle(playerid);
}
schreibe, dann erscheint zwar der Text aber ich werde nicht aus dem auto geworfen -
ich hab schon SpielerInfo. Ich post euch mal meinen code bis jetzt, der NICHT funktioniert
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(IsABike(vehicleid) && ScheinInfo[playerid][bikeschein] == 0 && !ispassenger)
{
SendClientMessage(playerid,white,"Du hast keinen Motoradführerschein");
TogglePlayerControllable(playerid,0);
TogglePlayerControllable(playerid,1);
}
else if(IsACar(vehicleid) && ScheinInfo[playerid][autoschein] == 0 && !ispassenger)
{
SendClientMessage(playerid,white,"Du hast keinen Autoführerschein");
TogglePlayerControllable(playerid,0);
TogglePlayerControllable(playerid,1);
}
else if(IsAPlane(vehicleid) && ScheinInfo[playerid][flugschein] == 0 && !ispassenger)
{
SendClientMessage(playerid,white,"Du hast keinen Flugschein");
TogglePlayerControllable(playerid,0);
TogglePlayerControllable(playerid,1);
}
else if(IsABoat(vehicleid) && ScheinInfo[playerid][bootschein] == 0 && !ispassenger)
{
SendClientMessage(playerid,white,"Du hast keinen Bootfuehrerschein");
TogglePlayerControllable(playerid,0);
TogglePlayerControllable(playerid,1);
}
else if(IsAMofa(vehicleid) && ScheinInfo[playerid][mofaschein] == 0 && !ispassenger)
{
SendClientMessage(playerid,white,"Du hast keinen Mofafuehrerschein");
TogglePlayerControllable(playerid,0);
TogglePlayerControllable(playerid,1);
}
else
{
new carid = GetPlayerVehicleID(playerid);
if(carid == 2)
{
SendClientMessage(playerid,white,"ABC");
}
else{}}
return 1;
} -
nein keine ganze modell klasse. nur einzelne fahrzeuge
-
Hallo
wie kann ich scripten, dass nur bestimmte player mit einem fahrzeug fahren dürfen?
danke im vorraus -
Hab es nun auch mit einer array versucht, geht auch nicht. ich möchte einfach , dass nur polizisten mit den polizeiwagen fahren können. kann mir denn keiner helfen?
-
ich hab in meiner ini ein Team stehen, welches beim login und update in SpielerInfo[playerid][Team] geschrieben wird. Hab halt 1 für cops und oben dann
#define TEAM_COPS 1 -
kommt schon, hat keiner ne idee? ich bräucht nur einen checker, welcher überprüft OB es ein Polizeiwagen ist und OB der spieler ein polizist ist.
-
Hallo liebe Community,
ich habe folgendes Problem: Ich will verhindern dass jeder Spieler mit den Polizeiwagen fahren kann. Ich hab eine ini Datei und dort wird auch das Team des Spielers gespeichert. So siehts jetzt aus:
//ganz oben (globale variable)
new POLICE_CAR_1;
//
//dann bei OnGameModInit
POLICE_CAR_1 = CreateVehicle(....);
//dann hab ich eine public erstellt
public IsAPoliceCar(playerid)
{
new egal = GetPlayerVehicleID(playerid);
if(egal == POLICE_CAR_1)
{
if(SpielerInfo[playerid][Team] != TEAM_COPS)
{
TogglePlayerControllable(playerid,0);
SendClientMessage(playerid,white,"Du bist kein Cop");
TogglePlayerControllable(playerid,1);
}
}
return 1;
}
//so geht es auch bei der abfrage, welche prüft ob ein Führerschein vorhanden ist(die ist zwar ein "stock",aber hab statt public auch schon mit stock versucht.
//weiter gehts mit der abfrage bei OnPlayerEnterVehicle
//dort wird in der Führerscheinabfrage auch noch die Funktion eingeschoben
OnPlayerEnterVehicle(playerid,vehicleid,ispassenger)//oder so ähnlich, weiß nich auswendig
{
//...
IsAPoliceCar(playerid);
//...
}//ging au nich mit einer stock und if abfrageweiß einer wie ich das machen kann? und vllt noch statt dem playercontrollable ein removeplayerfromvehicle? damit hab ichs auch schon versucht, ging nivh.
danke im vorraus -
okay bin selber draufgekommen, hab bei
if(strcmp("auto",schein,true))
das
== 0
vergessen, also jetzt is es
if(strcmp("auto",schein,true) == 0) -
Hallo Leute,
ich hab folgenden Code geschrieben, der Compiler gibt weder Warnings noch Errors aus. Im Spiel funktioniert der Command immer falsch, wenn ich zb versuche /givelicence 0 mofa (ich versuche mir selbst einen mofa schein zu geben, es kommt aber "du hast keine 1350$".
Hier der Code
dcmd_givelicence(playerid,params[])
{
if(SpielerInfo[playerid][Team] == TEAM_FAHRLEHRER || SpielerInfo[playerid][Leader] == TEAM_FAHRLEHRER)
{
new id,schein[16],fahrlehrer[20],lehrling[20],string1[64],string2[64];
if(sscanf(params,"us",id,schein))
{
SendClientMessage(playerid,white,"Benutzung: /givelicence [ID] [LIZENZ] (/teamhelp für mehr Infos)");
}
else if(id == INVALID_PLAYER_ID) SendClientMessage(playerid,white,"Spieler nicht gefunden");
else
{
new geld = GetPlayerMoney(id);
GetPlayerName(playerid,fahrlehrer,sizeof(fahrlehrer));
GetPlayerName(id,lehrling,sizeof(lehrling));
if(strcmp("auto",schein,true))
{
if(SpielerInfo[id][Alter] < 18)
{
SendClientMessage(playerid,white,"Dieser Spieler ist noch nicht alt genug, um den Autoschein zu machen");
SendClientMessage(id,white,"Du bist noch nicht alt genug, komm wieder mit 18");
}
else
{
if(geld < 1350) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 1350$");}
else
{
ScheinInfo[id][autoschein] = 1;
format(string1,sizeof(string1),"Du hast von %s einen Autofuehrerschein erhalten",fahrlehrer);
format(string2,sizeof(string2),"Du hast %s einen Autofuehrerschein gegeben",lehrling);
SendClientMessage(playerid,white,string2);
SendClientMessage(id,white,string1);
}
}
}
else if(strcmp("motorad",schein,true))
{
if(ScheinInfo[id][autoschein] == 0)
{
SendClientMessage(playerid,white,"Dieser Spieler benötigt zuerst einen Autoschein");
SendClientMessage(playerid,white,"Du benötigst den Autoschein, um den Motoradschein zu machen");
}
else
{
if(geld < 800) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 800$");}
else
{
ScheinInfo[id][bikeschein] = 1;
format(string1,sizeof(string1),"Du hast von %s einen Motoradfuehrerschein erhalten",fahrlehrer);
format(string2,sizeof(string2),"Du hast %s einen Motoradfuehrerschein gegeben",lehrling);
SendClientMessage(playerid,white,string2);
SendClientMessage(id,white,string1);
}
}
}
else if(strcmp("boot",schein,true))
{
if(SpielerInfo[id][Alter] < 18)
{
SendClientMessage(playerid,white,"Dieser Spieler ist noch nicht alt genug, um den Bootschein zu machen");
SendClientMessage(id,white,"Du bist noch nicht alt genug, komm wieder mit 18");
}
else
{
if(geld < 5000) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 5000$");}
else
{
ScheinInfo[id][bootschein] = 1;
format(string1,sizeof(string1),"Du hast von %s einen Bootfuehrerschein erhalten",fahrlehrer);
format(string2,sizeof(string2),"Du hast %s einen Bootfuehrerschein gegeben",lehrling);
SendClientMessage(playerid,white,string2);
SendClientMessage(id,white,string1);
}
}
}
else if(strcmp("flug",schein,true))
{
if(SpielerInfo[id][Alter] < 18)
{
SendClientMessage(playerid,white,"Dieser Spieler ist noch nicht alt genug, um den Flugschein zu machen");
SendClientMessage(id,white,"Du bist noch nicht alt genug, komm wieder mit 18");
}
else
{
if(geld < 11000) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 11000$");}
else
{
ScheinInfo[id][flugschein] = 1;
format(string1,sizeof(string1),"Du hast von %s einen Flugschein erhalten",fahrlehrer);
format(string2,sizeof(string2),"Du hast %s einen Flugschein gegeben",lehrling);
SendClientMessage(playerid,white,string2);
SendClientMessage(id,white,string1);
}
}
}
else if(strcmp("mofa",schein,true))
{
if(SpielerInfo[id][Alter] < 16)
{
SendClientMessage(playerid,white,"Dieser Spieler ist noch nicht alt genug, um den Mofaschein zu machen");
SendClientMessage(id,white,"Du bist noch nicht alt genug, komm wieder mit 16");
}
else
{
if(geld < 400) {SendClientMessage(playerid,white,"Dieser Spieler hat keine 400$");}
else
{
ScheinInfo[id][mofaschein] = 1;
format(string1,sizeof(string1),"Du hast von %s einen Mofafuehrerschein erhalten",fahrlehrer);
format(string2,sizeof(string2),"Du hast %s einen Mofafuehrerschein gegeben",lehrling);
SendClientMessage(playerid,white,string2);
SendClientMessage(id,white,string1);
}
}
}
else
{
format(string1,sizeof(string1),"%s ist kein gültiger Schein");
SendClientMessage(playerid,white,string1);
}
}
}
else {SendClientMessage(playerid,white,"Du bist kein Fahrlehrer");}
return 1;
}