~
Das ist eine Tilde ![]()
~w~ ist richtig, aber z.B. ~w~~ ist falsch oder ~~w~~ oder ~~w~...
An deinem Beispiel oben ist nichts falsch, aber änderst du den Text irgendwann mit TextDrawSetString?
mfg. ![]()
~
Das ist eine Tilde ![]()
~w~ ist richtig, aber z.B. ~w~~ ist falsch oder ~~w~~ oder ~~w~...
An deinem Beispiel oben ist nichts falsch, aber änderst du den Text irgendwann mit TextDrawSetString?
mfg. ![]()
return strval(iText);
Das bewirkt, dass wenn er z.B. 099 hat, die 0 vorne verschwindet und ich dachte er will sie haben.
Schau dir mein Beispiel an, das ist die simpelste Methode dafür, format hat diese Funktion mit den nullen schon ![]()
mfg. ![]()
Mach es einfach so:
stock FMEx(iNum)
{
new szStr[4]; //000 + Null Char
format(szStr,sizeof(szStr),"%03d",iNum);
return szStr;
}
Der String brauch 4 Cells 3 für die Zahl und einen für den Null-Char ![]()
mfg. ![]()
Frage 1 wozu if(!strcmp(cmdtext,"/desk", true ))---dort das ! bei (!strcmp
Das ! prüft in einer if-Abfrage ob der Wert 0 ist.
Frage 2 wie leite ich zusätzlich die Spielerid/Spielernamen weiter also einzeln oder am besten beides
Naja, einfach so:
if(!strcmp(cmdtext,"/desk", true ))
{
SendClientMessage(playerid,GREEN,"Du hast das Desktop-freeze verlassen .");
TogglePlayerControllable(playerid,0);
new string[35 + MAX_PLAYER_NAME],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(string,sizeof string,"%s hat den Desktop-freeze verlassen!",name);
return SendMessageToAdmins(-1,string);
}
mfg. ![]()
if(!PlayerInfo[playerid][pAdmin]==1)
Nein, einfach nur so:
if(!PlayerInfo[playerid][pAdmin])
mfg. ![]()
Soll cih dann wo steht //hier hat er g gedrückt
genau ![]()
Was ist Callback? Kannste mir zeigen was du meinst?
Anstatt OnPlayerKeySateChange schreibe es so:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(ispassenger) {
//Hier hat er g gedrückt
}
return 1;
}
mfg. ![]()
hab nochmal ein "Problem":
Die Taste "G" gibt es net alsMacro nur als OnFoot aber das funkt net da kommt undefined symbol obwohl cih genau das von WIKI hab. Was muss cih bei OnPlayerKeyStateChange bei if( eintragen damit das mit OnFoot geht?
(WIki: http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange )
Stimmt..dann nutze den Callback OnPlayerEnterVehicle ![]()
mfg. ![]()
Aber wenn cih jetzt mach PutPlayerInVehicl(playeri, v, SEAT) Was für einen Sitz soll cih hinschreiben? Wie kann cih rausfinden welcher schon belegt ist? Oder soll ich alle auf den Sitz 1 darum Beifahrer tun?
Na...nutz doch meine Funktionen:
new veh = IsInRangeOfHydra(playerid);
if(veh == -1) return 0; //Ist nicht in der Nähe einer Hydra
new seat = GetFreeSeatInHydra(veh);
if(seat > 8) return 0; //Die Hydra ist voll belegt
PutPlayerInVehicle(playerid, veh, seat);
mfg. ![]()
//Edit: Rechtschreibung
Ok. Haben die dann ale hintereinander Platz oder sind die auch nebeneinander bzw schweben in der Luft?
Naja
Sie sitzen ineinander...aber das sieht man nicht genau ![]()
mfg. ![]()
Danke aber was muss ich dann auf 1 setzen, damit angezeigt wird das sie belegt ist?
Wenn mich nicht alles täuscht gibt es durch die Funktion kein Limit, ich bin mir nicht ganz sicher...musst du mal ausprobieren, falls doch, dann liegt es wahrscheinlich bei 8.
//Hier wäre sie dann voll:
if(GetFreeSeatInHydra(vehicleid) > 8) return SendClientMessage(playerid,-1,"Die Hydra ist voll besetzt!");
mfg. ![]()
Wie kann ich Abfragen, ob man neben ner Hydra ist?
Hier eine kleine Hilfestellung:
//Die Funktion returnt die Vehicleid von dem Spieler, der sich in der Nähe einer Hydra befindet...wenn nicht -1!
stock IsInRangeOfHydra(playerid) {
static Float:p[3];
for(new v; v<MAX_VEHICLES; v++) {
if(GetVehicleModel(v) != 520) continue;
GetVehiclePos(v,p[0],p[1],p[2]);
if(IsPlayerInRangeOfPoint(playerid,7.5,p[0],p[1],p[2])) return v;
}
return -1;
}
//returnt die seatid von einem freien Platz in der Hydra
stock GetFreeSeatInHydra(vehicleid) {
static pos=1;
for(new i; i<MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i) || !IsPlayerInVehicle(i,vehicleid)) continue;
if(pos == GetPlayerVehicleSeat(i)) pos++;
else if(pos < GetPlayerVehicleSeat(i)) pos = GetPlayerVehicleSeat(i)+1;
}
return pos;
}
mfg. ![]()
@ Kaliber
Ich wil wie oben steht wenn man g drückt im Veh sein und wenn man Enter drückt drausen reicht es wenn cih einfach Abfrag ob er Enter drückt oder muss ich das mit dem normalen aussteigen ausm Veh verzögern?
Du kannst über den Callback OnPlayerKeyStateChange abfragen, ob er g drückt und in der Nähe der Hydra ist.
Dann prüfst du ob da schon einer Sitzt auf dem Platz, wenn nicht, dann setzt du die Person mit PutPlayerInVehicle auf einen freien Platz ![]()
mfg. ![]()
Mach doch mal einen Print-Debug und 800 Zellen sind ein bisschen viel? Mach das mal nur auf 512...
mfg. ![]()
Hallo,
ich hab mal ein Script gesehen, wo Hydra ein zweisitzer war. Wie geht das? Und bugt der Server dann bissel rum?
Das kann man wirklich umsetzen, aus jedem Auto einen Mehrsitzer machen.
Das geht mit folgender Funktion: PutPlayerInVehicle
und dann kannst du z.B. für die seatid 1 nehmen, dann sitzt er hinter dem Fahrer.
Allerdings ist das natürlich nicht im Sinne des Erfinders, deshalb sobald die Person aussteigen will oder stirbt, crasht der Client.
Man muss ihn wieder scripttechnisch mit z.B. SetPlayerPos aus der Hydra holen.
Nein, den Server beeinflusst das nicht, nur den Client ![]()
mfg. ![]()
Downloade die Datei nochmal, anscheinend ging beim Download etwas schief ![]()
mfg. ![]()
Ich finde da einfach keinen Fehler, hier wird immer die erste ID geprinted die es gibt, dennoch ist der Spieler an einer anderen Firmenid.
Machs doch mal so und schau dir die prints an:
stock GetBuroIDInRange(playerid,Float:Range) {
for(new i; i < MAX_FIRMS; i++) {
if(FirmInfo[i][inuse] != true) continue;
printf("%d | %.02f , %.02f , %.02f | %d",i,FirmInfo[i][burox],FirmInfo[i][buroy],FirmInfo[i][buroz],MAX_FIRMS);
if(IsPlayerInRangeOfPoint(playerid,Range,FirmInfo[i][burox],FirmInfo[i][buroy],FirmInfo[i][buroz])) return i;
}
return -1;
}
//Edit: Lass das mit dem Wort stock...es ist eine Funktion, stock hat eine andere Funktion ![]()
mfg. ![]()
Ich will kein großes Script..
Nur ein Script wo man sich waffen geben kann und sich Fahrzeuge spawnen kann, und paar Kleinigkeiten.
Merk dir, genau sowas in den Startpost zu schreiben, der ja dazu dienen soll zu informieren.
mfg. ![]()
Bekomme leider in den folgenden Zeilen noch Tag Mismatches:
Ups ![]()
Ja, schreibs so:
stock ConvertToEuler(Float: qw, Float: qx, Float:qy, Float:qz, &Float:heading, &Float:attitude, &Float:bank) {
new Float: sqw = qw*qw,Float: sqx = qx*qx,Float: sqy = qy*qy,Float: sqz = qz*qz,Float: unit = sqx + sqy + sqz + sqw,Float: test = qx*qy + qz*qw;
if (test > 0.499*unit) return heading = 2*atan2(qx,qw),attitude = 3.141592653/2,bank = 0,1;
if (test < -0.499*unit) return heading = -2*atan2(qx,qw),attitude = -3.141592653/2,bank = 0,1;
return heading = atan2(2*qy*qw - 2*qx*qz, sqx - sqy - sqz + sqw),attitude = asin(2*test/unit),bank = atan2(2*qx*qw - 2*qy*qz, -sqx + sqy - sqz + sqw),1;
}
mfg. ![]()